ÿØÿàJFIFÿþ ÿÛC       ÿÛC ÿÀÿÄÿÄ"#QrÿÄÿÄ&1!A"2qQaáÿÚ ?Øy,æ/3JæÝ¹È߲؋5êXw²±ÉyˆR”¾I0ó2—PI¾IÌÚiMö¯–þrìN&"KgX:Šíµ•nTJnLK„…@!‰-ý ùúmë;ºgµŒ&ó±hw’¯Õ@”Ü— 9ñ-ë.²1<yà‚¹ïQÐU„ہ?.’¦èûbß±©Ö«Âw*VŒ) `$‰bØÔŸ’ëXÖ-ËTÜíGÚ3ð«g Ÿ§¯—Jx„–’U/ÂÅv_s(Hÿ@TñJÑãõçn­‚!ÈgfbÓc­:él[ðQe 9ÀPLbÃãCµm[5¿ç'ªjglå‡Ûí_§Úõl-;"PkÞÞÁQâ¼_Ñ^¢SŸx?"¸¦ùY騐ÒOÈ q’`~~ÚtËU¹CڒêV  I1Áß_ÿÙ iB^c@`shddlmZddlmZddlmZddlZddlZddlZddlZddlZddl Z ddl Z ddl m Z m Z ddlmZmZmZmZmZmZmZddlmZmZmZmZmZddZdd Zd Zd Z d Z!d Z"dZ#dZ$e%dkrde$ej&dndS(i(tprint_function(tdivision(tabsolute_importN(tget_boolean_paramtCL_CONFIG_FILE(t QuotaWrappertNoSuchPackageExceptiontNoSuchUserExceptiontIncorrectLimitFormatExceptiontInsufficientPrivilegesExceptiontGeneralExceptiontQuotaDisabledException(t print_textt print_csvt print_jsontprint_text_errortprint_csv_errorcC`sZ|jdkrdSy tj|j}t|SWntk rUt|nXdS(sC Checks if username is valid one and returns UID as string tdefaultt0N(tlowertpwdtgetpwnamtpw_uidtstrtKeyErrorR(tusernametuid((sA/opt/alt/python27/lib/python2.7/site-packages/clquota/cl_quota.pyt!check_username_and_convert_to_uid"s cC`stjd}|j|}|s3t|n|jd}|dkrR|Sytjt|Wntk rt|nX|S(s< Checks if UID is valid one and retuns it as string s(\d+)iR( tretcompiletsearchRtgroupRtgetpwuidtintR(Rtptpm((sA/opt/alt/python27/lib/python2.7/site-packages/clquota/cl_quota.pyt check_uid/s  cC`sdtjd}|jtjtjjdd}tjdd}|j||j||S(s4 Sets syslog logger and returns its handler tclquotataddresss/dev/logtfmts"%(name)s:%(levelname)s %(message)s( tloggingt getLoggertsetLeveltINFOthandlerst SysLogHandlert Formattert setFormattert addHandler(tloggert sysloggert formatter((sA/opt/alt/python27/lib/python2.7/site-packages/clquota/cl_quota.pytsetup_system_logAs  cC`stdtdtjddtdtdtdtdtdtd td td td td tdtdtdtdtdtddS(NtsUsage: is [OPTIONS]s9If no options given prints quota statistics for all userssOptions:s/ -u | --user : specifies the users2 -U | --user-id : specifies the user IDs -S | --soft-limit : sets the soft limit for a user. Pass 0 or 'default' to set package default limit. Pass -1 or 'unlimited' to cancel limits -H | --hard-limit : sets the hard limit for a user. Pass 0 or 'default' to set package default limit. Pass -1 or 'unlimited' to cancel limitsC -V | --csv : returns data as comma separated valuess1 -J | --json : returns data as jsonsE -p | --package : specifies a package to set or get limitss2 -P | --package-limits : prints package limitssZ -a | --all-package-limits : prints all package limits (including packages without limits)sU -Y | --sync : synchronizes packages and users limits with the databasesD -C | --cache-content : cache quota data to a file the databasesR -F | --force : save user quotas even when they are equal to defaultss --check : Deprecated. Check if quotas is enabled/activated/suported; if disabled show diagnostic information; using with --user or --user-id options(tprinttsystargv(((sA/opt/alt/python27/lib/python2.7/site-packages/clquota/cl_quota.pytusageNs$                cC`s!t}|j|jdS(s, Quota synchronization :return: N(Rt synchronizetsave_user_cache(tq((sA/opt/alt/python27/lib/python2.7/site-packages/clquota/cl_quota.pyt quota_syncfs  cC`s7ttddts3tdttjdndS(sc Check autosynchronization parameter in config file and exit if it`s disabled :return: tcl_quota_limits_autosynct default_vals:cl-quota limits autosynchronization is disabled in config iN(RRtTrueR6R7texit(((sA/opt/alt/python27/lib/python2.7/site-packages/clquota/cl_quota.pytcheck_autosync_disabledpscC`sCyItj|ddddddddd d d d d ddg\}}Wn(tjk rsttjdnXi}d|dkr d|ds,       4(   6 j