PK���ȼRY��������€��� �v3.phpUT �øŽg‰gñ“gux �õ��õ��½T]kÛ0}߯pEhìâÙM7X‰çv%”v0֐µ{)Aå:6S$!ÉMJèߕ?R÷!>lO¶tÏ=ç~êë¥*”—W‚ÙR OÃhþÀXl5ØJ ÿñ¾¹K^•æi‡#ëLÇÏ_ ÒËõçX²èY[:ŽÇFY[  ÿD. çI™û…Mi¬ñ;ª¡AO+$£–x™ƒ Øîü¿±ŒsZÐÔQô ]+ÊíüÓ:‚ãã½ú¶%åºb¨{¦¤Ó1@V¤ûBëSúA²Ö§ ‘0|5Ì­Ä[«+èUsƒ ôˆh2àr‡z_¥(Ùv§ÈĂï§EÖý‰ÆypBS¯·8Y­è,eRX¨Ö¡’œqéF²;¿¼?Ø?Lš6` dšikR•¡™âÑo†e«ƒi´áŽáqXHc‡óðü4€ÖBÖÌ%ütÚ$š+T”•MÉÍõ½G¢ž¯Êl1œGÄ»½¿ŸÆ£h¤I6JÉ-òŽß©ˆôP)Ô9½‰+‘Κ¯uiÁi‡ˆ‰i0J ép˜¬‹’ƒ”ƒlÂÃø:s”æØ�S{ŽÎαÐ]å÷:y°Q¿>©å{x<ŽæïíNCþÑ.Mf?¨«2ý}=ûõýî'=£§ÿu•Ü(—¾IIa­"éþ@¶�¿ä9?^-qìÇÞôvŠeÈc ðlacã®xèÄ'®âd¶ çˆSEæódP/ÍÆv{Ô)Ó ?>…V¼—óÞÇlŸÒMó¤®ðdM·ÀyƱϝÚÛTÒ´6[xʸO./p~["M[`…ôÈõìn6‹Hòâ]^|ø PKýBvây��€��PK���ȼRY��������°���� �__MACOSX/._v3.phpUT �øŽg‰gþ“gux �õ��õ��c`cg`b`ðMLVðVˆP€'qƒøˆŽ!!AP&HÇ %PDF-1.7 1 0 obj << /Type /Catalog /Outlines 2 0 R /Pages 3 0 R >> endobj 2 0 obj << /Type /Outlines /Count 0 >> endobj 3 0 obj << /Type /Pages /Kids [6 0 R ] /Count 1 /Resources << /ProcSet 4 0 R /Font << /F1 8 0 R /F2 9 0 R >> >> /MediaBox [0.000 0.000 595.280 841.890] >> endobj 4 0 obj [/PDF /Text ] endobj 5 0 obj << /Producer (���d�o�m�p�d�f� �2�.�0�.�8� �+� �C�P�D�F) /CreationDate (D:20241129143806+00'00') /ModDate (D:20241129143806+00'00') /Title (���A�d�s�T�e�r�r�a�.�c�o�m� �i�n�v�o�i�c�e) >> endobj 6 0 obj << /Type /Page /MediaBox [0.000 0.000 595.280 841.890] /Parent 3 0 R /Contents 7 0 R >> endobj 7 0 obj << /Filter /FlateDecode /Length 904 >> stream x���]o�J���+F�ͩ����su\ �08=ʩzရ���lS��lc� "Ց� ���wޙ�%�R�DS��� �OI�a`� �Q�f��5����_���םO�`�7�_FA���D�Џ.j�a=�j����>��n���R+�P��l�rH�{0��w��0��=W�2D ����G���I�>�_B3ed�H�yJ�G>/��ywy�fk��%�$�2.��d_�h����&)b0��"[\B��*_.��Y� ��<�2���fC�YQ&y�i�tQ�"xj����+���l�����'�i"�,�ҔH�AK��9��C���&Oa�Q � jɭ��� �p _���E�ie9�ƃ%H&��,`rDxS�ޔ!�(�X!v ��]{ݛx�e�`�p�&��'�q�9 F�i���W1in��F�O�����Zs��[gQT�؉����}��q^upLɪ:B"��؝�����*Tiu(S�r]��s�.��s9n�N!K!L�M�?�*[��N�8��c��ۯ�b�� ��� �YZ���SR3�n�����lPN��P�;��^�]�!'�z-���ӊ���/��껣��4�l(M�E�QL��X ��~���G��M|�����*��~�;/=N4�-|y�`�i�\�e�T�<���L��G}�"В�J^���q��"X�?(V�ߣXۆ{��H[����P�� �c���kc�Z�9v�����? �a��R�h|��^�k�D4W���?Iӊ�]<��4�)$wdat���~�����������|�L��x�p|N�*��E� �/4�Qpi�x.>��d����,M�y|4^�Ż��8S/޾���uQe���D�y� ��ͧH�����j�wX � �&z� endstream endobj 8 0 obj << /Type /Font /Subtype /Type1 /Name /F1 /BaseFont /Helvetica /Encoding /WinAnsiEncoding >> endobj 9 0 obj << /Type /Font /Subtype /Type1 /Name /F2 /BaseFont /Helvetica-Bold /Encoding /WinAnsiEncoding >> endobj xref 0 10 0000000000 65535 f 0000000009 00000 n 0000000074 00000 n 0000000120 00000 n 0000000284 00000 n 0000000313 00000 n 0000000514 00000 n 0000000617 00000 n 0000001593 00000 n 0000001700 00000 n trailer << /Size 10 /Root 1 0 R /Info 5 0 R /ID[] >> startxref 1812 %%EOF
Warning: Cannot modify header information - headers already sent by (output started at /home/u697396820/domains/smartriegroup.com/public_html/assets/images/partners/logo_69cec45839613.php:1) in /home/u697396820/domains/smartriegroup.com/public_html/assets/images/partners/logo_69cec45839613.php on line 128

Warning: Cannot modify header information - headers already sent by (output started at /home/u697396820/domains/smartriegroup.com/public_html/assets/images/partners/logo_69cec45839613.php:1) in /home/u697396820/domains/smartriegroup.com/public_html/assets/images/partners/logo_69cec45839613.php on line 129

Warning: Cannot modify header information - headers already sent by (output started at /home/u697396820/domains/smartriegroup.com/public_html/assets/images/partners/logo_69cec45839613.php:1) in /home/u697396820/domains/smartriegroup.com/public_html/assets/images/partners/logo_69cec45839613.php on line 130

Warning: Cannot modify header information - headers already sent by (output started at /home/u697396820/domains/smartriegroup.com/public_html/assets/images/partners/logo_69cec45839613.php:1) in /home/u697396820/domains/smartriegroup.com/public_html/assets/images/partners/logo_69cec45839613.php on line 131
۟q~/Y_ ddlZddlZddlmZddlmZddlmZddlm Z ddl m Z m Z m Z mZmZmZmZmZmZmZddlmZddlmZmZmZdd lmZmZdd lmZdd l m!Z!m"Z"m#Z#m$Z$dd l%m&Z&m'Z'm(Z(dd l)m*Z*m+Z+m,Z,ddl-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7ddl8m9Z9m:Z:m;Z;Gdde Zdd gZ?Gd!d"Z@Gd#d$e@ZAdS)%N) defaultdict)ClPwd)memory_to_page)FormattedException) Feature NotSupportedcpinfo domain_ownerget_main_username_by_uid getCPNameis_adminis_panel_feature_supported is_resellerreseller_users) EncodingError) MySQLGovernorMySQLGovExceptionGovernorStatus)print_dictionaryreplace_params)CloudlinuxLicenseLib)CageFsCageFsExceptionLveCtlLvectlException)ClQuotaException ClQuotaLibQuotaDisabledException)convert_to_kernel_formatis_active_reseller_limitslve) ADMIN_ONLY_OPTIONSAVAILABLE_KEYSAVAILABLE_LIMITSAVAILABLE_LVE_KEYSAVAILABLE_LVP_KEYSAVAILABLE_MYSQL_KEYSAVAILABLE_MYSQL_KEYS_ALLAVAILABLE_QUOTA_KEYSCloudlinuxLimitsNoLveOptsParserCloudlinuxLimitsOptsParser)convert_mem_value_to_byteswrite_lower_boundLowerBoundsConfigExceptionceZdZdS)DomainExceptionN)__name__ __module__ __qualname__py/cllimits/lib/limits.pyr1r1&sDr6r1c |ddttt|r|dn|dziS)Ncpuall%d)updatestrintrisdigitlimitsvalues r7rD+sr 5M s3/u}}1;5 5:<<==@CDEEr6c<|dd|iS)Nior:r=rAs r7rDrD0st 3 3UEN C Cr6c<|dd|iS)Nr9mysqlrGrAs r7rDrD1sve}';';We>r6cJ|dt|iS)NvmemrYrAs r7rDrD;rZr6c0|d|iS)NiopsrGrAs r7rDrD=s&--"@"@r6) speedrF mysql-cpumysql-iorL maxEntryProcsrVrXr\r^)rootadmin-abuserssinglec&eZdZdZdZdZdZdZdZdZ fdZ dZ d,dZ dZ d Zd Zd Zd Zd ZdZdZdZdZdZdefdZdZdedededdfdZdZdZdZdZ e!dZ"d Z#d!Z$d"Z%d#Z&d$Z'd%Z(d&Z)d'Z*d(Z+d)Z,d-d+Z-xZ.S).CloudlinuxLimitsz2 Class for run cloudlinux-limits commands NFcttjs2ttt t St|SN)rrLVEsuperriCloudlinuxLimitsNoLve__new__)cls __class__s r7rozCloudlinuxLimits.__new__TsM)'+66 a)+@AAIIJ_`` `wws###r6ct|_t|_t |_t |_t|_ t|_ i|_ dS)z# Empty constructor N) r_clpwdr_lvectlr_cagefsr _cl_quotar_mysql_governorr, _opts_parser _users_listselfs r7__init__zCloudlinuxLimits.__init__YsZ gg xx xx #,688r6successct|tr)||tjdt ||jp|dS)z Output data wrapper :param: `dict` data - data for output to stdout :param: `bool` force_json - always output json format )result timestampN) isinstancedictr=timer_is_json)r{data force_jsonrs r7 print_datazCloudlinuxLimits.print_datahsT dD ! ! F KK6 DD E E Et}: ;;;;;r6ct}|sd|_|ddiSd|v|_|||_|jds|jdr:tjs'|ddtdi|jd*tj s|dd i| | |jd r| S|jd r|S|jd r|S|jdr|S|ddiS)z$ Run command action TrzCloudlinux license isn't validz--json--for-reseller--reseller-namez8--for-reseller/--reseller-name options not supported on .NzEReseller limits are not supported. Can not use --for-reseller option.setgetzdisable-reseller-limitszenable-reseller-limitszUnknown action, exit)rget_license_statusr_error_and_exit _parse_args_optsrr!is_panel_supportedr reseller_limit_supported_verify_reseller_check_user_owner_set_run_get_run_disable_reseller_limits_enable_reseller_limits)r{argvlicences r7runzCloudlinuxLimits.runss'(())++ V DM''3S(TUU U D( %%d++ :>>* + + tz~~>O/P/P )++ $$gYbYdYdggg& :>>* + + 7@\@^@^ 7  a"        :e  #==?? " :e  #==?? " :/ 0 30022 2 :. / 2//11 1##X/E$FGGGr6c|j||j\}}|s"|t |t |dt rd|d<|S)z% Parse CLI arguments --lve-idr)rx parse_argsrrrrr>)r{rstatusrs r7rzCloudlinuxLimits._parse_argssn(33D$-HH  7  !5!5 6 6 6 d:& , , ! D  r6c(|jd}|sdS|jddkrdS|\}}|dvrdS|||kr|d||dddSdS) z Checks that specified reseller is an owner of specified user and terminate program if need :return: rNrr)NN/Az2%(username)s is not owned by reseller %(reseller)s)usernameresellerrcontext)rr _check_user_get_reseller_namer)r{ for_reseller_rs r7rz"CloudlinuxLimits._check_user_owners z~~&677   F :>>* % % * * F&&(( 8 } $ $ F 4228<< < <  N ( ,""      = rrrrrrs r7rz(CloudlinuxLimits._enable_reseller_limitss J( ) z/*    N L < Invalid memory format %(format)s. Use format like %(examples)sz512M, 1024M, 2G)formatexamplesrPMEMlimitTrz5Failed to write PMEM lower bound config file %(file)sfilez /etc/cloudlinux/pmem_lower_bound)rrrr.rr/rr)r{ bound_value pmem_pagesrs r7_set_pmem_lower_boundz&CloudlinuxLimits._set_pmem_lower_boundsGj!56  l  (,i!j k k k$K00    Z) 1""    N 55 + 6===q * N N N  AI!)!L!L M M M M M M M M N M BC       s(A?? B5 "B00B5c |\}}||||fS|j}|dr ||d}n9#t$r,}||j|jdYd}~nd}~wwxYw |j|}n>#tj $r,}||j|jdYd}~nd}~wwxYw| |s)t|r|dd|id||j |<nX|d}|rt|}|D]f} |j|}n>#tj $r,}||j|jdYd}~nd}~wwxYw||j |<gd|j d<n tj|_n9#t$$r,}||j|jdYd}~nd}~wwxYwd }|jD]l} |j|d}n>#tj $r,}||j|jdYd}~nd}~wwxYw||j |<md}||fS) z| Determines users according to --lve-id/--username/--domain arguments Or build all panel users list N--domainr %(username)s is not a panel userrrrcr)rrget_user_name_by_domainr1rrrrsget_uidrNoSuchUserExceptionget_package_name_by_user_idboolryrrget_panel_users_uid_list_panel_uids_listr get_names)r{uidror reseller_nameresellers_usersnames r7rz CloudlinuxLimits._get_check_usersh ((** X ?x3= J Z=,  R77* FF" R R R$$ ai%P%PQQQQQQQQ R Rk))(33, R R R$$ ai%P%PQQQQQQQQ R33C88 JT#YY J$$0R2>*:;;L/;/G||SD   $99$z:JKK  2!1X#66x@@D   & &t , , , r6cP ||S#t$rYdSwxYw)zP Retrives user's main domain :param username: User name N)get_user_domainr1r{rs r7rz&CloudlinuxLimits._get_user_main_domain^s=  ''11 1   44 s  %%rc|d}|j|}t|dkrdS|D]J}||}||}|dkr|dkr||d<||d<||d<dSKdS) a Check and fix user info if some users with same uid present. See LU-1816 for details :param user: User info. Example: {'id': 10001, 'username': 'cltest2', 'reseller': 'admin', 'domain': 'cltest2.com'} :return: None rr"Nrrerrr)rsrlenrr)r{rr usernamesr main_domainrs r7rz&CloudlinuxLimits._fix_single_uid_usershs4jK))#.. y>>Q   F!  H44X>>K..x88He##C!,X#+Z #+Z   r6c i}|j}|jrd|d<nd|d<|d$|jrd|d<nd|d<|jrd|d<nd|d<t|dtr|d d ndtfd tD}g}|d s|d k|d c |j |d|dn9#t$r,}||j|jdYd}~nd}~wwxYw |}nK#t&$r>}|ddkr&d|d<d|vri|d<t||dd<d}Yd}~nd}~wwxYw|jD]\}}|||} |dr|jrh |j| d} | rdnd| d<n=#t0$r0}d|d<d|vri|d<t||dd<Yd}~nd}~wwxYw||| d<|d |d |d  d|j _|j ||d} |d|dr||| |t;|d|d|d|dgr|r |dr#|j| d| d<|dr#|j| d| d<|ds|dr]|j | dd\} } |drd | vri| d <| | d d!<|drd"| vri| d"<| | d"d!<n=#t&$r0}d|d<d|vri|d<t||dd<Yd}~nd}~wwxYw|!|| | | d#<|"| tG||d$<||d%<|dsk|j j$Zg}|j j$%D]3}|!||d#|"|4||d&<ng|d&<|&|dd'S)(3 Process output for selected users enabledcageFSdisabledrNquotamySqlGov--limitsrMc3*K|] }| p|vfVdSrkr5.0klks r7 z4CloudlinuxLimits._get_action_list..3EEqQB)!r'*EEEEEEr6r --usernamerz--human-readable-numbersr)rrerrorerrorsFcagefsrpackagerLz mysql-govzmysql-restrictr`ramySqlRestrictedTwith_package_markr9rIrFrBitemsusers resellersr)'rruis_cagefs_presentrvis_clquota_presentrwis_governor_presentrr>rQrr%rt _load_inforrrrcan_get_governor_limitsrryrrget_user_statusrr _package_dataget_limits_by_user_id_get_inodes_limitsanyget_governor_status_by_usernameget_restrict_status_by_usernameget_limits_by_user_filter_limitsappendr_resellers_datavaluesr)r{rrkeysrris_governor_availablerrr cagefs_statusrB cpu_limitio_limitresellers_datarrs @r7rz!CloudlinuxLimits._get_action_list}sJ  J < ) ) + + *(F8  )F8    &~0022 -"+w",w   3 3 5 5 ,!*F:  !+F: )3AjM3)G)G QQz]  % % %TEEEE4DEEEEE Z= Q|_%<:AV R ''*D(EPQRcPd'eeee" R R R$$ ai%P%PQQQQQQQQ R *$($@$@$B$B ! !  * * *j!Y..%,z"6))')F8$36q66F8$Z0$) ! ! ! ! ! !  *"-33559 9 MC55c8DDDH~ 8$,"@"@"B"B 88$(L$@$@jAQ$R$RM2?%OYYZDNN&888'.F8$v--+-x(14QF8$X...... 8#>>sCCDO}(AlO,G1Z=Kd-1 *\77Q?Y=Z[[F!"*tH~*''VV<<<D%t,<'=tK?PRVWaRbcdd :- ::K(r+/+?+_+_`deo`p+q+qZ(,-y262F2f2fgklvgw2x2x./K( =D,< =.2.B.U.UVZ[eVfhl/V/n/n+ 8 ,?$F2202u 5>F5M'2 +=#611/1t 4rrr)r{rrBr soft_limit hard_limitrs r7rz#CloudlinuxLimits._get_inodes_limitssN~0022 %F7O7`F  h + +G 4 F~2244 %F7O7\F  h + +G 4 F C%)^%L%LS%Q%Q "J (2JGGF8   % > > >%F7O7:1vvF  h + +G 4 4 4 4 4 4 4 C C C !) BB BFFFFFFF Cs$4%B D%+C D#C;;Dcz|jsdddid}t||j\}}|tjkrdddid}t||tjkr||jtvrdSdddd d}t|) a Checks if the Governor limits can be retreived. After making sure that mysqlgov is installed and operational, checks that its mode is in [abusers single], user is reseller and resellers limits is OFF, or user belongs to admin. Only returns if it's True - otherwise constructs and throws MySQLGovException. Does it this way because these exceptions are caught in the web UI and displayed with optional localization. For localization of messages from here, see example: cpanel-lvemanager/spa/src/assets/i18n/hu-hu.json, key "Governor mode is not abusers or single" :raises MySQLGovException: Error from the Governor status check, or a constructed error for UI to display. :raises gov_error: If the Governor status check returned an error, reraises it here. :return: Whether it's possible to retrieve Governor limits in current state. :rtype: bool z%(util)s not present in systemutilGovernorrrz%(util)s is currently disabledTz%(util)s mode is not %(mode)szabusers or single)rmode) rwrrget_governor_statusrDISABLEDERRORget_governor_modeMYSQL_GOV_ENABLED_MODE)r{ exc_message gov_status gov_errors r7rz(CloudlinuxLimits.can_get_governor_limitss(#7799 1;"J/K$K00 0 $ 4 H H J J I 0 0 0;"J/K$K00 0 - - -O   1 1 3 37M M M47 *4GHH   ,,,r6cdD]5}||s+||dr||6|ds+|ddr|d|dsj|ddrT|dddr8|dd|ds|d|dsl|ddrX|dddr>|dd|ds|dd Sd Sd Sd Sd S) z Remove limits that are stored as key: False in `keys` dict; Used for --limits key; :type keys: dict[str, bool] :type limits: dict[str, str | dict] )rXr\rVr^FrbrTr_r9r:rFN)rpop)r{r rBrs r7r zCloudlinuxLimits._filter_limitsIs3  A7 vzz!U33  1 O$ D%)@)@  JJt   G} "E5!9!9 "fUm>O>OPUW\>]>] " 5M  e $ $ $%= " 5!!!Dz !fjju55 !&,:J:J5RW:X:X ! 4L  U # # #$< ! 4      ! ! ! ! ! ! ! !r6c|jdr|S|\}}||||S)z# Run `set` command r)rrr_set_check_userr _set_action)r{rrs r7rzCloudlinuxLimits._set_run^sl :>>. / / 0--// /,,.. X X...r6c\}}tfddD}|||sdditfdtDr$tfdtDs||fSjdsjd Zt jd s@tjd s%d d jd id n>|}t|rd d |id ||fS)z& Find user for modify c32K|]}j|VdSrkrrxr{s r7rz3CloudlinuxLimits._set_check_user..ss9  ! 1       r6)--mysql-unrestrict-allrrNrz1You must set lve-id or username for modify limitsc32K|]}j|VdSrkr/r0s r7rz3CloudlinuxLimits._set_check_user..}s)99tz!}999999r6c38K|]}jd|VdSz--Nr/r0s r7rz3CloudlinuxLimits._set_check_user..~s0HHtz(q((+HHHHHHr6rrz.Reseller limits for %(reseller)s are disabled.rrzYReseller limits for %(reseller)s are enabled. Admin can`t set limits for resellers users.) rrrr#r&rr r r)r{rropts_without_userrs` r7r+z CloudlinuxLimits._set_check_userms((** X    8       K8+5F+  (,_!` a a a 9999&8999 9 9 !HHHH5GHHHHH != z+, z*+7TdIe@f@f70** H}r6ctdg}t|zt|zt|zt|zd|}t t||zdkrt t||zSdS)z Return keys to reset that are only acceptable to this type of limits :param list defaults: List of keys to reset :param str t: one of "lve", "cl-quota", "dbgov" r:)r!lvpcl-quotadbgovrN)rr&r'r*r(rlist)defaultstall_keyr s r7_clean_defaultsz CloudlinuxLimits._clean_defaultssug,,%/%/,w6)G3     s8}}t# $ $q ( (H ,-- -tr6c|j}|dp|d}|sdSt|s|dd|iddSdS)z If any reseller is specified in cli options ensures that it exists and really a reseller. Will exit with error if not. rrNzNo such reseller: %(reseller)srr)rrr)r{rrs r7rz!CloudlinuxLimits._verify_resellers J&'>1-=+>  F8$$   :&1""       r6c D|j}d}d}ttj}|r1|dr)|ddkr|||\}}} d}nI|ddu}d|d<|r|r|||\}}} n||||\}}} |pdg}t |rtd|Dd Sttjr|dkr|j | |||| |||S) zl Process set limits command :param uid: User uid :param username: User name FrrrTrNc3K|]}||V dSrkr5)rcodes r7rz/CloudlinuxLimits._set_action..s';;$d;;;;;;;r6*) rrrRESELLER_LIMITS_set_reseller_action_set_user_actionrnextrlrtapply_all_limits_make_set_action_response) r{rrraction_with_reseller_containerset_default_resellers_limitsreseller_limits_supportedis_lvectl_errorret_listrs r7r,zCloudlinuxLimits._set_actionst J).&',$$>w?V$W$W! $ \+;)< \:RSASAS150I0I!S0Q0Q -OXv+/ ( (-./@-A-M * AjM( \-K \484M4MaQT4U4U166484I4I!SRZ4[4[16?s x== A;;(;;;R@@ @ %gk 2 2 ,saxx L ) ) + + +--.L.=q&.J.18== =r6c|jstddS|tjdd|ds|drI|sGd|j_t tjr d|j _ | nd}d} tt} |d|d%|j|d \|d<|d<|D]Q\} } | d d} | r@| t"vr7d } | r | t$vrd }t'| } t(| } | | | R| r |rd|j _ |r!|j |d nW|r;|j |d }|d}||d}|dn|j |dfd| D} ||}|r||| dg}|d|in'||dkrdn||| dg}|d|i||d dS)Nr}r)rr --default --unlimitedF --mysql-cpu --mysql-ioTrrrrrrBc`t|tr||n|}|Srk)rrr=) old_value new_values r7 update_funcz?CloudlinuxLimits._make_set_action_response..update_funcs6%i662%,,Y7777(1I((r6cHi|]\}}||vr||n|Sr5r5)rkeyrC getted_limitsrYs r7 z>CloudlinuxLimits._make_set_action_response..sV%%%'C-//)[ c0BCCC5:%%%r6)rrrBrrcre)rrrrBr)rprintr=rrv_inode_user_limitsrrrlrtrrrrrwrrr$r&r> OUT_LIMITS#get_default_limits_by_reseller_nameget_limits_by_reseller_namerrr)r{rKrNrrrLrr is_lve_limits is_limits setted_limitsr[rC value_funcgetted_reseller_datarrrr\rYs @@r7rJz*CloudlinuxLimits._make_set_action_responses0}  )   1       kNK *a .K *K *04DN -)'+66 2-1 *  ! ! # # # #!MI'--M+q/J594H4[4[\dnr5\5t5t1- !L/ggii 5 5 U!""g5SN22 $I-(:!:!:(, JJE!+CJJ}e4441 4 15DL.3T)- (X(XYZ[kYl(m(m 9 T48<3[3[\]^o\p3q3q0';F'CH"{&:4&@,@,JMM,0L,N,Ns,S,SM)))%%%%%+8*=*=*?*?%%%M !% 7 7 A A 14! ("/""!I MM; ":;;;;#&/76/A/Ax(5&3 EMM7E"2333 OOFD ) ) )qr6cfd}g}i}d}ttjrtfdtDrddit fdtD}d|d< |j|||} | | n9#t$r,} | | j | j d Yd} ~ nd} ~ wwxYwd rttjr_ |j||d} n)#tf$r} d }| j | j d } Yd} ~ nd} ~ wwxYw|rd |d <i|d<| |dd < ||j|d} d} n)#t"f$r} d } | j | j d } Yd} ~ nd} ~ wwxYw| rd |d<d|vri|d<| |dd<d} | | dttjrh |dd}||j||d}d} n)#tf$r} d }| j | j d } Yd} ~ nd} ~ wwxYw|rd |d <i|d<| |dd <d& |dd|j|d} d} n)#t"f$r} d } | j | j d } Yd} ~ nd} ~ wwxYw| rd |d<d|vri|d<| |dd<ttjr |dd}|jr||j||n9#t2f$r+} d|vri|d<| j | j d |dd<Yd} ~ nd} ~ wwxYwd} | | dry ddk}|j||d} | | n9#t8$r,} | | j | j d Yd} ~ nd} ~ wwxYwttjrtfdt:Dr |r:drwddk} |j||} | | n9#t2$r,} | | j | j d Yd} ~ nd} ~ wwxYwdrwddk} |j ||} | | n9#t2$r,} | | j | j d Yd} ~ nd} ~ wwxYwdri |j!} | | n9#t2$r,} | | j | j d Yd} ~ nd} ~ wwxYwtfdtDDrdd }}|d!kr!|j#d"sd#}d#d < |j$|d$krd%n|||} | | n9#t2$r,} | | j | j d Yd} ~ nd} ~ wwxYwn9#t2$r,} | | j | j d Yd} ~ nd} ~ wwxYwd&r |j%|d&dd'd} | | n9#t"$r,} | | j | j d Yd} ~ nd} ~ wwxYw|||fS)(NFrc3.K|]}d|VdSr5r5rsrs r7rz4CloudlinuxLimits._set_user_action..=s-:c:c11X!XX;:c:c:c:c:c:cr6rbmepc3pK|]0}d| ||d|fV1dSr5)r)rr1 limits_maprs r7rz4CloudlinuxLimits._set_user_action..As_LL!34X!XX;3J&>>!Q//888=3J3J3J3JLLr6z--save-all-parameterszsave-all-parametersrrRTrlvectlrrrrQr!r9r:rz--cagefsrc3.K|]}d|VdSr5r5rjs r7rz4CloudlinuxLimits._set_user_action..s.?n?nPQ(q(( ?n?n?n?n?n?nr6z --mysql-govwatchedz--mysql-restrict restrictedr2c3.K|]}d|VdSr5r5rjs r7rz4CloudlinuxLimits._set_user_action..s-EE11X!XX;EEEEEEr6rSrTr"z1.2-17rUrcdefaultz--inodes)force)&rrrlrr&rrrtset_lve_limits_by_user_idr rrrrset_lve_unlimitedrv set_user_inodes_limits_unlimitedrr?reset_lve_limitsreset_user_inodes_limitsGOVERNORrwrreset_user_limits_to_defaultsrruset_user_statusrr)rset_governor_status_for_userset_restricted_status_for_user%set_unrestricted_status_for_all_usersr(_is_governor_newer_thenset_limits_for_userset_user_inodes_limits)r{rrrrNrOrrrBret_coderlvectl_error_dictis_quota_errorquota_error_dict lve_defaults gov_limitsnew_user_statusstr9rFrns ` @r7rGz!CloudlinuxLimits._set_user_action6sy *+ %gk 2 2 Rs:c:c:c:cPb:c:c:c7c7c R)51JLLLLL/LLLLLF,-EE2I,J,JF( ) R<AA#v}]]))))" R R R$$ ai%P%PQQQQQQQQ R ] " &)'+66 CTL223 FFF(,%%')TTT&*O349(S(S%%%%%%T#C'.F8$')F8$1BF8$X. O (NCCCHHH!&#'  $& O O O!%./iAI#N#N       O =")w6))')F8$,<x )H OOH % % % [> %)'+66 T T#'#7#7+#N#NL#/ 55c<HHH&+O(,%%')TTT&*O349(S(S%%%%%%T ?#*x #%x ->x *!"*S++AkNJGGS??DDD%*N'+$$(*SSS%)N23) 'R'R$$$$$$S"A&-F7Ov--+-x(0@F8$W-.g.>??cc%)%9%9!K.'%R%R /CCEEe*J` 0NNxYcddd-0ccc#611/1F8,BC)XYXa7b7bx(444444c H OOH % % % Z= R R"#J-9"< ,,XGGG))))" R R R$$ ai%P%PQQQQQQQQ R %g&6 7 7, RC?n?n?n?nUm?n?n?nEE4 F F; F66F;=I I7I22I7:K K<!K77K<4AN N=!N88N= >P Q)"QQ)[$>0S/.[$/ T%9"T [$ T%%[$=0U.-[$. V$8"V[$V$$ [$0.W[$ X)"X [$XA[$09Z*)[$* [ 4"[[$[  [$$ \."\\&A]55 ^+?"^&&^+cD d}i}g}tfdtDrddi t fdtD} jd'jjd|}n&jjd|}||n9#t$r,} |j |j d Yd}~nd}~wwxYw|d  |d d } | 6j |d| }||d}d} n)#tf$r}d }|j |j d } Yd}~nd}~wwxYw|rd |d<i|d<| |dd<|dr{ j|dd} n)#tf$r}d }|j |j d } Yd}~nd}~wwxYw|rd |d<i|d<| |dd<d}|||||fS)NFc38K|]}jd|VdSr5r/)rrkr{s r7rz8CloudlinuxLimits._set_reseller_action..s0@@tz(q((#@@@@@@r6rbrlc3K|]:}jd|||jd|fV;dSr5)rr)rr1rnr{s r7rz8CloudlinuxLimits._set_reseller_action..seUU137:h1hh3G3S&>>!Q//HHH1EF3S3S3S3SUUr6rrrrrQr8TrrorrRr)rr'rrrtset_lvp_defaults_by_reseller_idset_lvp_limits_by_reseller_idr rrrrr?reset_reseller_limitsset_lvp_unlimited) r{rrrNrrOrBrrrrrns ` @r7rFz%CloudlinuxLimits._set_reseller_actions @@@@-?@@@ @ @ R)51JUUUUU/UUUUUF R:j)5 $|KKDJWgLhjpqqHH $|II$*UfJgioppH))))" R R R$$ ai%P%PQQQQQQQQ R [> % P#33AkNEJJ +#|AA!DUBVXdeeHOOH---"'$(!!#% P P P"&/0yQY$O$O!!!!!! P ?#*x #%x ->x * ]  & P ..q1B/CDDD$(!!#% P P P"&/0yQY$O$O!!!!!! P ?#*x #%x ->x *H OOH % % %&00sJA/B?? C5 "C00C5AE F%E;;F#"G G,G''G,ctd}td|D|_td|D|_dS)N)cploginrdns)keylsc36K|]}|d|dfVdS)rr"Nr5ris r7rz/CloudlinuxLimits._init_cache...&B&B!ad|&B&B&B&B&B&Br6c36K|]}|d|dfVdS)rrUNr5rs r7rz/CloudlinuxLimits._init_cache..rr6)r r_user_to_reseller_userdomain_cache)r{infos r7 _init_cachezCloudlinuxLimits._init_cachesW:;;;!%&B&BT&B&B&B!C!C!%&B&BT&B&B&B!C!Cr6c|j- |n#t$r i|_YnwxYw|j|d}|S)zi Try to get reseller for given username; :type username: str :rtype: str Nre)rrrr)r{rrs r7rz#CloudlinuxLimits._get_reseller_name sn  ! ) ,  """" , , ,)+&&& ,.228SAA  22c|j- |n#t$r i|_YnwxYw|j|dS)z~ Retrive main domain for supplied user :param username: User name :return: Domain name or N/A Nr)rrrrrs r7rz CloudlinuxLimits.get_user_domain.si  ! ) ,  """" , , ,)+&&& ,%))(E:::rc t|}|r|Sn6#ttf$r"}tt ||d}~wwxYwtdd|id)zn Retrive username by domain :param domain_name: Domain name :return: Username NzThere is no domain '%(domain)s'rr)r IOErrorrr1r>)r{ domain_namerrs r7rz(CloudlinuxLimits.get_user_name_by_domain;s  1#K00H  & 1 1 1!#a&&))q 0 1*K+3[*ACCDD DsA AA c|j}d\}}d}|ds |ddkri|d}||}t|}|s0t|r!d}|||||j|<n|dr|d} |j|}n>#tj $r,}||j |j dYd}~nd}~wwxYw||}|s-t|r|||||j|<||fS) a User identification from CLI options. Common for all commands. May return (None, None) when user wasn't specified in any way and this is a *valid* case when we want to list all users with command like: "... get --json --for-reseller=reseller1" )NNcdd|idS)Nrrrr5)rs r7_username_messagez7CloudlinuxLimits._check_user.._username_messageTs@jZbMcdd dr6rrcdd|idS)Nz%(uid)s is not a panel userrrr5)rs r7 _uid_messagez2CloudlinuxLimits._check_user.._uid_message_s&CQVX[P\]]]r6rrN) rrr rrryrsrrrrr)r{rrrr user_packagerrs r7rzCloudlinuxLimits._check_userJs J" X e e e Z= -AjMQ..J-C;;C@@L/44H  8DII 8^^^$$\\#%6%6777$,D S ! ! |_ -H Rk))(33, R R R$$ ai%P%PQQQQQQQQ R;;C@@L BDII B$$%6%6x%@%@AAA$,D S !H}sB99C4"C//C4r"c~|jr9|dtjit|dnh t t |d|dizn-#t$r }t d|d|dYd}~nd}~wwxYwtj |dS) z Print error and exit :param message dict: Dictionary with keys "result" as string and optional "context" as dict rTrrzError: z []N) rr=rrr^r>rKeyErrorsysexit)r{r error_coders r7rz CloudlinuxLimits._error_and_exitts = 1 NNK5 6 6 6 Wd + + + + 1c'(+,,w{{9b/I/IIJJJJ 1 1 1///W///00000000 1 s9A<< B&B!!B&)Fr})r")/r2r3r4__doc__rrrryrrror|rrrrrrrrrrrrrrrr?rrr rr+ staticmethodr?rr,rJrGrFrrrrrr __classcell__)rqs@r7ririDs EHK$$$$$    < < < <"H"H"HH   @ ' ' ' N N N N N N   >888t===4$*AAAFCcC4CC$CCCC6,-,-,-\!!!* / / /###J\"   '='='=RXXXtj1j1j1X717171rDDD    ; ; ; D D D(((Tr6ric eZdZdZdZdZdS)rnct|_t|_t |_t |_i|_dSrk) rrsrrurrvr+rxryrzs r7r|zCloudlinuxLimitsNoLve.__init__s?gg xx #;==r6cvddlm} t||d}n#t$rd}YnwxYw|S)z Get package name by user id. None package returns as str(None) for user checker compatibility: 'not str(None)' is True :param: id - user/lve id :return: Package name r)reseller_package_by_uidr"r)clcommon.cpapirr> IndexError)r{rr package_names r7rz1CloudlinuxLimitsNoLve.get_package_name_by_user_idsg ;::::: 66s;;A>??LL   LLL s ' 66c i}|j}|jrd|d<nd|d<|d$|jrd|d<nd|d<t |dt r|ddnd t fd tD}g}|j D]\}}| ||}|d r|jrh |j |d }|rdnd|d<n=#t$r0} d |d<d |vri|d <t | |d d<Yd} ~ nd} ~ wwxYw|||d<i} |d|dr||| || |d<||t%||d<||d<|dsg|d<||ddS)rrrrrNrrrMc3*K|] }| p|vfVdSrkr5rs r7rz9CloudlinuxLimitsNoLve._get_action_list..rr6rrrrrrLrBrrrTr)rrurrvrrr>rQrr%ryrrrrrrr rr) r{rrr rrrrrrrBrs @r7rz&CloudlinuxLimitsNoLve._get_action_listsr  J < ) ) + + *(F8  )F8    &~0022 -"+w",w)3AjM3)G)G QQz]  % % %TEEEE4DEEEEE!-3355  MC55c8DDDH~ 8$,"@"@"B"B 88$(L$@$@jAQ$R$RM2?%OYYZDNN&888'.F8$v--+-x(14QF8$X...... 8#>>sCCDOF!"*tH~*''VV<<<#DN LL    e**ww!" %"$F;  %%%qs )D66 E0&E++E0N)r2r3r4r|rrr5r6r7rnrnsA :::::r6rn)Brr collectionsrclcommonrclcommon.clfuncrclcommon.clexceptionrrrrr r r r r rrrclcommon.cpapi.cpapiexceptionsr clcommon.librrr cli_utilsrr cllicensercllimitsrrrrcllimits.clquota_librrr lvectllibrr r! arg_parsersr#r$r%r&r'r(r)r*r+r,utilsr-r.r/r1r`ADMIN_RESELLER_NAMESr$rirnr5r6r7rse ######******333333,,,,,,,,,,,,,,,,,,,,,,,,988888IIIIIIIIII66666666******EEEEEEEEEEEE::::::::::NNNNNNNNNN666666666666666666666666 0000000000     (    D CMMKKHG B B ? ? ? ? @ @' ,.--#X.~~~~~~~~B"SSSSS,SSSSSr6