HEX
Server: LiteSpeed
System: Linux php-prod-1.spaceapp.ru 5.15.0-157-generic #167-Ubuntu SMP Wed Sep 17 21:35:53 UTC 2025 x86_64
User: xnsbb3110 (1041)
PHP: 8.1.33
Disabled: NONE
Upload Files
File: //usr/local/CyberCP/plogical/__pycache__/virtualHostUtilities.cpython-310.pyc
o

��h�g�@spddlZddlZddlZddlZddlZej�d�ej�dd�ddl	m
Z
e��ddlZddl
mZddl
mZddlmZddlZddlZdd	lmZdd
l
mZddlmZddlmZdd
lmZddlmZddl m!Z!ddl"m#Z#ddl$m%Z%zddl&m'Z'm(Z(m)Z)ddl*m+Z+ddl,m-Z-ddl.m/Z/WnYGdd�d�Z0dd�Z1e2dkr�e1�dSdS)�N�/usr/local/CyberCP�DJANGO_SETTINGS_MODULEzCyberCP.settings)�randint)�installUtilities��sslUtilities)�Process)�
mailUtilities)�CyberCPLogFileWriter)�DNS)�vhost)�
ACLManager)�ProcessUtilities)�ApacheController)�ApacheVhost)�
PHPManager)�Websites�ChildDomains�aliasDomains)�
Administrator)�Package)�
CLPackagesc@speZdZdZdZdZdZdZdZdZ	e
dd	��Ze
d
d��Ze
	d?dd��Z
e
dd��Ze
dd��Ze
dd��Ze
dd��Ze
dd��Ze
dd��Ze
dd��Ze
d@dd ��Ze
d!d"��Ze
dAd#d$��Ze
d%d&��Ze
d'd(��Ze
d)d*��Ze
d+d,��Ze
	dBd-d.��Ze
d@d/d0��Ze
d1d2��Ze
d3d4��Ze
d5d6��Z e
d7d8��Z!e
d9d:��Z"e
d;d<��Z#e
dCd=d>��Z$d
S)D�virtualHostUtilities���z/usr/local/lswsrz&/usr/local/lsws/conf/dvhost_redis.confz/usr/local/lsws/confc%Cs
ddl}ddl}tj�|d�tjjdd�}t|d�r|j	s/d}tj�||�tj�
|�dSz|�|j�}Wni}Yz|d}Wnd}Y|rNnt
j�d	�rUnd
}t|�tj�||�tj�
|�dSzt��}	Wn(ty�}
zdt|
��d�}tj�||�tj�
|�WYd}
~
dSd}
~
wwzt��}Wn(ty�}
zd
t|
��d�}tj�||�tj�
|�WYd}
~
dSd}
~
ww|r�||g}n0zt�|�}Wn(ty�}
zdt|
��d�}tj�||�tj�
|�WYd}
~
dSd}
~
wwt�d�t
j�tj��r/td|	�d|�dt|����tj�
d|	�d|�dt|��d|���d|	}
||	k�r||v�rt
j�|
��rd}t|�tj�||�tj�
|�zTt|
d��}|j�|jj|� ��}Wd�n	1�stwY|�!��"�}d}|D]&}|ddk�r�|d�#d�}n|ddk�r�|dk�r�|d�#d�}�q�Wn%t$t%|jj&f�y�}
zd}tj�
dt|
����WYd}
~
nd}
~
wwd}zt'jj|d�}|j(}|j}|j)}Wn$zt*jj|d�}d|�d�}|j)}Wn
|j	}d|�d�}YY|dk�r�d}tj�||�tj�
|�t+�,|||�zTt|
d��}|j�|jj|� ��}Wd�n	1�sBwY|�!��"�}d}|D]&}|ddk�rc|d�#d�}n|ddk�rv|dk�rv|d�#d�}�qQWn%t$t%|jj&f�y�}
zd}tj�
d t|
����WYd}
~
nd}
~
ww|dk�r�d!}tj�||�tj�
|�||d<d|d"<||d#<|�-|�|_|�.�dSn)d$}t|�||d<d|d"<||d#<|�-|�|_|�.�tj�||�tj�
|�d%}t�/|d&d'�tj�|d(�dSz
t*jj|d�}W�nwz
t'jj|d�}W�nhi}|}||d)<|j	|d*<d+|d,<d-|d.<d/|d0<d|d1<d|d2<d|d3<d|d4<d|d5<|j0}dd6l1m2}|�}|�3|j4|�}|�|j5�}tj�
d7|�|�d8�}|�s�t|d9��} | �6d:�Wd�YYdS1�s�wYYYdSd;}!d<}"t��}#t��|#|!k�rcz�t
j�|��s�t�|"�W�q�t|d��}|� �}$Wd�n	1�s�wYt
j�tj��r�tj�
d=|$�|$�7d>�d?k�r�Wn�|$�7d@�d?k�rt|d9��} | �6dA|$�Wd�n	1�swYWYYdSt|d9��
} | �6dB�Wd�n	1�s0wYWnt�yT}
ztj�
dCt|
����WYd}
~
nd}
~
wwt�|"�t��|#|!k�s�t|d9��} | �6dD|!�Wd�YYdS1�s~wYYYdSYYt
j�tj��r�tj�
dE|	�d|�dt|��d|���||v�r�dF}t|�tj�||�tj�
|�||d<d|d"<||d#<|�-|�|_|�.�dSzt*jj|d�}d|d}Wnzt'jj|d�}|j}Wn
d|d}YYd|}
t+�8||d�zTt|
d��}|j�|jj|� ��}Wd�n	1�s(wY|�!��"�}d}|D]&}|ddk�rI|d�#d�}n|ddk�r\|dk�r\|d�#d�}�q7Wn%t$t%|jj&f�y�}
zd}tj�
dGt|
����WYd}
~
nd}
~
ww|dk�r�dH}tj�||�tj�
|�||d<d|d"<||d#<|�-|�|_|�.�dStj�|dI�t+�9||�zTt|
d��}|j�|jj|� ��}Wd�n	1�s�wY|�!��"�}d}|D]&}|ddk�r�|d�#d�}n|ddk�r|dk�r|d�#d�}�q�Wn%t$t%|jj&f�y7}
zd}tj�
dJt|
����WYd}
~
nd}
~
ww|dk�rddK}tj�||�tj�
|�||d<d|d"<||d#<|�-|�|_|�.�dS||d<d|d"<||d#<|�-|�|_|�.�d%}t�/|d&d'�tj�|d(�dS)LNrzSetting up hostname,10r)�pk�emailzJAdministrator email is not configured. Please set admin email first. [404]�hostname��/home/cyberpanel/postfixz7This server does not come with postfix installed. [404]z"Failed to fetch postfix hostname: � [404]zFailed to fetch server IP: z&Failed to perform reverse DNS lookup: rzPostfix Hostname: z. Server IP z. rDNS: z
, rDNS check z&/etc/letsencrypt/live/%s/fullchain.pemz�Hostname is already set, the same hostname is also used with mail service and rDNS. Let see if valid SSL also exists for this hostname..,10�r�Denial�O�utf-8sCNzSSL certificate check error: ��domain�/home/�/public_htmlz�It seems that the hostname used with mail service and rDNS does not have a valid SSL certificate, CyberPanel will try to issue valid SSL and restart related services,20zSSL re-check error: z�Hostname SSL was already issued, and same hostname was used in mail server SSL, rDNS was also configured but we found invalid SSL. However, we tried to issue SSL and it failed. [404]�
onboarding�
skipRDNSCheckz�It looks like your current hostname is already the mail server hostname and rDNS is also set and there is a valid SSL, nothing needed to do.zdpostmap -F hash:/etc/postfix/vmail_ssl.map && systemctl restart postfix && systemctl restart dovecot�rootTzCompleted. [200]�
domainName�
adminEmailzPHP 8.0�phpSelection�admin�websiteOwner�Default�package�ssl�	dkimCheck�openBasedir�
mailDomain�
apacheBackend)�WebsiteManagerzCreating website result....%s�tempStatusPath�wz6Failed to get status path from website creation. [404]�xrz%Info web creating lastline ....... %sz[200]���z[404]z*Failed to Create Website: error: %s. [404]zCreating Website....,20zError reading status file: z2Website creation timed out after %d seconds. [404]zSecond if: Postfix Hostname: zQDomain that you have provided is not configured as rDNS for your server IP. [404]zHostname SSL check error: z�Failed to issue Hostname SSL, either its DNS record is not propagated or the domain is behind Cloudflare. If DNS is already propagated you might have reached Lets Encrypt limit, please wait before trying again.. [404]zHostname SSL issued,50zMail server SSL check error: zrFailed to issue Mail server SSL, either its DNS record is not propagated or the domain is behind Cloudflare. [404]):�json�OpenSSL�loggingr
�statusWriterr�objects�get�hasattrr�writeToFile�loads�config�os�path�exists�printr	�FetchPostfixHostname�	Exception�strr
�fetchIP�reverse_dns_lookup�time�sleepr�	debugPath�open�crypto�load_certificate�FILETYPE_PEM�read�
get_issuer�get_components�decode�FileNotFoundError�
IndexError�Errorr�masterr.rr�issueSSL�dumps�save�executionerr�websiteFunctions.websiter9�submitWebsiteCreation�id�content�write�find�issueSSLForHostName�issueSSLForMailServer)%�Domainr:r+r>r?r0�messagerG�CurrentHostName�PostFixHostname�e�serverIP�rDNS�filePath�f�x509�issuer_components�SSLProvider�	componentr.�child�websiterI�command�
DataToPass�currentTemp�UserIDr9�ab�
coreResult�coreResult1�returnTempPath�
statusFile�timeout�
poll_interval�
start_time�lastLine�r��3/usr/local/CyberCP/plogical/virtualHostUtilities.py�OnBoardingHostName:sf����
��
("��"��

�
��"��
�


��

��
��"��
�
�����

���"��
��"��
z'virtualHostUtilities.OnBoardingHostNamecCs�|r�tj�|d�d|}d||f}t�||d|ddd|jddttdd	���
}|ddkr7t�	||j
|�d
}tj�
|�r�t|d���}|�d|�d
krgd||||||f}	t|d�}
|
�|	�|
��d}t�|�d}t|d���}
|
�d�d
kr�t|d�}
|
�d�|
��d}z	t|d���}Wnd}Y|�d|�d
kr�d|�d|�d|�d�|||f}t|d�}
|
�|�|
��d}t�|�d}t�|�d
}tj�
|��rnt|d���}|�d|�d
k�rd|||f}	t|d�}
|
�|	�|
��d}t�|�d}t|d���}
|
�d�d
k�r)t|d�}
|
�d�|
��d}z	t|d���}Wnd}Y|�d|�d
k�r^|�d|�d|�d�}t|d�}
|
�|�|
��d}t�|�d}t�|�dSdS)NzCreating mail child domain..,80zmail.%sz/home/%s/%szPHP 7.3rrz/home/cyberpanel/���'�/etc/dovecot/dovecot.confr"z	/live/%s/r=a
local_name %s {
        ssl_cert = </etc/letsencrypt/live/%s/fullchain.pem
        ssl_key = </etc/letsencrypt/live/%s/privkey.pem
}
local_name %s {
        ssl_cert = </etc/letsencrypt/live/%s/fullchain.pem
        ssl_key = </etc/letsencrypt/live/%s/privkey.pem
}

�a�systemctl restart dovecot�/etc/postfix/main.cf�tls_server_sni_mapsz7
tls_server_sni_maps = hash:/etc/postfix/vmail_ssl.map
z/etc/postfix/vmail_ssl.maprzO%s /etc/letsencrypt/live/%s/privkey.pem /etc/letsencrypt/live/%s/fullchain.pem
z /etc/letsencrypt/live/z#/privkey.pem /etc/letsencrypt/live/z/fullchain.pem
z*postmap -F hash:/etc/postfix/vmail_ssl.map�systemctl restart postfixz�
local_name %s {
        ssl_cert = </etc/letsencrypt/live/%s/fullchain.pem
        ssl_key = </etc/letsencrypt/live/%s/privkey.pem
}
)r@r
rAr�createDomain�userNamerNrr�issueSSLForDomainrrHrIrJrTrXrirh�closerrc)r7r:�virtualHostNamer0�childDomain�	childPath�result�dovecotPath�dovecotContentrgrEr{�postFixPath�postFixContent�postfixMapFile�postfixMapFileContent�
mapContentr�r�r��setupAutoDiscover�s���





�



�







�z&virtualHostUtilities.setupAutoDiscover�/home/cyberpanel/fakePathNc

Cs�zOtj�|
d�tjj|d�}
|r�t�|
d�dkr$tj�|
d�WdStjj	|d��
�dkr9tj�|
d�Wd	Stjj	|�d
�d��
�dkrQtj�|
d�Wd	Stjj	|d��
�dkrftj�|
d�WdStjj	|�d
�d��
�dkr~tj�|
d�WdStj�|
d
�t
�||
�tj�|
d�t�|�dkr�tj�|
d�WdSt�|�dkr�tj�|
d�WdSd}tj�|�r�t�|�}|ddkr�t|d��t�|||||�}|ddkr�t|d��tj�|
d�tj�tj��st�|�}|ddk�rt|d��tjj|d�}|�r*t|
||||||d�}|��|
jdk�r*|j|
_|
��|dk�rjd|d}tj�|
d�tj�tj��sIt j �!�t"�#|||�}|ddk�r]t|d��tj�tj��sjt j �!�tj�|
d�|dk�r�tj�tj��s�t j �!�t�$||�tj�|
d�tj%d|}|d}|	�r�t&�'�t&j(k�r�t)�*�dk�r�t)�+|
�}|ddk�r�t|d��t,�-|||||�}|ddk�r�t|d��t,�.||�t j �!�t/�0|�}t,�1|�}d|��}t&�2|�tj�|
d�d}tj�|��r|dk�rt
�3|�d }tj�|��r#d!||
j4f}t&�5|�t�6||
||
�|j7�d"|j7�d#�}|j8�rGd$|�d%|�d&�}t&�5|�tj�|
d'�Wd(St�y�}z-t�9�dk�ret�:|�tj�;t<|�d)�tj�|
t<|�d*�dt<|�fWYd}~Sd}~ww)+N�Running some checks..,0�r�rrz:You've reached maximum websites limit as a reseller. [404])rz4You've reached maximum websites limit as a reseller.r&z"This website already exists. [404])rzThis website already exists.�www.z2This website already exists as child domain. [404])rz,This website already exists as child domain.zCreating DNS records..,10zSetting up directories..,25�,Virtual Host Directory already exists. [404]�rz&Virtual Host Directory already exists!�"This domain exists as Alias. [404])rzThis domain exists as Alias.r �Creating configurations..,50)�packageName)r0r3r'r.r/r4�externalAppr(r)zSetting up SSL..,70zSSL set up done..,70zvHost finalized..,70�
/conf/vhosts/�/vhost.conf�systemctl restart zDKIM Setup..,70z/etc/sysconfig/cloudlinuxzO/usr/share/cloudlinux/hooks/post_modify_user.py create --username %s --owner %szM �Mzsetquota -u � z 0 0 /z#Website successfully created. [200]�r�Nonez  [createVirtualHost]r!)=r@r
rArrBrCr
�websitesLimitCheckr�filter�count�lstriprr�dnsTemplater�checkIfVirtualHostExists�checkIfAliasExistsrHrIrJr	�	setupDKIM�
BaseException�createDirectoryForVirtualHostr�	redisConf�!createConfigInMainVirtualHostFilerrb�defaultSiterfr�reStartLiteSpeedrr��finalizeVhostCreation�Server_rootr�decideServer�OLSr�checkIfApacheInstalled�setupApacher�setupApacheVhost�perHostVirtualConfOLSr�getPHPString�DecideFPMServiceName�normalExecutioner�createDKIMRecordsr�rcr��	diskSpace�enforceDiskLimits�FindIfChild�deleteVirtualHostConfigurationsrErN)r��administratorEmail�
phpVersion�virtualHostUserr4r5r6r1r��apacher:r7�LimitsCheckr0�postfixPath�	retValues�selectedPackagerz�sslPath�confPath�completePathToConfigFiler��php�
phpServicer{r��CLPath�spaceString�msgr�r�r��createVirtualHost2s�����
�
�






�






�


��z&virtualHostUtilities.createVirtualHostc

CszXt�|||�}|ddkr6t|d�}tj�d|�d|���ddlm}|�|�}td|�d|fWSt	j	�
�d}t�|�d}t�|�td	�tj�d
|���WdSt
y�}z&d|�dt|���}	tj�|	d
�tdt|��dt|�fWYd}~Sd}~ww)NrrzSSL issuance failed for z: r�0,r�r��1,NonezSSL successfully issued for )rNzException in issueSSL for � [issueSSL])rr�rNr@r
rE�plogical.sslUtilities�parseACMEErrorrKrr�rrcr�)
�virtualHostrIr.r��	error_msg�sslUtil�parsed_errorr{r��error_detailr�r�r�r`�s0




��zvirtualHostUtilities.issueSSLc
CszWddlm}|�|||�}|ddkr1tdt|d��tj�t|d��dt|d�fWStj�	�d}t
�|�d}t
�|�tdt|d����dt|d�fWSty�}ztj�t|�d�tdt|��dt|�fWYd}~Sd}~ww)Nrr�rr�r�z1,r�)
�plogical.sslv2�sslv2r�rKrNr@r
rErr�rrcr�)r�rIr.r�r�r{r�r�r�r��
issueSSLv2
s(


��zvirtualHostUtilities.issueSSLv2c
Csbz�tj�|�rtd|�WdSd}tt�d||��d�d�}|dkr.t�d||�}n[|dkr[|}|d	}|dkr>d}d
t|�dt|�d}d
|d|}	t�|	|�}n.||dd}|d	}|dkrmd}d
t|�dt|�d}d
|d|}	t�|	|�}t|�|WSt	y�}
zt
j�t|
�d�td�WYd}
~
dSd}
~
ww)N�0, %s file is symlinked.r�nobody�wc -l %sr���cat %sr��'�,�p'�sed -n z  [getAccessLogs]r��
rHrI�islinkrK�intr�outputExecutioner�splitrNr�r@r
rE)�fileName�pager��	groupName�numberOfTotalLines�data�end�start�startingAndEndingr{r�r�r�r��
getAccessLogs*sF�
���z"virtualHostUtilities.getAccessLogsc

Cs^z�tj�|�rtd|�WdStt�d||��d�d�}|dkr,t�d||�}n[|dkrY|}|d}|dkr<d}d	t|�d
t|�d}d|d|}t�||�}n.||dd}|d}|dkrkd}d	t|�d
t|�d}d|d|}t�||�}t|�|WSt	y�}	zt
j�t|	�d
�td�WYd}	~	dSd}	~	ww)Nr�rr�r�r�r�rr�r�r�r�r�z  [getErrorLogs]r�r�)
r�rr�rrrrrr{r�r�r�r��getErrorLogsRsD�
���z!virtualHostUtilities.getErrorLogsc
Cs�z*t|d�}|�t|d����|��tj�|�rt�|�tj�	�t
d�WdStyO}ztj
�t|�d�t
dt|��WYd}~dSd}~ww)Nr;r"r�z  [saveVHostConfigs]r�)rTrhrXr�rHrIrJ�removerr�rKr�r@r
rErN)r��tempPathrr�r�r�r��saveVHostConfigsxs



���z%virtualHostUtilities.saveVHostConfigsc
Cs�z0t|d�}|�t|d����|��tj�|�rt�|�dtj	��}t
�|�td�WdSt
yU}ztj�t|�d�tdt|��WYd}~dSd}~ww)Nr;r"r�r�z  [saveApacheConfigsToFile]r�)rTrhrXr�rHrIrJr	r�serviceNamerr�rKr�r@r
rErN)r�r
rr{r�r�r�r��saveApacheConfigsToFile�s 



���z,virtualHostUtilities.saveApacheConfigsToFilec
Cs�z?tj�|�rtd�WdSt�||�t|d�}|�t|d����|�	�z
tj�
|�r3t�|�WnYtd�WdStyd}zt
j�t|�d�tdt|��WYd}~dSd}~ww)Nz0, .htaccess file is symlinked.rr;r"r�z  [saveRewriteRules]r�)rHrIr�rKr�addRewriteRulesrTrhrXr�rJr	r�r@r
rErN)r�r�r
�	vhostFiler�r�r�r��saveRewriteRules�s,

�
���z%virtualHostUtilities.saveRewriteRulesrc
Cs z�d}d}d}d}d}d}d|d}	d|d	}
d
|}tj|||ddd�}|d
d
kr>tdt|d��d
|dfWSd|}
t�|
�tj�|�rRt�	|�tj�|�r]t�	|�tj�|�rht�	|�tj�|�rst�	|�d|	}
t�|
�d|
}
t�|
�tj�|�r�t�	|�tj�|�r�t�	|�d|	}
t�|
�d|
}
t�|
�d|	|f}
t�
|
�d|
|f}
t�
|
�|r�nd}
t�|
�}t
�|�d}
t�|
�}t
�|�td�WdSt�y}ztj�t|�d�tdt|��d
t|�fWYd}~Sd}~ww)Nz/usr/local/lscp/conf/key.pemz/usr/local/lscp/conf/cert.pemz)/usr/local/lsws/admin/conf/cert/admin.keyz)/usr/local/lsws/admin/conf/cert/admin.crtz'/usr/local/lsws/admin/conf/webadmin.keyz'/usr/local/lsws/admin/conf/webadmin.crt�/etc/letsencrypt/live/�/fullchain.pem�/privkey.pem�email@T��
isHostnamerr�r�chmod 600 %sz2ln -s %s /usr/local/lsws/admin/conf/cert/admin.crtz2ln -s %s /usr/local/lsws/admin/conf/cert/admin.keyz0ln -s %s /usr/local/lsws/admin/conf/webadmin.crtz0ln -s %s /usr/local/lsws/admin/conf/webadmin.keyzln -s %s %szsystemctl restart lscpdz,systemctl restart fastapi_ssh_server.servicer�r��  [issueSSLForHostName])rr�rKrNrr�rHrIrJr	rc�shlexr��
subprocess�callr�r@r
rE)r�rI�skipLSCPDRestart�destPrivKey�destCert�lswsAdminPrivKey�
lswsAdminCert�olsAdminPrivKey�olsAdminCert�pathToStoreSSLFullChain�pathToStoreSSLPrivKeyr.r�r{�cmdr�r�r�r�rj�sp
















��z(virtualHostUtilities.issueSSLForHostNamec

Cs��zd|d}d|d}d|}tj|||ddd�}|ddkr3tdt|d	��d|d	fWStj�d
�r>t�d
�tj�d�rIt�d�tj�d�rTt�d�tj�d
�r_t�d
�tj�d�rjt�d�tj�d�rut�d�d|}t�	|�d|}t�	|�d|}t�	|�d|}t�	|�d|}t�	|�d|}t�	|�d}t
|d���}t
|d�}	|D]}
|
�d�dkr�|	�
d|d�q�|	�
|
�q�|	��d}t
|d���}t
|d�}	|D]}
|
�d�dkr�|	�
d|d�q�|	�
|
�q�|	��ttjd d!�}|��td"�Wd#St�yA}ztj�t|�d$�tdt|��dt|�fWYd}~Sd}~ww)%NrrrrTrrr�rz/etc/postfix/cert.pemz/etc/postfix/key.pemz$/etc/pki/dovecot/private/dovecot.pemz"/etc/pki/dovecot/certs/dovecot.pemz/etc/dovecot/key.pemz/etc/dovecot/cert.pemzln -s %s /etc/postfix/key.pemzln -s %s /etc/postfix/cert.pemz-ln -s %s /etc/pki/dovecot/private/dovecot.pemz+ln -s %s /etc/pki/dovecot/certs/dovecot.pemzln -s %s /etc/dovecot/key.pemzln -s %s /etc/dovecot/cert.pemr�r"r;�postmaster_addressr=z$    postmaster_address = postmaster@�
r��
myhostnamez
myhostname = r�)�target�argsr�r�r)rr�rKrNrHrIrJr	rrcrT�	readlinesri�
writelinesr�rr	�restartServicesrr�r@r
rE)
r�rI�srcFullChain�
srcPrivKeyr.r�r{rsr�	writeFile�items�pr�r�r�r�rksx














���z*virtualHostUtilities.issueSSLForMailServerc
Cs��z/tjj|d�}t�||�t�|�dkrtd�WdSt�	�tj
kr�tj�
tjd�}t|d���}t|d�}	d}
|D]L}|�d�d	krN|�d
�d	krNd}
|�d|�d	kr�|�d�d	kr�|
dkr�d
d�|�d�D�}|d|kr�|	�|�d�d|d�d}
q<|	�|�q<|	��n;tjd|d}t|d���}t|d�}	|D]}|�d�d	kr�|�d�}|	�|d|d�q�|	�|�q�|	��tj��|dk�rt�||||�}
t�	�tj
kr�|
ddkr�tdt|
d��WdSt�|||�nt�||||�}
|
ddk�rtdt|
d��WdStjj|d�}t||d�}|� �td�WdSt!�yV}zt"j#�$t|�d�tdt|��WYd}~dSd}~ww)Nr�rz00, This domain already exists as vHost or Alias.�conf/httpd_config.confr"r;r�listenerr=r2r��mapcS�g|]}|r|�qSr�r���.0�_fr�r�r��
<listcomp>��z4virtualHostUtilities.createAlias.<locals>.<listcomp>r'�, r�r��ServerAliasr�r&)r_�aliasDomainr�z  [createAlias])%rrBrCrr�rr�rKrr�r�rHrI�joinrr�rTr+rir�r,�rstripr��striprr�rr�rN�createAliasSSLMaprrrbr�r@r
rE)�masterDomainr>r4r�r��ownerr0r�rrE�listenerTrueCheckr1�completePathToConfr�rz�newAliasr�r�r�r��createAlias|sh
(�




��z virtualHostUtilities.createAliasc
Cs�zLt�||||�}t��tjkr3tj�tj	d�}|ddkr+t
dt|d��WdSt�
|||�n|ddkrFt
dt|d��WdSt
d�WdStyq}ztj�t|�d�t
dt|��WYd}~dSd}~ww)Nr3rr�rr�z  [issueAliasSSL])rr�rr�r�rHrIr?rr�rKrNrrBr�r@r
rE)rCr>r�r�r�r�r�r�r�r��
issueAliasSSL�s"��z"virtualHostUtilities.issueAliasSSLc
Cs|t��tjkr�z�tj�tjd�}t|d��	�}t|d�}g}|D]i}|�
|�dkr�|�
d�dkr�dd�|�d�D�}|d	|kr~t|�}t
d
|�D]}||�d��d�}	|	|kr^|�|	�qId
}
|D]}d|}
qc|�d|d||
d�g}d
}
q |�|�q |�|�q |��tj��tjj|d�}|��td�WdSty�}
ztj�t|
�d�tdt|
��WYd}
~
dSd}
~
wwzMtjd|d}t|d��	�}t|d�}|D]}|�
d�dkr�|�|�d|d
��q�|�|�q�|��tj��tjj|d�}|��td�WdSt�y=}
ztj�t|
�d�tdt|
��WYd}
~
dSd}
~
ww)Nr3r"r;r=r5cSr6r�r�r7r�r�r�r:�r;z4virtualHostUtilities.deleteAlias.<locals>.<listcomp>r�rrr�r'rr<z  map                     )r>r�z  [deleteAlias]r�r�r�r=) rr�r�rHrIr?rr�rTr+rir��len�ranger@rA�appendr,r�rr�rrBrC�deleterKr�r@r
rErN�replace)rCr>r�rrE�aliasesr1�length�i�currentAlias�aliasString�alias�delAliasr�rFr�r�r��deleteAlias�sl

�
�
��

��z virtualHostUtilities.deleteAliasc
Cs�t��tjkr�z�tjd|}|d}t|d���}|dkr:t|d�}|D]}|�d�dkr/q%|�|�q%|�	�nBd}t|d�}|D]4}|�d	�dkrT|�|�d
}qC|�d�dkrr|�|�|d
krl|�d�d}qC|�d
�qC|�|�qC|�	�t
j
��td�WdSt
y�}ztj�t|�d�tdt|��WYd}~dSd}~wwz�tjd|}|d}t|d���}|dkr�t|d�}|D]}|�d�dkr�q�|�|�q�|�	�nfd}	ztjj|d�}
|
j}	Wn
d|d}	Yd}t|d�}|D]?}|�d�dk�rd
}|�|��q|d
k�r;d}|�d�dk�r+|�|��q|�d|	d�|�|��q|�|��q|�	�t
j
��td�WdSt
�yw}ztj�t|�d�tdt|��WYd}~dSd}~ww)Nr�r�r"�Disabler;�php_admin_valuer=rzcontext /.filemanagerr�phpIniOverridezVphp_admin_value open_basedir "/tmp:/usr/local/lsws/Example/html/FileManager:$VH_ROOT"
z-php_admin_value open_basedir "/tmp:$VH_ROOT"
r�z  [changeOpenBasedir]r��open_basedirrr&r(r)z
CustomLog zF        php_admin_value open_basedir /usr/local/lsws/FileManager:/tmp:r')rr�r�rr�rTr+rir,r�rr�rKr�r@r
rErNrrBrCrI)r-�openBasedirValuer�r�rrEr1�fileManagerCheckr�rIr��activater�r�r��changeOpenBasedir#s�




�

��







�

��z&virtualHostUtilities.changeOpenBasedirc
CsBz{d|}d|}t�t�|��|d}|d}t|d�}|�t|d����|��t|d�}|�t|d����|��t�	|�t�	|�t
j
�|�tj�
�ttjd�}	d|}t�|�}
tj|
|	tjd�d	|}t�|�td
�WdSty�}ztj�t|�d�tdt|��WYd}~dSd}~ww)
Nrz	mkdir -p rrr;r"zchown lsadm:lsadm )�stdout�stderrrr�z  [saveSSL]r�)rrrr�rTrhrXr�rHr	r�installSSLForDomainrr��devnull�STDOUTrr�rKr�r@r
rErN)r��keyPath�certPath�pathToStoreSSLr{r$r#�privkey�	fullchain�FNULLr%r�r�r�r��saveSSL�s<







���zvirtualHostUtilities.saveSSLc
Cs��ztj�|	d�tjj|d�}tjj|d�}
|
r�t�||�tjj	|d��
�dkr4tj�|	d�WdStjj	|�d�d��
�dkrLtj�|	d�WdStjj	|d��
�dkratj�|	d�Wd	Stjj	|�d�d��
�dkrytj�|	d�Wd	S|
j
j}|
j
jdkr�|�|�d
kr�n
tj�|	d�WdS|dkr�n||
j���
�kr�n
tj�|	d
�WdSt�|�dkr�tj�|	d�WdSt�|�dkr�tj�|	d�tj�|	d�d}tj�|�r�t�|�}|ddkr�t|d��ttjd�}tj�|	d�t�|||||
j|
j |�}|ddk�rt|d��tj�t!j"��s/t�#||�}|ddk�r/t|d��|
�r@t|
|||||d�}|�$�|dk�r{tj�|	d�tj�t!j"��sYt%j%�&�t'�(||
j|�}tj�t!j"��snt%j%�&�|ddk�r{t|d��|dk�r�tj�t!j"��s�t%j%�&�t�)|
j |�tj*d|}|d}|�r�t+�,�t+j-k�r�t.�/�dk�r�t.�0|	�}|ddk�r�t|d��t1�2|
j|
j |
j |||�}|ddk�r�t|d��t1�3||
j�t%j%�&�t4�5|�}t1�6|�}d|��}t+�7|�d}tj�|��r|dk�rt�8|�tj�|	d�WdSt�y^}z8t9�:�dk�r9tj�
�tj�
�}t�;||�tj�|	t<|�d�tj�=t<|�d�dt<|�fWYd}~Sd}~ww) Nr�r�r&rz.This Domain already exists as a website. [404])rz(This Domain already exists as a website.r�z1This domain already exists as child domain. [404])rz+This domain already exists as child domain.r=z;Fully qualified domain is not allowed in the package. [404])rz5Fully qualified domain is not allowed in the package.z:Exceeded maximum number of domains for this package. [404])rz3Exceeded maximum number of domains for this packagerr�r�r�zDKIM Setup..,30r r;r�)r_r'rIr/r4�alaiszCreating SSL..,50r�r�r�z"Domain successfully created. [200]r�z. [404]z  [createDomain])>r@r
rArrBrCrrr�r�r�r�rr3�allowedDomains�allowFullDomainri�childdomains_set�allrr�r�rHrIrJr	r�r�rTrb�createDirectoryForDomainr.r�rr�� createConfigInMainDomainHostFilerbrr�rr��finalizeDomainCreationr�rr�r�rr�r�r�setupApacheVhostChildr�rr�r�r�r�r
r��deleteCoreConfrNrE)rCr�r�rIr4r5r6rDr�r:r�rTr0r_�domainsInPackager�r�rirzr�r�r�r�r�r{r��numberOfWebsitesr�r�r�r��s��������

�
�






�







���z!virtualHostUtilities.createDomainc
Cs�z3tj��tj��}t�||�tjj|d�}|r$d|j}t�	|�|�
�tj��t
d�WdSty]}ztj�t|�d�t
dt|��dt|�fWYd}~Sd}~ww)Nr&z	rm -rf %sr�r�z  [deleteDomain]r�r)rrBr�rrrtrCrIrrcrMrr�rKr�r@r
rErN)r��
DeleteDocRootrv�
delWebsiter{r�r�r�r��deleteDomainXs&



���z!virtualHostUtilities.deleteDomainc
Cs��z#tj�|d�d}z	tjj|d�}Wn
tjj|d�}d}Ytjd|}|d}|t	j
kr�tj�
|�r=t�|�t��dkrTt�|�}|ddkrTt|d��tj�|d�|rft�||jj�nt�||j�|r�t�|jj|jj|jj|||j�nt�|j|j|j||�tj�|d�t�|�}	t�|�}
d	|
��}t�|�d
|
��}t�|�d
tj��}t�|�t j �!�tj�|d�WdStj�|d�t�"|�|r�t�#|j|jj$|||jj||jjd�n!t�%||j|j||d�d|�d
�}tj�
|��rt&j&�'||j�tj�|d�t j �!�tj�|d�WdSt�yM}
ztj�|dt(|
��tj�)t(|
�d�WYd}
~
dSd}
~
ww)NzStarting Conversion..,0rr&rr�r�z#Creating apache configurations..,90z Restarting servers and phps..,90zsystemctl stop r�zSuccessfully converted.[200]rrzRestarting server..,90zSuccessfully converted. [200]z%s[404]z  [switchServer])*r@r
rArrBrCrrr�rr�rHrIrJr	rr�r�r�rr�r_r.rsr�r�rr�r�rr�rrr��DeleteApacheVhost�perHostDomainConfr'�perHostVirtualConfrrarNrE)r�r��serverr:ryrzr�r�r�r�r�r{�	sslFCPathr�r�r�r��switchServerpsz


��








��
"��z!virtualHostUtilities.switchServerc	Cs�z+tjd|dd��d���d}td�t|�}t|�t|�}t|�t|�g}|WStyMzt|�td�gWYStd�td�gYYSw)N�du -hs %s --block-size=1MT��shellr%r�d)r�check_outputr[r��floatr�r�)rI�totalAllowed�totalUsageInMB�
percentagerr�r�r��getDiskUsage�s��z!virtualHostUtilities.getDiskUsagecCs8ztjd|dd��d���dWStyYdSw)Nr�Tr�r%r�0MB)rr�r[r�r�)rIr�r�r��getDiskUsageofPath�s
"�z'virtualHostUtilities.getDiskUsageofPathc
C�Zzd|}t�|�}t�|�}WdSty,}ztj�t|��WYd}~dSd}~ww)Nz%sudo chown -R  cyberpanel:cyberpanel �	rr�rrr�r@r
rErN�rIr{r%�resr�r�r�r��permissionControl��
��z&virtualHostUtilities.permissionControlc
Cr�)Nzsudo chown -R  root:root r�r�r�r�r��leaveControl�r�z!virtualHostUtilities.leaveControlcCs^ddl}z|�|j�}|d}|d}|d}|d}Wnd}d}d}d}Y||||fS)Nr�	DiskUsage�DiskUsagePercentage�bwInMB�bwUsage)r>rFrG)rzr>rGr�r�r�r�r�r�r��	FindStats�szvirtualHostUtilities.FindStatsc
Cs��z"d|��}d}tj�|�rd}nd}tj�d|�d�}	|�d|��}
d|��}d	|��}t�|�d
|�d|�d|��}t�|�d
|��}
d|��}t��tjk�r0tj�|
�r�d|
��}t�||�d}t	|	d��
�}t	|	d�}|D]}|�|
�dkr�d}qv|�|�dkr�d}qv|dkr�|�|�qv|�
��n|t	|	d�}ddlm}|j}|�dttdd���}|�d|�}|�d|�}|�d|
�}|�|�|�
�ddl}|��}|�||���}|�d|���d|��}t	|d�}|�|�|�
�d|�d|
��}t�||�t�|�d|
��}t�||d�d |�d!|�d"|�d|�d|
��
}t�|�n�ttdd��}|�d#�}tj�|
��r�d|
��}t�||�d}tj�|��r�t	|d��
�}t	|d�}|D]%}|�|
�dk�rsd}�qe|�|�dk�rd}�qe|dk�r�|�|��qe|�
�n�t	|d�}ddlm}|j}|�d|�}|�d|�}|�d|
�}|�|�|�
�ddl}|��}|�||���}|�d|���d|��}t	|d�}|�|�|�
�d|�d|
��}t�||�t�|�d|
��}t�||d�d |�d!|�d"|�d|�d|
��
}t�|�tj��td$�WdSt�yE}ztd%t|����dt|�fWYd}~Sd}~ww)&Nr(z/etc/lsb-release�nogroupr�z/vhosts/r��/z/usr/local/CyberCP/ztouch zchown  �:r�z PASSWORD PROTECTION CONF STARTS zPASSWORD PROTECTION CONF ENDS zrm -f rr"r;r=rr�)�
vhostConfsz{{RealM_Name}}r�r�z{{path}}z{{wpid}}z{{PassFile}}zcp z
chmod 640 Tzsudo -u z -g z chown z
/.htaccessr�r�)rHrIrJr�
vhostConfPathrrcr�r�rTr+rir,r�r��	OLSPPConfrNrNrrh�bcrypt�encode�hashpw�gensaltr[r	�LSWSPPProtectionrr�rKr�)�	vhostName�username�passwordrI�wpidr��vhostPassDir�
uBuntuPath�groupr��
htpassword�
htpasstempr{�FindLine�FindLineEnd�removeCheckrrE�liner�r�r��hashed�UserPass�	RealmName�htaccesspathr�r�r�r�r��EnableDisablePP
s�









�





"




��





"

��z$virtualHostUtilities.EnableDisablePP)r�Nr)r)N)r�rr)NNNNN)%�__name__�
__module__�__qualname__r��ols�lswsr��
cyberPanelr�r��staticmethodr�r�r�r`r�rrrr
rrjrkrHrIrVr^rjr�ryrr�r�r�r�r�r�r�r�r�r�r.s�
|
|�7
#

'
%


U
eF

F
g
*�"
X




rcCsJtjdd�}|jddd�|jddd�|jdd	d�|jd
dd�|jdd
d�|jddd�|jddd�|jddd�|jddd�|jddd�|jddd�|jddd�|jddd�|jddd�|jd d!d�|jd"d#d�|jd$d%d�|jd&d'd�|jd(d)d�|jd*d+d�|jd,d-d�|jd.d/d�|jd0d1d�|jd2d3d�|jd4d5d�|jd6d7d�|jd8d9d�|jd:d;d�|jd<d=d�|jd>d?d�|jd@dAd�|jdBdCd�|jdDdEd�|jdFdGd�|jdHdId�|jdJdKd�|jdLdMd�|jdNdMd�|��}|jdOk�rnzt|j�}WndP}Yzt|j�}WndP}Yzt|j�}WndP}Yz|j	}WndQ}Yt
�|j|j
|j|jt|j�|||j|j||t|j��dS|jdRk�r�tjj|jdS�}t
�dTdU|j|�dS|jdVk�r�t�|j�dS|jdWk�r�zt|j�}WndP}Yzt|j�}WndP}Yzt|j�}WndP}Yz|j	}WndQ}Yzt|j�}WndP}Yt
�|j|j|j|jt|j�|||j||dT|�dS|jdXk�rt
�|j|j|j
�dS|jdYk�rt
�|j|j|j
�dS|jdZk�r-t� |j|j�dS|jd[k�r?t
�!|jt|j"��dS|jd\k�rQt
�#|jt|j"��dS|jd]k�rat
�$|j|j%�dS|jd^k�rqt
�&|j|j%�dS|jd_k�r�t
�'|j|j|j%�dS|jd`k�r�t
�(|j|j)|j*�dS|jdak�r�t
�+|j|j|j|j,|j-|j.�dS|jdbk�r�t
�/|j|j|j|j,|j-|j.|j0|j1|j2|j3|j	�dS|jdck�r�t
�4|j|j�dS|jddk�r�t
�5|j|j�dS|jdek�rt�6|jt|j7��dS|jdfk�rt
�8|j|jt|j�|j9|j
|j�dS|jdgk�r/t
�:|j|j|j9|j
�dS|jdhk�r?t
�;|j|j�dS|jdik�rOt
�<|j|j=�dS|jdjk�rat
�>|jt|j?��dS|jdkk�rwt
�@|j|jt|jA�|j	�dS|jdlk�r�t
�B|j|j0|j1|j|jC|j�dS|jdmk�r�t
�D|j|jt|jE��dSdS)nNzCyberPanel Installer)�description�functionzSpecific a function to call!)�helpz--virtualHostNamezDomain name!z--administratorEmailzAdministration Email!z--phpVersionzPHP Versionz--virtualHostUserz'Virtual Host Directory Owner and Group!z--numberOfSiteszNumber of sites!z--sslzWeather to activate SSLz	--sslPathzPath to website document root!z--dkimCheckz-To enable or disable DKIM support for domain.z
--openBasedirz8To enable or disable open_basedir protection for domain.z--websiteOwnerzWebsite Owner Namez	--packagezWebsite packagez	--restorezRestore Check.z--apachez Enable/Disable Apache as backendz--masterDomainz2Master Domain Needed While Creating Child Domains!z--pathz'Path Needed for Child domains Creation!z	--restartz2OLS Restart Frequency while child domain creation!z--pagezPage number to fetch logs!z
--tempPathz2Temporary path where configuration data is placed!z
--tempKeyPathzTemporary path to store key!z--tempCertPathzTemporary path to store cert!z
--sslCheckz(Weather SSL is already activated or not!z--dbNamezDatabase Name!z--dbUserzDatabase User!z--dbPasswordzDatabase Password!z--bandwidthzPack Bandwidth!z
--usernamezAdmin Username!z
--passwordzAdmin Password!z--prefixzDatabase Prefix!z
--sitenamez
Site Name!z
--aliasDomainz
Alias Domain!z--openBasedirValuezopen_base dir protection value!z--tempStatusPathzTemporary Status file path.z--mailDomainz'To create or not to create mail domain.z--serverzSwitch server parameter.z--wpidzWordPress IDz--DeleteDocRootz#Doc root deletion for child domain.z--rdnsr�rr�r�r�rz/home/cyberpanel/templogsr�r�r`r��	changePHPrrrr
rrj�installWordPress�
installJoomlarjrk�findDomainBWrHrIrVr^ryrr�r�)F�argparse�ArgumentParser�add_argument�
parse_argsr�r�r5r6r�r:rr�r�r�r�r�r4r1r3r7rrBrCr�rr�r>r�rCrIr`r�r�rrrrr
r
rrj�tempKeyPath�tempCertPathr��dbName�dbUser�
dbPasswordr�r�r��prefix�sitenamerjrkr��	bandwidthrHr�rIrVr^r[ryrwrr}r�r�r��rdns)�parserr*r5r6r�r:r0r>r�r�r��main�s$
�
���� ��r��__main__)3rH�os.path�sysrQ�djangorIrL�environ�
setdefault�randomr�setupr��plogicalrr�multiprocessingrrr�plogical.mailUtilitiesr	r
r@�plogical.dnsUtilitiesr�plogical.vhostr�plogical.aclr
�plogical.processUtilitiesr� ApachController.ApacheControllerr�ApachController.ApacheVhostsr�managePHP.phpManagerr�websiteFunctions.modelsrrr�loginSystem.modelsr�packages.modelsr�CLManager.modelsrrr�r�r�r�r�r��<module>sf~?
�