/opt/cloudlinux/venv/lib/python3.11/site-packages/__pycache__
NameSizeModeActions
clcontrollib.cpython-311.opt-1.pyc732640644editdlrm
clcontrollib.cpython-311.pyc732640644editdlrm
cldetectlib.cpython-311.opt-1.pyc245840644editdlrm
cldetectlib.cpython-311.pyc245840644editdlrm
cldiaglib.cpython-311.opt-1.pyc676420644editdlrm
cldiaglib.cpython-311.pyc676420644editdlrm
cli_utils.cpython-311.opt-1.pyc21610644editdlrm
cli_utils.cpython-311.pyc21610644editdlrm
cllicenselib.cpython-311.opt-1.pyc161930644editdlrm
cllicenselib.cpython-311.pyc161930644editdlrm
clsetuplib.cpython-311.opt-1.pyc69740644editdlrm
clsetuplib.cpython-311.pyc69740644editdlrm
clsudo.cpython-311.opt-1.pyc270110644editdlrm
clsudo.cpython-311.pyc270110644editdlrm
cl_proc_hidepid.cpython-311.opt-1.pyc61170644editdlrm
cl_proc_hidepid.cpython-311.pyc61170644editdlrm
configparser.cpython-311.pyc16510644editdlrm
ddt.cpython-311.pyc153380644editdlrm
docopt.cpython-311.pyc379350644editdlrm
getcontrolpanel.cpython-311.opt-1.pyc10220644editdlrm
getcontrolpanel.cpython-311.pyc10220644editdlrm
lveapi.cpython-311.opt-1.pyc269850644editdlrm
lveapi.cpython-311.pyc269850644editdlrm
lvectllib.cpython-311.opt-1.pyc1620120644editdlrm
lvectllib.cpython-311.pyc1620120644editdlrm
lvestat.cpython-311.opt-1.pyc71390644editdlrm
lvestat.cpython-311.pyc71390644editdlrm
mccabe.cpython-311.pyc205640644editdlrm
migration_ve1_to_v2.cpython-311.opt-1.pyc32310644editdlrm
migration_ve1_to_v2.cpython-311.pyc32310644editdlrm
pam.cpython-311.pyc101330644editdlrm
pep8ext_naming.cpython-311.pyc288400644editdlrm
py.cpython-311.pyc4520644editdlrm
pycodestyle.cpython-311.pyc1213910644editdlrm
remount_proc.cpython-311.opt-1.pyc7730644editdlrm
remount_proc.cpython-311.pyc7730644editdlrm
remove_ubc.cpython-311.opt-1.pyc103620644editdlrm
remove_ubc.cpython-311.pyc103620644editdlrm
schema.cpython-311.pyc442030644editdlrm
secureio.cpython-311.opt-1.pyc280750644editdlrm
secureio.cpython-311.pyc280750644editdlrm
six.cpython-311.pyc464220644editdlrm
typing_extensions.cpython-311.pyc1315440644editdlrm
_pyrsistent_version.cpython-311.pyc2310644editdlrm
Edit: /opt/cloudlinux/venv/lib/python3.11/site-packages/__pycache__/clcontrollib.cpython-311.pyc (73264B)
§ ª†ßy1¼ãó²—ddlZddlZddlZddlZddlZddlZddlmZmZm Z ddl Z ddl m Z mZddlmZddlmZddlmZmZmZmZdZGd„d e¦«Zd „ZGd „d ¦«ZGd „de¦«ZGd„de¦«ZGd„de¦«ZGd„de¦«Z Gd„de¦«Z!Gd„de¦«Z"Gd„de¦«Z#Gd„de¦«Z$dS)éN)ÚTupleÚOptionalÚList)ÚClPwdÚ mysql_lib)ÚProcLve)Úgrep)ÚcpanelÚ directadminÚ ispmanagerÚpleské0có—eZdZdZdS)ÚConfigDataErrorz¾ Should be raised when something went wrong during user's config data loading/parsing. Supposed to be used when we want to skip some user with broken configuration files N)Ú__name__Ú __module__Ú __qualname__Ú__doc__©óúpy/clcontrollib.pyrrs€€€€€ððð  €Drrcó¬—tj¦«tjdkrt¦«Stjdkrt ¦«Stjdkrt ¦«Stjdkrt ¦«Stjdkrt¦«Stjdkrt¦«St¦«S)NÚPleskÚcPanelÚ InterWorxÚ ISPManagerÚ DirectAdminÚ HostingNG) ÚdetectÚ getCPNameÚCP_NAMErÚCpanelrrrrÚUnknownrrrÚdetect_panelclassr$#s£€Ý ÔÑÔÐÝ „~˜Ò Р݉wŒwˆÝ „~˜Ò!Ð!݉xŒxˆÝ „~˜Ò$Ð$݉{Œ{ÐÝ „~˜Ò%Ð%݉|Œ|ÐÝ „~˜Ò&Ð&݉}Œ}ÐÝ „~˜Ò$Ð$݉{Œ{ÐÝ ‰9Œ9ÐrcóЗeZdZd„Zdd„Zd„Zd„Zed„¦«Z dd „Z ed „¦«Z edd „¦«Z dd „Z dd„Z dd„Zdd„Zdd„Zdd„Zdd„Zdd„Zdd„Zdd„Zdd„ZdS)Ú GeneralPanelcó4—t¦«|_|jj|_t j¦«|_|j ¦«|j ¦«kr td|j›d|j›d�¦«‚d|_ dS)NzClass "z" not should be used on panel "ú") rÚ users_dataÚ __class__rÚ class_namerr Úcurrent_panel_nameÚlowerÚ UserWarningÚ cpapi_plugin)Úselfs rÚ__init__zGeneralPanel.__init__6s�€å™'œ'ˆŒØœ.Ô1ˆŒÝ"(Ô"2Ñ"4Ô"4ˆÔØ Œ?× Ò Ñ "Ô " dÔ&=×&CÒ&CÑ&EÔ&EÒ EÐ EÝØd˜$œ/ÐdÐdÈ$ÔJaÐdÐdÐdñôð ð!ˆÔÐÐrFcó4—|j ¦«S)z› List all admins names in given control panel :param bool debug: Do produce debug output or don't :return: list of strings )r/Úadmins©r0Údebugs rÚ list_adminszGeneralPanel.list_adminsAs€ð Ô ×'Ò'Ñ)Ô)Ð)rcó6—|j |¦«S)z| Return True if username is in admin names :param str username: user to check :return: bool )r/Úis_admin)r0Úusernames rr8zGeneralPanel.is_adminIs€ð Ô ×)Ò)¨(Ñ3Ô3Ð3rcól—|r1tj |›d|jj›d�¦«dSdS)Nz is not implemented for ú )ÚsysÚstderrÚwriter*r©r0r5Ú method_names rÚ_warningzGeneralPanel._warningQsI€Ø ð bÝ ŒJ× Ò   Ð`Ð`ÀTÄ^ÔE\Ð`Ð`Ð`Ñ aÔ aÐ aÐ aÐ að bð brcóJ—tjtjd|›�¦«dS)NzCL_CONTROLLIB: )ÚsyslogÚ LOG_WARNING)Úmsgs rÚ _slog_warningzGeneralPanel._slog_warningUs&€åŒ •fÔ(Ð*A¸CÐ*AÐ*AÑBÔBÐBÐBÐBrNTcó>—|�|�td¦«‚|€|€td¦«‚|�d |j |¦«S#tj$r7}|rt |¦«|r| d|›d�¦«Yd}~dSd}~wwxYw |j t|¦«¦«dS#tj$r7}|rt |¦«|r| d|›d�¦«Yd}~dSd}~wt$rt d¦«YdSwxYw) aH Check that provided user is really exists in system and return it as: - uid if username was provided - username if uid was provided - None if user doesn't exists Produce syslog/debug output depending on flags if user isn't exists. This helper function is mostly needed because it's possible that user is already deleted in system but his entity is still present in control panel files (like DA_USERS_DIR) so we should do additional checks to skip such users. :return: (uid | username) or None NzIThis function accepts either uid or username, but not both simultaneouslyz0Incorrect call: uid or username is not specifiedzUser with username="z" is not present in the systemrzUser with uid="úIncorrect user id) Ú ValueErrorr)Úget_uidrÚNoSuchUserExceptionÚprintrFÚ get_namesÚint)r0Úuidr9r5Úsyslog_Úes rÚ_check_and_get_userz GeneralPanel._check_and_get_userYs“€ð ˆ?˜xÐ3Ýð;ñ<ô<ð <ð ˆ;˜8Ð+ÝÐOÑPÔPÐ Pà Ð ð à”×.Ò.¨xÑ8Ô8Ð8øÝÔ,ð ð ð Øðݘ!‘H”H�HØðØ×&Ò&ØW¨xÐWÐWÐWñôðð�t�t�t�t�tøøøøð øøøð à”?×,Ò,­S°©X¬XÑ6Ô6°qÔ9Ð 9øÝÔ(ð ð ð Øð Ý�a‘”�Øð Ø×"Ò"ØI cÐIÐIÐIñôðð�4�4�4�4�4øøøøÝð ð ð Ý Ð%Ñ &Ô &Ð &Ø�4�4ð øøøs5ªAÁB Á,BÂB Â,B;Â;Dà ,C<Ã<DÄDcó‚—t|dd¬¦«5}| ¦«}ddd¦«n #1swxYwY|S)á Safely read file content and close it before return the content string. No exceptions will have caught! :param string file_name: Absolute or relative path to file :rtype: string :return: Content of given file path Úrúutf-8©ÚencodingN)ÚopenÚ readlines)Ú file_nameÚfÚcontents rÚget_file_lineszGeneralPanel.get_file_linesŒs}€õ�)˜S¨7Ð 3Ñ 3Ô 3ð $°qØ—k’k‘m”mˆGð $ð $ð $ñ $ô $ð $ð $ð $ð $ð $ð $øøøð $ð $ð $ð $àˆs “4´8»8Úwcó†—t||d¬¦«5}| |¦«ddd¦«dS#1swxYwYdS)a= Safely write to file and close it before the function end. No exceptions will have caught! :param string file_name: Absolute or relative path to file :param string content: What to write there :param string open_method: Either "w" or "a" or "b" :return: None rVrWN)rYÚ writelines)r[r]Ú open_methodr\s rÚwrite_file_lineszGeneralPanel.write_file_linesšsŒ€õ�)˜[°7Ð ;Ñ ;Ô ;ð "¸qØ �LŠL˜Ñ !Ô !Ð !ð "ð "ð "ñ "ô "ð "ð "ð "ð "ð "ð "ð "øøøð "ð "ð "ð "ð "ð "s “6¶:½:có2—| |d¦«dS)a Implements /usr/bin/getcontrolpaneluserspackages and /usr/bin/getcontrolpaneluserspackages --list-all commands Result is stdout output: uid package name :param bool debug: Do produce debug output or don't :return: None zList allN©rAr4s rÚlist_allzGeneralPanel.list_all¨s€ð � Š �e˜ZÑ(Ô(Ð(Ð(Ð(rcó2—| |d¦«dS)a  Implements /usr/bin/getcontrolpaneluserspackages --package=package_name Result is stdout output: uid :param string package: Package name :param bool debug: Do produce debug output or don't :return: None zList users in given packageNre)r0Úpackager5s rÚlist_users_in_packagez"GeneralPanel.list_users_in_package´s€ð � Š �eÐ:Ñ;Ô;Ð;Ð;Ð;rcó2—| |d¦«dS)aX Implements /usr/bin/getcontrolpaneluserspackages --package=package_name --reseller=reseller_name Result is stdout output: uid :param string package: Package name :param string reseller: Reseller name :param bool debug: Do produce debug output or don't :return: None z&List users in given reseller's packageNre)r0rhÚresellerr5s rÚlist_users_in_reseller_packagez+GeneralPanel.list_users_in_reseller_packageÀs€ð � Š �eÐEÑFÔFÐFÐFÐFrcó2—| |d¦«dS)zÿ Implements /usr/bin/getcontrolpaneluserspackages --userid=id Result is stdout output: uid package name :param int uid: User ID :param bool debug: Do produce debug output or don't :return: None zList given user's packageNre©r0rOr5s rÚlist_user_packagezGeneralPanel.list_user_packageÎs€ð � Š �eÐ8Ñ9Ô9Ð9Ð9Ð9rcó2—| |d¦«dS)zß Implements /usr/bin/getcontrolpaneluserspackages --list-packages Result is stdout output: package name :param bool debug: Do produce debug output or don't :return: None zList all packagesNrer4s rÚ list_packageszGeneralPanel.list_packagesÚs€ð � Š �eÐ0Ñ1Ô1Ð1Ð1Ð1rcó2—| |d¦«dS)z÷ Implements /usr/bin/getcontrolpaneluserspackages --list-resellers-packages Result is stdout output: reseller_name package name :param bool debug: Do produce debug output or don't :return: None z!List packages belong to resellersNrer4s rÚlist_resellers_packagesz$GeneralPanel.list_resellers_packagesås€ð � Š �eÐ@ÑAÔAÐAÐAÐArcó2—| |d¦«dS)a' Implements /usr/bin/getcontrolpaneluserspackages --list-reseller-packages=reseller Result is stdout output: package name :param string reseller: Reseller name :param bool debug: Do produce debug output or don't :return: None z&List packages belong to given resellerNre©r0rkr5s rÚlist_reseller_packagesz#GeneralPanel.list_reseller_packagesðs€ð � Š �eÐEÑFÔFÐFÐFÐFrcó2—| |d¦«dS)zî Implements /usr/bin/getcontrolpaneluserspackages --list-users Result is stdout output: uid,package name,reseller_name :param bool debug: Do produce debug output or don't :return: None z List usersNrer4s rÚ list_userszGeneralPanel.list_usersýs€ð � Š �e˜\Ñ*Ô*Ð*Ð*Ð*rc#ó>K—| |d¦«dV—dS)a( Generate triple with uid, it's package, it's reseller :param bool debug: Do produce debug output or don't :param string reseller_name: filter by this reseller :rtype: generator of (int, string, string) :return: (uid, package name, reseller name) zList reseler's users)rÚrzNre)r0r5Ú reseller_names rÚ_get_user_packageszGeneralPanel._get_user_packagess*èè€ð � Š �eÐ3Ñ4Ô4Ð4؈ˆˆˆˆrcó®—|jdkrG|€|rtd¦«dS| ||¬¦«D]\}}}t|›d|›�¦«ŒdSdS)z¼ Print uid and package for defined reseller :param bool debug: Do produce debug output or don't :param reseller: username of reseller :return: None r&NzReseller is not defined)r5r{ú,)r+rLr|)r0r5rkrOrhÚ_s rÚlist_reseller_usersz GeneralPanel.list_reseller_userss�€ð Œ?˜nÒ ,Ð ,ØÐØð5ÝÐ3Ñ4Ô4Ð4Ø�Ø#'×#:Ò#:ÀÐV^Ð#:Ñ#_Ô#_ð *ð *‘��W˜aݘÐ(Ð(˜wÐ(Ð(Ñ)Ô)Ð)Ð)ð -Ð ,ð  *ð *rcó2—| |d¦«dS)zÄ Determine user's reseller :param string uid: uid of user :param bool debug: Do produce debug output or don't :rtype: string :return: reseller name zGet user's resellerNrerns rÚ get_resellerzGeneralPanel.get_reseller#s€ð � Š �eÐ2Ñ3Ô3Ð3Ð3Ð3r©F)NNFT)r_©FN)rrrr1r6r8rAÚ staticmethodrFrRr^rcrfrirlrorqrsrvrxr|r€r‚rrrr&r&4s¸€€€€€ð !ð !ð !ð*ð*ð*ð*ð4ð4ð4ðbðbðbððCðCñ„\ðCðBGØ$(ð1ð1ð1ð1ðfð ð ñ„\ð ðð "ð "ð "ñ„\ð "ð )ð )ð )ð )ð <ð <ð <ð <ð Gð Gð Gð Gð :ð :ð :ð :ð 2ð 2ð 2ð 2ð Bð Bð Bð Bð Gð Gð Gð Gð +ð +ð +ð +ð ð ð ð ð *ð *ð *ð *ð4ð4ð4ð4ð4ð4rr&c󨇗eZdZdZdZdZdZdZˆfd„Zd„Z d„Z d „Z d „Z dd „Z dd „Zd„Zdd„Zdd„Zdd„Zdd„Zdd„Zdd„Zdd„Zdd„Zdd„ZˆxZS)r"z/var/cpanel/usersz/var/cpanel/packagesz/var/cpanel/resellersz/etc/trueuserownersNcó´•—t¦« ¦«|j ¦«|_t j¦«|_dS©N)Úsuperr1r)Úget_sys_min_uidÚmin_uidr Ú PanelPluginr/©r0r*s €rr1zCpanel.__init__6sEø€Ý ‰Œ×ÒÑÔÐØ”×6Ò6Ñ8Ô8ˆŒ Ý"Ô.Ñ0Ô0ˆÔÐÐrcó —d} t|dd¬¦«5}| ¦«}ddd¦«n #1swxYwYn‹#t$r~}d|›d|›d�}| |j¦«r|d |›�z }t |t j¬ ¦«| |¦«t j t¦«Yd}~nd}~wwxYw|S) rTz]http://kb.cloudlinux.com/2017/08/how-to-fix-the-issue-with-non-utf-symbols-in-packages-names/rUrVrWNúUnable to read file 'z ', error is: z-. It looks like you use not an UTF-8 charset.z Please read the instruction: )Úfile) rYrZÚUnicodeDecodeErrorÚ startswithÚUSERDIRrLr<r=rFÚexitÚBAD_CODING_ERROR_CODE)r0r[Ú ENCODING_LINKr\r]rQÚmessages rr^zCpanel.get_file_lines;sI€ðBˆ ð ,Ý�i ¨wÐ7Ñ7Ô7ð (¸1ØŸ+š+™-œ-�ð (ð (ð (ñ (ô (ð (ð (ð (ð (ð (ð (øøøð (ð (ð (ð (øøå!ð ,ð ,ð ,ðE¨iðEðEÀaðEðEðEˆGà×#Ò# D¤LÑ1Ô1ð MØÐL¸]ÐLÐLÑL�Ý �'¥¤ Ð +Ñ +Ô +Ð +Ø × Ò ˜wÑ 'Ô 'Ð 'Ý ŒHÕ*Ñ +Ô +Ð +Ð +Ð +Ð +Ð +Ð +øøøøð ,øøøðˆs3„A–7« A·;»A¾;¿AÁ C Á A4CÃC cóf—i}tjd¦«}tj |j¦«rv| |j¦«}|D]Y}| ¦«}tj||¦«}|€Œ.|  d¦«||  d¦«<ŒZ|S)z~ Get dict, where keys - user's names, values - reseller's names :return: dict {user1: reseller1, ...} z!^(?P\w+):\s*(?P\w+)$NÚownerÚname) ÚreÚcompileÚosÚpathÚisfileÚRESELLERS_AND_USERSr^ÚstripÚmatchÚgroup)r0ÚresultÚpatternÚ file_contentÚlineÚstrippedr¢s rÚ_get_users_resellers_dictz Cpanel._get_users_resellers_dictSs¬€ð ˆõ”*ÐAÑBÔBˆÝ Œ7�>Š>˜$Ô2Ñ 3Ô 3ð CØ×.Ò.¨tÔ/GÑHÔHˆLØ$ð Cð C�ØŸ:š:™<œ<�Ýœ ¨(Ñ3Ô3�Ø�=ØØ.3¯kªk¸'Ñ.BÔ.B��u—{’{ 6Ñ*Ô*Ñ+Ð+؈ rcóž—g}tj |j¦«r&| |j¦«}d„|D¦«}|S)zw Get resellers list from RESELLERS_PATH :rtype: list :return: list of resellers names cój—g|]0}| ¦« dd¦«d‘Œ1S)ú:ér)r¡Úsplit©Ú.0r§s rú z)Cpanel._get_resellers..xs5€ÐPÐPÐP¸4˜Ÿš™œ×+Ò+¨C°Ñ3Ô3°AÔ6ÐPÐPÐPr)r�ržrŸÚRESELLERS_PATHr^)r0Ú resellersr¦s rÚ_get_resellerszCpanel._get_resellersnsR€ðˆ Ý Œ7�>Š>˜$Ô-Ñ .Ô .ð QØ×.Ò.¨tÔ/BÑCÔCˆLØPÐPÀ<ÐPÑPÔPˆIØÐrc ó—d}tj |¦«rk| |¦«}t t dddd|¬¦«¦«}|r3|d ¦« d¦«d}|S)z¹ Get package name from user's config file :param string path: Path to file contains info about cPanel user :rtype: string :return: Package name rzz PLAN\=.*$F©Ú fixed_stringÚmatch_any_positionÚmultiple_searchÚdata_from_filerú=r­)r�ržrŸr^Úlistr r¡r®)r0ržrhr¦r¤s rÚ get_packagezCpanel.get_package{s–€ðˆÝ Œ7�>Š>˜$Ñ Ô ð :Ø×.Ò.¨tÑ4Ô4ˆLÝ�$ØØ"Ø#(Ø %Ø+ð ñôñôˆFðð :Ø  œ)Ÿ/š/Ñ+Ô+×1Ò1°#Ñ6Ô6°qÔ9�؈rFc óΗd}| ||¬¦«}|r¯tj |j|¦«}tj |¦«rk| |¦«}ttdddd|¬¦«¦«}|r3|d  ¦«  d¦«d}|r||  ¦«vr|ndS) úï Determine user's reseller based on `owner` field from user's config :param string uid: uid of user :param bool debug: Do produce debug output or don't :rtype: string :return: reseller name rz©rOr5z OWNER\=.*$Fr¶rr»r­) rRr�ržÚjoinr“rŸr^r¼r r¡r®r´)r0rOr5rkr9ržr¦r¤s rÚ _get_resellerzCpanel._get_reseller‘sí€ðˆØ×+Ò+°¸5Ð+ÑAÔAˆØ ð ?Ý”7—<’< ¤ ¨hÑ7Ô7ˆDÝŒw�~Š~˜dÑ#Ô#ð ?Ø#×2Ò2°4Ñ8Ô8� Ý�dØ!Ø!&Ø',Ø$)Ø#/ð ñôñô�ðð?Ø% aœyŸšÑ0Ô0×6Ò6°sÑ;Ô;¸AÔ>�HØ#ÐQ¨°D×4GÒ4GÑ4IÔ4IÐ(IÐ(IˆxˆxÈrÐQrcóN—t| ||¬¦«¦«dS)r¿©r5N)rLrÂrns rr‚zCpanel.get_reseller«s+€õ ˆd× Ò  ¨EÐ Ñ2Ô2Ñ3Ô3Ð3Ð3Ð3rc#órK—tj |j¦«rŽtj|j¦«D]v}tj tj |j|¦«¦«r|dfV—ŒKtj |j|¦«dfV—ŒudSdS)zÎ Generate list of packages in current panel :rtype: generator of (string, bool) :return: (name of package, True) for normal files and (/path/to/wrang/file, False) otherwise TFN)r�ržÚisdirÚ PACKAGEDIRÚlistdirrŸrÁ)r0Úfilenames rÚ _get_packageszCpanel._get_packages·s¹èè€õ Œ7�=Š=˜œÑ )Ô )ð KÝœJ t¤Ñ7Ô7ð Kð K�Ý”7—>’>¥"¤'§,¢,¨t¬ÀÑ"IÔ"IÑJÔJðKØ# TÐ*Ð*Ð*Ð*Ð*åœ7Ÿ<š<¨¬¸ÑBÔBÀEÐJÐJÐJÐJÐJð  Kð Kð Kð Krcóö—| ¦«}| ¦«D]O\}}|r3d|vr| dd¦«d|vrŒ*t|¦«Œ:|rtd|›d�¦«ŒPdS)Nrr­rú Warning: ú is not a file.©r´rÊr®rL)r0r5r³rÉÚis_files rrqzCpanel.list_packagesÅsž€Ø×'Ò'Ñ)Ô)ˆ Ø!%×!3Ò!3Ñ!5Ô!5ð =ð =Ñ ˆH�gØð =ؘ(�?�? x§~¢~°c¸1Ñ'=Ô'=¸aÔ'@ÀIÐ'MÐ'MØÝ�h‘”��Øð =ÝÐ; (Ð;Ð;Ð;Ñ<Ô<Ð<øð  =ð =rc#ó~K—| ¦«}|sdStj |j¦«rütj|j¦«D]ä} |j |¦«}||jkrŒ) tj  |j|¦«}|  ||  ||¦«¦«}|  |¦«rdn|}|�||krŒ›||  |¦«|fV—Œ¶#tj$r}|rt!|¦«Yd}~ŒÛd}~wwxYwdSdS)ao Generate triple with uid, it's package and it's reseller for every user in USERDIR which uid is greater than MIN_UID :param bool debug: Do produce debug output or don't :param string reseller_name: filter by this reseller :rtype: generator of (int, string, string) :return: (uid, package name, reseller name) Nrz)r©r�ržrÆr“rÈr)rJr‹rÁÚgetrÂr8r½rrKrL) r0r5r{Úusers_resellers_dictrÉrOržrkrQs rr|zCpanel._get_user_packagesÏstèè€ð $×=Ò=Ñ?Ô?Ðð$ð Ø ˆFÝ Œ7�=Š=˜œÑ &Ô &ð BÝœJ t¤|Ñ4Ô4ð Bð B�ð BØœ/×1Ò1°(Ñ;Ô;�CؘTœ\Ò)Ð)Ø ð*õ œ7Ÿ<š<¨¬ °hÑ?Ô?�DØ3×7Ò7¸À$×BTÒBTÐUXÐZ_ÑB`ÔB`ÑaÔa�HØ%)§]¢]°8Ñ%<Ô%<ÐJ˜r˜rÀ(�HØ$Ð0°XÀÒ5NÐ5NØ Ø × 0Ò 0°Ñ 6Ô 6¸ÐAÐAÐAÐAÐAøõÔ0ð!ð!ð!Øð!ݘa™œ˜øøøøøøøøøð!øøøð  Bð Bð Bð BsÁ%DÄD8ÄD3Ä3D8cóž—| ||¬¦«D]4\}}}|dkr(|€t||¦«Œ||krt|¦«Œ5dS)N©r{rz©r|rL)r0rhr5rkrOÚ self_packageÚ self_resellers rrfzCpanel.list_allðsp€Ø04×0GÒ0GÈÐ]eÐ0GÑ0fÔ0fð ð Ñ ,ˆC�˜}ؘrÒ!Ð!Ø�?ݘ#˜|Ñ,Ô,Ð,Ð,Ø  Ò,Ð,ݘ#‘J”J�Jøð  ð rcó–— |j t|¦«¦«}|D]X}|jdz|z}tj |¦«r*| |¦«}|dkrt|¦«ŒYdS#tj $r|rtd¦«YdSYdSt$rtd¦«YdSwxYw)Nú/rzz,getcontrolpaneluserspackages: User not foundrH) r)rMrNr“r�ržrŸr½rLrrKrI)r0rOr5ÚusersÚuserržrhs rrozCpanel.list_user_packageøs €ð 'Ø”O×-Ò-­c°#©h¬hÑ7Ô7ˆEðð 'ð '�Ø”| cÑ)¨DÑ0�Ý”7—>’> $Ñ'Ô'ð'Ø"×.Ò.¨tÑ4Ô4�GØ "’}�}ݘg™œ˜øð  'ð 'øõ Ô(ð Fð Fð FØð FÝÐDÑEÔEÐEÐEÐEÐEð Fð Fð Fåð 'ð 'ð 'Ý Ð%Ñ &Ô &Ð &Ð &Ð &Ð &ð 'øøøs‚'B CÂ,CÃCcó—| ¦«}| ¦«D]a\}}|rCd|vr?| dd¦«d}||vrŒ,|�||krŒ5t|›d|›�¦«ŒJ|s|rtd|›d�¦«ŒbdS)Nrr­rú rÌrÍrÎ)r0r5rkr³rÉrÏÚres_names rrszCpanel.list_resellers_packagessÏ€Ø×'Ò'Ñ)Ô)ˆ Ø!%×!3Ò!3Ñ!5Ô!5ð =ð =Ñ ˆH�gØð =˜3 (˜?˜?Ø#Ÿ>š>¨#¨qÑ1Ô1°!Ô4�Ø 9Ð,Ð,ØØÐ'¨H¸Ò,@Ð,@ØÝ˜Ð.Ð. HÐ.Ð.Ñ/Ô/Ð/Ð/Øð = ð =ÝÐ; (Ð;Ð;Ð;Ñ<Ô<Ð<øð =ð =rcó’—| ¦«}||vr|rtd|›d�¦«dS| ||¬¦«dS)NzError: z is not reseller©r5rk)r´rLrs)r0rkr5r³s rrvzCpanel.list_reseller_packagessd€Ø×'Ò'Ñ)Ô)ˆ Ø ˜9Ð $Ð $Øð <ÝÐ: Ð:Ð:Ð:Ñ;Ô;Ð;Ø ˆFØ ×$Ò$¨5¸8Ð$ÑDÔDÐDÐDÐDrc ó.‡‡—| ¦«Šd|vrN| d¦«Štˆˆfd„tdt ‰¦«¦«D¦«¦«rdS|�| |¦«dS|rt d¦«dSdS)Nrc3óV•K—|]#}d ‰d|…¦«‰vV—Œ$dS)rN)rÁ)r°ÚiÚpartsr³s €€rú z/Cpanel.list_users_in_package..!s<øèè€ÐRÐR¸�3—8’8˜E " 1 "œIÑ&Ô&¨)Ð3ÐRÐRÐRÐRÐRÐRrr­z/getcontrolpaneluserspackages: Undefined package)r´r®ÚanyÚrangeÚlenrfrL)r0rhr5rär³s @@rrizCpanel.list_users_in_packages´øø€Ø×'Ò'Ñ)Ô)ˆ Ø �'ˆ>ˆ>Ø—M’M #Ñ&Ô&ˆEÝÐRÐRÐRÐRÐR½UÀ1ÅcÈ%ÁjÄjÑ=QÔ=QÐRÑRÔRÑRÔRð Ø�Ø Ð Ø �MŠM˜'Ñ "Ô "Ð "Ð "Ð "Ø ð EÝ ÐCÑ DÔ DÐ DÐ DÐ Dð Eð Ercó�—| ¦«}||vr| |||¬¦«dS|rtd¦«dSdS)Nràz8getcontrolpaneluserspackages: Undefined reseller package)r´rfrL)r0rhrkr5r³s rrlz%Cpanel.list_users_in_reseller_package(sf€Ø×'Ò'Ñ)Ô)ˆ Ø �yÐ Ð Ø �MŠM˜'¨¸ˆMÑ BÔ BÐ BÐ BÐ BØ ð NÝ ÐLÑ MÔ MÐ MÐ MÐ Mð Nð Nrcól—| |¦«D]\}}}t|›d|›d|›�¦«ŒdS©Nr~rÕ)r0r5rOrÖrks rrxzCpanel.list_users/sW€Ø+/×+BÒ+BÀ5Ñ+IÔ+Ið 6ð 6Ñ 'ˆC�˜xÝ �SÐ4Ð4˜<Ð4Ð4¨(Ð4Ð4Ñ 5Ô 5Ð 5Ð 5ð 6ð 6rrƒr„)NFN)rrrr“rÇr²r r)r1r^r©r´r½rÂr‚rÊrqr|rfrorsrvrirlrxÚ __classcell__©r*s@rr"r".s‘ø€€€€€Ø!€GØ'€JØ,€NØ/Ðà€Jð1ð1ð1ð1ð1ð ððð0ððð6 ð ð ðððð,RðRðRðRð4 4ð 4ð 4ð 4ð Kð Kð Kð=ð=ð=ð=ðBðBðBðBðBðððð'ð'ð'ð'ð =ð =ð =ð =ðEðEðEðEð Eð Eð Eð EðNðNðNðNð6ð6ð6ð6ð6ð6ð6ð6rr"có$‡—eZdZdZdZdZdZdZdZdZ dZ e ¦«Z ˆfd„Z d „Zd „Zd „Zd „Zd%d edeeedefd„Zd&d„Zd&d„Zd'd„Zd„Zd„Zd„Zd'd„Zd'd„Zd„Zd'd„Zd'd„Z d'd„Z!d'd„Z"d'd„Z#d'd „Z$d!„Z%d"„Z&d'd#„Z'd'd$„Z(ˆxZ)S)(rz"/usr/local/directadmin/data/users/z,/usr/local/directadmin/conf/directadmin.confz,/usr/local/directadmin/data/admin/admin.listz//usr/local/directadmin/data/admin/reseller.listz//usr/local/directadmin/data/admin/packages.listrzNcóä•—t¦« ¦«tj¦«|_t j¦«|_|j ¦«|_ dSrˆ) r‰r1rÚdetect_DA_adminÚDA_ADMINr rŒr/Úget_encoding_nameÚENCODINGr�s €rr1zDirectAdmin.__init__?sTø€Ý ‰Œ×ÒÑÔÐÝÔ.Ñ0Ô0ˆŒ Ý'Ô3Ñ5Ô5ˆÔàÔ)×;Ò;Ñ=Ô=ˆŒ ˆ ˆ rcó&— t|d|j¬¦«5}| ¦«}ddd¦«n #1swxYwY|S#t$r?}d|›d|j›d�}| |d|›d�z¦«t |¦«|‚d}~wwxYw)NrUrWr�z '. It looks like you use not an z charset.z Error is: ú.)rYrórZr‘rFÚ RuntimeError)r0r[r\r]rQr—s rr^zDirectAdmin.get_file_linesFs€ð /Ý�i ¨t¬}Ð=Ñ=Ô=ð (ÀØŸ+š+™-œ-�ð (ð (ð (ñ (ô (ð (ð (ð (ð (ð (ð (øøøð (ð (ð (ð (àˆNøÝ!ð /ð /ð /ðO¨iðOðOØ6:´mðOðOðOˆGà × Ò ˜wÐ);°qÐ);Ð);Ð);Ñ;Ñ <Ô <Ð <ݘwÑ'Ô'¨QÐ .øøøøð  /øøøs4‚A™:® Aº>¾AÁ>ÁAÁ BÁ:B  BcóÆ— | |¦«S#t$r?}d}| | ||¦«¦«t ¦«|‚d}~wwxYw)zU Just a wrapper around _get_user_info_inner to send errors to syslog z;Skipping user '{}' with bad configuration files due to '{}'N)Ú_get_user_info_innerÚ ExceptionrFÚformatr)r0r9rQÚtpls rÚ_get_user_infozDirectAdmin._get_user_infoQsq€ð +Ø×,Ò,¨XÑ6Ô6Ð 6øõð +ð +ð +ØOˆCØ × Ò ˜sŸzšz¨(°AÑ6Ô6Ñ 7Ô 7Ð 7å!Ñ#Ô#¨Ð *øøøøð  +øøøs‚— A ¡:AÁA c ó‚—tj |j|d¦«} | |¦«}n#t $rd}YnwxYw|st d¦«‚ttdddd|¬¦«¦«}ttdddd|¬¦«¦«} |d  ¦«  d ¦«d }n"#t$r}t d ¦«|‚d}~wwxYw |d  ¦«  d ¦«d }n"#t$r}t d ¦«|‚d}~wwxYw|  ||¦«} |d kr5d}|j  |¦«} | | ¦«rd} |}|j  |¦«} | | |fS)zG Return uid, package name and owner of user (reseller) ú user.confNú&Unable to read any data from user.confú usertype\=.*$Fr¶z creator\=.*$rr»r­z#No "usertype" record in user configz"No "creator" record in user configrkrzÚDEFAULT)r�ržrÁÚ DA_USERS_DIRr^rùrIr¼r r¡r®Ú IndexErrorÚ_get_user_packager)rJÚ_is_reseller_limits_enabled) r0r9Ú userprofileÚuserprofile_contentÚresult_usertypeÚresult_creatorÚusertyperQrkrhÚlvp_idrOs rrøz DirectAdmin._get_user_info_inneras,€õ ”g—l’l 4Ô#4°hÀ ÑLÔLˆ ð 'Ø"&×"5Ò"5°kÑ"BÔ"BÐ Ð øÝð 'ð 'ð 'Ø"&Ð Ð Ð ð 'øøøà"ð GÝÐEÑFÔFÐ Fõ�tØ ØØ$Ø!Ø.ð  ñ ô ñ ô ˆõ�dØ ØØ$Ø!Ø.ð  ñ ô ñ ô ˆð KØ& qÔ)×/Ò/Ñ1Ô1×7Ò7¸Ñ<Ô<¸QÔ?ˆHˆHøÝð Kð Kð KÝÐBÑCÔCÈÐ Jøøøøð Køøøð JØ% aÔ(×.Ò.Ñ0Ô0×6Ò6°sÑ;Ô;¸AÔ>ˆHˆHøÝð Jð Jð JÝÐAÑBÔBÈÐ Iøøøøð Jøøøð×(Ò(¨Ð3FÑGÔGˆð �zÒ !Ð !ðˆHð”_×,Ò,¨XÑ6Ô6ˆFØ×/Ò/°Ñ7Ô7ð $Ø#�Ø#�ðŒo×%Ò% hÑ/Ô/ˆØ�G˜XÐ%Ð%s?¨>¾ A Á A Â$3Cà C7Ã"C2Ã2C7Ã;3D/Ä/ EÄ9E Å Ecó6—|j |¦«Srˆ)Úproc_lveÚ exist_lvp)r0r s rrz'DirectAdmin._is_reseller_limits_enabled›s€ØŒ}×&Ò& vÑ.Ô.Ð.rr9rÚreturnc óº—|s`tj |j|d¦«} | |¦«}n#t $rd}YnwxYw|st d¦«‚ttdddd|¬¦«¦«}ttdddd|¬¦«¦«} |d  ¦«  d ¦«d }n"#t$r}t d ¦«|‚d}~wwxYw|d krY|rW |d  ¦«  d ¦«d }n"#t$r}t d ¦«|‚d}~wwxYw|S)zÜ Reads user's package just as in the `_get_user_info_inner` function, but without masking to DEFAULT package Be aware that it may return different package than the `_get_user_info_inner` function rþNrÿz package\=.*$Fr¶zoriginal_package\=.*$rr»r­z"No "package" record in user configÚcustomz+No "original_package" record in user config) r�ržrÁrr^rùrIr¼r r¡r®r)r0r9rrÚresult_packageÚresult_original_packagerhrQs rrzDirectAdmin._get_user_packagežsÄ€ð #ð KÝœ'Ÿ,š, tÔ'8¸(ÀKÑPÔPˆKð +Ø&*×&9Ò&9¸+Ñ&FÔ&FÐ#Ð#øÝð +ð +ð +Ø&*Ð#Ð#Ð#ð +øøøà&ð KÝ Ð!IÑJÔJÐJÝ�dØ ØØ$Ø!Ø.ð  ñ ô ñ ô ˆõ#'¥tØ $ØØ$Ø!Ø.ð ( ñ( ô( ñ# ô# Ðð JØ$ QÔ'×-Ò-Ñ/Ô/×5Ò5°cÑ:Ô:¸1Ô=ˆGˆGøÝð Jð Jð JÝÐAÑBÔBÈÐ Iøøøøð Jøøøà �hÒ Ð Ð#:Ð ð WØ1°!Ô4×:Ò:Ñ<Ô<×BÒBÀ3ÑGÔGÈÔJ��øÝð Wð Wð WÝ Ð!NÑOÔOÐUVÐVøøøøð WøøøàˆsAªAÁ AÁAÂ&3Cà C9Ã$C4Ã4C9Ä3D9Ä9 EÅEÅEFc#ó4K—t| ¦«¦«}tj|j¦«D]Z}||vrŒ| ||¬¦«€Œ | |¦«\}}}n#t$rYŒFwxYw|�||krŒS|||fV—Œ[dS)a' Generate triple with uid, it's package, it's reseller :param bool debug: Do produce debug output or don't :param string reseller_name: filter by this reseller :rtype: generator of (int, string, string) :return: (uid, package name, reseller name) ©r9r5N)Úsetr6r�rÈrrRrür)r0r5r{r6r9rOrhrks rr|zDirectAdmin._get_user_packagesÇsßèè€õ˜$×*Ò*Ñ,Ô,Ñ-Ô-ˆ Ýœ  4Ô#4Ñ5Ô5ð )ð )ˆHð˜;Ð&Ð&Øà×'Ò'°ÀÐ'ÑGÔGÐOØð Ø)-×)<Ò)<¸XÑ)FÔ)FÑ&��W˜h˜høÝ"ð ð ð Ø�ð øøøðÐ(¨X¸Ò-FÐ-FØØ�w Ð(Ð (Ð (Ð (Ð (ð# )ð )sÁA7Á7 BÂBcó—tj |j|d¦«}tj |¦«sdS| |¦«}|D]T} | | d¦«¦«\}}}n#t$rYŒÔ!>‘��1�h�høÝ"ð ð ð Ø��ð øøøå �(‰OŒOˆOˆOˆOð  ð ó›5µ AÁAcó,—| |¦«S)z… Check login_name is da admin. Backward compatibility wrapper :param login_name: Admin name :return: )r8)r0Ú login_names rÚ is_da_adminzDirectAdmin.is_da_admins€ð �}Š}˜ZÑ(Ô(Ð(rc óz—d}tj |j|d¦«}tj |¦«rs| |¦«}t tdddd|¬¦«¦«}|r;|d ¦«  d¦«d}|dkrd }|S) z� Check login_name is da admin for using in hook return True - if login_name is admin False - otherwise Frþrr¶rr»r­ÚadminT) r�ržrÁrrŸr^r¼r r¡r®)r0rr¤ržr¦rr s rÚis_da_admin_for_hookz DirectAdmin.is_da_admin_for_hooksÀðˆåŒw�|Š|˜DÔ-¨z¸;ÑGÔGˆÝ Œ7�>Š>˜$Ñ Ô ð "Ø×.Ò.¨tÑ4Ô4ˆLÝ"¥4Ø Ø"Ø#(Ø %Ø+ð $ñ$ô$ñôˆOðð "Ø*¨1Ô-×3Ò3Ñ5Ô5×;Ò;¸CÑ@Ô@ÀÔC�ؘwÒ&Ð&Ø!�F؈ rcó(— ddlm}m}m}m}n3#t $r&t d¦«tjd¦«YnwxYw|  ¦«}|D]9} t|¦«Œ#|||f$r}t |›d�¦«Yd}~Œ2d}~wwxYwdS)z° Add all DA admins to sudoers. Now calls only from CageFS plugin installer :param s_cmd: String such as "Clsudo.add_cagefs_user(user)" :return: r)ÚClsudoÚ NoSuchUserÚUnableToReadFileÚUnableToWriteFilezDCannot import Clsudo. Check if alt-python27-cllib package installed r­r;N) Úclsudor%r&r'r(Ú ImportErrorrLr<r”r6Úeval) r0Ús_cmdr%r&r'r(Ú da_adminsrÛrQs rÚadd_all_da_admins_to_sudoersz(DirectAdmin.add_all_da_admins_to_sudoers5sí€ð  ð YÐ XÐ XÐ XÐ XÐ XÐ XÐ XÐ XÐ XÐ XÐ XÐ XøÝð ð ð Ý ÐYÑ ZÔ ZÐ ZÝ ŒH�Q‰KŒKˆKˆKˆKð øøøð×$Ò$Ñ&Ô&ˆ Øð ð ˆDð Ý�U‘ ” � � øØÐ 0Ð2CÐDð ð ð ݘ�h�h�h‘”������øøøøð øøøð ð s$‚ �-?¾?ÁA+Á+BÁ3B  Bcó,—| |¦«S)z< Wrapper for compatibility with old code )r6r4s rÚget_all_da_adminszDirectAdmin.get_all_da_adminsIs€ð×Ò Ñ&Ô&Ð&rcóž—g}tj |j¦«r&| |j¦«}d„|D¦«}|S)zr Get all DA admins list :rtype: list of strings :return: List of DA admins names có8—g|]}| d¦«‘ŒS)r;©rr¯s rr±z+DirectAdmin.list_admins..Ys$€ÐDÐDÐD¨t˜Ÿš TÑ*Ô*ÐDÐDÐDr)r�ržrŸÚ DA_ADMIN_LISTr^)r0r5r-r¦s rr6zDirectAdmin.list_adminsOsR€ðˆ Ý Œ7�>Š>˜$Ô,Ñ -Ô -ð EØ×.Ò.¨tÔ/AÑBÔBˆLØDÐD°|ÐDÑDÔDˆIØÐrc#óvK—| |j¦«}|D]}| d¦«V—ŒdS©Nr;)r^ÚDA_ADMINS_PACKAGESr)r0r¦r§s rrÊzDirectAdmin._get_packages\sPèè€Ø×*Ò*¨4Ô+BÑCÔCˆ Ø ð $ð $ˆDØ—+’+˜dÑ#Ô#Ð #Ð #Ð #Ð #ð $ð $rcóR—| ¦«D]}t|¦«ŒdSrˆ)rÊrL)r0r5r§s rrqzDirectAdmin.list_packagesas4€Ø×&Ò&Ñ(Ô(ð ð ˆDÝ �$‰KŒKˆKˆKð ð rcó\—| ¦«D]\}}}t||¦«ŒdSrˆrÕ)r0r5rOrhrs rrfzDirectAdmin.list_alles@€Ø#×6Ò6Ñ8Ô8ð ð ‰OˆC�˜!Ý �#�wÑ Ô Ð Ð ð ð rcój—| ¦«D]\}}}t|›d|›d|›�¦«ŒdSrërÕ)r0r5rOrhrks rrxzDirectAdmin.list_usersisU€Ø&*×&=Ò&=Ñ&?Ô&?ð 1ð 1Ñ "ˆC�˜(Ý �SÐ/Ð/˜7Ð/Ð/ XÐ/Ð/Ñ 0Ô 0Ð 0Ð 0ð 1ð 1rcó²—| ||¬¦«}|r= | |¦«\}}}n#t$rYdSwxYwt|¦«dSdS)NrÀr)r0rOr5r9rrhs rrozDirectAdmin.list_user_packagems}€Ø×+Ò+°¸5Ð+ÑAÔAˆØ ð ð Ø $× 3Ò 3°HÑ =Ô =‘ ��7˜A˜AøÝ"ð ð ð Ø��ð øøøå �'‰NŒNˆNˆNˆNð  ð rcój—| d¬¦«D]\}}}||krt|¦«ŒdS)NrzrÔrÕ)r0rhr5rOÚpackage_rks rriz!DirectAdmin.list_users_in_packagevsL€ð×'Ò'°bÐ'Ñ9Ô9ð ð Ñ #ˆC�˜8à˜7Ò"Ð"Ý�c‘ ” � øð ð rcój—| |¬¦«D]\}}}||krt|¦«ŒdS)NrÔrÕ)r0rhrkr5rOr=rs rrlz*DirectAdmin.list_users_in_reseller_package}sL€ð×'Ò'°hÐ'Ñ?Ô?ð ð Ñ ˆC�˜1à˜7Ò"Ð"Ý�c‘ ” � øð ð rcó —g}tj |j¦«r&| |j¦«}d„|D¦«}| | ¦«¦«tt|¦«¦«S)z0 Return list of resellers names có^—g|]*}| ¦«¯| ¦«‘Œ+Srr3r¯s rr±z.DirectAdmin._get_resellers..‹s-€ÐVÐVÐV°ÈÏ Ê É Ì ÐV˜dŸkšk™mœmÐVÐVÐVr) r�ržrŸÚDA_RESELLERS_LISTr^Úextendr6r¼r)r0Úresellers_listr¦s rr´zDirectAdmin._get_resellers„s‚€ðˆÝ Œ7�>Š>˜$Ô0Ñ 1Ô 1ð WØ×.Ò.¨tÔ/EÑFÔFˆLØVÐV¸ ÐVÑVÔVˆNØ×Ò˜d×.Ò.Ñ0Ô0Ñ1Ô1Ð1Ý•C˜Ñ'Ô'Ñ(Ô(Ð(rcóÖ—g}tj |j|d¦«}tj |¦«r!| |¦«}d„|D¦«}|S)zË Get all packages for giver reseller :param string reseller: Reseller name :rtype: list of strings :return: List of packages names that belongs to given reseller z packages.listcó^—g|]*}| ¦«¯| ¦«‘Œ+Srr3r¯s rr±z6DirectAdmin._get_reseller_packages..›s-€ÐUÐUÐU¨tÀtÇ{Â{Á}Ä}ÐU˜TŸ[š[™]œ]ÐUÐUÐUr)r�ržrÁrrŸr^)r0rkÚ packages_listÚ package_pathr¦s rÚ_get_reseller_packagesz"DirectAdmin._get_reseller_packages�sf€ðˆ Ý”w—|’| DÔ$5°xÀÑQÔQˆ Ý Œ7�>Š>˜,Ñ 'Ô 'ð VØ×.Ò.¨|Ñ<Ô<ˆLØUÐU°|ÐUÑUÔUˆMØÐrcó—d}| ¦«D]n} | |¦«}n#t$r}|€|}Yd}~Œ,d}~wwxYwtj|fd„|d¦« ¦«}t |¦«Œo|�|‚dS)Ncó—|›|›d|›d�S)NrÝr;r)r¤ÚpkgÚress rúz5DirectAdmin.list_resellers_packages..ªs€°VÐ2J¸SÐ2JÐ2JÀ3Ð2JÐ2JÐ2J€rrz)r´rHrùÚ functoolsÚreducer¡rL)r0r5Úfirst_exceptionrkÚpackagesrQÚ out_strings rrsz#DirectAdmin.list_resellers_packagesžs̀؈Ø×+Ò+Ñ-Ô-ð ð ˆHð Ø×6Ò6°xÑ@Ô@��øÝð ð ð Ø"Ð*Ø&'�OØ����øøøøð øøøõ #Ô)Ø(0ÐJÐJÐJØØñô÷Še‰gŒgð õ �*Ñ Ô Ð Ð Ø Ð &Ø!Ð !ð 'Ð &sš0° AºAÁAcóp—td | |¦«¦«¦«dSr6)rLrÁrHrus rrvz"DirectAdmin.list_reseller_packages²s0€Ý ˆd�iŠi˜×3Ò3°HÑ=Ô=Ñ>Ô>Ñ?Ô?Ð?Ð?Ð?rrˆr„rƒ)*rrrrÚDA_CONFr4rAr7rñrór)rr r1r^rürørÚstrrrrr|r€r‚r r#r.r0r6rÊrqrfrxrorirlr´rHrsrvrìrís@rrr4sJø€€€€€Ø7€LØ<€GØB€MØIÐØJÐØ€HØ€HØ€J؈w‰yŒy€Hð>ð>ð>ð>ð>ð /ð /ð /ð+ð+ð+ð 8&ð8&ð8&ðt/ð/ð/ð'ð'¨#ð'ÀHÈTÐRUÌYÔDWð'Ðcfð'ð'ð'ð'ðR)ð)ð)ð)ð8&ð&ð&ð&ð8ðððð )ð)ð)ðððð< ð ð ð('ð'ð'ð'ð ð ð ð ð$ð$ð$ð ðððð ð ð ð ð1ð1ð1ð1ððððððððððððð )ð )ð )ð ð ð ð"ð"ð"ð"ð(@ð@ð@ð@ð@ð@ð@ð@rrcó—eZdZd„ZdS)ÚISPManagerGetPackagesExceptioncó<—t ||¦«dSrˆ)rùr1)r0r—s rr1z'ISPManagerGetPackagesException.__init__·s€Ý×Ò˜4 Ñ)Ô)Ð)Ð)Ð)rN)rrrr1rrrrWrW¶s#€€€€€ð*ð*ð*ð*ð*rrWcóp‡—eZdZdZdZdZˆfd„Zd„Zed d„¦«Z d d„Z d d „Z d d „Z d d „Z d d „ZˆxZS)rz!/usr/local/ispmgr/etc/ispmgr.confNÚ mgrsecurecó@•—t¦« ¦«tj¦«tj d¦«}t |d¦«|_tj¦«|_ tj ¦«|_ dS)Nrõr) r‰r1rÚgetCPÚ CP_VERSIONr®rNÚ isp_major_verÚispmanager5_is_masterÚisp5_is_masterr rŒr/)r0Ú ver_partsr*s €rr1zISPManager.__init__Àsvø€Ý ‰Œ×ÒÑÔÐÝŒ ‰ŒˆÝÔ%×+Ò+¨CÑ0Ô0ˆ Ý  ¨1¤Ñ.Ô.ˆÔå$Ô:Ñ<Ô<ˆÔÝ&Ô2Ñ4Ô4ˆÔÐÐrc óò—i}|jdk�rþtj |j¦«st d|j›�¦«‚ t |jdd¬¦«5}| ¦«}ddd¦«n #1swxYwY| d¦«}|  d¦«|D�]}| ¦«d}t|j   |  d d ¦«¦«¦«}| d ¦«}|D]Ÿ}| ¦« d ¦«rvd  | ¦« ¦«dd…¦«}||vr||d zt#|¦«z||<Œ�t#|¦«||<Œ �Œn«#t$t&f$r-}t d|j›dt#|¦«›�¦«|‚d}~wwxYw t)j|j¦«j} | D]7} |j   | ¦«}d||<Œ##t0j$rYŒ4wxYwn#t4$rYnwxYw|S)zË Retrives list of pairs "uid - package" :return: Dictionary: uid -> package_name Example: {512: 'custom', 513: 'test1'} Case 2: (Error): (1, "error message") ézERROR: Can't read rUrVrWNÚAccountrr(rzr;ÚPresetrÝr­z - Údefault)r^r�ržrŸÚ ISP4_CONFrWrYÚreadr®ÚpoprNr)rJÚreplacer¡r’rÁrUÚOSErrorÚIOErrorÚgrpÚgetgrnamÚISP5_GRPÚgr_memrrKÚKeyError) r0Údict_uid_packager\Úlinesr§rOÚline1Úpkg_namerQÚ panel_usersrÛs rÚ_get_user_packages_dictz"ISPManager._get_user_packages_dictÉsé€ðÐØ Ô  Ò "Ñ "å”7—>’> $¤.Ñ1Ô1ð \Ý4Ð5ZÈ$Ì.Ð5ZÐ5ZÑ[Ô[Ð[ð ݘ$œ.¨#¸Ð@Ñ@Ô@ð%ÀAØŸFšF™HœH�Eð%ð%ð%ñ%ô%ð%ð%ð%ð%ð%ð%øøøð%ð%ð%ð%àŸ š  IÑ.Ô.�Ø— ’ ˜!‘ ” � Ø!ð Fñ F�DØŸ*š*™,œ, qœ/�Cݘdœo×5Ò5°c·k²kÀ$ÈÑ6KÔ6KÑLÔLÑMÔM�CØŸ:š: dÑ+Ô+�DØ!%ðFðF˜Ø Ÿ;š;™=œ=×3Ò3°HÑ=Ô=ðFØ'*§x¢x°· ² ± ´ ×0CÒ0CÑ0EÔ0EÀaÀbÀbÔ0IÑ'JÔ'J˜HØ"Ð&6Ð6Ð6Ø8HÈÔ8MÐPSÑ8SÕVYÐZbÑVcÔVcÑ8cÐ 0°Ñ 5Ð 5å8;¸H¹ ¼ Ð 0°Ñ 5øñ Fð Føõ�WÐ%ð ð ð å4ØD¨¬ÐDÐD½CÀ¹F¼FÐDÐDñôàðøøøøð øøøð Ý!œl¨4¬=Ñ9Ô9Ô@� Ø'ðð�DðØ"œo×5Ò5°dÑ;Ô;˜Ø09Ð(¨Ñ-Ð-øÝ Ô4ðððØ˜ðøøøð øõ ð ð ð Ø�ð øøøàÐssÁ G Á"BÁ7 G ÂBÂG  B EG Ç H Ç(HÈH È"I'È1IÉI'ÉI#É I'É"I#É#I'É' I4É3I4Fcó(—d}t|¦«dS)zÕ Get reseller name from user's config file :param string uid: uid of user :param bool debug: Do produce debug output or don't :rtype: string :return: reseller name r"N)rL)ÚclsrOr5rks rr‚zISPManager.get_resellerûs€ðˆÝ ˆh‰Œˆˆˆrcó — | ¦«}t| ¦«¦«D]}t|¦«ŒdS#t$r.}t|¦«t jd¦«Yd}~dSd}~wwxYw©Nr­)rwrÚvaluesrLrWr<r”)r0r5rrrhrQs rrqzISPManager.list_packagess—€ð Ø#×;Ò;Ñ=Ô=Ð ÝÐ/×6Ò6Ñ8Ô8Ñ9Ô9ð ð �Ý�g‘”��ð ð øå-ð ð ð Ý �!‰HŒHˆHÝ ŒH�Q‰KŒKˆKˆKˆKˆKˆKˆKˆKøøøøð øøøs‚AA Á BÁ#A>Á>Bcó— | ¦«}| ¦«D]'\}}tt|¦«dz|z¦«Œ(dS#t$r.}t|¦«t jd¦«Yd}~dSd}~wwxYw)NrÝr­©rwÚitemsrLrUrWr<r”©r0r5rrrOrhrQs rrfzISPManager.list_alls¥€ð Ø#×;Ò;Ñ=Ô=Ð Ø 0× 6Ò 6Ñ 8Ô 8ð 0ð 0‘ ��WÝ•c˜#‘h”h ‘n wÑ.Ñ/Ô/Ð/Ð/ð 0ð 0øå-ð ð ð Ý �!‰HŒHˆHÝ ŒH�Q‰KŒKˆKˆKˆKˆKˆKˆKˆKøøøøð øøøó‚AAÁ B Á#BÂB có0— t|¦«}| ¦«}||vrt||¦«dSdS#t$r.}t|¦«t jd¦«Yd}~dSd}~wt $rtd¦«YdSwxYw)Nr­rH)rNrwrLrWr<r”rI)r0rOr5rrrQs rrozISPManager.list_user_packages¿€ð 'Ý�c‘(”(ˆCØ#×;Ò;Ñ=Ô=Ð ØÐ&Ð&Ð&ÝÐ& sÔ+Ñ,Ô,Ð,Ð,Ð,ð'Ð&øå-ð ð ð Ý �!‰HŒHˆHÝ ŒH�Q‰KŒKˆKˆKˆKˆKˆKˆKˆKøøøøÝð 'ð 'ð 'Ý Ð%Ñ &Ô &Ð &Ð &Ð &Ð &ð 'øøøs‚Ô>ˆNð>ð +9ð >ð>ð>ˆEð ×,Ò,¨UµE¸)Ñ4DÔ4DÑEÔEˆFØð (Ø! !œ9 Qœ<�Ý �H Ò'Ð'ˆbˆb¨XÑ6Ô6Ð6Ð6Ð6rcól—| |¬¦«}|D]\}}}t|›d|›�¦«ŒdS)zù Print info about user's packages (include resellers) :param bool debug: Do produce debug output or don't :return: pairs "uid package", where uid - unique id of user package - name of user's package rÄrÝNrÕ)r0r5rÚrOrhrs rrfzPlesk.list_all°sY€ð×'Ò'¨eÐ'Ñ4Ô4ˆØ!&ð &ð &Ñ ˆS�'˜1Ý �SÐ$Ð$˜7Ð$Ð$Ñ %Ô %Ð %Ð %ð &ð &rcór—| |¬¦«}|D]\}}}t|›d|›d|›�¦«ŒdS)aF Print info about user's packages (include resellers) and thouse resellers :param bool debug: Do produce debug output or don't :return: triples "uid,package,reseller", where uid - unique id of user package - name of user's package reseller - name of package's reseller rÄr~NrÕ)r0r5rÚrOrhrks rrxzPlesk.list_users¾sa€ð×'Ò'¨eÐ'Ñ4Ô4ˆØ(-ð 1ð 1Ñ $ˆS�'˜8Ý �SÐ/Ð/˜7Ð/Ð/ XÐ/Ð/Ñ 0Ô 0Ð 0Ð 0ð 1ð 1rcóˆ—g} |j t|¦«¦«}|D]8}| ||¬¦«}| d„|D¦«¦«Œ9nG#t j$r}|rt|¦«Yd}~n"d}~wt$rtd¦«YnwxYw|D]}t|¦«ŒdS)zà Print all packages for user's uid :param uid: user's unique id :param bool debug: Do produce debug output or don't :return: package name for user's uid )r5r9có—g|] }|d‘Œ S)r­rr¯s rr±z+Plesk.list_user_package..ás€Ð <Ð <Ð <¨T  a¤Ð <Ð <Ð Ø”O×-Ò-­c°#©h¬hÑ7Ô7ˆEðð >ð >�Ø×0Ò0°uÀtÐ0ÑLÔL�Ø—’Ð <Ð <°VÐ <Ñ <Ô <Ñ=Ô=Ð=Ð=ð >øõ Ô(ð ð ð Øð Ý�a‘”�øøøøøøøøøÝð 'ð 'ð 'Ý Ð%Ñ &Ô &Ð &Ð &Ð &ð 'øøøð  ð ð ˆGÝ �'‰NŒNˆNˆNð ð s„'A'Á'B+Á6B  B+Â*B+có¤—d}| |||jf¦«D]/}t|j |d¦«¦«Œ0dS)z­ Print all users in package :param package: name of package :param bool debug: Do produce debug output or don't :return: user's uid a¹ SELECT t5.login FROM psa.Templates AS t1 JOIN psa.PlansSubscriptions AS t2 ON t2.plan_id = t1.id JOIN psa.Subscriptions AS t3 ON t3.id = t2.subscription_id JOIN psa.domains AS t4 ON t4.id = t3.object_id JOIN psa.hosting AS t6 ON t6.dom_id = t4.id RIGHT JOIN psa.sys_users AS t5 ON t6.sys_user_id = t5.id WHERE t1.name = %s AND t1.owner_id = %s AND t1.type = 'domain'; rN)r›r¢rLr)rJ)r0rhr5ržÚlogins rrizPlesk.list_users_in_packageås`€ð  ˆð×,Ò,¨U°W¸d¼mÐ4LÑMÔMð 5ð 5ˆEÝ �$”/×)Ò)¨%°¬(Ñ3Ô3Ñ 4Ô 4Ð 4Ð 4ð 5ð 5rcóØ—tjd|¦«sdSd}| ||f¦«}t|¦«dkrdSt |dd¦«}d}| |||f¦«}|D]l} |j |d¦«} tt| ¦«¦«Œ@#tj $r} |rt| ¦«Yd} ~ Œed} ~ wwxYwdS)zð Print info about users in resellers package :param package: package name :param reseller: name of package's reseller :param bool debug: Do produce debug output or don't :return: users uids ú^[\w_]*$NzASELECT id FROM psa.clients WHERE type = 'reseller' AND login = %sr­raÙ SELECT t5.login FROM psa.Templates AS t1 JOIN psa.PlansSubscriptions AS t2 ON t2.plan_id = t1.id JOIN psa.Subscriptions AS t3 ON t3.id = t2.subscription_id JOIN psa.domains AS t4 ON t4.id = t3.object_id JOIN psa.hosting AS t6 ON t6.dom_id = t4.id RIGHT JOIN psa.sys_users AS t5 ON t6.sys_user_id = t5.id WHERE t1.type = 'domain' AND t1.name = %s AND t1.owner_id = %s; ) r›r¢r›rèrNr)rJrLrUrrK) r0rhrkr5Úreseller_queryÚ reseller_idržr¤r§ÚluidrQs rrlz$Plesk.list_users_in_reseller_packageûs€õŒx˜  XÑ.Ô.ð Ø ˆFØ`ˆØ×-Ò-¨n¸x¸kÑJÔJˆ Ý ˆ{Ñ Ô ˜qÒ Ð Ø ˆFݘ+ aœ.¨Ô+Ñ,Ô,ˆ ð  ˆð×(Ò(¨°¸+Ð0FÑGÔGˆØð !ð !ˆDð !Ø”×.Ò.¨t°A¬wÑ7Ô7�õ •c˜$‘i”iÑ Ô Ð Ð øõ Ô,ð ð ð Øðݘ!‘H”H�Høøøøøøøøøð øøøð !ð !s B=Â=C'à C"Ã"C'có°—d|j›d�}| |¦«D]4}|d}|ddkrdn|d}t|›d|›�¦«Œ5dS) zæ Print list of resellers packages :param bool debug: Do produce debug output or don't :return: pairs "reseller package", where package - package name reseller - package's reseller z°SELECT t2.login, t1.name FROM (SELECT name, owner_id, type FROM psa.Templates) AS t1 JOIN psa.clients AS t2 ON t1.owner_id = t2.id WHERE t1.owner_id != z AND t1.type = 'domain';r­rr"ÚrootrÝNr¡)r0r5ržr§rhrks rrszPlesk.list_resellers_packages s�€ðHð#œmðHðHðHˆð×+Ò+¨EÑ2Ô2ð +ð +ˆDؘ1”gˆGØ!% a¤¨GÒ!3Ð!3�v�v¸¸a¼ˆHÝ �XÐ)Ð) Ð)Ð)Ñ *Ô *Ð *Ð *ð +ð +rrcóÔ—g}d}| |¦«D]M}|d}|ddkrdn|d}|d}| ||t|¦«f¦«ŒN|S)z’ Return list of non-reseller packages with the plesk DB id [(reseller, package, plesk_id), (None, package, plesk_id)] z¿SELECT t2.login, t1.name, t1.id FROM (SELECT id, name, owner_id, type FROM psa.Templates) AS t1 JOIN psa.clients AS t2 ON t1.owner_id = t2.id WHERE t1.type = 'domain';r­rr"rµé)r›ÚappendrN)r0rLržr§rhrkÚ_ids rÚlist_domain_packages_with_idz"Plesk.list_domain_packages_with_id3sƒ€ð ˆð%ˆð×+Ò+¨EÑ2Ô2ð 6ð 6ˆDؘ1”gˆGØ!% a¤¨GÒ!3Ð!3�v�v¸¸a¼ˆHØ�q”'ˆCØ �JŠJ˜ '­3¨s©8¬8Ð4Ñ 5Ô 5Ð 5Ð 5؈ rÚ package_idcóP—d}| ||f¦«}|ddS)z8 Return package name by the plesk DB id z7SELECT id, name, type FROM psa.Templates WHERE id = %s;rr­©r›)r0r»ržr™s rÚ$get_package_name_by_id_from_plesk_dbz*Plesk.get_package_name_by_id_from_plesk_dbDs/€ðJˆØ×&Ò& u¨z¨mÑ<Ô<ˆØ�AŒw�qŒzÐrÚ package_namecóP—d}| ||f¦«}|ddS)z8 Return package id by the plesk DB name z9SELECT id, name, type FROM psa.Templates WHERE name = %s;rr½)r0r¿ržr™s rÚ$get_package_id_by_name_from_plesk_dbz*Plesk.get_package_id_by_name_from_plesk_dbLs/€ðLˆØ×&Ò& u¨|¨oÑ>Ô>ˆØ�AŒw�qŒzÐrcóº—|dkrd}tjd|¦«sdSd|›d|j›d�}| |¦«D]}t |d¦«ŒdS) z¸ Print list reseller's packages :param reseller: name of reseller :param bool debug: Do produce debug output or don't :return: packages names rµr"r°Nz™SELECT t1.name FROM (SELECT name, owner_id, type FROM psa.Templates) as t1 JOIN psa.clients as t2 ON t1.owner_id = t2.id AND t2.login = 'z6' WHERE t1.type = 'domain' AND t1.owner_id != ú;r)r›r¢r¢r›rL)r0rkr5ržr§s rrvzPlesk.list_reseller_packagesTs—€ð �vÒ Ð ØˆHÝŒx˜  XÑ.Ô.ð Ø�4ðHàGOðHðHð6:´]ðHðHðHˆð×+Ò+¨EÑ2Ô2ð ð ˆDÝ �$�q”'‰NŒNˆNˆNð ð rcó—dgS)Nr"rr4s rr6zPlesk.list_adminshs €ØˆyÐrrˆ)FNNrƒ)rrrrr”r¢r�r)r1r›r|rqrUÚboolr‚rfrxrorirlrsrrrrNrºr¾rÁrvr6rìrís@rrr:sÑø€€€€€ððð(€JØ€HØ€JØ€Jð0ð0ð0ð0ð0ð 4ð 4ð 4ð 4ð3-ð3-ð3-ð3-ðjðððð"7ð7 ð7¨Dð7ð7ð7ð7ð. &ð &ð &ð &ð 1ð 1ð 1ð 1ððððð25ð5ð5ð5ð,#!ð#!ð#!ð#!ðJ+ð+ð+ð+ð&¨d°5¸À#¼ÈÈSÐ9PÔ3QÔ.Rððððð"¸sðÀsðððððÀðÈððððððððð(ðððððððrrcó—eZdZd„ZdS)rcóp—|rtj d¦«tjd¦«dS)Nz"Doesn't support InterWorx anymore r)r<r=r>r”r?s rrAzInterWorx._warningms3€Ø ð DÝ ŒJ× Ò ÐBÑ CÔ CÐ CÝ Œ�‰ Œ ˆ ˆ ˆ rN©rrrrArrrrrls#€€€€€ðððððrrcó—eZdZd„ZdS)r#có&—t|›d�¦«‚)Nz% wasn't implemented for Unknown panel©ÚNotImplementedErrorr?s rrAzUnknown._warningts€Ý! [Ð"WÐ"WÐ"WÑXÔXÐXrNrÈrrrr#r#ss(€€€€€ðYðYðYðYðYrr#có—eZdZd„ZdS)rcó&—t|›d�¦«‚)Nz' wasn't implemented for HostingNG panelrËr?s rrAzHostingNG._warningys€Ý! [Ð"YÐ"YÐ"YÑZÔZÐZrNrÈrrrrrxs(€€€€€ð[ð[ð[ð[ð[rr)%rmr�r›r<rCrNÚtypingrrrÚ cldetectlibrÚclcommonrrÚclcommon.clprocrÚclcommon.utilsr Úclcommon.cpapi.pluginsr r r r r•rùrr$r&r"rrWrrrr#rrrrúrÕsÒðð € € € Ø € € € Ø € € € Ø € € € Ø € € € ØÐÐÐØ(Ð(Ð(Ð(Ð(Ð(Ð(Ð(Ð(Ð(àÐÐÐØ%Ð%Ð%Ð%Ð%Ð%Ð%Ð%Ø#Ð#Ð#Ð#Ð#Ð#ØÐÐÐÐÐØIÐIÐIÐIÐIÐIÐIÐIÐIÐIÐIÐIàÐð ð ð ð ð �iñ ô ð ðððð"w4ðw4ðw4ðw4ðw4ñw4ôw4ðw4ðtC6ðC6ðC6ðC6ðC6ˆ\ñC6ôC6ðC6ðL@ð@ð@ð@ð@�,ñ@ô@ð@ðD *ð*ð*ð*ð* Yñ*ô*ð*ð |ð|ð|ð|ð|�ñ|ô|ð|ð~oðoðoðoðoˆLñoôoðoðd ðððð� ñôððYðYðYðYðYˆlñYôYðYð [ð[ð[ð[ð[� ñ[ô[ð[ð[ð[r