B
    u&ù`†%  ã               @   sÊ   d dl mZ d dl mZ d dl mZ d dl mZ d dlmZ e ¡  d dlT d dl	Z	d dl
Z
d dlZd dlZd dlZd dlZd dlZd dlmZ d dlZd	Zd
d„ Zdd„ Zdd„ Zdd„ Zddd„ZdS )é    )Úabsolute_import)Údivision)Úprint_function)Úunicode_literals)Ústandard_library)Ú*N)ÚClPwdz/var/cagefs/c             C   sV   t j |¡}|d | k}d|  g}x.|D ]&}|r@|r(||d kr(| d| ¡ q(W |S )Nr   ú>é   ú@)ÚosÚpathÚsplitÚappend)Úplesk_main_dirÚdomain_namesÚuser_home_dirZhome_dir_partsZis_home_dir_pleskÚ	ret_namesÚdomain_name© r   ú!/usr/share/cagefs/virtmp_mount.pyÚget_data_listD   s    

r   c             C   sP   |dks|dkr |dkr t j}ntj t jd¡}t|| |ƒ}t|ƒdkrLd S |S )Né
   é   r   Úsystemr
   )Ú	cagefslibZPLESK_VHOSTS_Dr   r   Újoinr   Úlen)r   Úplesk_ver_majorÚplesk_ver_minorr   r   r   r   r   r   Úget_plesk_user_mountsQ   s    
r    c          	   C   sz  ydd l }W n    t d¡ t d¡ Y nX t|  ¡ ƒ}tddƒ}| ¡  	¡ }| 
¡  |jdd|dd	}| ¡ }t|ƒdkrš| d
|d  ¡ | ¡ }	n| d¡ | ¡ }	| 
¡  | 
¡  i }
tƒ }xx|	D ]p}|d }|d }y| |¡}W n tjk
r   wÌY nX ||
kr2||
| kr<|
|  |¡ qÌ|g|
|< qÌW x2|D ](}| | d }| | d }| |¡}||
krDt| d | }tj |¡s¦tj |¡rÂt d| d ¡ t d¡ tj |¡sÚt |¡ |d }t|
| |||ƒ}|d krtj |¡rBt |¡ n*tj|d\}}t  ||d¡ t !||¡ n,t| d | d }tj |¡rHt |¡ qHW d S )Nr   zEMySQL not supported. Please run 'yum install alt-python37-MySQL-meta'r
   z/etc/psa/.psa.shadowÚrZ	localhostZadminZpsa)ZhostÚuserZpasswdÚdbzÖSELECT sys_users.login, domains.name FROM sys_users, hosting, domains WHERE domains.id = hosting.dom_id AND (hosting.sys_user_id = sys_users.id OR hosting.sys_user_id = sys_users.mapped_to) AND sys_users.login='%s'z½SELECT sys_users.login, domains.name FROM sys_users, hosting, domains WHERE domains.id = hosting.dom_id AND (hosting.sys_user_id = sys_users.id OR hosting.sys_user_id = sys_users.mapped_to)ú/zFile 'z
' existingz/virt.mp)ÚdirT)"ÚMySQLdbÚsecureioÚprint_errorÚsysÚexitÚlistÚkeysÚopenÚreadlineÚstripÚcloseZconnectÚcursorr   ZexecuteZfetchallr   Úget_uidÚNoSuchUserExceptionr   ÚPATH_TO_USER_FILESr   r   ÚislinkÚisfileÚisdirÚmakedirsr    ÚremoveÚtempfileZmkstempr   Z
write_fileÚrename)Úsystem_users_datar   r   r&   Zuser_name_listÚfZpasswordr#   r1   ÚdataZdomains_by_uidÚclpwd_instanceZdomÚ	user_namer   ÚuidÚprefixr   Zuser_file_dirZuser_file_nameZuser_mpÚ_Ztemp_file_namer   r   r   Úscan_plesk_user_domainsk   sl    










rD   c       
      C   sp  t  ¡  t j d¡}t|ƒdkr:t|d ƒ}t|d ƒ}ntj d¡ d S |dk rbtj d¡ d S t	ƒ }i }| d k	r
y| 
| ¡}| |¡}W n2 t	jk
rÀ   t d|  d	 ¡ t d¡ Y nX xœ|D ]<}|j}	|	 d
¡rè|	d d… }	t|jƒdd … |	g||j< qÈW nV| ¡ }xL| ¡ D ]@}|j}	|	 d
¡r>|	d d… }	t|jƒdd … |	g||j< qW t|||ƒ d S )NÚ.é   r   r
   zH
WARNING: Unexpected Plesk version. Skipping generation of virtmp files
r   zW
WARNING: Plesk below 10 version is not supported. Skipping generation of virtmp files
zuser 'z' not foundr$   éÿÿÿÿéþÿÿÿ)ÚcldetectlibZgetCPZ
CP_VERSIONr   r   Úintr)   ÚstderrÚwriter   r2   Zget_pw_by_uidr3   r'   r(   r*   Úpw_dirÚendswithÚstrZpw_uidZpw_nameZget_user_dictÚvaluesrD   )
r@   Z	ver_partsr   r   r?   r<   rA   Z
users_dataZ	user_datar   r   r   r   Úgenerate_plesk_virtmpÅ   s>    



""rQ   c             C   s    t  ¡ sd S t ¡  t| ƒ d S )N)rI   Zis_pleskÚcagefsreconfigureZcreate_plesk_base_home_dirsrQ   )r@   r   r   r   Úcreate_virtmpò   s    rS   )N)Z
__future__r   r   r   r   Zfuturer   Zinstall_aliasesÚbuiltinsr   r)   r:   Z	cagefsctlr   rI   rR   Zclcommonr   r'   r4   r   r    rD   rQ   rS   r   r   r   r   Ú<module>-   s*   Z-