9VjddlZddlZddlZddlZddlmZddlmZddlZddl m Z dZ dZ de dedzfd Zd ed eeddfd ZdS) N)Path)drop_privileges) jail_utilsc tj||n;#t$r.}tjd|t |Yd}~dSd}~wwxYwdS)Nz&Failed to terminate process PID %s: %sFT)oskillOSErrorloggingerrorstr)pidsiges Popt/cloudlinux/venv/lib/python3.11/site-packages/clcagefslib/webisolation/php.py _term_processrsj S  >SVVLLLuuuuu 4s A#A  Acdtjdz}tj|krV|rTt|D]+}tj|s||,tj|kr|Tt|D]}t |t jdS)Ng@)timelistpsutil pid_existsremoversignalSIGKILL)pidstimeoutr s rforce_process_killrsikkCG )++  D :: ! !C$S)) ! C    )++  D  Dzz++c6>****++r returnctd|d} |S#ttt f$rYdSwxYw)zq Checks if the process is in the isolated environment. Returns path to process document root or None z/proc/z!/root/var/.cagefs/.cagefs.websiteN)r read_textstripPermissionErrorr FileNotFoundError)r website_isolation_markers r_get_website_isolation_docrootr%)sk $$SS$S$S$STT'113399;;; W&7 8tts%;AAusernamefilter_by_docrootsc&td|D}t}tjd|d||D]}tj||t jgdD]e}|}|jd|kr$ | }nB#t j $r0tj d|jdYxwxYwt|j p|d }|r|d n|}|r||vr|jd} | | |vrt|5tjd | d |t!| t"js d d d 8 d d d n #1swxYwY|| gt|5t)|d d d d S#1swxYwYd S)aS If filter_by_docroots is not empty - reload only processes with DOCUMENT_ROOT environment variable matching one of the given docroots. Sends SIGTERM/SIGKILL to all matching processes owned by the given username. If filter_by_docroots is empty - reload all processes owned by the given username with DOCUMENT_ROOT set. c3DK|]}||dVdS)/N)rstrip).0drs r z1reload_processes_with_docroots..@s1EEb"E299S>>EEEEEErz(Requested to reload processes for user 'z' and docroots: )r namer&)attrsr&z)Access denied to process PID %s; skippingr DOCUMENT_ROOTr*NzTerminating process PID z with DOCUMENT_ROOT=)setr debugrinvalidate_ns_cacher process_iterinfogetenviron AccessDeniedwarningr%r r+rrrSIGTERMaddr) r&r'docroots signaled_pids document_rootproccurrent_processenvnormalized_docrootr s rreload_processes_with_docrootsrD6sEE,>EEEEEHEEM MaXaaW_aabbb"@@ &x????#*E*E*EFFF   # #J / /8 ; ;  !))++CC"    O;_=Q=U=UV[=\=\    H  7tx@@\CGGOD\D\ :GZ]11#666]  *(:: "&&u-- ;#..  X & &   L\C\\]\\ ] ] ] fn55                         #  " "**=)))******************s6B--rJs  ****** //////+++  d    2*S2*d3i2*TX2*2*2*2*2*2*r