....................................../////.===Shadow-Here===./////................................................ > < > < > < > < > < > < > < > < > < > < > < > < > < > < > < > < > < > < > < > < > < > < > < > < > < > < > < > < > < ------------------------------------------------------------------------------------------------------------------- /////////////////////////////////////////////////////////////////////////////////////////////////////////////////// RIFF¤ WEBPVP8 ˜ ðÑ *ôô>‘HŸK¥¤"§£±¨àð enü¹%½_F‘åè¿2ºQú³íªú`N¿­3ÿƒügµJžaÿ¯ÿ°~¼ÎùnúîÞÖô•òíôÁÉß®Sm¥Ü/ ‡ó˜f£Ùà<˜„xëJ¢Ù€SO3x<ªÔ©4¿+ç¶A`q@Ì“Úñè™ÍÿJÌ´ª-˜ÆtÊÛL]Ïq*‘Ý”ì#ŸÌÏãY]@ê`¿ /ªfkØB4·®£ó z—Üw¥Pxù–ÞLШKÇN¾AkÙTf½è'‰g gÆv›Øuh~ a˜Z— ïj*á¥t d£“uÒ ¨`K˜¹ßþ]b>˜]_ÏÔ6W—è2r4x•íÖ…"ƒÖNîä!¦å Ú}ýxGøÌ —@ ;ÆÚŠ=ɾ1ý8lªË¥ô ^yf®Œ¢u&2©nÙÇ›ñÂñŒ³ aPo['½»øFùà­+4ê“$!lövlüÞ=;N®3ð‚õ›DÉKòÞ>ÄÍ ¥ˆuߤ#ˆ$6ù™¥îЇy’ÍB¼ çxÛ;X"WL£R÷͝*ó-¶Zu}º.s¸sšXqù–DþÿvªhüïwyŸ ¯é³lÀ:KCûÄ£Ëá\…­ ~—ýóî ¼ûûÜTÓüÇy…ŽÆvc»¾×U ñ¸žþоP÷¦ó:Ò¨¨5;Ð#&#ÖúñläÿÁœ GxÉ­/ñ‡áQðìYÉtÒw޼GÔ´zàÒò ð*ëzƒ•4~H]Ø‹f ñÓÈñ`NåWçs'ÆÏW^ø¹!XžµmQ5ÃËoLœÎ: ÞËÍ¥J ù…î èo£ßPÎñ¶ž8.Œ]ʵ~5›ÙË-ù*8ÙÖß±~ ©¹rÓê‚j¶d¸{^Q'˜±Crß ÚH—#¥¥QlÀ×ëã‡DÜ«èî þ&Çæžî;ŽÏºò6ÒLÃXy&ZŒ'j‚¢Ù€IßÚù+–MGi‰*jE€‘JcÜ ÓÌ EÏÚj]o˜ Þr <¾U ûŪæÍ/šÝH¥˜b”¼ ÁñßX GP›ï2›4WŠÏà×£…íÓk†¦H·ÅíMh–*nó÷à]ÁjCº€b7<ب‹¨5車bp2:Á[UªM„QŒçiNMa#<5›áËó¸HýÊ"…×Éw¹¦ì2º–x<›»a±¸3Weü®FÝ⑱ö–î–³|LPÈ~çð~Çå‡|º kD¢µÏàÆAI %1À% ¹Ò – ”ϝS¦‰4&¶£°à Öý”û_Ò Áw°A«Å€?mÇÛgHÉ/8)á¾ÛìáöŽP í¨PŸNÙµº¦‡§Ùš"ÿ«>+ªÕ`Ê÷‡‚ß Õû˜þãÇ-PÍ.¾XV‘€ dÜ"þ4¹ ±Oú‘©t¥¦FªÄÃÄ•b‚znýu½—#cDs˜ÃiÑOˆñ×QO=*IAÊ,¶ŽZƒ;‡wøXè%EÐk:F±Ú” .Ѽ+Áu&Ç`."pÈÉw o&¿dE6‘’EqTuK@Ì¥ã™À(Êk(h‰,H}RÀIXÛš3µ1©_OqÚÒJAñ$ÊÙÜ;D3çŒ[þùœh¬Ã³™ö6ç†NY".Ú‰ï[ªŸŒ '²Ð öø_¨ÂÉ9ué¶³ÒŠõTàîMØ#û¯gN‡bÙ놚X„ö …ÉeüÌ^J ‹€.œ$Æ)βÄeæW#óüßĺŸ€ ÀzwV 9oä»f4V*uB «Ë†¹ì¯žR霓æHXa=&“I4K;¯ç‹h×·"UŠ~<•╪Vêª&ÍSÃÆÅ?ÔqÎ*mTM ˜›µwêd#[C¡©§‘D<©àb†–ÁœøvH/,í:¯( ²£|4-„Æövv„Yͼ™^Á$ˆ„¢Û[6yB.åH*V¨æ?$=˜Ñ€•ñ·­(VlŸ‘ nÀt8W÷´Bûba?q9ú¶Xƒl«ÿ\ù¶’þòUÐj/õ¢Ìµ³g$ƒÎR!¸»|Oߍë’BhîÚÑ¢ñåŒJ„®„£2Ð3•ô02Nt…!£Í]Ïc½Qÿ?ˆ<&ÃA¾Ú,JˆijÌ#5yz„‰Î|ÊŽ5QÏ:‹ÐaóVÔxW—CpeÏzÐïíçôÿÅ_[hãsÐ_/ŽTÝ?BîˆííV$<¿i>²F¬_Eß¿ †bÊŒº­ÿ®Z H“C}”¬,Mp ý/Bá£w>˜YV°aƒúh+cŠ- r/[%|üUMHäQ°X»|û/@|°¥Ð !BÔ Ç¢Ä©š+Õì D«7ìN¶ŽðÔ " ƶ’ÖçtA‰Û×}{tþz­¾GÍ›k¹OEJR$ Â׃ «ëÁ"oÉôž$oUK(Ä)Ãz³Ê-‹êN[Ò3Œñbï8P 4ƒ×q¢bo|?<ÛX¬òÄͰL–±›(™ûG?ýË©ÚÄ–ÂDØÐ_Ç¡ô ¾–ÄÏø ×e8Ë©$ÄF¹Å‹ì[©óìl:F¾f´‹‹Xì²ï®\¬ôùƒ ÿat¥óèÒùHß0äe‚;ü×h:ÆWðHž=Ã8骣"kœ'Y?³}Tûè€>?0l›e1Lòñ„aæKÆw…hÖŠùW…ÈÆÄ0ši·›[pcwËþñiêíY/~-Á5˜!¿†A›™Mÿþ(±“t@â“ö2­´TG5yé]çå僳 .·ÍïçÝ7UÚ±Ð/Nè»,_Ï ùdj7\ï Wì4›„»c¸àešg#ÒÊ⥭áØo5‘?ÌdÝô¯ ¹kzsƒ=´#ëÉK›Ø´±-¥eW?‡çßtòTã…$Ý+qÿ±ƒ÷_3Ô¥í÷:æ–ž<·Ö‡‰Å¢ š‡%Ô—utÌÈìðžgÖÀz²À—ï÷Óîäõ{K'´È÷³yaÏÁjƒô}ž§®æÊydÕÈë5¯èˆõvÕ©ã*çD„ “z„Ó‡^^xÂ3M§A´JG‚öï 3W'ˆ.OvXè¡ÊÕª?5º7†˜(˜Ç¶#çê’¶!ÌdZK§æ 0fãaN]òY³RV ™î$®K2R¨`W!1Ôó\;Ý ýB%qæK•&ÓÈe9È0êI±žeŸß -ú@žQr¦ ö4»M¼Áè¹µmw 9 EÆE_°2ó„ŸXKWÁ×Hóì^´²GѝF©óäR†¦‰ç"V»eØ<3ùd3ÿÚ¤Žú“Gi" —‘_ÙËÎ~Üö¯¥½Î»üŸEÚŽåmÞþí ;ÞólËΦMzA"Âf(´òá;Éï(/7½ûñÌ­cïÕçлþÝz¾-ÍvÑ“pH­–ðÓj$¸Äû¤‚‘ãUBË-n“2åPkS5&‹Â|+g^œ®Ì͆d!OïäîU«c;{Û!ÅŽ«ëZ9Ókóˆ]¯ƒ›né `ÇÒ+tÆš (ØKá¾—=3œ®•vuMñg²\ï Ec€ 05±d™‡×iÇ×›UúvÌ¢£Èþ¡ÕØô¶ßÎA"ß±#Ö²ˆÊŸ¦*Ä~ij|àø.-¼'»Ú¥£h ofº¦‡VsR=N½„Î v˜Z*SÌ{=jÑB‹tê…;’HžH¯8–îDù8ñ¢|Q•bÛçš–‹m³“ê¨ åÏ^m¬Žãþ©ïêO‡½6] µÆ„Ooòü ²x}N¦Ë3ïé¿»€›HA˜m%çÞ/¿í7Fø“‹léUk)É°Œµ8Q8›:ÀŠeT*šõ~ôڝG6 ¢}`ùH­–”¡k ‰P1>š†®9z11!X wKfmÁ¦xÑ,N1Q”–æB¶M…ÒÃv6SMˆhU¬ÊPŽï‘öj=·CŒ¯u¹ƒVIЃsx4’ömÛýcå¡¶7ßŠß 57^\wÒÐÆ k§h,Œý î«q^R½3]J¸ÇðN ‚çU¬ôº^Áì} ³f©Õœ§ˆã:FÄÈ‚é(€™?àýÓüè1Gô£¼éj‚OÅñ  #>×—ßtà 0G¥Åa뀐kßhc™À_ÉñÞ#±)GD" YîäË-ÿÙ̪ ¹™a¯´¢E\ÝÒö‚;™„ë]_ p8‰o¡ñ+^÷ 3‘'dT4œŽ ðVë½° :¬víÑ«£tßÚS-3¶“þ2 †üüʨòrš¹M{É_¤`Û¨0ìjœøJ‡:÷ÃáZ˜†@GP&œÑDGÏs¡þ¦þDGú‘1Yá9Ôþ¼ ûø…§÷8&–ÜÑnÄ_m®^üÆ`;ÉVÁJ£?â€-ßê}suÍ2sõA NÌúA磸‘îÿÚ»ƒìö·á¿±tÑÐ"Tÿü˜[@/äj¬€uüªìù¥Ý˜á8Ý´sõj 8@rˆð äþZÇD®ÿUÏ2ùôõrBzÆÏÞž>Ì™xœ“ wiÎ×7_… ¸ \#€MɁV¶¥üÕÿPÔ9Z‡ø§É8#H:ƒ5ÀÝå9ÍIŒ5åKÙŠ÷qÄ>1AÈøžj"µÂд/ªnÀ qªã}"iŸBå˜ÓÛŽ¦…&ݧ;G@—³b¯“•"´4í¨ôM¨åñC‹ïùÉó¯ÓsSH2Ý@ßáM‡ˆKÀªÛUeø/4\gnm¥‹ŸŒ qÄ b9ÞwÒNÏ_4Ég³ú=܆‚´ •â¥õeíþkjz>éÚyU«Íӝ݃6"8/ø{=Ô¢»G¥ äUw°W«,ô—¿ãㆅү¢³xŠUû™yŒ (øSópÐ 9\åTâ»—*oG$/×ÍT†Y¿1¤Þ¢_‡ ¼ „±ÍçèSaÓ 3ÛMÁBkxs‰’R/¡¤ˆÙçª(*õ„üXÌ´ƒ E§´¬EF"Ù”R/ÐNyÆÂ^°?™6¡œïJ·±$§?º>ÖüœcNÌù¯G ‹ñ2ЁBB„^·úìaz¨k:#¨Æ¨8LÎõލ£^§S&cŒÐU€ü(‡F±Š¼&P>8ÙÁ ‰ p5?0ÊÆƒZl¸aô š¼¡}gÿ¶zÆC²¹¬ÎÖG*HB¡O<º2#ñŒAƒ–¡B˜´É$¥›É:FÀÔx¾u?XÜÏÓvN©RS{2ʈãk9rmP¼Qq̳ è¼ÐFׄ^¡Öì fE“F4A…!ì/…¦Lƒ… … $%´¾yã@CI¬ á—3PþBÏNÿ<ý°4Ü ËÃ#ØÍ~âW«rEñw‹eùMMHß²`¬Öó½íf³:‹k˜¯÷}Z!ã¿<¥,\#öµÀ¯aÒNÆIé,Ћ–lŽ#Àæ9ÀÒS·I’½-Ïp Äz¤Š Â* ­íÄ9­< h>׍3ZkËU¹§˜ŒŠ±f­’¤º³Q ÏB?‹#µíÃ¥®@(Gs«†vI¥Mµ‹Á©e~2ú³ÁP4ìÕi‚²Ê^ö@-DþÓàlÜOÍ]n"µã:žpsŽ¢:! Aõ.ç~ÓBûH÷JCÌ]õVƒd «ú´QÙEA–¯¯Œ!.ˆˆëQ±ù œ·Ì!Õâ )ùL„ÅÀlÚè5@B…o´Æ¸XÓ&Û…O«˜”_#‡ƒ„ûÈt!¤ÁÏ›ÎÝŠ?c9 â\>lÓÁVÄÑ™£eØY]:fÝ–—ù+p{™ðè û³”g±OƒÚSù£áÁÊ„ä,ï7š²G ÕÌBk)~ÑiCµ|h#u¤¶îK¨² #²vݯGãeÖ϶ú…¾múÀ¶þÔñ‚Š9'^($¤§ò “š½{éúp÷J›ušS¹áªCÂubÃH9™D™/ZöØÁ‡¦ÝÙŸ·kð*_”.C‹{áXó€‡c¡c€§/šò/&éš÷,àéJþ‰X›fµ“C¨œ®r¬"kL‰Â_q…Z–.ÉL~O µ›zn‚¹À¦Öª7\àHµšÖ %»ÇníV[¥*Õ;ƒ#½¾HK-ÖIÊdÏEÚ#=o÷Óò³´Š: Ç?{¾+9›–‘OEáU·S€˜j"ÄaÜ ŒÛWt› á–c#a»pÔZÞdŽtWê=9éöÊ¢µ~ ë ;Öe‡Œ®:bî3±ýê¢wà¼îpêñ¹¾4 zc¾ðÖÿzdêŒÑÒŝÀ‰s6¤í³ÎÙB¿OZ”+F¤á‡3@Ñëäg©·Ž ˆèª<ù@É{&S„œÕúÀA)‰h:YÀ5^ÂÓŒ°õäU\ ùËÍû#²?Xe¬tu‰^zÒÔãë¼ÛWtEtû …‚g¶Úüâî*moGè¨7%u!]PhÏd™Ý%Îx: VÒ¦ôÊD3ÀŽKÛËãvÆî…N¯ä>Eró–ð`5 Œ%u5XkñÌ*NU%¶áœÊ:Qÿú»“úzyÏ6å-၇¾ ´ ÒÊ]y žO‘w2Äøæ…H’²f±ÎÇ.ª|¥'gîV•Ü .̘¯€šòü¤U~Ù†*¢!?ò wý,}´°ÔÞnïoKq5µb!áÓ3"vAßH¡³¡·G(ÐÎ0Îò¼MG!/ài®@—¬04*`…«é8ªøøló“ˆÊ”èù¤…ßÊoÿé'ËuÌÖ5×È¡§ˆˆfŽë9}hìâ_!!¯  B&Ëö¶‰ÀAÙNVŸ Wh›¸®XÑJì¨ú“¿÷3uj²˜¨ÍÎìë±aúŠÝå¯ð*Ó¨ôJ“yºØ)m°WýOè68†ŸÏ2—‰Ïüꪫٚ¥‹l1 ø ÏÄFjêµvÌbü¦èÝx:X±¢H=MÐß—,ˆÉÇ´(9ú¾^ÅÚ4¿m‡$âX‘å%(AlZo@½¨UOÌÕ”1ø¸jÎÀÃÃ_ µ‘Ü.œº¦Ut: Æï’!=¯uwû#,“pþÇúŒø(é@?³ü¥‘Mo §—s@Œ#)§ŒùkL}NOÆêA›¸~r½¼ÙA—HJ«eˆÖ´*¡ÓpÌŸö.m<-"³ûÈ$¬_6­åf£ïÚâj1y§ÕJ½@dÞÁr&Í\Z%D£Íñ·AZ Û³øüd/ªAi†/Й~  ‡âĮҮÏh§°b—›Û«mJžòG'[ÈYýŒ¦9psl ýÁ ®±f¦x,‰½tN ‚Xª9 ÙÖH.«Lo0×?͹m¡å†Ѽ+›2ƒF ±Ê8 7Hցϓ²Æ–m9…òŸï]Â1äN†VLâCˆU .ÿ‰Ts +ÅÎx(%¦u]6AF Š ØF鈄‘ |¢¶c±soŒ/t[a¾–û:s·`i햍ê›ËchÈ…8ßÀUÜewŒðNOƒõD%q#éû\9¤x¹&UE×G¥ Í—™$ð E6-‡¼!ýpãÔM˜ Âsìe¯ñµK¢Ç¡ùôléœ4Ö£”À Š®Ðc ^¨À}ÙËŸ§›ºê{ÊuÉC ×Sr€¤’fÉ*j!úÓ’Gsùìoîßîn%ò· àc Wp÷$¨˜)û»H ×8ŽÒ€Zj¤3ÀÙºY'Ql¦py{-6íÔCeiØp‘‡XÊîÆUߢ܂ž£Xé¼Y8þ©ëgñß}é.ÎógÒ„ÃØËø¯»™§Xýy M%@NŠ À(~áÐvu7&•,Ù˜ó€uP‡^^®=_E„jt’ 403WebShell
403Webshell
Server IP : 198.54.126.4  /  Your IP : 216.73.216.149
Web Server : Apache
System : Linux host55.registrar-servers.com 4.18.0-513.18.1.lve.2.el8.x86_64 #1 SMP Sat Mar 30 15:36:11 UTC 2024 x86_64
User : aeaw ( 7508)
PHP Version : 8.1.33
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /opt/cloudlinux/venv/lib/python3.11/site-packages/__pycache__/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /opt/cloudlinux/venv/lib/python3.11/site-packages/__pycache__/lveapi.cpython-311.pyc
�

��hN���ddlZddlZddlZddlZddlZddlZddlmZddlm	Z	ddl
mZddlm
Z
mZddlmZ	ddlZn
#e$rdZYnwxYwddlmZe	��ZdZd	Zd
ZdZGd�d
e��ZGd�de��ZGd�de��ZGd�d��ZGd�d��ZGd�de��Z Gd�d��Z!Gd�d��Z"dS)�N)�Optional)�uid_max)�ProcLve)�cpapi�ClPwd)�NotSupported)�	ve_configi����reseller��c��eZdZdS)�NameMapErrorN��__name__�
__module__�__qualname__���py/lveapi.pyrr(��������Drrc��eZdZdS)�NameMapConfigErrorNrrrrrr,rrrc��eZdZdS)�NameMapNotInitializedNrrrrrr0rrrc�J�eZdZdZefd�Zd�Zd�Zd�Zdd�Z	d	�Z
d
d
�Zd�ZdS)�NameMapz�
    Container for backend storing resellers_name<=>resellers_id map
    As backend store use ve.cfg

    Usage:
    >>> name_map = NameMap()
    >>> name_map.link_xml_node()

    >>> name_map.id_list()
    [1001]
    c�0�||_d|_d|_dS�N)�
_xml_tag_name�	_xml_node�_reseller_id_name_map)�self�xml_tag_names  r�__init__zNameMap.__init__@s��)������%)��"�"�"rc�N�|���D]\}}||kr|cS�dSr��load_from_node)r"�name�name_�id_s    r�get_idzNameMap.get_idFsB���-�-�/�/�	�	�J�E�3���}�}��
�
�
��	�	rc�N�|���D]\}}||kr|cS�dSrr&)r"r*r)�_ids    r�get_namezNameMap.get_nameKsB���-�-�/�/�	�	�J�E�3��c�z�z������	�	rc�>�d�|���D��S)Nc��g|]\}}|��Srr)�.0�_r*s   r�
<listcomp>z#NameMap.id_list.<locals>.<listcomp>Qs��8�8�8���3��8�8�8rr&�r"s r�id_listzNameMap.id_listPs"��8�8�$�"5�"5�"7�"7�8�8�8�8rNTc�b�|�d|_|�|��dS||_d|_dS)aC
        Initialize NameMap. If xml_node is none,
        config will be loaded automatically
        :param use_cache: Bool whether bypass ve.cfg xml cache
        :param xml_node: !! DEPRECATED PARAM !!
                         this param is left only for
                         compatibility with our old code
        N)r �_load_resellers_map_from_ve_cfgr!)r"�xml_node�	use_caches   r�
link_xml_nodezNameMap.link_xml_nodeSsB����!�D�N��0�0��;�;�;�;�;�&�D�N�)-�D�&�&�&rc��g|_|�|���\}}|D]b}|�d��}t|�d����}|r'|r%||jvr|j�||f���c~~dS)zT
        Fills self._reseller_id_name_map from ve.cfg file
        :return:
        �r9�user�idN)r!�_try_get_xml_node�getAttribute�int�append)r"r9�ve_cfgr8�el_r(r*s       rr7z'NameMap._load_resellers_map_from_ve_cfges���
&(��"��1�1�I�1�F�F�����	?�	?�C��#�#�F�+�+�D��c�&�&�t�,�,�-�-�C��
?��
?��4�+E� E� E��*�1�1�3��+�>�>�>����F�Frc���	tj|���\}}n.#tj$r}d|_t	d��|�d}~wwxYw||�|j��fS)Nr<z-Error happened while loading data from ve.cfg)r	�get_xml_config�BadVeConfigExceptionr!r�getElementsByTagNamer)r"r9rCr8�es     rr?zNameMap._try_get_xml_nodeus���	]�(�7�)�L�L�L��F�H�H���-�	]�	]�	]�)-�D�&�$�%T�U�U�[\�\�����	]�����x�4�4�T�5G�H�H�H�Hs��A�A�Ac#�PK�|j�|j�td���|jrc|j�|j��D]C}|�d��}t
|�d����}|r|r||fV��D|jr|jD]
\}}||fV��dSdS)z?
        Obtain data from xml node as (name, id_) list
        NzLName map is not initialized. Use obj.link_xml_node() to get data from configr=r>)r r!rrHrr@rA)r"rDr(r*s    rr'zNameMap.load_from_node}s������>�!�d�&@�&H�'�)Z�[�[�
[��>�	$��~�:�:�4�;M�N�N�
$�
$���'�'��/�/���#�*�*�4�0�0�1�1���$�C�$���)�O�O�O���%�	 �!�7�
 �
 �	��T��C�i�����	 �	 �
 �
 r)NT)T)
rrr�__doc__�LVP_XML_TAG_NAMEr$r+r.r5r:r7r?r'rrrrr4s�������
�
�%5�*�*�*�*����
���
9�9�9�.�.�.�.�$��� I�I�I�I� � � � � rrc�p�eZdZdZd�Zd�Zd
d�Zd�Zd�Zd�Z	d	�Z
ed
���Zed���Z
d�ZdS)�LvpMapzl
    Container for storing information about lve:lvp mapping
    In which reseller container stored lve
    c�|�t��|_i|_i|_d|_t��|_dSr)r�name_map�_id_name_map�_name_id_map�_reseller_id_map_panelr�_pwdr4s rr$zLvpMap.__init__�s4���	�	��
�������&*��#��G�G��	�	�	rc�.�||j|<||j|<dSr)rQrR)r"r(r*s   r�_add_mapzLvpMap._add_map�s"��!%���#��"%���$���rNc�p�	|j�|��jS#tj$r|cYSwxYwr)rT�get_pw_by_name�pw_uidr�NoSuchUserException)r"r(�defaults   rrYz
LvpMap.pw_uid�sG��	��9�+�+�D�1�1�8�8���(�	�	�	��N�N�N�	���s�!�5�5c��|�|��}|�|S|j�tj��|_|j�|��Sr)rYrSr�get_reseller_id_pairs�get)r"r
�uids   r�_get_panel_reseller_idzLvpMap._get_panel_reseller_id�sP���k�k�(�#�#���?��J��&�.�*/�*E�*G�*G�D�'��*�.�.�x�8�8�8rc��|j�|��p|j�|��}|�|S	|�|��}n#t
$rd}YnwxYw|�|�||��|S)z�
        Convert reseller name to an LVE id.
        It supports resellers without a system account (for Plesk compatibility).
        N)rPr+rRr^r`rrV)r"r(r_s   r�get_reseller_idzLvpMap.get_reseller_id�s����m�"�"�4�(�(�G�D�,=�,A�,A�$�,G�,G���?��J�	��-�-�d�3�3�C�C���	�	�	��C�C�C�	�����?��M�M�$��$�$�$��
s�A�A�Ac�*�|j�|��p|j�|��}|�|S	t	j|��j}tj|��r|�	||��nd}n#t$rd}YnwxYw|S)z�
        Convert reseller id to reseller name
        It support resellers without system account (for Plesk compatibilyty)
        N)rPr.rQr^�pwd�getpwuid�pw_namer�is_resellerrV�KeyError)r"r*r(s   r�get_reseller_namezLvpMap.get_reseller_name�s����}�%�%�c�*�*�H�d�.?�.C�.C�C�.H�.H�����K�	��<��$�$�,�D�� ��&�&�
��
�
�d�C�(�(�(�(������	�	�	��D�D�D�	�����s�AB�B�Bc#��K�ttj����}i}|D]N}	|�|��||<�#t$r&tjt
jd|�d���Y�KwxYwtjd���D]\\}}|�|��}|�$tjt
jd|�d����@|�	|d��}||fV��]dS)z�
        This method loops over all user:reseller pairs in control panel
        and returns appropriate lve_id:lvp_id pairs.
        THIS METHOD WON'T CHECK IF 'RESELLER LIMITS' IS ENABLED IN ve.cfg
        z	Reseller �> still exists in control panel, but absent in /etc/passwd file)�cploginr
)�keylsN�user r)
�setr�	resellersrbr�syslog�LOG_WARNING�cpinforYr^)r"rp�
reseller_uidsr
rl�lve_id�lvp_ids       r�
lve_lvp_pairszLvpMap.lve_lvp_pairs�s`�������)�)�*�*�	��
�!�	J�	J�H�
J�*.�*>�*>�x�*H�*H�
�h�'�'���
J�
J�
J��
��&�)I�H�)I�)I�)I�J�J�J�J�J�
J����"'��4K�!L�!L�!L�	!�	!��G�X��[�[��)�)�F�
�~��
��&�)I��)I�)I�)I�J�J�J��"�&�&�x��3�3�F��&�.� � � � �	!�	!s�A�-A3�2A3c#�>K�tj��D]}|V��dSr)rrp)�
reseller_names rrpzLvpMap.resellers�s6����"�_�.�.�	 �	 �M������	 �	 rc��g}tj|��}|D]d}	tj|��j}|�|���2#t$r&tjtjd|�d���Y�awxYw|S)z:
        Obtain from control panel resellers uids
        rnrk)	r�reseller_usersrd�getpwnamrYrBrhrqrr)r(�uidsr{r=r*s     rrtzLvpMap.reseller_uids�s���
���-�d�3�3��"�	J�	J�D�
J��l�4�(�(�/�����C� � � � ���
J�
J�
J��
��&�)I��)I�)I�)I�J�J�J�J�J�
J�����s�.A�-A;�:A;c�V�|�|��}|�|��Sr)rirt)r"rvrys   r�lvp_lve_id_listzLvpMap.lvp_lve_id_list
s)���.�.�v�6�6�
��!�!�-�0�0�0rr)rrrrKr$rVrYr`rbrirw�staticmethodrprtrrrrrNrN�s������������&�&�&�����	9�	9�	9����"���&!�!�!�:� � ��\� �����\�� 1�1�1�1�1rrNc��eZdZdS)�
PyLveErrorNrrrrr�r�rrr�c��eZdZdZed���Zd�Zd�Zd�Ze	dddfd	�Z
d
�Zd�Zd�Z
eefd
�Zejd���ZdS)�PyLvezA
    Wrapper for generate traceback with pretty descriptions
    c�Z�t|t��o|tjko|dkS)Nr)�
isinstancerA�errno�ENOSYS)�codes r�_code_is_errorzPyLve._code_is_errors)���$��$�$�L��%�,��)>�L�4�1�9�Lrc����t�|jj��r5d��fd�t	���D����}d|�d�}nt���}|S)N�, c�d��g|],}|�d���|�dt�|������-S)r2�=)�
startswith�getattr)r1�attr�arg_vars  �rr3z%PyLve._arg_to_str.<locals>.<listcomp>sF���i�i�i��TX�Tc�Tc�dg�Th�Th�i�D�3�3�7�7�D�1�1�3�3�i�i�irz<liblve_settings object �>)r��_pylve�liblve_settings�join�dir�str)r"r��liblve_settings_attr�arg_var_strs `  r�_arg_to_strzPyLve._arg_to_strsr����g�t�{�:�;�;�	'�#'�9�9�i�i�i�i��G���i�i�i�$�$� �M�5I�L�L�L�K�K��g�,�,�K��rc���|�d�j��}|�d�j��}||i|��}��|��}|r=�jr6tj�j��||i|��}��|��}||j|j	d�
tt�j
|�����fd�|���D��z��d�}||j|j	d�
tt�j
|�����fd�|���D��z��d�}�jdkrt!�jjd	i|�����jdkr�j���|s|r|jd	i|��}	t+|	���|S)
N�err_msg�ignore_errorr�c�J��g|]\}}|�d��|������ S�r��r��r1�k�vr"s   �rr3z&PyLve._wrapped_fun.<locals>.<listcomp>5s9���I�I�I�$�!�Q�A�-�-��(�(��+�+�-�-�I�I�Ir)r��fun_name�module�args_c�J��g|]\}}|�d��|������ Sr�r�r�s   �rr3z&PyLve._wrapped_fun.<locals>.<listcomp>=s9���X�X�X���A�1� <� <�t�'7�'7��':�':� <� <�X�X�Xr�rr)�pop�default_msg_templater�r��_retry�time�sleep�_retry_timerrr��list�mapr��items�debug�print�debug_msg_template�format�	traceback�print_stackr�)
r"�call�args�kwargs�msg_templater�r��is_error�format_args�msgs
`         r�_wrapped_funzPyLve._wrapped_fun%s�����z�z�)�T�-F�G�G���z�z�.�$�2C�D�D���t�T�$�V�$�$���&�&�t�,�,���	1���	1��J�t�'�(�(�(��4��(��(�(�D��*�*�4�0�0�H���
��o��Y�Y��S��)�4�0�0�1�1�I�I�I�I�&�,�,�.�.�I�I�I�J���	
�
����
��o��Y�Y�t�C��(8�$�$?�$?�@�@�X�X�X�X������X�X�X� Y�Z�Z�	
�
���:��?�?��0�$�)�0�?�?�;�?�?�@�@�@��:��?�?��N�&�&�(�(�(��	"��	"�%�,�%�4�4��4�4�C��S�/�/�!��rc������fd�}|S)Nc�&���j�g|�Ri|��Sr)r�)r�r�r�r"s  ��r�funzPyLve._wrap_code.<locals>.funIs&���$�4�$�T�;�D�;�;�;�F�;�;�;rr)r"r�r�s`` r�
_wrap_codezPyLve._wrap_codeHs'����	<�	<�	<�	<�	<�	<��
rTg�������?rc�0�||_|jdkrtd��|_d|_d|_d|_||_||_t��|_	||_
|j���|_|jj
|_
|�|jj��|_|jj|_|�|jj��|_|�|jj��|_|jj|_|�|jj��|_|�|jj��|_|�|jj��|_|�|jj��|_|�|jj��|_t3|d��r�|�|jj��|_|�|jj��|_|�|jj��|_|�|jj��|_|�|j��|_dSdS)Nrr�z/Error code {code}; {module}.{fun_name}({args_})zBDEBUG [lvectl]: call {module}.{fun_name}({args_}) with code {code}F�lve_lvp_create)r��
__import__r�r�r�r�r�r�r�_procr��lve_get_api_version�api_version�
initializer��	lve_startr��
lve_create�lve_destroy�lve_info�lve_set_default�	lve_setup�
lve_enter_pid�lve_enter_pid_flags�
lve_leave_pid�hasattrr��lve_lvp_destroy�lve_lvp_map�lve_lvp_move�
lve_lvp_setup)r"�pylve�retry�
retry_tymer�s     rr$zPyLve.__init__Ms�����
��:��?�?�'��4�4�D�N�$U��!�"f���!����������Y�Y��
�%����;�:�:�<�<����+�0��������)>�?�?���#�{�:����/�/�$�+�*@�A�A����?�?�4�;�+B�C�C�����,��
�#���t�{�/J�K�K��������)>�?�?���!�_�_�T�[�-F�G�G���#'�?�?�4�;�3R�#S�#S�� �!�_�_�T�[�-F�G�G����5�*�+�+�	E�"&�/�/�$�+�2L�"M�"M�D��#'�?�?�4�;�3N�#O�#O�D� �#���t�{�/F�G�G�D�� $�����0H� I� I�D��"&����1C�!D�!D�D����	E�	Erc�,�t|jd��S)zB
        Check in pylve binding reseller limits supported
        r�)r�r�r4s r�resellers_supportedzPyLve.resellers_supportedns���t�{�$4�5�5�5rc�T�	|�|��dS#t$rYdSwxYw)zD
        Check if lve exists in kernel
        :rtype: bool
        TF)r��OSError)r"rus  r�
lve_existszPyLve.lve_existsts@��
	��M�M�&�!�!�!��4���	�	�	��5�5�	���s��
'�'c��|dkr|j�||��Si}|j�|��D]�}	|�|��}|||<|j|jkrJ|�|��}t
|j|j��|_|�||���x#t$rY��wxYw|�	|jj��}|||d���}|j�|��D]L}||vr|�|||���#|�||�|�����M|S)a�
        Wrapper for lve_lvp_setup.
        When reseller's limits changed,
        we should iterate over his user's limits
        and set them again;

        This behaviour is needed cause kernel
        does not update users limits after
        changing reseller's one

        Adjust parameters for top level container.
        :param int lvp_id: top level container ID, 0 by default;
        :param settings: liblve_settings instance.
        :return: 0 or errno value
        rT�r�)
r�r�r��lve_id_listr��ls_cpu�minr�r�r�)	r"rv�settings�real_lve_settingsru�
real_settings�
temp_settings�_lve_lvp_setup�results	         rr�zPyLve.lve_lvp_setup�sz��"�Q�;�;��;�,�,�V�X�>�>�>����j�,�,�V�4�4�	�	�F�
� $�
�
�f� 5� 5�
�,9�!�&�)� �'�(�/�9�9�$(�M�M�&�$9�$9�M�+.�}�/C�X�_�+U�+U�M�(��N�N�6�=�9�9�9����
�
�
���
����
�����)B�C�C������t�D�D�D���j�,�,�V�4�4�	>�	>�F��*�*�*����v�'8��'@�A�A�A�A�
���v�t�}�}�V�'<�'<�=�=�=�=��
s�A4B6�6
C�Cc��t|dz|��D],}	|�|���#t$r|cYcSwxYwtd|�d|�d����)z�
        Iter over lves and find available one.
        :param int start: value to start search from; UID_MAX by default
        :param int stop: max value when we will stop search
        :return int: lve_id
        r�z"Unable to find free lve in range (r��))�ranger�r�r�)r"�start�stoprus    r�get_available_lve_idzPyLve.get_available_lve_id�s����E�A�I�t�,�,�	�	�F�
��
�
�f�%�%�%�%���
�
�
��
�
�
�
�
�
�����N�e�N�N�t�N�N�N�O�O�Os�-�>�>c#�XK�||jc|_}	dV�||_dS#||_wxYwrr�)r"r��saved_ignore_errors   r�context_ignore_errorzPyLve.context_ignore_error�sJ����0<�d�>O�-���-�	3��E�E�E� 2�D����� 2�D��2�2�2�2s� �	)N)rrrrKr�r�r�r�r�r�r$r�r�r��UID_MAX�
MAX_LVE_IDr��
contextlib�contextmanagerr�rrrr�r�s����������M�M��\�M����!�!�!�F���
#�$�3�a�E�E�E�E�B6�6�6�	�	�	�4�4�4�l*1�z�P�P�P�P���3�3���3�3�3rr�c�F�eZdZdd�Zd�Zd�Zd�Zd�Zd�Zd�Z	d	�Z
d
�ZdS)�LveNc��|p
t��|_|p
t��|_|p
t	��|_dSr)r�procr��pyrNr�)r"r�r�r�s    rr$zLve.__init__�s4���%�G�I�I��	��-�������?�&�(�(����rc#�K�t|jj�����}|j���D]\}}||vr||fV��|dfV��dS)a5
        Obtain {lve id}:{lvp id} pairs iterator based on ve.cfg config
        (detect enabled resellers containers)

        This method (unlike LvpMap.lve_lvp_pairs) will check
        if reseller is enabled in ve.cfg and return lvp_id=0
        for users of reseller with disabled reseller limits
        rN)ror�rPr5rw)r"�enabled_lvp_idrurvs    r�lve_id_lvp_id_pairszLve.lve_id_lvp_id_pairs�s~�����T�X�.�6�6�8�8�9�9��"�h�4�4�6�6�	 �	 �N�F�F���'�'��f�n�$�$�$�$��a�i�����		 �	 rc�N�|���D]\}}||kr|cS�dS)z\
        Obtain lvp id based on ve.cfg config (detect enabled resellers containers)
        r)r)r"ru�lve_id_�lvp_id_s    r�lve2lvpzLve.lve2lvp�sB��!%� 8� 8� :� :�	�	��G�W��� � �����!��qrc��tj�|j�����r.|j����|d��}nd}|jj|g|�Ri|��|dkrC	tj
|��|j�||��dS#t$rYdSwxYwdS)zH
        safe destroy lve container with preserving lvp mapping
        rN)
�os�path�existsr��proc_lve_mapr�r^r�r�rdrer�rh)r"rur�r�rvs     rr�zLve.lve_destroy�s����7�>�>�$�)�0�0�2�2�3�3�	��Y�]�]�_�_�(�(���3�3�F�F��F�����F�4�T�4�4�4�V�4�4�4��Q�;�;�
���V�$�$�$���#�#�F�F�3�3�3�3�3���
�
�
����
����	�;s�/B5�5
C�Cc�J�|j���}|���D]t\}}|�|d��|krU|j�|���s|j�|��|j�||��|||<�udS)z4
        Load lve_id:lvp_id map to kmod-lve
        r)rvN)r�r�rr^�	exist_lvpr�r�r�)r"�
proc_map_dictrurvs    r�	_sync_mapz
Lve._sync_map�s���
�	�
�
���
�#�6�6�8�8�	/�	/�N�F�F�� � ���+�+�v�5�5��y�*�*�&�*�9�9�3��G�*�*�6�2�2�2���$�$�V�V�4�4�4�(.�
�f�%��	/�	/rc�R�	|���dS#t$rYdSwxYw)zZ
        wrapped _sync_map function for prevent error if some cpapi not supported
        N)rrr4s r�sync_mapzLve.sync_maps?��	��N�N��������	�	�	��D�D�	���s��
&�&c�L�	tj��S#t$rYdSwxYw)z^
        Check if current panel supported for reseller's limits;
        :rtype: bool
        F)r�is_reseller_limits_supportedrr4s r�is_panel_supportedzLve.is_panel_supporteds8��
	��5�7�7�7���	�	�	��5�5�	���s��
#�#c��t|j���|j���|���f��S)zo
        Check present all needed (kmod-lve, liblve, /proc/lve, panel) for manipulate resellers limits
        )�allr�r�r�rr4s r�reseller_limit_supportedzLve.reseller_limit_supported"sK���D�G�/�/�1�1��I�1�1�3�3��+�+�-�-�/�0�0�	0rc��t|j���|j���f��S)zh
        Check present all needed (kmod-lve, liblve, /proc/lve) for manipulate resellers limits
        )rr�r�r�r4s r�is_lve10zLve.is_lve10*s3���D�G�/�/�1�1�4�9�3P�3P�3R�3R�S�T�T�Tr)NNN)rrrr$rrr�rrrrrrrrr�r��s�������#�#�#�#�
 � � � ������ /�/�/�$������0�0�0�U�U�U�U�Urr�)#r�rr�rqr�rd�typingr�clcommon.clfuncr�clcommon.clprocr�clcommonrr�clcommon.cpapi.cpapiexceptionsrr��ImportError�
clveconfigr	r�r�rL�
LVE_NO_UBC�LVE_NO_MAXENTER�	ExceptionrrrrrNr�r�r�rrr�<module>r#s�������	�	�	�	�����
�
�
�
�����
�
�
�
�������#�#�#�#�#�#�#�#�#�#�#�#�!�!�!�!�!�!�!�!�7�7�7�7�7�7���L�L�L�L�������E�E�E�����!� � � � � ��'�)�)���
���
�
���
	�	�	�	�	�9�	�	�	�	�	�	�	�	��	�	�	�	�	�	�	�	�L�	�	�	�[ �[ �[ �[ �[ �[ �[ �[ �|z1�z1�z1�z1�z1�z1�z1�z1�z	�	�	�	�	��	�	�	�x3�x3�x3�x3�x3�x3�x3�x3�v`U�`U�`U�`U�`U�`U�`U�`U�`U�`Us�?�A	�A	

Youez - 2016 - github.com/yon3zu
LinuXploit