a ~i$@snddlZddlZddlZddlZddlZddlZddlTddlmZdZdZ dZ dZ dZ dZ ejeZde_d e_de_d e_d d Zd dZddZddZddZddZddZdDddZdEddZddZdd Zd!d"Z d#d$Z!d%d&Z"d'd(Z#d)d*Z$d+d,Z%d-d,Z%d.d/Z&d0d1Z'd2d3Z(d4d5Z)d6d7Z*d8d9Z+d:d;Z,dd?Z.d@dAZ/dBdCZ0dS)FN)*)PIPEz0.0.3z/usr/local/lswsFcCstjddddS)Nz3%(asctime)s.%(msecs)03d [%(levelname)s] %(message)sz%Y-%m-%d %H:%M:%S)formatZdatefmt)loggingZ basicConfigr r "/usr/local/lsws/lsns/bin/common.py init_loggingsr cCstjSNthis serverRootr r r r server_rootsrcCs |t_dSr r)rootr r r set_server_rootsrcCstd|S)Nz /lsns/conf/rfileonlyr r r get_conf_filesrcCstd|S)Nz /lsns/bin/rrr r r get_bin_file"srcCst|tddS)Nr)r errorsysexit)msgr r r fatal_error%s rcCsgdS)N)cpuioiopsmemtasksr r r r r get_options)sr#c Cs|rjztt|}Wqtyf}z4|s>td||ftd||fWYd}~dSd}~00n\zt|}WnLty}z4|std||ftd||fWYd}~dSd}~00|j t kr|std|j t ftd|j t fdS|dfS)NzError getting UID for %s: %s)NFzError getting name for %s: %sz#Specified uid: %d < minimum uid: %dT) isdigitpwdgetpwuidint Exceptionrr debuggetpwnampw_uid get_min_uid)Zparamno_fatal user_infoerrr r r get_user,s*r0cCs.g}|D] }t||\}}|r||q|Sr )r0append)uidsr-usersZuidr.Zgotr r r get_usersDs  r4cCstjdrdSdS)Nz/etc/plesk-releaseTF)ospathexistsr r r r get_pleskLs r8cCstr dSdS)Ni'i)r8r r r r get_def_min_uidQsr9c Cs tjdkrtjStd}zt|d}WnXty~}z@tjdur\td||tfdt_tt_tjWYd}~Sd}~00z | }WnTty}z}|jtkr&q|j|vr2q|jdkr>q|||j<||q|S)NZnobody)r%getpwallr+r,pw_namer1)Zuid_dictZ final_usersr3userr r r rCns     rCcCs tdS)Nz/lsns/conf/lscntr.txtrr r r r container_file}srFcCs tdS)Nz/conf/httpd_config.confrr r r r ols_conf_filesrGcCs tdS)Nz/conf/httpd_config.xmlrr r r r lsws_conf_filesrHcCs tdSNz /lsns/conf/ns_disabled_uids.confrr r r r get_disabled_uid_filesrJcCs tdSrIrr r r r rJscCs tdS)Nz/lsns/conf/packagesrr r r r get_pkg_dirsrKcCsBtjts4tjts$tdtjtddtd|S)Nz3Missing LiteSpeed high level installation directoryi)modez/%s.conf)r5r6isdirrKrrmkdir)pkgr r r pkg_to_filenames rPcCs tdS)Nz"/lsns/conf/redis_package_size.confrr r r r get_package_size_filesrQcCstttjstddS)Nz5You must configure LiteSpeed for LiteSpeed Containers)r5accessrFF_OKrr r r r ls_oksrTcCs"tdtjrdt_dStdS)Nz/etc/cloudlinux-releaseT)r5rRrSrclrTr r r r ls_cl_oksrVcCstjSr )rrUr r r r is_clsrWcCsXtd||ftjd|gttd}|jdkrTtd|jdd|j ddS)Nz restart_external %s by touch: %sZtouch)stdoutstderrrz!Error in running: touch, errors: zutf-8 ) r r) subprocessrunr returncoderrXdecoderY)fileZdescresultr r r touch_restart_externals rac Csi}ztjtdkrttd}t|}||dD]R}tj|}|D]}|j |krR|||j <qpqRtj |st |t |dq>|rt ddn&|D] }|j |vrqt |j ddqWn0ty}ztd |WYd}~n d}~00dS) Nrr:Z reset_listz in lscntr.txtz,/usr/local/lsws/admin/tmp/.lsphp_restart.txtzfor allz/.lsphp_restart.txtzfor homezError managing restart: %s)r5r6getsizerFr<jsonloadrAdirnamepw_dirrDr7rNrar(r) r3allZ users_usedrBdatar_ZdironlyrEr/r r r restart_externals.           ric Csi}i}td}g}|D]}t|dkr:|dddkst|dkrV|dddkst|dkr|dddks|dddkrqd |}t|}t|jd krtd |d t|| ||||<q|D]\}d }|rd}|D]D} || krqt|t| kr|| dt|kr| | d }qqqq|D]D}t ||j } t ||j } | |vrni|| <||| | <q8tdt|dt|||fS)Nz/devrZloopZcdromrZdmsrz/dev/rz filename: z statinfo: TFzFinal devices: z Block Devices: )r5listdirlenstatS_ISBLKst_moder r)r@r1removemajorst_rdevminor) Z block_devicesZ statinfo_devfilesZdevicesr_filenameZstatinfoZdeviceZretryZinnerrrrtr r r get_devicess@ d   $   rwcCs|dkr dSt|}|dkr&d}d}n:|dkr8d}d}n(|dkrJd}d}n|dkr\d}d }n|St||d krd ||tt||d d |f}nd |||f}tt||kr|Std tt|||f|S)NT@GMK z%d.%d%sz%d%sz%s != %s use %s)floatroundr'r@int_num_valuesr r))valstrvalZdivisorZ qualifierZstr_numr r r str_num_valuess.(rc Cs"|dks|dkrdS|r$t|St|dkrsT0    "