a .gS"@sPddlZddlZddlZddlZddlZddlZddlTddlmZdZdZ dZ dZ dZ dZ ejeZde_d e_de_d d Zd d ZddZddZddZddZddZd>ddZd?ddZddZdd Zd!d"Zd#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+dtd||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_usersAs  r4cCstjdrdSdS)Nz/etc/plesk-releaseTF)ospathexistsr r r r get_pleskIs r8cCstr dSdS)Ni'i)r8r r r r get_def_min_uidNsr9c Cs tjdkrtjStd}zt|d}WnXty~}z@tjdur\td||tfdt_tt_tjWYd}~Sd}~00z | }WnTty}z|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)r5r6getsizerCr<jsonloadrAdirnamepw_dirpw_namer7rKrZr(r) r3allZ users_usedrBdatarXZdironlyuserr/r r r restart_externals.           rdc 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_devfilesZdevicesrXfilenameZstatinfoZdeviceZretryZinnerrmror r r get_devicess@ d   $   rrcCs|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|dkrsL0    "