/opt/cloudlinux/venv/lib/python3.11/site-packages/xray/internal/__pycache__
NameSizeModeActions
advanced_metrics.cpython-311.pyc31440644editdlrm
clwpos_safe_imports.cpython-311.pyc18200644editdlrm
constants.cpython-311.pyc51110644editdlrm
exceptions.cpython-311.pyc76430644editdlrm
fpm_utils.cpython-311.pyc74650644editdlrm
local_counters.cpython-311.pyc75010644editdlrm
nginx_utils.cpython-311.pyc116870644editdlrm
phpinfo_utils.cpython-311.pyc404510644editdlrm
probe_targets.cpython-311.pyc185910644editdlrm
types.cpython-311.pyc544110644editdlrm
user_limits.cpython-311.pyc66890644editdlrm
user_manager.cpython-311.pyc82330644editdlrm
user_plugin_utils.cpython-311.pyc171770644editdlrm
utils.cpython-311.pyc551080644editdlrm
__init__.cpython-311.pyc8910644editdlrm
Edit: /opt/cloudlinux/venv/lib/python3.11/site-packages/xray/internal/__pycache__/utils.cpython-311.pyc (55108B)
§ ð ˜jÜ�ãóÞ—dZddlmZddlZddlZddlZddlZddlZddlZddl Z ddl Z ddl Z ddl Z ddl Z ddlZddlZddlZddlZddlmcmZddlmZddlmZddlmZmZddlmZddlmZdd l m!Z!m"Z"m#Z#m Z ddl$Z$dd l%m&Z&dd l'm(Z(dd l)m*Z*m+Z+m,Z,m-Z-dd l.m/Z/ddl0m1Z1ddl2m3Z3ddl4m5Z5ddl6m7Z7ddl8m9Z:ddl;mZ>m?Z?m@Z@mAZAmBZBmCZCddlDmEZEmFZFejGd¦«ZHeIeJejKfZLdnd„ZMdod!„ZNdpdqd$„ZOdrd'„ZPdrd(„ZQdrd)„ZRdsd*„ZSdtd,„ZTdud.„ZUdvd/„ZVdwd2„ZWdwd3„ZXdvd4„ZYe>fdxd7„ZZdvd8„Z[dyd:„Z\eRdvd;„¦«Z]dzd>„Z^d{d?„Z_d|d@„Z`eAfd}dB„Zae jbdC¦«Zcd~dE„ZdddH„Zed€dK„Zfd�dN„Zgd‚dP„ZhdƒdR„Zid„dS„Zjdpd…dT„Zkd†dV„Zld‡dW„Zmd‡dX„ZndˆdZ„Zod‡d[„Zpd‡d\„Zqd‡d]„Zrd‰d^„Zsd_„Zted|d`„¦«ZuedŠd‹dd„¦«ZvedŒd�df„¦«Zwe dŽd�dk„¦«Zxedl„¦«Zydm„ZzdS)�zB This module contains helpful utility functions for X-Ray Manager é)Ú annotationsN)ÚCallable)Úcontextmanager)ÚdateÚ timedelta©Úwraps)Úglob)ÚAF_UNIXÚ SOCK_STREAMÚfromfdÚsocket)Údrop_privileges)ÚFeature)Úget_cp_descriptionÚ getCPNameÚis_panel_feature_supportedÚis_wp2_environment)Úget_cl_edition_readable)ÚUIConfig)Úget_rhn_systemid_value)ÚAtexitIntegration)ÚLoggingIntegration)Úgettext)Úphp_get_vhost_versions_useré)Ú agent_fileÚjwt_token_locationÚlocal_tasks_storageÚ logging_levelÚ sentry_dsnÚuser_agent_sock)Ú XRayErrorÚXRayManagerExitÚutilsÚpathÚstrÚmodeÚintÚreturnÚNonecó&—t||¦«dS)a7Set ``mode`` on a directory we just created, without following symlinks. ``mkdir``'s mode argument is masked by the ambient umask, so a directory that must have an exact mode has to be chmod'ed after the fact. Doing that with a path-based ``os.chmod`` is unsafe here: these call sites run as root with no privilege drop, and ``os.chmod`` re-resolves the name at syscall time. A tenant who controls the parent can win the mkdir -> chmod window, replace the new directory with a symlink, and redirect the root chmod onto a root-owned target. Pin the inode instead. ``O_NOFOLLOW`` refuses a symlink swapped in for the final component outright, and reading the fd back through ``/proc/self/fd`` catches an ancestor component that was swapped, because that changes the canonical path. ``fchmod`` then acts on the pinned inode and never on a re-resolved name -- the same idiom ``unified_write``/``unified_erase`` use in ``xray.internal.types``. Anything unexpected (the directory vanished, was replaced by a symlink, moved) is logged and skipped rather than raised: the mode is a hardening detail, not a precondition of the operation that created the directory. Caller contract: ``path`` must be the CANONICAL path of the directory that was just created -- i.e. already ``os.path.realpath``'d, and resolved before the mkdir, not after. Passing a path that merely happens to reach the right inode through a symlink is not an error, but the identity check below will not match and the mode will be skipped. N)Ú_chmod_pinned_dir)r&r(s úJ/opt/cloudlinux/venv/lib64/python3.11/site-packages/xray/internal/utils.pyÚchmod_created_dirr/=s€õ8�d˜DÑ!Ô!Ð!Ð!Ð!óÚ damaged_modeÚ target_modecó²— tjtj|¦«j¦«|krdSn#t$rYdSwxYwt |||¬¦«dS)a’Upgrade a directory that an earlier release left at ``damaged_mode``. The mode-pinning above only runs when a directory is CREATED, so it does nothing for hosts whose directories were already created wrong -- and the 0.6-51/0.6-52 crons ran under umask 077 for weeks, so that is most affected hosts rather than an edge case (ZD 290458). Unlike xray.so, xray.ini and the skeleton ini -- which are rewritten wholesale on the next run and therefore self-heal -- a directory is only ever created once. The repair is deliberately narrow: it fires only when the current mode is EXACTLY ``damaged_mode``, the signature the umask-077 runs produced. An administrator's or tenant's deliberate 0750 (or anything else) is left alone, so this cannot quietly loosen a directory nobody asked us to touch. Same caller contract and same symlink handling as ``chmod_created_dir``. N)Ú only_if_mode)ÚstatÚS_IMODEÚosÚst_modeÚOSErrorr-)r&r1r2s r.Úrepair_dir_moder:\sn€ð.Ý Œ<�œ ™ œ Ô-Ñ .Ô .°,Ò >Ð >Ø ˆFð ?øå ðððØˆˆðøøøå�d˜K°lÐCÑCÔCÐCÐCÐCs‚/4´ AÁAr4ú int | NonecóÚ— tj|tjtjztjztjz¦«}nD#t $r7}t d|t|¦«dœ¬¦«Yd}~dSd}~wwxYw tj d|›�¦«}||kr6t d||dœ¬¦« tj |¦«dS|�‚tj tj|¦«j¦«}||kr tj |¦«dSt d|t#|¦«t#|¦«d œ¬¦«tj||¦«nC#t $r6}t d |t|¦«dœ¬¦«Yd}~nd}~wwxYwtj |¦«dS#tj |¦«wxYw) a Shared worker for the two functions above: chmod through a pinned fd. ``only_if_mode`` makes the chmod conditional on the pinned inode's CURRENT mode, read via ``fstat`` on the same fd that ``fchmod`` acts on -- so the check and the change cannot be separated by a race. zNot setting mode on directory)r&Úerr©ÚextraNz/proc/self/fd/z,Directory changed under us; not setting mode)r&Úpinnedz4Repairing directory mode left by the umask-077 crons)r&Ú from_modeÚto_modezFailed to set mode on directory)r7ÚopenÚO_RDONLYÚ O_DIRECTORYÚ O_NOFOLLOWÚ O_CLOEXECr9ÚloggerÚwarningr'ÚreadlinkÚcloser5r6Úfstatr8ÚinfoÚoctÚfchmod)r&r(r4Údir_fdÚer@Úcurrents r.r-r-{s€ðÝ”˜�rœ{­R¬^Ñ;½b¼mÑKÍbÌlÑZÑ[Ô[ˆˆøÝ ðððÝ�ŠÐ6ÀtÕTWÐXYÑTZÔTZÐ>[Ð>[ˆÑ\Ô\Ð\؈ˆˆˆˆøøøøðøøøðÝ”Ð6¨fÐ6Ð6Ñ7Ô7ˆØ �TŠ>ˆ>Ý �NŠNØ>Ø#¨vÐ6Ð6ð ñ ô ð ð õ Œ�ÑÔÐÐÐð Ð #Ý”l¥2¤8¨FÑ#3Ô#3Ô#;Ñ<Ô<ˆGؘ,Ò&Ð&Øõ Œ�ÑÔÐÐÐõ �KŠKØFØ#µ#°g±,´,Í3ÈtÉ9Ì9ÐUÐUð ñ ô ð õ Œ �&˜$ÑÔÐÐøÝ ð_ð_ð_Ý�ŠÐ8ÈÕVYÐZ[ÑV\ÔV\Ð@]Ð@]ˆÑ^Ô^Ð^Ð^Ð^Ð^Ð^Ð^øøøøð_øøøõ Œ�ÑÔÐÐÐø�Œ�ÑÔÐÐøøøsU‚AA Á B Á,BÂB Âz'Failed to unlink ini in cagefs-skeleton)rVr=z0Refusing to copy over symlink in cagefs-skeletonÚrbi¤z'Failed to copy ini into cagefs-skeleton)r7r&ÚjoinÚ ini_locationÚ startswithr ÚrealpathÚdirnameÚexistsÚmkdirr/r:ÚlexistsÚislinkrHrIÚunlinkr9r'rCÚreadÚO_WRONLYÚO_CREATÚO_TRUNCrFÚwriterOrK)ÚargsÚ original_iniÚ skeleton_iniÚ skeleton_dirrQÚsrcÚ src_bytesÚfds r.Úupdatezskeleton_update..update§s€õ ”w—|’| D¨¤GÔ$8¸*ÑEÔEˆ Ø × "Ò " =Ñ 1Ô 1ð µdÐ;NÑ6OÔ6Oð Ýœ7Ÿ<š<Ð(LÈlÐ[\Ð[]Ð[]ÔN^Ñ_Ô_ˆLˆLØ × $Ò $ \Ñ 2Ô 2ð µtÐ’> ,Ñ/Ô/ð <Ý”˜Ñ&Ô&Ð&õ" ,°Ñ6Ô6Ð6Ð6õ   ¨e°UÑ;Ô;Ð;Ð;à ˆFåŒw�~Š~˜lÑ+Ô+ð! ÝŒw�Š˜|Ñ,Ô,ð Ý”7—>’> ,Ñ/Ô/ðÝ—N’NÐ#RÐ[eÐgsÐZt�NÑuÔuÐuØ�FðÝ”I˜lÑ+Ô+Ð+Ð+Ð+øÝðððÝ—N’NØAÐVbÕknÐopÑkqÔkqÐIrÐIrð#ñôðððððððøøøøðøøøð ð ð Ý”7—>’> ,Ñ/Ô/ðÝ—N’NÐ#UÐ^hÐjvÐ]w�NÑxÔxÐxØ�Fõ˜,¨Ñ-Ô-ð+°Ø #§¢¡ ¤ �Ið+ð+ð+ñ+ô+ð+ð+ð+ð+ð+ð+øøøð+ð+ð+ð+å”W˜\­2¬;½¼Ñ+CÅbÄjÑ+PÕSUÔS`Ñ+`ÐbgÑhÔh�ð!Ý”H˜R Ñ+Ô+Ð+õ ”I˜b %Ñ(Ô(Ð(å”H˜R‘L”L�L�L�Lø•B”H˜R‘L”L�L�LøøøøÝð ð ð Ý—’Ø=ÐR^ÕgjÐklÑgmÔgmÐEnÐEnðñôðððððððøøøøð øøøssÇG-Ç- H.Ç7,H)È)H.È4=MÉ3MÊJ$Ê MÊ$J(Ê(MÊ+J(Ê,A MË7*L7Ì!MÌ7M Í MÍ NÍ,N Î Ncó"•—‰|i|¤Ž}‰|Ž|S©ú Wraps func ©)rgÚkwargsÚresultrSrns €€r.Úwrapperz skeleton_update..wrapperës)ø€ð ��tÐ&˜vÐ&Ð&ˆØˆ�ˆ ˆ ؈ r0r)rSrurns` @r.Úskeleton_updaterv¡sNøø€ð BðBðBõH ˆ4�[„[ðððððñ„[ðð €Nr0cóP‡‡‡—d„Šd„Št‰¦«ˆˆˆfd„¦«}|S)zs Decorator aimed to update DBM storage with fake_id:real_id mapping Applies to task.add nd task.remove cóŽ—|d}tt¦«5}|j||j<ddd¦«dS#1swxYwYdS)z- Update DBM storage contents rN)Ú dbm_storagerÚtask_idÚfake_id)rgÚ task_instanceÚ task_storages r.rnz"dbm_storage_update..updateýs €ð˜Qœˆ Ý Õ,Ñ -Ô -ð H°Ø2?Ô2GˆL˜Ô.Ñ /ð Hð Hð Hñ Hô Hð Hð Hð Hð Hð Hð Hð Høøøð Hð Hð Hð Hð Hð Hs �:º>Á>cóÄ—tt¦«5} ||dj ¦«=n#t$rYnwxYwddd¦«dS#1swxYwYdS)z. Remove task from DBM storage rN)ryrr{ÚencodeÚKeyError)rgr}s r.Úremovez"dbm_storage_update..removes¶€õÕ,Ñ -Ô -ð °ð Ø   a¤¤×!7Ò!7Ñ!9Ô!9Ð:Ð:øÝð ð ð à�ð øøøð ð ð ñ ô ð ð ð ð ð ð ð øøøð ð ð ð ð ð s1•A— 8·A¸ AÁAÁAÁAÁAÁAcóZ•— ‰jdkr‰|Žn.#t$r!}tt|¦«¦«‚d}~wwxYw ‰|i|¤Ž}n#t$r‰jdkr‰|Ž‚wxYw ‰jdkr‰|Žn.#t$r!}tt|¦«¦«‚d}~wwxYw|S)rqÚaddNr�)Ú__name__Ú RuntimeErrorr#r'Ú Exception)rgrsrQrtrSr�rns €€€r.ruz#dbm_storage_update..wrappersÿø€ð  $ØŒ} Ò%Ð%Ø�˜� � øøÝð $ð $ð $Ý�C ™FœFÑ#Ô#Ð #øøøøð $øøøð Ø�T˜4Ð* 6Ð*Ð*ˆFˆFøÝð ð ð ðŒ} Ò%Ð%Ø�˜� � Ø ð  øøøð $ØŒ} Ò(Ð(Ø�˜� � øøÝð $ð $ð $Ý�C ™FœFÑ#Ô#Ð #øøøøð $øøøðˆ s4ƒ” ?ž:º?ÁA Á A(Á,A=Á= B(ÂB#Â#B(r)rSrur�rns` @@r.Údbm_storage_updater‡÷sbøøø€ð HðHðHð ð ð õ ˆ4�[„[ððððððñ„[ðð: €Nr0cóF‡‡—d„Št‰¦«ˆˆfd„¦«}|S)z5 Decorator aimed to validate given JWT token có"—t¦«dS)z7 Check if retrieved JWT token is valid N)Úis_xray_supportedrrr0r.Úcheckzcheck_jwt..check6s€õ ÑÔÐÐÐr0có,•—‰|i|¤Ž}‰¦«|Srprr)rgrsÚtokenr‹rSs €€r.ruzcheck_jwt..wrapper<s)ø€ð ��dÐ%˜fÐ%Ð%ˆØ ˆ‰ŒˆØˆ r0r)rSrur‹s` @r.Ú check_jwtrŽ1sJøø€ð ððõ  ˆ4�[„[ðððððñ„[ðð €Nr0cóB—ttj¦«¦«S)zJ Get current epoch timestamp as int :return: timestamp as int )r)Útimerrr0r.Ú timestampr‘Ks€õ �tŒy‰{Œ{Ñ Ô Ðr0rcóJ—tj¦«td¬¦«z S)zC Pick a yesterday date :return: a datetime.date object r)Údays)rÚtodayrrrr0r.Ú prev_dater•Ss €õ Œ:‰<Œ<�)¨Ð+Ñ+Ô+Ñ +Ð+r0Útscó*—tj|¦«S)zy Get the datetime.date object for given int timestamp :param ts: timestamp :return: datetime.date object )rÚ fromtimestamp)r–s r.Údate_of_timestampr™[s€õ Ô ˜bÑ !Ô !Ð!r0cóD—t¦« d¦«S)zj Get a formatted representation of yesterday date :return: str date in the form of dd/mm/YYYY z%d/%m/%Y)r•Ústrftimerrr0r.Úget_formatted_daterœds€õ ‰;Œ;× Ò   Ñ +Ô +Ð+r0Úlinksú list[dict]cóf‡—dŠd ˆfd„t|d¦«D¦«¦«S)uà HTML formatted links. Both the domain (interpolated into the visible body) and the link (interpolated into the href attribute) are passed through html.escape(..., quote=True) so HTML-special characters in either slot cannot break attribute parsing or inject tags. The href is also explicitly double-quoted — without quotes, whitespace in the link value would let any subsequent token be parsed as a new attribute (e.g. ``onmouseover=...``). Defense-in-depth: today the sole caller (continuous.tracing.generate_mail) passes url_split(task.url)[0] and task.shared_link, both of which are derived from controlled sources, but the template must remain safe for any future caller. z+

{num}) {domain}

ú c óÊ•—g|]_\}}| ¦«D]E\}}‰ |tj|d¬¦«tj|d¬¦«¬¦«‘ŒFŒ`S)T)Úquote)ÚnumÚlinkÚdomain)ÚitemsÚformatÚhtmlÚescape)Ú.0ÚiÚlink_mapÚkÚvÚ html_items €r.ú z,get_html_formatted_links..~s‡ø€ð ð ð á��8Ø ŸšÑ(Ô(ð ð ñ��1ð × Ò  ­¬°Q¸dÐ)CÑ)CÔ)CÍDÌKÐXYÐaeÐLfÑLfÔLfÐ Ñ gÔ gð ð ð ð r0r©rXÚ enumerate)r�r¯s @r.Úget_html_formatted_linksr³lsPø€ð >€IØ �9Š9ð ð ð ð å(¨°Ñ2Ô2ð ñ ô ñ ô ðr0cóf‡—dŠd ˆfd„t|d¦«D¦«¦«S)z Formatted links z{num}) {dom}: {link}r cóz•—g|]7\}}| ¦«D]\}}‰ |||¬¦«‘ŒŒ8S))r£Údomr¤)r¦r§)rªr«r¬r­r®Ú text_items €r.r°z,get_text_formatted_links..ŒsSø€ÐtÐtÐt±K°A°xÐck×cqÒcqÑcsÔcsÐtÐtÑ[_Ð[\Ð^_ˆ× Ò ˜a Q¨QÐ Ñ /Ô /ÐtÐtÐtÐtr0rr±)r�r·s @r.Úget_text_formatted_linksr¸†sBø€ð'€IØ �9Š9ØtÐtÐtÐtÅ9ÈUÐTUÑCVÔCVÐtÑtÔtñ ô ðr0cóª— tjd¦«}| ¦«}| d¦«j}t j¦«5}| d|¦«ddd¦«n #1swxYwY| d¦«S#ttj f$r"}ttd¦«¦«|‚d}~wwxYw)ze Obtain system ID from /etc/sysconfig/rhn/systemid :return: system ID without ID- prefix z/etc/sysconfig/rhn/systemidz(.//member[name='system_id']/value/stringÚ system_idNzID-zFailed to retrieve system_id) ÚETÚparseÚgetrootÚfindÚtextÚ sentry_sdkÚconfigure_scopeÚset_tagÚlstripr9Ú ParseErrorr#Ú_)ÚtreeÚrootÚwhole_idÚscoperQs r.Ú read_sys_idrÊ�s€ð BÝŒxÐ5Ñ6Ô6ˆØ�|Š|‰~Œ~ˆØ—9’9ÐGÑHÔHÔMˆÝ Ô 'Ñ )Ô )ð 1¨UØ �MŠM˜+ xÑ 0Ô 0Ð 0ð 1ð 1ð 1ñ 1ô 1ð 1ð 1ð 1ð 1ð 1ð 1øøøð 1ð 1ð 1ð 1à�Š˜uÑ%Ô%Ð%øÝ •R”]Ð #ðBðBðBÝ�Ð8Ñ9Ô9Ñ:Ô:ÀÐAøøøøðBøøøs<‚ABÁA:Á. BÁ:A>Á>BÂA>ÂBÂCÂ0C à CÚsys_idÚagent_system_id_pathcó>—tj|tjtjztjztjzd¦«} tj|| ¦«¦«tj|¦«dS#tj|¦«wxYw)zH Write system_id into file /usr/share/alt-php-xray/agent_sys_id é€N) r7rCrdrcrerFrfrrK)rËrÌrms r.Ú write_sys_idrÏ sr€õ ŒÐ%¥r¤zµB´KÑ'?Å"Ä*Ñ'LÍrÌ}Ñ'\Ð^cÑ dÔ d€BðÝ Œ��V—]’]‘_”_Ñ%Ô%Ð%å Œ�‰ Œ ˆ ˆ ˆ ø�Œ�‰ Œ ˆ ˆ øøøs Á 'BÂBcóL— tt¦«5}| ¦« ¦«cddd¦«S#1swxYwYdS#t$rC}t  ddt|¦«i¬¦«t¦«cYd}~Sd}~wwxYw)zA Read system_id saved by agent during its initialization Nz8Failed to retrieve agent's system_id, returning real oner=r>) rCrrbÚstripr9rHrMr'rÊ)Úagent_sysid_filerQs r.Úread_agent_sys_idrÓ«sñ€ðÝ •*Ñ Ô ð 3Ð!1Ø#×(Ò(Ñ*Ô*×0Ò0Ñ2Ô2ð 3ð 3ð 3ð 3ñ 3ô 3ð 3ð 3ð 3ð 3ð 3ð 3øøøð 3ð 3ð 3ð 3ð 3ð 3øå ðððÝ� Š ÐNÐW\Õ^aÐbcÑ^dÔ^dÐVeˆ ÑfÔfÐf݉}Œ}ÐÐÐÐÐÐøøøøðøøøs?‚A–&A ¼ AÁ A Á AÁA ÁAÁ B#Á 8BÂB#ÂB#ú bool | Nonecó@—ttj¦«}|s‚t¦«}t ¦«}t  dt|¦«t|¦«¦«ttd¦«  ||¦«¦«‚dS)z9Raise XRayError in case of detected non-supported editionzMCurrent CloudLinux edition: %s or Control Panel: %s is not supported by X-RayzMCurrent CloudLinux edition: {} or Control Panel: {} is not supported by X-RayT) rrÚXRAYrrrHrMr'r$rÅr§)Ú is_supportedÚcurrent_editionÚ current_panels r.rŠrЏs˜€å-­g¬lÑ;Ô;€LØ ð  Ý1Ñ3Ô3ˆÝ!™ œ ˆ Ý� Š Ø [Ý �Ñ Ô Ý � Ñ Ô ñ ô ð õ Ý Ð]Ñ ^Ô ^× eÒ eØ ñ ô ñ ô ð ð ˆ4r0có*— tt¦«5}| ¦« ¦«cddd¦«S#1swxYwYdS#t$r2t t d¦«tt¦«z¦«‚wxYw)zT Obtain jwt token from /etc/sysconfig/rhn/jwt.token :return: token read NzJWT file %s read error)rCrrbrÑr9r#rÅr')Ú token_files r.Úread_jwt_tokenrÜËsÕ€ð OÝ Õ$Ñ %Ô %ð -¨Ø—?’?Ñ$Ô$×*Ò*Ñ,Ô,ð -ð -ð -ð -ñ -ô -ð -ð -ð -ð -ð -ð -øøøð -ð -ð -ð -ð -ð -øå ðOðOðOÝ�Ð2Ñ3Ô3µcÕ:LÑ6MÔ6MÑMÑNÔNÐNðOøøøs-‚A–&A ¼ AÁ A Á AÁA ÁAÁ.add_infoôst€ð ˆgŒ×Ò˜~¨|Ð<Ñ=Ô=Ð=õ 6°kÑBÔBˆˆmÑà—Y’Y˜w¨Ñ+Ô+ˆ Ø —n’n ]°DÑ9Ô9ˆ à ð 1Ø$/ =ˆE�-Ñ àˆ r0c ód—t¦«}|r| d¦«nd}|r| d¦«nd}t¦«rdnd}d|fd|fd|fdtj¦«fdt d ¦«fd t ¦«fd t d ¦«ff}|D] }|j|ŽŒ dS) NräÚnameÚWP2zControl Panel NamezControl Panel VersionzControl Panel ProductÚkernelzCloudLinux versionÚ os_releasezCloudlinux editionÚ ArchitectureÚ architecture)rrïrÚplatformÚreleaserrrÂ)Ú sentry_scopeÚcp_descriptionÚ cp_versionÚcp_nameÚ cp_productÚtagsÚtags r.Úset_tagszsentry_init..set_tags sì€Ý+Ñ-Ô-ˆØ6DÐN�^×'Ò'¨ Ñ2Ô2Ð2È$ˆ Ø0>ÐH�.×$Ò$ VÑ,Ô,Ð,ÀDˆÝ0Ñ2Ô2Ð<�U�U¸ˆ ð" 7Ð +Ø $ jÐ 1Ø $ jÐ 1Ø •xÔ'Ñ)Ô)Ð *Ø !Õ#9¸,Ñ#GÔ#GÐ HØ !Õ#:Ñ#<Ô#<Ð =Ø Õ3°NÑCÔCÐ Dð ˆðð 'ð 'ˆCØ ˆLÔ  #Ð &Ð &Ð &ð 'ð 'r0r+có—dS©Nrr)ÚpendingÚtimeouts r.Únopezsentry_init..nopes€Ø ˆr0)ÚlevelÚ event_levelzalt-php-xray@0.6-54.el9)Úcallbacki'rº)ÚdsnÚ before_sendrúÚmax_value_lengthríÚ integrationsÚidzFailed to set Sentry tags: %sN)rérêrërêr*rê©r*r+)rÚloggingÚINFOÚWARNINGrçrrÀÚinitr!rrÁÚuserr†rHÚdebugr')rñrrÚsentry_loggingÚxray_verÚ silent_atexitrÉrQs r.Ú sentry_initrèsª€ððððð,'ð'ð'ð( ð ð ð õ(­g¬lÍÌÐXÑXÔX€N݉~Œ~Ð:Ð!:€HÝ%¨tÐ4Ñ4Ô4€MÝ„OÝ ØØØõ+¨;Ñ7Ô7Ø$ mÐ4ð ñ ô ð õ Ô #Ñ %Ô %ð B¨ð Õ(¨Ñ5Ô5𠈌 ð  BØ ˆH�U‰OŒOˆOˆOøÝð Bð Bð BÝ �LŠLÐ8½#¸a¹&¼&Ñ AÔ AÐ AÐ AÐ AÐ AÐ AÐ Aøøøøð Bøøøð Bð Bð Bñ Bô Bð Bð Bð Bð Bð Bð Bð Bøøøð Bð Bð Bð Bð Bð Bs<ÂDÂ* B6Â5DÂ6 C2Ã(C-Ã(DÃ-C2Ã2DÄDÄ DÚlognamecóH—tjtjtjtjtjdœ}t ¦« tj|¬¦«g}|dkr&| tj ¦«¦«tj |  |tj¦«dd|¬¦«n8#t$r+tj tj ¦«g¬¦«YdSwxYw tj|d ¦«n#t $rYnwxYw|S) z[ Configure logging and Sentry :param logname: path to log :return: logpath )rrMrIÚerrorÚcritical)Úfilenamerz1%(asctime)s [%(threadName)s:%(name)s] %(message)sz%m/%d/%Y %I:%M:%S %p)rr§ÚdatefmtÚhandlers)r!NrÎ)rÚDEBUGrrÚERRORÚCRITICALrÚ FileHandlerÚappendÚ StreamHandlerÚ basicConfigrïr9Ú NullHandlerr7ÚchmodÚPermissionError)rrÚlevelsr!s r.Úconfigure_loggingr-:s4€õ”Ý” Ý”?Ý”ÝÔ$ð ð€Fõ�M„M€Mð ÝÔ'°Ð9Ñ9Ô9Ð:ˆØ �GÒ Ð Ø �OŠO�GÔ1Ñ3Ô3Ñ 4Ô 4Ð 4ÝÔØ—*’*˜U¥G¤LÑ1Ô1ØFØ*Øð  ñ ô ð ð øõ ðððåÔ¥gÔ&9Ñ&;Ô&;Ð%<Ð=Ñ=Ô=Ð=؈ˆðøøøð  Ý Œ�˜%Ñ Ô Ð Ð øÝ ð ð ð Ø ˆð øøøà €Ns%Á A8CÃ1C8Ã7C8Ã<DÄ DÄDz"^[a-zA-Z0-9_][a-zA-Z0-9._-]{0,31}$Úusernamecóì—|std¦«‚t |¦«std|›�¦«‚ tj|¦«dS#t $rtd|›�¦«d‚wxYw)z¾Validate that username is a real system user. Raises ValueError with a clear message if username is empty, has an invalid format, or does not exist in the system user database. zusername must not be emptyzInvalid username: zsystem user does not exist: N)Ú ValueErrorÚ_safe_username_patternÚmatchÚpwdÚgetpwnamr€)r.s r.Úvalidate_system_userr5bsœ€ð ð7ÝÐ5Ñ6Ô6Ð6Ý !× 'Ò '¨Ñ 1Ô 1ð<ÝÐ:¨hÐ:Ð:Ñ;Ô;Ð;ðPÝ Œ �XÑÔÐÐÐøÝ ðPðPðPÝÐD¸ÐDÐDÑEÔEÈ4ÐOðPøøøs ¿AÁA3Ú clwpos_argsÚlistcó¼—t|¦«ttj¦«s-d„|D¦«}dd |¦«z}dd|ddd|gSd |d g|zS) zÅBuild subprocess argv for /usr/bin/clwpos-user invocation. Non-CageFS: wraps in sudo -u bash -c with shell-quoted args. CageFS: passes args directly via cagefs_enter_user argv. cóP—g|]#}tjt|¦«¦«‘Œ$Srr)Úshlexr¢r')rªÚas r.r°z)build_clwpos_user_cmd..zs(€Ð?Ð?Ð?¨a•e”k¥# a¡&¤&Ñ)Ô)Ð?Ð?Ð?r0z/usr/bin/clwpos-user ú Úsudoú-uz-sz /bin/bashz-cz/sbin/cagefs_enter_userz/usr/bin/clwpos-user)r5rrÚCAGEFSrX)r.r6Ú safe_partsÚ inner_cmds r.Úbuild_clwpos_user_cmdrBrsv€õ ˜Ñ"Ô"Ð"Ý %¥g¤nÑ 5Ô 5ð[Ø?Ð?°;Ð?Ñ?Ô?ˆ Ø+¨c¯hªh°zÑ.BÔ.BÑBˆ ؘ˜h¨¨k¸4ÀÐKÐKà)¨8Ð5KÐLÈ{ÑZÐZr0rkÚdstc óÔ— tj||¦«dS#t$rD}tt d¦« ||t |¦«¦«¦«|‚d}~wwxYw)zZ Move file with error catching :param src: source :param dst: destination z Failed to move file {} to {}: {}N)ÚshutilÚmover9r#rÅr§r')rkrCrQs r.Ú safe_moverG�sv€ð _ÝŒ �C˜ÑÔÐÐÐøÝ ð_ð_ð_Ý�Ð<Ñ=Ô=×DÒDÀSÈ#ÍsÐSTÉvÌvÑVÔVÑWÔWÐ]^Ð^øøøøð_øøøs‚™ A'£?A"Á"A'Ú sock_locationrcóÞ—ttj dd¦«¦«}|dkrŠt ¦«5 tj|¦«n#t $rYnwxYwtt¦«}|  |¦«|  ¦«ddd¦«n #1swxYwYn/tdtt¦«}|  ¦«|S)z› Create world-writable socket in given sock_location or reuse existing one :param sock_location: socket address :return: socket object Ú LISTEN_FDSÚ0rNé) r)r7ÚenvironrïÚumask_0raÚFileNotFoundErrorrr ÚbindÚlistenr r )rHÚ listen_fdsÚsockobjs r.Ú create_socketrT�s€õ•R”Z—^’^ L°#Ñ6Ô6Ñ7Ô7€JØ�Q‚€Ý ‰YŒYð ð ð å” ˜-Ñ(Ô(Ð(Ð(øÝ$ð ð ð Ø�ð øøøå�W‘o”oˆGØ �LŠL˜Ñ 'Ô 'Ð 'Ø �NŠNÑ Ô Ð ð ð ð ñ ô ð ð ð ð ð ð øøøð ð ð ð øõ˜�G¥[Ñ1Ô1ˆØ�ŠÑÔÐØ €Ns7ÁB2ÁAÁB2Á A&Á#B2Á%A&Á&AB2Â2B6Â9B6Úlve_idcó>—ttj¦«sdSd}d|›d�} t|¦«5}|D]Œ}| |¦«rut  d|¦«t| ¦«  |¦«d ¦«¦«ccddd¦«SŒ� ddd¦«n #1swxYwYn@#t$r3}t   d|t|¦«¦«Yd}~nd}~wwxYwdS) zX Retrieve current value of CPU throttled time. Return 0 in case of failures rÚthrottled_timez/sys/fs/cgroup/cpu,cpuacct/lvez /cpu.statz%séÿÿÿÿNzFailed to open %s: %s) rrÚLVErCrZrHrr)rÑrâr9rr')rUÚmarkerÚ stat_fileÚ stat_valuesÚvaluerQs r.Úget_current_cpu_throttling_timer^¥s«€õ &¥g¤kÑ 2Ô 2ð؈qØ €FØB°ÐBÐBÐB€IðAÝ �)‰_Œ_ð H  Ø$ð Hð H�Ø×#Ò# FÑ+Ô+ðHÝ—L’L  uÑ-Ô-Ð-ݘuŸ{š{™}œ}×2Ò2°6Ñ:Ô:¸2Ô>×DÒDÑFÔFÑGÔGÐGÐGð  Hð Hð Hð Hñ Hô Hð Hð HðHð Hð Hð Hð Hñ Hô Hð Hð Hð Hð Hð Hð Høøøð Hð Hð Hð Høøõ ðAðAðAÝ� Š Ð,¨i½¸Q¹¼Ñ@Ô@Ð@Ð@Ð@Ð@Ð@Ð@øøøøðAøøøà ˆ1sG¥C´BCÂ6 CÃCà CÃCÃCÃCÃCà DÃ')DÄDú tuple | Nonecóì—d}tj |¦«sdS tj|d|dgddd¬¦«}|j ¦«|j ¦«fS#tj$r6}t  ddt|¦«i¬ ¦«Yd}~dSd}~wt$r3}t  d t|¦«¦«Yd}~dSd}~wwxYw) z˜ 'selectorctl -u username --user-current' command :param username: name of user :return: tuple(stdout, stderr) or None if command fails z/usr/bin/selectorctlNr>z--user-currentT©Úcapture_outputr¿r‹z&Failed to get selectorctl user-currentr=r>z%selectorctl --user-current failed: %s)r7r&ÚisfileÚ subprocessÚrunÚstdoutrÑÚstderrÚCalledProcessErrorrHrIr'Úsubprocess_errorsr)r.Ú _selectorctlrtrQs r.Ú_selectorctl_get_versionrk¹s€ð *€LÝ Œ7�>Š>˜,Ñ 'Ô 'ð؈tðFÝ”Ø ˜4 Ð+;Ð <ÈTÐX\Ðdhð ñ ô ˆðŒ}×"Ò"Ñ$Ô$ f¤m×&9Ò&9Ñ&;Ô&;Ð;Ð;øÝ Ô (ðXðXðXÝ�ŠÐ?ÈÍsÐSTÉvÌvÀˆÑWÔWÐWÐWÐWÐWÐWÐWÐWøøøøÝ ðFðFðFÝ� Š Ð<½cÀ!¹f¼fÑEÔEÐEÐEÐEÐEÐEÐEÐEøøøøðFøøøs$¥A A3Á3C3Â+B3Â3 C3Ã(C.Ã.C3có¸—d}tj |¦«sdS tj|d|gddd¬¦«}|j ¦«S#tj$r6}t  ddt|¦«i¬¦«Yd}~dSd}~wt$r3}t  d t|¦«¦«Yd}~dSd}~wwxYw) z« 'cagefsctl --get-prefix username' command :param username: name of user :return: cagefsctl prefix for given username or None if command fails ú/usr/sbin/cagefsctlNz --getprefixTrazFailed to get cagefsctl prefixr=r>z cagefsctl --getprefix failed: %s) r7r&rcrdrerfrÑrhrHrIr'rir©r.Ú _cagefsctlrtrQs r.Úcagefsctl_get_prefixrpÍsÿ€ð'€JÝ Œ7�>Š>˜*Ñ %Ô %ð؈tðAÝ” ¨]¸HÐ EÐVZÐaeÐmqÐrÑrÔrˆØŒ}×"Ò"Ñ$Ô$Ð$øÝ Ô (ðPðPðPÝ�ŠÐ7ÀÅsÈ1ÁvÄv¸ˆÑOÔOÐOÐOÐOÐOÐOÐOÐOøøøøÝ ðAðAðAÝ� Š Ð7½¸Q¹¼Ñ@Ô@Ð@Ð@Ð@Ð@Ð@Ð@Ð@øøøøðAøøøs#¥3AÁCÁ(+B CÂ&(CÃCcóÒ—d}tj |¦«sdS|€|ddg}n|d|g} tj|dd¬¦«t  d|¦«dS#tj$r6}t  d d t|¦«i¬ ¦«Yd}~dSd}~wt$r3}t   d t|¦«¦«Yd}~dSd}~wwxYw) z‰ 'cagefsctl --remount username' or 'cagefsctl --remount-all' command :param username: name of user or None (for remount-all) rmNz --wait-lockz --remount-allz --remountT)r‹rbz Remounted %szFailed to remount cagefsr=r>zcagefsctl --remount failed: %s) r7r&rcrdrerHrMrhrIr'rir)r.rorgrQs r.Ú_cagefsctl_remountrràs€ð '€JÝ Œ7�>Š>˜*Ñ %Ô %ðØˆØÐØ˜M¨?Ð;ˆˆà˜K¨Ð2ˆð?ÝŒ�t 4¸Ð=Ñ=Ô=Ð=Ý� Š �N HÑ-Ô-Ð-Ð-Ð-øÝ Ô (ðJðJðJÝ�ŠÐ1¸%ÅÀQÁĸˆÑIÔIÐIÐIÐIÐIÐIÐIÐIøøøøÝ ð?ð?ð?Ý� Š Ð5µs¸1±v´vÑ>Ô>Ð>Ð>Ð>Ð>Ð>Ð>Ð>øøøøð?øøøs#²2A&Á&C&Á5+B&Â& C&Â3(C!Ã!C&Úboolcó6—d}tj |¦«sdS tj|d|gddd¬¦«}d|j ¦«vS#t$r3}t  dt|¦«¦«Yd}~dSd}~wwxYw) z” 'cagefsctl --user-status username' command :param username: name of user :return: True if user has Enabled status, False otherwise rmFz --user-statusTraÚEnabledz"cagefsctl --user-status failed: %sN) r7r&rcrdrerfrÑrirHrr'rns r.Ú_is_cagefs_enabledrvõsµ€ð '€JÝ Œ7�>Š>˜*Ñ %Ô %ð؈uðCÝ” ¨_¸hÐ GÐX\ÐcgÐotÐuÑuÔuˆØ˜FœM×/Ò/Ñ1Ô1Ð1Ð1øÝ ðCðCðCÝ� Š Ð9½3¸q¹6¼6ÑBÔBÐBÐBÐBÐBÐBÐBÐBøøøøðCøøøs¥5AÁ BÁ%(BÂBcó¦— td¦«5}| ¦«}ddd¦«n #1swxYwYn#t$rYdSwxYwd|vS)z` Check if there is php.d.location = selector set in /etc/cl.selector/symlinks.rules z/etc/cl.selector/symlinks.rulesNFÚselector)rCrbr9)Ú rules_fileÚcontentss r.Ú_is_selector_phpd_location_setr{s¥€ð Ý Ð3Ñ 4Ô 4ð )¸ Ø!—’Ñ(Ô(ˆHð )ð )ð )ñ )ô )ð )ð )ð )ð )ð )ð )øøøð )ð )ð )ð )øøå ððð؈uˆuðøøøà ˜Ð !Ð!s'‚>‘2¦ >²6¶>¹6º>¾ A Á A có¨—tt¦«5}t| ¦«¦«dkcddd¦«S#1swxYwYdS)z:Check if there are no active tasks (== empty task storage)rN)ryrÚlenÚkeys)r}s r.Úno_active_tasksrsŽ€å Õ(Ñ )Ô )ð-¨\Ý�<×$Ò$Ñ&Ô&Ñ'Ô'¨1Ò,ð-ð-ð-ð-ñ-ô-ð-ð-ð-ð-ð-ð-øøøð-ð-ð-ð-ð-ð-s•%AÁA ÁA ÚenabledcóH—ttj¦«sdS tddd¬¦«5}| |rdnd¦«ddd¦«dS#1swxYwYdS#t $r4}t  d|t|¦«¦«Yd}~dSd}~wwxYw) zb Switch on/off throttle statistics gathering by kmodlve :param enabled: True or False Nz!/proc/sys/kernel/sched_schedstatsÚwbr)r(Ú bufferingó1ó0z(Failed to set sched_schedstats to %s: %s) rrrYrCrfr9rHrMr')r€ÚfrQs r.Úswitch_schedstatsr‡s€õ &¥g¤kÑ 2Ô 2ðàˆðQÝ Ð5¸DÈAÐ NÑ NÔ Nð /ÐRSØ �GŠG˜GÐ-�D�D¨Ñ .Ô .Ð .ð /ð /ð /ñ /ô /ð /ð /ð /ð /ð /ð /ð /øøøð /ð /ð /ð /ð /ð /øå ðQðQðQÝ� Š Ð>ÀÍÈQÉÌÑPÔPÐPÐPÐPÐPÐPÐPÐPøøøøðQøøøs:�A#¯AÁ A#ÁAÁA#ÁAÁA#Á# B!Á-)BÂB!cóJ—t¦« dd¦«duS)zG Check if end-users have access to X-Ray UI of End-User plugin Ú hideXrayAppÚ uiSettingsF)rÚ get_paramrrr0r.Úis_xray_app_availablerŒ(s#€õ ‰:Œ:× Ò   ¨|Ñ <Ô <ÀÐ EÐEr0cóê—ttt¦«5} | t¦«n##t t f$rYddd¦«dSwxYw ddd¦«n #1swxYwYdS)z Check if User Agent is listeningNFT)rr r Úconnectr"ÚConnectionErrorr9)Úss r.Úis_xray_user_agent_activer‘/sÕ€å •�Ñ %Ô %ð¨ð Ø �IŠI•oÑ &Ô &Ð &Ð &øÝ¥Ð)ð ð ð Øð ððñôðððð øøøð 'ðððñôððððððøøøððððð ˆ4s1›A(�8·A(¸AÁ A(ÁAÁA(Á(A,Á/A,cóB—tj d¦« S)z2Check if SSA is disabled by its internal flag-filez/usr/share/clos_ssa/ssa_enabled)r7r&rcrrr0r.Ú ssa_disabledr“9s€åŒw�~Š~Ð?Ñ@Ô@Ð @Ð@r0có~— t¦«tj|¦«jz dkS#t$rYdSwxYw)z.Check is file was modified during the last dayi€QF)r‘r7r5Úst_mtimer9)rÝs r.Úis_file_recently_modifiedr–>sJ€ð݉{Œ{�RœW XÑ.Ô.Ô7Ñ7¸%Ò?Ð?øÝ ððð؈uˆuðøøøs ‚+.® <»<cóp—t|¦«5t¦«}ddd¦«n #1swxYwY|Sr)rr)rrts r.Úget_user_php_versionr˜Gsu€Ý ˜Ñ Ô ð/ð/Ý,Ñ.Ô.ˆð/ð/ð/ñ/ô/ð/ð/ð/ð/ð/ð/øøøð/ð/ð/ð/à €Ms �+«/²/c#óÞK—td¦«D]¾} tj|tjtjz¦«t  d|¦«n‘#t$rf}t  dt|¦«¦«|j tj tj fvr‚tj d¦«Yd}~Œ·d}~wwxYwttd¦«d¬¦«‚ dV—tj|tj¦«t  d |¦«dS#tj|tj¦«t  d |¦«wxYw) uq Context manager for locking given file object :param fd: а file object providing a fileno() method éxzFile %s lockedzFailed to lock: %sgà?Nz%Failed to lock at all. Exiting threadrI)ÚflagzFile %s unlocked)ÚrangeÚfcntlÚflockÚLOCK_EXÚLOCK_NBrHrMr9r'ÚerrnoÚEAGAINÚEACCESr�Úsleepr#rÅÚLOCK_UN)rmÚ_attemptrQs r.Úfilelockr§PsRèè€õ˜#‘J”Jð Tð Tˆð Ý ŒK˜�EœM­E¬MÑ9Ñ :Ô :Ð :Ý �KŠKÐ(¨"Ñ -Ô -Ð -Ø ˆEøÝð ð ð Ý �KŠKÐ,­c°!©f¬fÑ 5Ô 5Ð 5àŒw�uœ|­U¬\Ð:Ð:Ð:ØÝ ŒJ�s‰OŒOˆOˆOˆOˆOˆOˆOøøøøð  øøøõ�ÐAÑBÔBÈÐSÑSÔSÐSð,Ø ˆˆˆõ Œ �B�œ Ñ&Ô&Ð&Ý� Š Ð&¨Ñ+Ô+Ð+Ð+Ð+øõ Œ �B�œ Ñ&Ô&Ð&Ý� Š Ð&¨Ñ+Ô+Ð+Ð+øøøs%•AAÁ CÁ(AC à CÃ0D0Ä0Œ>€DØ €E€E€EÝ„HˆT�N„N€N€N€Nr0ràTÚ target_uidÚ target_gidc#óêK—tj¦«}tj¦«}td¦«} tj|¦«}n#t $rd}YnwxYw|€ |€|}n|j}|€ |€|}n|j}|�tj|¦«} ||krWtj |¦«t  d|¦«|r&tj ¦«|krt|¦«‚||krqtj|¦«t  d|¦«|r@tj¦«|kr)||krtj |¦«t|¦«‚ dV—||kr/tj|¦«t  d|¦«||kr/tj |¦«t  d|¦«|�tj| ¦«dSdS#||kr/tj|¦«t  d|¦«||kr/tj |¦«t  d|¦«|�tj| ¦«wwxYw)aH Context manager to drop privileges during some operation and then restore them back. If target_uid or target_gid are given, use input values. Otherwise, stat target_uid and target_gid from given target_path. If no target_path given, use current directory. Use mask if given. :param target_uid: uid to set :param target_gid: gid to set :param target_path: directory or file to stat for privileges, default -- current directory :param mask: umask to use :param with_check: check the result of switching privileges z6Unable to execute required operation: permission issueNzDropped GID privs to %szDropped UID privs to %szRestored UID privs to %szRestored GID privs to %s)r7ÚgetuidÚgetgidrÅr5r9Úst_uidÚst_gidr´ÚsetegidrHrÚgetegidr#ÚseteuidÚgeteuid) r¶r·Ú target_pathr²Ú with_checkÚprev_uidÚprev_gidÚpermission_issue_messageÚ stat_inforµs r.Úset_privilegesrǘsˆèè€õ,Œy‰{Œ{€HÝŒy‰{Œ{€Hå Ð!YÑZÔZÐðÝ”G˜KÑ(Ô(ˆ ˆ øÝ ðððØˆ ˆ ˆ ðøøøðÐØ Ð Ø!ˆJˆJà"Ô)ˆJØÐØ Ð Ø!ˆJˆJà"Ô)ˆJà ÐÝŒx˜‰~Œ~ˆà�:ÒÐÝ Œ �:ÑÔÐÝ� Š Ð.° Ñ;Ô;Ð;Ø ð 6�"œ*™,œ,¨*Ò4Ð4åÐ4Ñ5Ô5Ð 5Ø�:ÒÐÝ Œ �:ÑÔÐÝ� Š Ð.° Ñ;Ô;Ð;Ø ð 6�"œ*™,œ,¨*Ò4Ð4ؘ:Ò%Ð%å” ˜8Ñ$Ô$Ð$åÐ4Ñ5Ô5Ð 5ð Ø ˆˆˆà �zÒ !Ð !Ý ŒJ�xÑ Ô Ð Ý �LŠLÐ3°XÑ >Ô >Ð >Ø �zÒ !Ð !Ý ŒJ�xÑ Ô Ð Ý �LŠLÐ3°XÑ >Ô >Ð >à Ð Ý ŒH�T‰NŒNˆNˆNˆNð Ð øð �zÒ !Ð !Ý ŒJ�xÑ Ô Ð Ý �LŠLÐ3°XÑ >Ô >Ð >Ø �zÒ !Ð !Ý ŒJ�xÑ Ô Ð Ý �LŠLÐ3°XÑ >Ô >Ð >à Ð Ý ŒH�T‰NŒNˆNˆNð øøøs¹AÁ AÁAÅ'G/Ç/BI2c#óK— tj|¦«tj|¦«dV—tjd¦«tjd¦«dS#tjd¦«tjd¦«wxYw)zá Dive into user context by dropping permissions to avoid most of the security issues. Does not cover cagefs case because it also requires nsenter, which is only available with execve() call in our system Nr)r7r½r¿)ÚuidÚgids r.Ú user_contextrËésnèè€ðÝ Œ �3‰ŒˆÝ Œ �3‰Œˆà ˆˆˆå Œ �1‰ Œ ˆ Ý Œ �1‰ Œ ˆ ˆ ˆ øõ Œ �1‰ Œ ˆ Ý Œ �1‰ Œ ˆ ˆ øøøs „,AÁ*Bc󇇗ˆˆfd„}|S)z: Decorator to retry method on specific exceptions c󕇗ˆˆˆfd„}|S)NcóR•—d}ttd¦«t‰¦«z¦«}|‰krq ‰|i|¤ŽS#t‰¦«$rM}|dz }t dt|¦«¦«|}t jd¦«Yd}~nd}~wwxYw|‰k°q|‚)Nrz0Request to website failed even after %s retries.rz'Retry to request website, exception: %s)r0rÅr'ÚtuplerHrIr�r¤)rgrsÚretriesÚ exceptionrQÚexceptions_to_retryrSÚ max_retriess €€€r.ruz7retry_on_exceptions..decorator..wrappersÏø€ØˆGÝ"¥1Ð%WÑ#XÔ#XÕ[^Ð_jÑ[kÔ[kÑ#kÑlÔlˆIؘKÒ'Ð'ð"ؘ4 Ð0¨Ð0Ð0Ð0øÝÐ0Ñ1Ô1ð"ð"ð"ؘq‘L�GÝ—N’NÐ#LÍcÐRSÉfÌfÑUÔUÐUØ !�IÝ”J˜q‘M”M�M�M�M�M�M�Møøøøð "øøøð˜KÒ'Ð'ðˆOs·?¿BÁABÂBrr)rSrurÒrÓs` €€r.Ú decoratorz&retry_on_exceptions..decorators.øø€ð ð ð ð ð ð ð ðˆr0rr)rÓrÒrÔs`` r.Úretry_on_exceptionsrÕüs*øø€ð ðððððð Ðr0)r&r'r(r)r*r+)r&r'r1r)r2r)r*r+r)r&r'r(r)r4r;r*r+)rSrr*r)r*r))r*r)r–r)r*r)r*r')r�ržr*r')rËr'rÌr'r*r+)r*rÔ)rÝr'r*rÞ)r*rÞr)rr'r*rÞ)r.r'r*r+)r.r'r6r7r*r7)rkr'rCr'r*r+)rHr'r*r)rUr)r*r))r.r'r*r_)r.r'r*rÞ)r.rÞr*r+)r.r'r*rs)r*rs)r€rsr*r+)rÝr'r*rs)F)rr'r¨rs)r)r²r)r*r+)NNràNT)r¶r;r·r;r²r;r*r+){Ú__doc__Ú __future__rr®r¡r�r¨rr7rùr3Úrer­r:rEr5rdr�Úxml.etree.ElementTreeÚetreeÚ ElementTreer»Úcollections.abcrÚ contextlibrÚdatetimerrÚ functoolsr r rr r r rÀÚclcommon.clpwdrÚclcommon.constrÚclcommon.cpapirrrrÚclcommon.lib.cleditionrÚclcommon.ui_configrÚclcommon.utilsrÚsentry_sdk.integrations.atexitrÚsentry_sdk.integrations.loggingrÚxrayrrÅÚ!xray.internal.clwpos_safe_importsrÚ constantsrrrr r!r"Ú exceptionsr#r$Ú getLoggerrHr9r0ÚSubprocessErrorrir/r:r-rvr‡rŽr‘r•r™rœr³r¸rÊrÏrÓrŠrÜrårçrr-Úcompiler1r5rBrGrTr^rkrprrrvr{rr‡rŒr‘r“r–r˜r§ryrNrÇrËrÕrrr0r.úrïsÔðð ðð#Ð"Ð"Ð"Ð"Ð"à € € € Ø € € € Ø € € € Ø € € € Ø€€€Ø € € € Ø€€€Ø € € € Ø € € € Ø € € € Ø € € € Ø € € € Ø € € € ØÐÐÐØ € € € Ø"Ð"Ð"Ð"Ð"Ð"Ð"Ð"Ð"Ø$Ð$Ð$Ð$Ð$Ð$Ø%Ð%Ð%Ð%Ð%Ð%Ø$Ð$Ð$Ð$Ð$Ð$Ð$Ð$ØÐÐÐÐÐØÐÐÐÐÐØ7Ð7Ð7Ð7Ð7Ð7Ð7Ð7Ð7Ð7Ð7Ð7àÐÐÐØ*Ð*Ð*Ð*Ð*Ð*Ø"Ð"Ð"Ð"Ð"Ð"ØhÐhÐhÐhÐhÐhÐhÐhÐhÐhÐhÐhØ:Ð:Ð:Ð:Ð:Ð:Ø'Ð'Ð'Ð'Ð'Ð'Ø1Ð1Ð1Ð1Ð1Ð1Ø<Ð<Ð<Ð<Ð<Ð<Ø>Ð>Ð>Ð>Ð>Ð>àÐÐÐÐÐØIÐIÐIÐIÐIÐIàvÐvÐvÐvÐvÐvÐvÐvÐvÐvÐvÐvÐvÐvÐvÐvØ2Ð2Ð2Ð2Ð2Ð2Ð2Ð2à ˆÔ ˜7Ñ #Ô #€Ø˜j¨*Ô*DÐEÐð"ð"ð"ð"ð>DðDðDðDð> ð ð ð ð ðLSðSðSðSðl7ð7ð7ð7ðtðððð4ðððð,ð,ð,ð,ð"ð"ð"ð"ð,ð,ð,ð,ððððð4ðððð Bð Bð Bð Bð ;Eðððððð ð ð ð ððððð& ð Oð Oð Oñ „ð Oð7ð7ð7ð7ð:ð:ð:ð:ð OBðOBðOBðOBðd+8ð"ð"ð"ð"ð"ðJ$˜œÐ$IÑJÔJÐð Pð Pð Pð Pð [ð [ð [ð [ð _ð _ð _ð _ððððð0 ð ð ð ð(FðFðFðFð(AðAðAðAð&?ð?ð?ð?ð?ð* Cð Cð Cð Cð "ð "ð "ð "ð-ð-ð-ð-ð Qð Qð Qð Qð FðFðFðFðððððAðAðAðAð ðððððððð,ð,ð,ñ„ð,ð:ð1ð1ð1ð1ñ„ð1ð>ððððñ„ððà!Ø!ØØØð MðMðMðMñ„ðMð`ððñ„ðð$ððððr0