}CerddlmZddlmZddlmZddlZddlZddlZddlZddlZdZ dZ ddd d d Z d Z dej fd Zdej fdZdZdZddZddZddZdZdZdZdZdedefdZdS) )absolute_import)division)print_functionNz/proc/lve/listc tt5}|d}dddn #1swxYwYt|ddddg}nz#t $rddtg}YnRt$rddtg}Yn+t$rdd tg}YnwxYw|S) z/ Obtain lve process filesystem version N:rOKz-clcommon: get_lve_version: Can`t open file {}z1clcommon: get_lve_version: Can`t get data from {}z*clcommon: get_lve_version: Can`t parse {}) openLVE_FILEreadintrsplitIOErrorformat IndexError ValueError)flinelve_procfs_versions /builddir/build/BUILDROOT/alt-python27-cllib-3.3.7-2.el7.cloudlinux.x86_64/opt/cloudlinux/venv/lib/python3.11/site-packages/clcommon/clfunc.pyget_lve_versionrsR c (^^ q66!99D               !$++c1"5"5a"8994@ fff"$S$Z$Z[c$d$de jjj"$W$^$^_g$h$hi ccc"$P$W$WX`$a$abc s9A/8 A/<A/<.A//&C&%C&>%C&%C&r i@)KMGTcXt|}tjd}tjd}tjdtj}||}||}||}|dks |dks|dkr|SdS)zh check that val is a valid CPU limit (0-100 int or speed (% or MHZ\GHZ)) return val if ok a z^([1-9]|[1-9][0-9]|100)$z^([1-9]|[1-9][0-9]*)%$z^([1-9]|[1-9][0-9]*)(mhz|ghz)+$N)strrecompile IGNORECASEmatch)valdata regexp_int regexp_speedp regexp_speedfp1p2p3s r validate_cpur-0s s88D788JJ899MJA2=QQM   $  B   T " "B   T " "B TzzR4ZZ2:: 4cp t|}n#t$rYdSwxYw||cxkr|krndS|SdS)zH Check that val - is a string number return val as a string N)rr)r%min_valmax_valdig_vals r validate_intr3Ash c(( tt'$$$$W$$$$$$ %$s   c< |d}|rd}||z}tt|ddt|zdz }||cxkr|krnn|Sn#t t tf$rYnwxYwdS)Nr)isdigitrfloatBYTES_CONVERSION_TABLEupperrrKeyError)r%r0r1suffixresults rmemory_to_pager>Ns  R >>   F,CU3ss8__'=fllnn'MMPQQRR f ' ' ' ' ' ' ' ' 'M  H -     4sA;A??BBc|dkrt|dzdzS|dkr3ttt|dzdz ddzSttt|dzdz dd zS) Nr6rirrrr)r roundr8)pagess rpage_to_memoryrD\s s{{519~~## v~~5u)D0!4455;; uU5\\A%5q99 : :S @@r.ctjdd|d|gtj}|dd}|D]}|} |d|tj t|dtj #tttf$rYwxYwdS)Nz/bin/psz-Uz-u)stdoutr r5) subprocessPopenPIPE communicatesplitrstripindexencodeoskillrsignalSIGHUPrrOSError)itemusernamepslinesrowpartss rreload_processesr[ds  9dHdHEjo ^ ^ ^B NN  Q  % %e , ,E ""$$  "IOODKKMM * * * GCaMM6= 1 1 1 1J0    H  s>ACC87C8/etc/login.defscVt|5}|D]}}|dr|ddd}|}t|dkr"|d|kr|dccdddS~ dddn #1swxYwY|S)N#r rrA)r startswithrLlen)keydefault_path login_defsraw_liner line_spliteds rrdrdps e' " ' 'H""3'' >>#q))!,D::<zbyteify..s:000C genn000r.c,g|]}t|Srrrelements r zbyteify..s 555W  555r.c34K|]}t|VdSNrrs r zbyteify..s*::'WW%%::::::r.) isinstancedictitemslisttupler rOr&s rrrs$ 00"&**,,000 0 D$  555555 D% ::T:::::: D#  {{}} r.c\t|trd|DSt|tr d|DSt|trt d|DSt|t r|S|S)NcNi|]"\}}t|t|#Sr unicodeifyrs rrzunicodeify..s<000C3E!2!2000r.c,g|]}t|Srrrs rrzunicodeify..s 888 7##888r.c34K|]}t|VdSrrrs rrzunicodeify..s*==WZ((======r.)rrrrrbytesrxrs rrrs$ 00"&**,,000 0 D$  8848888 D% ======== D% {{}} r.c| |dddS#t$rYdSwxYw)z Check is string contains only ASCII characters :param s: string to check :return: True - string contains only ASCII characters rw)encodingasciiTF)rOrxryrzs ris_ascii_stringrsT  '""))'222t uus )- ;;textreturncdd}tjd||}tjdd|}|S)zG Escape '%' characters inside text, except '%' followed by '(' cv|dddz|dzS)zo Generate string to replace from matched string '% ' -> '%% ' '%%c' -> '%%%%c' Nr5rA)group) match_objs rreplacez(escape_formatting_chars..replaces6   "%)IOO,=,=b,AAAr.z%+([^(])z%$z%%)r!sub)rrs rescape_formatting_charsrsABBB 6+w - -D 6% % %D Kr.)Nr\)rg)r ) __future__rrrrPr!rRrHrnr rr9r-maxsizer3r>rDr[rdrlrtr|rrrr rrr.rrs'&&&&&%%%%%%  &   "     !"3;    AAA                    ##r.