g%(zddlmZddlmZddlmZddlZddlZddlZddlZddlZddl Z ddl Z ddl m Z m Z ddlmZmZmZmZmZmZmZddlmZmZmZmZmZmZddl Z e jeZe e j!ddZ"dd Z#d Z$d Z%d Z&d Z'dZ(dZ)edkre)ej*dddSdS))print_function)division)absolute_importN)get_boolean_paramCL_CONFIG_FILE) QuotaWrapperNoSuchPackageExceptionNoSuchUserExceptionIncorrectLimitFormatExceptionInsufficientPrivilegesExceptionGeneralExceptionQuotaDisabledException) print_text print_csv print_jsonprint_text_errorprint_csv_errorprint_json_errorc|dkrdS tj|j}t |S#t $rt |wxYw)zC Checks if username is valid one and returns UID as string default0)lowerpwdgetpwnampw_uidstrKeyErrorr )usernameuids E/opt/cloudlinux/venv/lib/python3.11/site-packages/clquota/cl_quota.py!check_username_and_convert_to_uidr!0si~~9$$s,l8$$+3xx ,,,!(+++,s 'AAc4tjd}||}|st||d}|dkr|S t jt|n#t$rt|wxYw|S)z< Checks if UID is valid one and retuns it as string z(\d+)r) recompilesearchr grouprgetpwuidintr)rppms r check_uidr,=s 8A #B '!#&&& ((1++C czz ' SXX '''!#&&&' Js !A;;Bc*tjd}|tjtjd}tjd}|||||S)z4 Sets syslog logger and returns its handler clquotaz/dev/log)addressz"%(name)s:%(levelname)s %(message)s)fmt) logging getLoggersetLevelINFOhandlers SysLogHandler Formatter setFormatter addHandler)logger syslogger formatters r setup_system_logr=Os y ) )F OOGL!!! ..z.BBI!&JKKKI 9%%% i   McNtdtdtjdzdztdtdtdtdtdtd td td td td tdtdtdtdtdtddS)NzUsage: rz [OPTIONS]z9If no options given prints quota statistics for all userszOptions:z/ -u | --user : specifies the userz2 -U | --user-id : specifies the user IDz -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 limitz -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 limitzC -V | --csv : returns data as comma separated valuesz1 -J | --json : returns data as jsonzE -p | --package : specifies a package to set or get limitsz2 -P | --package-limits : prints package limitszZ -a | --all-package-limits : prints all package limits (including packages without limits)zU -Y | --sync : synchronizes packages and users limits with the databasezD -C | --cache-content : cache quota data to a file the databasezR -F | --force : save user quotas even when they are equal to defaultsz --check : Deprecated. Check if quotas is enabled/activated/suported; if disabled show diagnostic information; using with --user or --user-id options)printsysargvr>r usagerE\sF "III )chqk !L 0111 EFFF * "III ;<<< >???  ijjj  ijjj OPPP =>>> QRRR >??? fggg abbb PQQQ ^___  \]]]]]r>crt}||dS)z, Quota synchronization :return: N)r synchronizesave_user_cache)qs r quota_syncrJts2 AMMOOOr>cttdds-tdtztjddSdS)zc Check autosynchronization parameter in config file and exit if it`s disabled :return: cl_quota_limits_autosyncT) default_valz:cl-quota limits autosynchronization is disabled in config rN)rrrArBexitrDr>r check_autosync_disabledrO~sL ^-GUY Z Z Z J^[\\\  r>c, tj|dgd\}}n7#tj$r%ttjdYnwxYwi}d|d<d|d<d|d<d|d<d|d <d |d <d |d <d |d <|D]\}}|dvrd|d<|dvrd|d<|dvr||d<#|dvr||d<-|dvr||d<7|dvr||d<A|dvr||d<K|dvrd|d<U|dvrd|d<_|dkrd|d <k|dvrd|d <u|dvrd |d <|d!vrd|d <|d"vrd|d <|S)#NzPaVJYCp:u:U:S:H:F)zpackage-limitszall-package-limitscsvjsonzpackage=zuser-id=zuser=z soft-limit=z hard-limit=synccachecheck profilingforcer#softharduseruser-idtextformatFrUrV force_save)z-Pz--package-limitspackage)z-az--all-package-limits all-package)z-pz --package)z-uz--user)z-Uz --user-id)z-Sz --soft-limit)z-Hz --hard-limit)z-Yz--syncTrS)z-Cz--cacherTz--check)z-Vz--csvrQ)z-Jz--jsonrR)z --profiling)z-Fz--force)getopt GetoptErrorrErBrN)argv_optsargsconfigoas r parse_argsris" ]5#6$:$:$:;; dd     FF6NF6NF6NF9F8F7OF; F<((1 * * * $F9   0 0 0$(F= ! ! % % % !F9   " " "F6NN % % % !F9   ( ( (F6NN ( ( (F6NN " " "!F6NN # # #"F7OO )^^"F7OO / ! !$F8   " " "%F8   / ! !"&F;   # # ##'F< Ms1AAc tttttt d}t |} d|vrFd|vrAttj tj sdS|drd}td|zddl}|d|ddl}||}td ttd |d d td ttd |d d nt)dSt}d|vry|dsq|dsi|d-||d|ddn2||d||dddSd|vr-||d|ddSd}|drt/|d}n|drt1|d}|dr*|(t3|dkr|||ds|dred|vr4|d,||d|d|ddS|||d|d|ddSd|vr|dSd|vr|dS|r>|ds4||d||dt2dSdS||d| dt2dS#tB$r5} |dr"ttE| Yd} ~ dSYd} ~ dSd} ~ wtFtHtJtLtNf$rF} |d|dz| tQ)| Yd} ~ dSd} ~ wtT$rF} |d|dz| tQ+| Yd} ~ dSd} ~ wwxYw)N)r\rQrRerr_texterr_csverr_jsonrSrTrVzquota-profiling.logzProfiling end; result saved to rz quota_sync()z&--------------------------------------zCumulative time:callsz Total time:r_rXrYr])titler`rZr[rU)r_rXrYr^)rrXrYr^id)rpsort_keyerr_),rrrrrrrirOospathexistsrDATAFILErAprofilerunpstatsStats sort_stats print_statsrJget_package_limitsget_all_packages_limitsr!r,r)_check_if_quota_enabledset_package_limitset_user_limitrGrHget_user_limitsget_all_users_limitsrrr r r r r r=info Exceptionerror) rcoutput_dispatcherrf profiler_logrxrzr*rIres r mainrs$"$   FY$ V  6 1 1 # % % %7>>,"788 k" 4 7,FGGG NL999 LL..>???())) W%%11"555>???m$$$ W%%11"5555 F NN   v &. i (3!&"23A4H4H4N4NV_`````4!&"23A4M4MfU^N_4`4`hqrrrr F F " " / fX. /0I0I0K0KS\ ] ] ] ] F &> /3F6NCCCC I  /F9-..C '? +s3s88q== % %c * * * &> VF^ F""vi'8'D##"9-$)))  6&>v[abn[o  p p p F V   MMOOO F f        F  J'? N3!&"23A4E4Ec4J4J:>NNNNNN N N 0 fX. /0F0F0H0H6:S J J J J J J ! '?  #a&&MMMMMMMMM       "$7 +-J  ### 5&6(#334Q777""""""""" $$$4&6(#334Q777  #########$siAO ;DO B O /O ?B5O 6+O #O =O $P&R>*;Q++ R>8;R99R>__main__r#)N)+ __future__rrrrtrBr$rarr1logging.handlers cldetectlibrrr.rr r r r r r clquota.utilsrrrrrrr2__name__logger_dr3DEBUGr!r,r=rErJrOrirrCrDr>r rs0&%%%%%&&&&&& 99999999 7 X & &'-  , , , ,$   ]]]0333le$e$e$P zD#(122,r>