3 R„×i%ã@snddlZddlZddlZddlZddlZddlZddlTddlmZdZdZ dZ dZ dZ dZ ejeZde_d e_de_d e_d d „Zd d„Zdd„Zdd„Zdd„Zdd„Zdd„ZdDdd„ZdEdd„Zdd„Zdd „Zd!d"„Z d#d$„Z!d%d&„Z"d'd(„Z#d)d*„Z$d+d,„Z%d-d,„Z%d.d/„Z&d0d1„Z'd2d3„Z(d4d5„Z)d6d7„Z*d8d9„Z+d:d;„Z,dd?„Z.d@dA„Z/dBdC„Z0dS)FéN)Ú*)ÚPIPEz0.0.5ééééz/usr/local/lswsFcCstjddd�dS)Nz%(asctime)s.%(msecs)03dz [%(levelname)s] %(message)sz%Y-%m-%d %H:%M:%S)ÚformatZdatefmtz3%(asctime)s.%(msecs)03d [%(levelname)s] %(message)s)ÚloggingZ basicConfig©r r ú"/usr/local/lsws/lsns/bin/common.pyÚ init_loggingsr cCstjS)N)ÚthisÚ serverRootr r r r Ú server_rootsrcCs |t_dS)N)r r)Úrootr r r Úset_server_rootsrcCstƒd|S)Nz /lsns/conf/)r)Úfileonlyr r r Ú get_conf_file!srcCstƒd|S)Nz /lsns/bin/)r)rr r r Ú get_bin_file$srcCstj|ƒtjdƒdS)Nr)r ÚerrorÚsysÚexit)Úmsgr r r Ú fatal_error's rcCsdddddgS)NÚcpuÚioÚiopsÚmemÚtasksr r r r r Ú get_options+srcCs|jƒrdytjt|ƒƒ}Wqºtk r`}z*|s@td||fƒtjd||fƒdSd}~XqºXnVytj|ƒ}WnFtk r¸}z*|s˜td||fƒtjd||fƒdSd}~XnX|j t ƒk�rú|sàtd|j t ƒfƒtjd|j t ƒfƒdS|dfS) NzError getting UID for %s: %sFzError getting name for %s: %sz#Specified uid: %d < minimum uid: %dT)NF)NF)NF) ÚisdigitÚpwdÚgetpwuidÚintÚ Exceptionrr ÚdebugÚgetpwnamÚpw_uidÚ get_min_uid)ZparamÚno_fatalÚ user_infoÚerrr r r Úget_user.s*r,cCs2g}x(|D] }t||ƒ\}}|r |j|ƒq W|S)N)r,Úappend)Úuidsr)ÚusersZuidr*Zgotr r r Ú get_usersFs  r0cCstjjdƒrdSdS)Nz/etc/plesk-releaseTF)ÚosÚpathÚexistsr r r r Ú get_pleskNs r4cCstƒr dSdS)Ni'iè)r4r r r r Úget_def_min_uidSsr5cCstjdkrtjStdƒ}yt|dƒ}WnPtk rv}z4tjdkr^tjd||tƒfƒdt_tƒt_tjSd}~XnXy |j ƒ}WnRtk rÖ}z6tjdkr¼tjd||tƒfƒdt_t tƒƒ}WYdd}~XnX|j ƒt |ƒt_tj dtjƒtjS)Nrz lsns.confÚrz8Error opening %s: %s, continuing with default min uid %dTz8Error reading %s: %s, continuing with default min uid %dzUsing min uid: %d)r Úmin_uidrÚopenr$Úloggedr Úinfor5ÚreadlineÚstrÚcloser#r%)ZfullfileÚfr+Zuidstrr r r r(Xs,     r(cCs\i}g}tjƒ}xF|D]>}|jtƒkr(q|j|kr4q|jdkr@q|||j<|j|ƒqW|S)NZnobody)r!Úgetpwallr'r(Úpw_namer-)Zuid_dictZ final_usersr/Úuserr r r r?ps     r?cCs tƒdS)Nz/lsns/conf/lscntr.txt)rr r r r Úcontainer_filesrBcCs tƒdS)Nz/conf/httpd_config.conf)rr r r r Ú ols_conf_file‚srCcCs tƒdS)Nz/conf/httpd_config.xml)rr r r r Úlsws_conf_file…srDcCs tƒdS)Nz /lsns/conf/ns_disabled_uids.conf)rr r r r Úget_disabled_uid_fileˆsrEcCs tƒdS)Nz /lsns/conf/ns_disabled_uids.conf)rr r r r rE‹scCs tƒdS)Nz/lsns/conf/packages)rr r r r Ú get_pkg_dirŽsrFcCsBtjjtƒƒs4tjjtƒƒs$tdƒtjtƒdd�tƒd|S)Nz3Missing LiteSpeed high level installation directoryiÀ)Úmodez/%s.conf)r1r2ÚisdirrFrrÚmkdir)Úpkgr r r Úpkg_to_filename‘s rKcCs tƒdS)Nz"/lsns/conf/redis_package_size.conf)rr r r r Úget_package_size_file˜srLcCstjtƒtjƒstdƒdS)Nz5You must configure LiteSpeed for LiteSpeed Containers)r1ÚaccessrBÚF_OKrr r r r Úls_ok›srOcCs"tjdtjƒrdt_dStƒdS)Nz/etc/cagefs/cagefs.mpT)r1rMrNr ÚclrOr r r r Úls_cl_okŸsrQcCstjS)N)r rPr r r r Úis_cl¥srRcCsXtjd||fƒtjd|gttd�}|jdkrTtd|jjdƒd|j jdƒƒdS)Nz restart_external %s by touch: %sZtouch)ÚstdoutÚstderrrz!Error in running: touch, errors: zutf-8ú ) r r%Ú subprocessÚrunrÚ returncoderrSÚdecoderT)ÚfileZdescÚresultr r r Útouch_restart_external¨s r\c Cs i}yÐtjjtƒƒdkr˜ttƒdƒ}tj|ƒ}|jƒx`|dD]T}tjj|ƒ}x"|D]}|j |krV|||j <PqVWtjj |ƒsŠtj |ƒt |dƒq@W|r¨t ddƒn*x(|D] }|j |kr¾q®t |j ddƒq®WWn0tk �r}ztd |ƒWYdd}~XnXdS) Nrr6Z reset_listz in lscntr.txtz,/usr/local/lsws/admin/tmp/.lsphp_restart.txtzfor allz/.lsphp_restart.txtzfor homezError managing restart: %s)r1r2ÚgetsizerBr8ÚjsonÚloadr=ÚdirnameÚpw_dirr@r3rIr\r$r) r/ÚallZ users_usedr>ÚdatarZZdironlyrAr+r r r Úrestart_external®s.           rdc Csºi}i}tjdƒ}g}x¾|D]¶}t|ƒdkr<|dd…dkst|ƒdkrX|dd…dkst|ƒdkr†|dd…dks|dd…dkr†qd |}tj|ƒ}t|jƒd krtjd |d t|ƒƒ|j |ƒ|||<qWxn|D]f}d }x\|�r@d}xL|D]D} || k�rqöt|ƒt| ƒkrö|| dt|ƒ…krö|j | ƒd }PqöWqæWqÜWxL|D]D}tj ||j ƒ} tj ||j ƒ} | |k�r‚i|| <||| | <�qLWtjdt|ƒdt|ƒƒ||fS)Nz/devrZloopéZcdromrZdmÚsrz/dev/rz filename: z statinfo: TFzFinal devices: z Block Devices: )r1ÚlistdirÚlenÚstatÚS_ISBLKÚst_moder r%r<r-ÚremoveÚmajorÚst_rdevÚminor) Z block_devicesZ statinfo_devÚfilesZdevicesrZÚfilenameZstatinfoZdeviceZretryZinnerrmror r r Ú get_devicesÈs@  d      $   rrcCsÜ|dkr dSt|ƒ}|dkr&d}d}n:|dkr8d}d}n(|dkrJd}d}n|dkr\d}d }n|St||ƒd kr˜d ||tt||d d ƒƒ|f}nd |||f}tt|ƒƒ|kr¼|Stjd tt|ƒƒ||fƒ|S)NÚlÚTi@ÚGiÚMiÚKé z%d.%d%sz%d%sz%s != %s use %s)ÚfloatÚroundr#r<Úint_num_valuesr r%)ÚvalstrÚvalZdivisorZ qualifierZstr_numr r r Ústr_num_valuesês.(r~cCs$|dks|dkrdS|jƒr$t|ƒSt|ƒdkrsT0    "