§ Rl¾j|A ã ó( — d dl mZ d dlmZmZmZmZmZmZ d dl m Z d dlmZm Z d dlmZmZmZmZmZ d dlmZmZmZmZmZ edg d¢¦ « Z ed g d ¢¦ « Z edg d¢¦ « Z ed ddg¦ « ZdZdZdZ dZ!dZ"dZ# G d„ d¦ « Z$dS )é )Ú namedtuple)ÚDictÚIteratorÚListÚOptionalÚTupleÚUnion)ÚClPwd)ÚNotSupportedÚ resellers)ÚDEFAULT_PROVIDERÚEMPTY_LIMITSÚInheritedLimitsÚLimitsÚXmlConfigReader)ÚDEFAULT_PACKAGEÚLVE_DEFAULTÚLVP_DEFAULTÚpanelpackagesdictÚpaneluserslistÚPackage©ÚnameÚproviderÚlimitsÚReseller©r Údefaultsr ÚUser©ÚidÚpackager ÚresellerÚ is_panel_userÚ IneritedLimitÚvalueÚsourceÚDEFAULTSÚownr" r# ÚglobalÚbuiltinc ó — e Zd ZdZ eedd¬¦ « Z eeed¬¦ « Z dd„Z ed„ ¦ « Zd„ Z ed„ ¦ « Zd „ Zd „ Zd„ Zd„ Zed „ ¦ « Zed„ ¦ « Zed„ ¦ « Zed„ ¦ « Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ ZdS )ÚLimitsDataStoragea› This class is designed to merge data from xml config & control panel and provide user-friendy interface to work with lve limits (packages, resellers, defaults) What this class can do: - process information from xml config and control panel - re-pack structures for easy data access What this class should not do: - set limits in kernel - know anything about kernel limits Nr r c óœ — t ¦ « | _ |p t ¦ « | _ d | _ d | _ d | _ d | _ d | _ d S ©N) r Ú_pwdr Ú_xml_sourceÚ_panel_resellers_listÚ _packagesÚ_usersÚ _resellersÚ _defaults)ÚselfÚ_xml_config_readers úQ/opt/cloudlinux/venv/lib64/python3.11/site-packages/cllimitslib_v2/lve_storage.pyÚ__init__zLimitsDataStorage.__init__@ sH € Ý‘G”GˆŒ Ø-ÐBµÑ1BÔ1BˆÔØ%)ˆÔ"؈ŒØˆŒØˆŒØˆŒˆˆó c ó( — | dk rd} n| dk rd} | S )z2 Convert mem to vmem and reversed ÚvmemÚmem© )Ú limit_names r9 Ú_limit_name_convertz%LimitsDataStorage._limit_name_convertI s, € ð ˜ÒÐØˆJˆJØ ˜5Ò Ð ØˆJàÐr; c óv — | j €, t ¦ « | _ n# t $ r g | _ Y nw xY w| j S )z� Get list of names of panel resellers. If cpapi panel plugin don't support that method, we return empty list )r2 r r ©r7 s r9 Ú_get_panel_resellersz&LimitsDataStorage._get_panel_resellersW