+#s!NddlZddlZddlZddlZddlmZddlmZddlZddl 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_docrootsctd|D}t}tjd|d||D]}tj||t jgdD]L}|}|jd|kr$ | }nB#t j $r0tj d|jdYxwxYwt|j p|d }|r||vr|jd}|||vrt|5tjd |d |t|t js d d d  d d d n #1swxYwY||Nt|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. cg|]}||Sr*).0drs r z2reload_processes_with_docroots..=s:::2r:B:::rz(Requested to reload processes for user 'z' and docroots: )r namer&)attrsr&z)Access denied to process PID %s; skippingr DOCUMENT_ROOTNzTerminating process PID z with DOCUMENT_ROOT=)setr debugrinvalidate_ns_cacher process_iterinfogetenviron AccessDeniedwarningr%r rrrSIGTERMaddr) r&r'docroots signaled_pids document_rootproccurrent_processenvr s rreload_processes_with_docrootsrB6s::!3:::;;HEEM MaXaaW_aabbb"@@ &x????#*E*E*EFFF   # #J / /8 ; ;  !))++CC"    O;_=Q=U=UV[=\=\    H  7tx@@\CGGOD\D\   X55 "&&u-- ;#..  X & &   L\C\\]\\ ] ] ] fn55                         #  " "**=)))******************s6B--rGs  ****** //////+++  d    .*S.*d3i.*TX.*.*.*.*.*.*r