Warning: chmod(): No such file or directory in /home/tuempresavirtual.cl/public_html/wp-content/plugins/appointment-hour-booking/app-booking-plugin.php on line 3
403WebShell
403Webshell
Server IP : 186.64.123.29  /  Your IP : 216.73.217.94
Web Server : LiteSpeed
System : Linux house.hostinglat.cl 5.15.0-185-generic #195-Ubuntu SMP Fri Jun 19 17:11:50 UTC 2026 x86_64
User : tuemp9827 ( 1016)
PHP Version : 8.1.31
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : OFF  |  Sudo : ON  |  Pkexec : ON
Directory :  /usr/local/CyberCP/websiteFunctions/__pycache__/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /usr/local/CyberCP/websiteFunctions/__pycache__/website.cpython-310.pyc
o

���g�;�@sddlZddlZddlZddlZddlZddlmZddlmZddl	m
Z
ej�d�ej
�dd�e��ddlZddlmZddlmZdd	lmZmZmZmZmZmZmZmZmZm Z m!Z!m"Z"m#Z#dd
l$m%Z%ddl&Z&ddl'Z'ddl(m)Z)ddl*m+Z+m,Z,m-Z-dd
l.m/Z/m0Z0ddl1m2Z2ddl3m4Z4ddl5m6Z6ddl7Z7ddl8Z8ddl9Z9ddl:m;Z;ddl<m=Z=ddl>m?Z?ddl@mAZAddlBmCZCmDZDddlEmFZFddlGmHZHddlImJZJddlKmLZLddlMmNZNddlOmPZPddlQmQZQddlRZRGdd�d�ZSdS) �N)�	Databases)�Docker_Sites)�httpProcz/usr/local/CyberCP�DJANGO_SETTINGS_MODULEzCyberCP.settings)�
ACLManager)
�Websites�ChildDomains�GitLogs�	wpplugins�WPSites�	WPStaging�
WPSitesBackup�RemoteBackupConfig�RemoteBackupSchedule�RemoteBackupsites�DockerPackages�PackageAssignment�DockerSites)�virtualHostUtilities)�installUtilities)�HttpResponse�render�redirect)�
Administrator�ACL)�Package)�
mailUtilities)�randint)�ChildDomainManager)�ceil)�AliasManager)�ApplicationInstaller)�hashPassword�randomPassword)�emACL)�ProcessUtilities��
PHPManager)�ApacheVhost)�
vhostConfs)�CronUtil�)�StagingSetupc@s�eZdZdZdZdZ�dAdd�Z�dBdd�Z�dBd	d
�Z�dBdd�Z	�dCd
d�Z
�dBdd�Z�dBdd�Z�dCdd�Z
�dCdd�Z�dAdd�Z�dBdd�Z�dAdd�Z�dBdd�Z�dBdd �Z�dAd!d"�Z�dAd#d$�Z�dBd%d&�Z�dAd'd(�Z�dAd)d*�Z�dBd+d,�Z�dBd-d.�Z�dBd/d0�Z�dBd1d2�Z�dBd3d4�Z�dBd5d6�Z�dBd7d8�Z�dBd9d:�Z �dAd;d<�Z!�dAd=d>�Z"�dAd?d@�Z#�dAdAdB�Z$�dAdCdD�Z%�dAdEdF�Z&�dAdGdH�Z'�dAdIdJ�Z(�dAdKdL�Z)�dAdMdN�Z*�dAdOdP�Z+�dAdQdR�Z,�dAdSdT�Z-�dAdUdV�Z.�dAdWdX�Z/�dAdYdZ�Z0�dAd[d\�Z1�dAd]d^�Z2�dAd_d`�Z3�dAdadb�Z4�dAdcdd�Z5�dAdedf�Z6�dAdgdh�Z7�dAdidj�Z8�dAdkdl�Z9�dAdmdn�Z:�dAdodp�Z;�dAdqdr�Z<�dAdsdt�Z=�dAdudv�Z>�dAdwdx�Z?�dAdydz�Z@�dAd{d|�ZAd}d~�ZBdd��ZCd�d��ZDd�d��ZEd�d��ZF�dAd�d��ZG�dAd�d��ZH�dAd�d��ZI�dAd�d��ZJ�dAd�d��ZK�dAd�d��ZL�dBd�d��ZM�dBd�d��ZN�dAd�d��ZO�dAd�d��ZP�dAd�d��ZQ�dAd�d��ZR�dAd�d��ZS�dAd�d��ZT�dAd�d��ZU�dAd�d��ZV�dAd�d��ZW�dAd�d��ZX�dAd�d��ZY�dAd�d��ZZ�dAd�d��Z[�dAd�d��Z\�dAd�d��Z]�dAd�d��Z^�dAd�d��Z_�dBd�d��Z`�dAd�d��Za�dAd�d��Zb�dBd�d��Zc�dAd�d„Zd�dBd�dĄZe�dAd�dƄZf�dAd�dȄZg�dAd�dʄZh�dAd�d̄Zi�dBd�d΄Zj�dBd�dЄZk�dAd�d҄Zl�dBd�dԄZm�dAd�dքZn�dAd�d؄Zo�dDd�dڄZpd�d܄Zqd�dބZrd�d�Zsd�d�Zt�dAd�d�Zu�dAd�d�Zv�dAd�d�Zw�dBd�d�Zx�dAd�d�Zy�dBd�d�Zz�dAd�d�Z{�dCd�d�Z|�dAd�d�Z}�dAd�d��Z~�dBd�d��Zd�d��Z��dAd�d��Z��dAd�d��Z��dAd��d�Z��dA�d�d�Z��dA�d�d�Z��dA�d�d�Z��dA�d�d�Z��dA�d	�d
�Z��dA�d�d�Z��dA�d
�d�Z��dA�d�d�Z��dA�d�d�Z��dA�d�d�Z��dA�d�d�Z��dA�d�d�Z��dA�d�d�Z��d�d�Z��dA�d�d�Z��dD�d�d �Z��dA�d!�d"�Z��dA�d#�d$�Z��dA�d%�d&�Z��dB�d'�d(�Z��dA�d)�d*�Z��dC�d+�d,�Z��dC�d-�d.�Z��dB�d/�d0�Z��dA�d1�d2�Z��dA�d3�d4�Z��dA�d5�d6�Z��dA�d7�d8�Z��dA�d9�d:�Z��dC�d;�d<�Z��dA�d=�d>�Z��dC�d?�d@�Z�dS(E�WebsiteManagerr+��NcCs||_||_dS�N)�domain�childDomain)�selfr1r2�r4�./usr/local/CyberCP/websiteFunctions/website.py�__init__4s
zWebsiteManager.__init__cCs�d}dt��d�}ddl}|j|t�|�d�}|��d}d}|dks*t��tjkr,d}t�	|�}	t�
|�}
t�||	�}t�
�}t�d�}
||
||
��|d	�}t|d
|d�}|��S)N�@https://platform.cyberpersons.com/CyberpanelAdOns/Adonpermission�all��name�IPr��data�statusr+�
)�packageList�	owernList�phps�
Randam_String�test_domain_dataz#websiteFunctions/createWebsite.html�
createWebsite)r�GetServerIP�requests�post�json�dumpsr%�decideServer�ent�	loadedACL�loadAllUsers�loadPackagesr'�findPHPVersionsr#�
generate_pass�lowerrr)r3�request�userIDr=�urlrG�response�Status�test_domain_status�
currentACL�
adminNames�packagesNamerB�rnpss�Data�procr4r4r5rE8s,�


��zWebsiteManager.createWebsitecCsdd}dt��d�}ddl}|j|t�|�d�}|��d}|dks(t��tjkr�t�	|�}t�
|�}	t�||�}
t|
�dkrAdg}
g}t
jj|d	�}d}
z-ddl}t�|�d
�j�d}|D]}|
dkrfn|d
|vrw|�|d
�|
d}
q^Wngd�}Ytjj|d�}t�d�}d}|
|	|||��|d�}t|d|d�}|��Sddlm}t|d��S)Nr7�
wp-managerr9rr<r>r+�Default��pkz1https://api.wordpress.org/core/version-check/1.7/�offers��current)z5.6z5.5.3z5.5.2��ownerr?)r@rA�
WPVersions�PluginsrCrDzwebsiteFunctions/WPCreate.html�createDatabase��reverse�pricing)rrFrGrHrIrJr%rKrLrMrNrO�lenr�objects�get�loads�text�appendr
�filterr#rQrRrr�django.shortcutsrlr)r3rSrTr=rUrGrVrWrYrZr[�
FinalVersions�userobj�counterrh�versionsrir\rXr]r^rlr4r4r5�WPCreateVsT�

��


��zWebsiteManager.WPCreatec
Cs�t�|�}tjj|d�}i}g|d<g|d<t�||�|d<z|dkr9tjj|d�}t�|jj	||�dkr9|�
�WntyL}zWYd}~nd}~ww|dD]}	|d�|	j
|	j|	jd��qQt|dd|di�}
|
��S)Nra�wp�wpsitesr+)�id�titlerUz!websiteFunctions/WPsitesList.html�wpsite)rrMrrorp�GetALLWPObjectsr�checkOwnershiprgr1�delete�
BaseExceptionrsr}r~�FinalURLrr)r3rSrT�DeleteIDrY�admin�tata�WPDelete�msg�subr^r4r4r5�ListWPSites�s2
���
�
�zWebsiteManager.ListWPSitesc
Csti}t�|�}tjj|d�}tjj|d�}t�|jj||�dkr!nt�	�Sz�d}	dt�
�d�}
ddl}|j|	t
�|
�d�}|�
�d}
t�d	�}|��|d
<|
dksYt��tjkr�||d<d|d<z|j�d
d�}|dkrytjj||d�}|��Wnty�}z
t|�}WYd}~nd}~wwt|d|d�}|��WSddlm}t|d��WSt|d|d�}|��YS)Nrar+r7r_r9rr<r>r?rCrrDr��rbrgz websiteFunctions/WPsiteHome.htmlrjrkrm)rrMrrorprr�rgr1�	loadErrorrFrGrHrIrJr#rQrRr%rKrL�GETrr�r��strrrrurlr)r3rSrT�WPidr�r]rY�WPobjr�rUr=rGrVrWr\�wstagingDeleter��dar^rlr4r4r5�WPHome�sR
�
����
�zWebsiteManager.WPHomec
Csi}t�|�}tjj|d�}t�d�r�tjj|d�|d<t�||d|�dkr(nt��St	�
|dj�}|d|d<z*|d|d<|ddksM|dd	kr[tjj|dj
d�g|d
<nt�||�|d
<Wnd|d<t�||�|d
<Yt|d|d�}|��Sd
dlm}	t|	d��S)Nrar_�	backupobjr+r:�FileName�
BackuptypezDataBase BackupzWebsite Backup�WPsitesz#websiteFunctions/WPRestoreHome.htmlrjrrkrm)rrMrrorp�CheckForPremFeaturer
�CheckIPBackupObjectOwnerr�rIrq�configr�WPSiteIDr�rrrurlr)
r3rSrT�BackupIDr]rYr�r�r^rlr4r4r5�RestoreHome�s2

��zWebsiteManager.RestoreHomecCsDi}t�|�}tjj|d�}z|dkrtjj|d�}|��WnYt�d�r�t�||�|d<tj�	�}g|d<|D]N}	t
�|	j�}
|	j
dkr\|d�|	j|	j
|
d|
dd��q<|	j
d	kr�|
d
}|dkrz|d�|	j|	j
||
dd��q<|d�|	j|	j
||
dd��q<t|d
|d�}|��Sddlm}
t|
d��S)Nrar_r��
backupconfigs�SFTP�Hostname�Path)r}�Type�HostNamer��S3�Provider�	Backblaze�	S3keynamez(websiteFunctions/RemoteBackupConfig.htmlrjrrkrm)rrMrrorprr�r�r�r8rIrqr��
configtypersrbrrrurlr)r3rSrTr�r]rYr��BackupconfigDelete�allcon�i�configrr�r^rlr4r4r5r�sZ
�



�

����z!WebsiteManager.RemoteBackupConfigc
Cs
i}t�|�}tjj|d�}||d<tjj|d�}z|dkr)tjj|d�}	|	��WnYt�d�ryt�	||�|d<tjj
|d�}
g|d<|
D]$}|j}t�
dt�t|���}
|d�|j|j|jj|j|j|
d��qIt|d	|d
�}|��Sddlm}t|d
��S)Nra�RemoteConfigIDr_r�)r�Backupschedulez%Y-%m-%d)r}�Name�RemoteConfiguration�	Retention�	Frequency�LastRunz&websiteFunctions/BackupfileConfig.htmlrjrrkrm)rrMrrorprrr�r�r�rt�lastrun�time�strftime�	localtime�floatrsrbr�r��
fileretention�timeintervelrrrurlr)r3rSrTr�r�r]rYr��RemoteConfigobj�RemoteBackupConfigDelete�allsecheduler�r�r�r^rlr4r4r5�BackupfileConfig0sB
�

��zWebsiteManager.BackupfileConfigcCs�i}t�|�}tjj|d�}||d<tjj|d�}z|dkr)tjj|d�}	|	��WnYt�d�rrt�	||�|d<tjj
|d�}
g|d<|
D]}ztjj|jd�}|d�
|j|jd��WqIYqIt|d|d	�}
|
��Sd
dlm}t|d��S)
Nra�RemoteScheduleIDr_r�rfr)r}�Titlez)websiteFunctions/AddRemoteBackupSite.htmlrjrrkrm)rrMrrorprrr�r�r�rtrr�rsrbr~rrrurlr)r3rSrTr��DeleteSiteIDr]rYr��RemoteBackupScheduleobj�RemoteBackupsitesDelete�allRemoteBackupsitesr�rr^rlr4r4r5�AddRemoteBackupsiteTs>
�
��z"WebsiteManager.AddRemoteBackupsitecCsi}t|d|d�}|��S)Nz'websiteFunctions/CyberpanelPricing.htmlrE)rr)r3rSrTr]r^r4r4r5�WordpressPricingwszWebsiteManager.WordpressPricingc
Cs�i}t�|�}tjj|d�}d}dt��d�}ddl}	|	j|t�	|�d�}
|
��d}|dks6t
��t
jkr�t
jj|d	��d
�}z/|dkrnt
jj|d�}
t�||
|�dkrn|
j}t�|�}|d}d|}t
�|�|
��Wnty�}zWYd}~nd}~wwg|d
<|D]<}z
tjj|jd�}|j}Wnd}Yz|j}t�|�}|d}|d}Wnd}Y|d
�|j|||d��q�t|d|d�}|��Sddlm}t|d��S)Nrar7r_r9rr<r>r+rf�-idr:zrm -r /home/backup/%s.tar.gz�jobzWebsite Not Foundr��BackupDestinationzBackup type not exists)r}r~r�r�z$websiteFunctions/RestoreBackups.htmlrjrkrm) rrMrrorprFrGrHrIrJr%rKrLr
rt�order_byr�r�rq�executionerr�r�rr�r~rsr}rrrurlr)r3rSrTr�r]rYr�rUr=rGrVrW�backobj�DeleteIDobjr��confr��commandr�r�r�webr�r�r^rlr4r4r5�RestoreBackups|sj
�

���


��zWebsiteManager.RestoreBackupscCs�|j�d�}t�|�}tjj|d�}tjj|d�}t�|jj	||�dkr%nt�
�Sddlm}|�
|jj�}d|}	d}
dt��d	�}ddl}|j|
t�|�d
�}
|
��d}|dksbt��tjkr�t�d�}d
|	�d�|jjd||jf}t�|�d
|	�d�|jj||jf}t�|�i}|j�d�r�|jdd�}n|j}d||d<d|d<||d<t|d|d�}|��Sddl m!}t"|d��S)Nr}rar+rr&�/usr/local/lsws/lsphp%s/bin/phpr7r_r9r<r>r?zsudo -u %s zr /usr/bin/wp user create autologin %s --role=administrator --user_pass="%s" --path=%s --skip-plugins --skip-themeszautologin@cloudpages.cloudzZ /usr/bin/wp user update autologin --user_pass="%s" --path=%s --skip-plugins --skip-themes�/���z
https://%srU�	autologin�userName�passwordzwebsiteFunctions/AutoLogin.htmlrjrkrm)#r�rprrMrrorr�rgr1r��managePHP.phpManagerr'�getPHPString�phpSelectionrFrGrHrIrJr%rKrLr#rQ�externalApp�pathr�r��endswithrrrurlr)r3rSrTr�rYr�r�r'�php�FinalPHPPathrUr=rGrVrWr�r�r�r^rlr4r4r5�	AutoLogin�sP
�

�

�
�zWebsiteManager.AutoLoginc
Csft�d�r't�|�}tjj|d�}tjj|d�}d|i}t|d|d�}|�	�Sddl
m}	t|	d	��S)
Nr_rarf�Selectedpluginsz(websiteFunctions/WPConfigurePlugins.htmlrjrrkrm)
rr�rMrrorpr
rtrrrurlr)
r3rSrTr=rYrwr�r]r^rlr4r4r5�ConfigurePlugins�s

�zWebsiteManager.ConfigurePluginscCslddlm}t�d�r0t�|�}t�|�}t�||�}t��}|||d�}	t	|d|	d�}
|
�
�St|d��S)Nrrkr_�r@rArBz$websiteFunctions/WPAddNewPlugin.htmlrjrm)rurlrr�rMrNrOr'rPrrr)r3rSrTr=rlrYrZr[rBr]r^r4r4r5�Addnewplugin
s


�zWebsiteManager.Addnewpluginc
Cs�z@t�d�r1t�|�}|d}dt|�}ddl}|�|�}|��}d|d�}	t�|	�}
t|
�WSdddd�}	t�|	�}
t|
�WSt	yc}zddt|�d�}	t�|	�}
t|
�WYd}~Sd}~ww)	Nr_�
pluginnamezRhttp://api.wordpress.org/plugins/info/1.1/?action=query_plugins&request[search]=%srr+)r>�plugnszPremium feature not available.�r>�createWebSiteStatus�
error_message)
rr�rMr�rGrprIrJrr�)r3rTr=rYr�rUrG�res�r�data_ret�	json_datar�r4r4r5�SearchOnkeyupPlugins,

�






��z"WebsiteManager.SearchOnkeyupPluginc
Cs�z0t�|�}tjj|d�}|d}|d}t|t�|�|d�}|��ddi}t�|�}	t	|	�WSt
yS}
zddt|
�d�}t�|�}	t	|	�WYd}
~
Sd}
~
ww)	Nrar�r�)r�r�rgr>r+r)r>�AddNewpluginAjaxr�)rrMrrorpr
rIrJ�saverr�r�)r3rTr=rYrwr�r��addplr�r�r�r4r4r5r�;s 



��zWebsiteManager.AddNewpluginAjaxc
Cs�i}t�|�}tjj|d�}tjj|d�}t�|||�dkrnt��St�	|j
�}||d<||d<|j|d<t|d|d�}	|	�
�S)Nrar+r��	pluginbID�
BucketNamez"websiteFunctions/WPEidtPlugin.htmlrj)rrMrrorpr
�CheckIPPluginObjectOwnerr�rIrqr�r�rr)
r3rSrTr�r]rYr��	pluginobj�lmor^r4r4r5�
EidtPluginTs

�zWebsiteManager.EidtPluginc

Cs�zWt�|�}tjj|d�}tjj|d�}|d}|d}tjj||d�}t�|||�dkr.nt��WSg}	t�	|j
�}	|	�|�t�|	�|_
|�
�ddi}
t�|
�}t|�WStyz}zddt|�d�}
t�|
�}t|�WYd}~Sd}~ww)	Nrar��pluginbBucketIDr�r+r>r�r>�deletesPlginr�)rrMrrorpr
r�r�rIrqr��removerJr�rr�r�)
r3rTr=rYr�rwr�r��obj�abr�r�r�r4r4r5r�hs0





��zWebsiteManager.deletesPlginc
CsTz�t�|�}tjj|d�}tjj|d�}|d}|d}tjj||d�}t�|||�dkr.nt��WSt�	|j
�}	z$|	�|�}
td|
�|
dkr\ddt
d�d	�}t�|�}t|�WWSWng}
t�	|j
�}
|
�|�t�|
�|_
|��Yd
di}t�|�}t|�WSty�}zddt
|�d	�}t�|�}t|�WYd}~Sd}~ww)Nrar�r�r�r+zindex.....%srzAlready Save in your Plugin lisr�r>)rrMrrorpr
r�r�rIrqr��index�printr�rJrrsr�r�)r3rTr=rYr�rwr�r��pObj�listofpluginr�r�r�r�r�r4r4r5�
Addplugineidt�sD



�




��zWebsiteManager.AddplugineidtcCs:t�|�}t�||�}t��}t|d||d�d�}|��S)Nz#websiteFunctions/modifyWebsite.html)�websiteListrB�
modifyWebsite)rrM�findAllSitesr'rPrr)r3rSrTr=rY�websitesNamerBr^r4r4r5r�s

�zWebsiteManager.modifyWebsitecC�0t�|�}t�||�}t|dd|id�}|��S)Nz#websiteFunctions/deleteWebsite.htmlr�
deleteWebsite�rrMrrr�r3rSrTr=rYrr^r4r4r5r	�s
�zWebsiteManager.deleteWebsitec	CsZt�|�}t�||�}ztjj|d�}|jdkr(t�||�}|dj|_|�	�WnYztjj|d�}t
jj|jd�j}Wn)ztjj|d�}t�||�}|dj|_|�	�|dj}Wnd}YYd}	dt��d�}ddl
}
|
j|	t�|�d�}|��d}d}
|d	ks�t��tjkr�d	}
t�d
�}t|d|t��||
|d��}|��S)
Nrar�NONEr7r8r9r<r>r+r?z"websiteFunctions/createDomain.html)rrBrCrD�defaultSite)rrMrrrorpr
�findWebsiteObjectsr}r�rr1rFrGrHrIrJr%rKrLr#rQrr'rPr)r3rSrTr=rYrr��websites�
defaultDomainrUrGrVrWrXr\r^r4r4r5�CreateNewDomain�sR

���

��zWebsiteManager.CreateNewDomaincCr)Nz$websiteFunctions/suspendWebsite.htmlr�suspendWebsiter
rr4r4r5�	siteState�s
�zWebsiteManager.siteStatecCs.t�|�}|�||�}t|dd|i�}|��S)Nz"websiteFunctions/listWebsites.html�
pagination)rrM�websitePaginationrr)r3rSrTr=rYrr^r4r4r5�listWebsites�s
�zWebsiteManager.listWebsitesc
CsHt�|�}t�|�}t�||�}t��}|||d�}t|d|�}	|	��S)Nr�z&websiteFunctions/listChildDomains.html)rrMrNrOr'rPrr)
r3rSrTr=rYrZr[rBr]r^r4r4r5�listChildDomainss

�zWebsiteManager.listChildDomainscCs\t�|�}tjj|d�}t�|j�d�||�dkrnt��St|dd|j�d�i�}|�	�S)Nrar1r+zwebsiteFunctions/listCron.html)
rrMrrorpr�r�r�rr�r3rSrTr=rYr�r^r4r4r5�listCrons
�zWebsiteManager.listCroncCszt�|�}tjj|d�}t�|j||�dkrnt��St|j�}|�	�\}}d|jd}	t
|d|j||	|d��}
|
��S)Nrar+�/home/�/public_htmlz!websiteFunctions/domainAlias.html)�masterDomain�aliasesr��noAlias)rrMrrorpr�r1r�r �fetchAlisForDomainsrr)r3rSrTr=rYr��aliasManagerr�
finalAlisListr�r^r4r4r5�domainAliass

�zWebsiteManager.domainAliasc!
Csl�zt�|�}tjj|d�}|d}tjj|d�}t�|jj||�dkr%nt�	�WS|j
}tjj|jd�}|j
}	|j}
t�|
�}d|}d|	||f}
t�|
dd�}t�|�}d|	||f}
t�|
�}|�d�d	krmd}nd
}d|	||f}
t�|
�}d
}|�d�D]
}|�d
�d	kr�d}nq�d|	||f}
t�|
�}t|��d	�}d|	||f}
t�|
�}|��d	}|�d�d	kr�d
}nd}|jj}d|��}|�d|��}tj
�|�r�d}nd
}d|	|j
f}
t�|
�}|�d�d	kr�d}nd
}|�d�||||||d�}dd|d�}t�|�}t|�WSt�y5} zd
d
t| �d�}t�|�}t|�WYd} ~ Sd} ~ ww)Nrar�r+r��nsudo -u %s %s -d error_reporting=0 /usr/bin/wp core version --skip-plugins --skip-themes --path=%s 2>/dev/nullTzssudo -u %s %s -d error_reporting=0 /usr/bin/wp plugin status litespeed-cache --skip-plugins --skip-themes --path=%s�Status: Activer�r�asudo -u %s %s -d error_reporting=0 /usr/bin/wp config list --skip-plugins --skip-themes --path=%s�
zWP_DEBUG	true	constantzlsudo -u %s %s -d error_reporting=0 /usr/bin/wp option get blog_public --skip-plugins --skip-themes --path=%szmsudo -u %s %s -d error_reporting=0 /usr/bin/wp maintenance-mode status --skip-plugins --skip-themes --path=%sz
not activerr�zsudo -u %s cat %s/wp-config.phpz'DISABLE_WP_CRON', 'true')�version�lscache�	debugging�searchIndex�maintenanceMode�passwordprotection�wpcron�None)r>r��ret_data�r>�
installStatusr�) rrMrrorprr�rgr1r�r�r�owner_idr�r�r�r%�outputExecutioner�html�escape�find�split�int�
splitlines�os�exists�rstriprIrJrr�r�)!r3rTr=rYr��WPManagerIDrr��Webobj�Vhuser�
PHPVersionr�r�r�r'�lscacheer(�stdoutr)�items�	stdoutput�searchindex�maintenanceMod�resultr+�	vhostName�vhostPassDir�passwdr-�fbr�r�r�r4r4r5�FetchWPdata1s�


�
�
�
��
�


�


��zWebsiteManager.FetchWPdatac
C�zdt�|�}tjj|d�}|d}tjj|d�}t�|jj||�dkr$nt�	�WS|j
}tjj|jd�}|j
}	|j}
t�|
�}d|}d|	||f}
t�|
�}|��d}dd|d�}t�|�}t|�WSty�}zd	d	t|�d
�}t�|�}t|�WYd}~Sd}~ww)Nrar�r+r�zosudo -u %s %s -d error_reporting=0 /usr/bin/wp plugin list --skip-plugins --skip-themes --format=json --path=%sr�r.)r>r��pluginsrr0�rrMrrorprr�rgr1r�r�rr2r�r�r�r%r3r9rIrJrr�r��r3rTr=rYr�r=rr�r>r?r@r�r�r�rDr�r�r�r4r4r5�GetCurrentPlugins��8


�



��z WebsiteManager.GetCurrentPluginsc
CrM)Nrar�r+r�znsudo -u %s %s -d error_reporting=0 /usr/bin/wp theme list --skip-plugins --skip-themes --format=json --path=%sr�r.)r>r��themesrr0rOrPr4r4r5�GetCurrentThemes�rRzWebsiteManager.GetCurrentThemesc
Cs�zIt�|�}tjj|d�}|d}tjj|d�}t�|jj||�dkr$nt�	�WSddl
m}|�|j
���d��}dd|d�}	t�|	�}t|�WStyl}
zddt|
�d	�}	t�|	�}t|�WYd}
~
Sd}
~
ww)
Nrar�r+r��phpUtilitiesr�r.)r>r�r|r0)rrMrrorprr�rgr1r��plogical.phpUtilitiesrV�GetStagingInJson�
wpstaging_setr8r�rIrJrr�r�)r3rTr=rYr�r=rrVr�r�r�r4r4r5�fetchstaging�s&




��zWebsiteManager.fetchstagingc
Csz�t�|�}tjj|d�}|d}tjj|d�}t�|jj||�dkr$nt�	�WSt
�|jj�}d|}|�d|j
�d�}	t�|	|jjddd�\}
}|�d�d	kr\|�d
�}t�|�}nd|d�}
t�|
�}t|�WS|�d
|j
�d�}	t�|	|jjddd�\}
}|�d�d	kr�|�d
�}t�|�}nd|d�}
t�|
�}t|�WS|�d|j
�d�}	t�|	|jjddd�\}
}|�d�d	kr�|�d
�}t�|�}nd|d�}
t�|
�}t|�WSdd|||d�}
t�|
�}t|�WSt�y}zddt|�d�}
t�|
�}t|�WYd}~Sd}~ww)Nrar�r+r�zZ -d error_reporting=0 /usr/bin/wp config get DB_NAME  --skip-plugins --skip-themes --path=z 2>/dev/nullT�Error:r�r&r�r>r�zZ -d error_reporting=0 /usr/bin/wp config get DB_USER  --skip-plugins --skip-themes --path=z_ -d error_reporting=0 /usr/bin/wp config get table_prefix  --skip-plugins --skip-themes --path=r.)r>r��DataBaseUser�DataBaseName�tableprefixr0)rrMrrorprr�rgr1r�r'r�r�r�r%r3r�r6r<r4r5rIrJrr�r�)r3rTr=rYr�r=rr�r�r��	retStatusrDr^r�r�r]r_r�r4r4r5�
fetchDatabase�sZ













�


��zWebsiteManager.fetchDatabasec
Cs�z�t�|�}tjj|d�}|d}|d}|d}|d}tjj|d�}	t�|	jj||�dkr0nt�	�WSt
�|	jj�}
d|
}|dkr`|�d	�|	j
}t�||	jj�}
|
�d
�dkr_t|
��n;|dkr�|�d
�|	j
}t�||	jj�}
|
�d
�dkrt|
��n|�d�|	j
}t�||	jj�}
|
�d
�dkr�t|
��||	_||	_||	_|	��ddd�}t�|�}t|�WSty�}zddt|�d�}t�|�}t|�WYd}~Sd}~ww)Nrar�ri�Themes�AutomaticUpdatesr+r��Disabledza -d error_reporting=0 /usr/bin/wp config set WP_AUTO_UPDATE_CORE false --raw --allow-root --path=zSuccess:r�zMinor and Security Updatesz[ -d error_reporting=0 /usr/bin/wp config set WP_AUTO_UPDATE_CORE minor --allow-root --path=z` -d error_reporting=0 /usr/bin/wp config set WP_AUTO_UPDATE_CORE true --raw --allow-root --path=r.r\rr0)rrMrrorprr�rgr1r�r'r�r�r�r%r3r�r6r��AutoUpdates�
PluginUpdates�ThemeUpdatesr�rIrJrr�)r3rTr=rYr�r=rirbrcrr�r�r�rGr�r�r�r4r4r5�SaveUpdateConfig8sT

��



��zWebsiteManager.SaveUpdateConfigc
CsFzt�|�}tjj|d�}|d}|d}tjj|d�}tjj|d�}t�|jj||�dkr/nt�	�WSt�|jj||�dkr@nt�	�WSi}	|j
|	d<||	d<||	d<dttdd	��|	d
<t
d|	�}
|
��t�d�ddd
|	d
d�}t�|�}t|�WSty�}
zddt|
�d�}t�|�}t|�WYd}
~
Sd}
~
ww)Nrar��	StagingIDr+�adminID�
statgingID�/home/cyberpanel/���'�tempStatusPath�DeploytoProductionr.r.�r>r1r�rorr0�rrMrrorprr�rgr1r�rbr�rr!�startr��sleeprIrJrr�)r3rTr=rYr�r=rkr�
StagingObj�	extraArgs�
backgroundr�r�r�r4r4r5rpps@





�


��z!WebsiteManager.DeploytoProductionc

Cszgt�|�}tjj|d�}|d}|d}tjj|d�}t�|jj||�dkr(nt�	�WSi}|j
|d<||d<||d<dttdd��|d	<t
d
|�}	|	��t�d�ddd|d	d
�}
t�|
�}t|�WSty�}zddt|�d�}
t�|
�}t|�WYd}~Sd}~ww)Nrar�r�r+rjrlrmrnro�WPCreateBackupr.r.rqrr0rr)
r3rTr=rYr�r=r�rrvrwr�r�r�r4r4r5rx�s8




�


��zWebsiteManager.WPCreateBackupc

Cszct�|�}tjj|d�}|d}|d}|d}i}|j|d<||d<||d<||d<|d|d<|d|d<d	ttd
d��|d<td
|�}	|	�	�t
�d�ddd|dd�}
t�
|
�}t|�WSty�}zddt|�d�}
t�
|
�}t|�WYd}~Sd}~ww)Nra�backupid�DesSite�Domainrj�	DesSiteIDr��homerlrmrnro�RestoreWPbackupNowr.r+r.rqrr0�rrMrrorprbr�rr!rsr�rtrIrJrr�)
r3rTr=rYr�ryr|r{rvrwr�r�r�r4r4r5r~�s8



�


��z!WebsiteManager.RestoreWPbackupNowc
CsRz�t�|�}tjj|d�}|d}|dkr-|d}|d}|d}|d}	||||	d�}
n8|d	kre|d
}|dkrR|d}|d
}
|d}|d}|||
||d�}
n|d}|d
}
|d}|||
|d�}
t||t�|
�d�}|��t	�
d�ddd�}t�|�}t|�WSty�}zdt
|�d�}t�|�}t|�WYd}~Sd}~ww)Nra�typer��Hname�Uname�Passwdr�)r��Username�Passwordr�r�r�r�r��	SecertKey�	AccessKey�EndUrl)r�r�r�r�r�)r�r�r�r�)rgr�r�r+r.r\r)rrMrrorprrIrJr�r�rtrr�r�)r3rTr=rYr��
ConfigTyper�r�r�r�r�r�r�r�r�r��mkobjr�r�r�r4r4r5�SaveBackupConfig�s^
��	�




��zWebsiteManager.SaveBackupConfigc
Csz�t�|�}tjj|d�}|d}|d}|d}|d}|d}	tjj|d�}
t�|
j�}zu|d}|dkr<|d	}
n
|d
krCd}
n|dkrId
}
|d}|d}t	j
��}|jd|
||dd�}t
����}z|j|d�Wn.ty�}z"tj�dt|��dt|�d�}t�|�}t|�WYd}~WWSd}~ww|	|d�}Wnty�}z
d|	i}WYd}~nd}~wwt|
|||t�|�tt���d�}|��ddd�}t�|�}t|�WSty�}zdt|�d�}t�|�}t|�WYd}~Sd}~ww)Nra�
FileRetention�
Backfrequency�ScheduleNamer��
BackupTyper�r�r��Amazonz"https://s3.us-east-1.amazonaws.com�Wasabizhttps://s3.wasabisys.comr�r��s3F)�endpoint_url�aws_access_key_id�aws_secret_access_key�verify)�BucketzCreating Bucket Error: %srr\)r�r�)rr�r�r�r�r�r+r.)rrMrrorprrIrqr��boto3�session�Session�clientr#rQrR�
create_bucketr��logging�CyberCPLogFileWriter�writeToFiler�rJrrr�r�)r3rTr=rYr�r�r�r�r�r��RemoteBackupConfigobj�Rconfig�provider�EndURlr�r�r�r�r�r�r�r�r��svobjr4r4r5�SaveBackupSchedule1sz


�	
��
���
�



��z!WebsiteManager.SaveBackupSchedulec
CsRz�t�|�}tjj|d�}|d}|d}tjj|d�}|j}|jj}	|jj	}
t
�|
�}d|}d|	||f}
t�
|
dddd�\}}|�d�dkrMt|��|�d	�}z	tjj|d
�}Wn	ttd���tjj|d�}t|||jd�}|��dd
d�}t�|�}t|�WSty�}zdt|�d�}t�|�}t|�WYd}~Sd}~ww)Nra�WpsiteIDr�r�zisudo -u %s %s -d error_reporting=0 /usr/bin/wp config get DB_NAME  --skip-plugins --skip-themes --path=%sr+r[r�r&)�dbNamezDataBase Not Found)rgr��databaser.r\r)rrMrrorprr�rgr�r�r'r�r%r3r6r�r<rr�rrrbr�rIrJr)r3rTr=rYr�r�r��	wpsiteobj�WPpath�VHuser�
PhpVersionr�r�r�rGrB�Finaldbname�DBobj�RemoteScheduleIDobjr�r�r�r�r4r4r5�AddWPsiteforRemoteBackupxsD

�




��z'WebsiteManager.AddWPsiteforRemoteBackupc
Cs�z8t�|�}tjj|d�}|d}|d}|d}tjj|d�}||_||_|��ddd�}	t	�
|	�}
t|
�WStyZ}zdt
|�d�}	t	�
|	�}
t|
�WYd}~Sd}~ww)	Nra�
ScheduleIDr�r�r+r.r\r)rrMrrorprr�r�r�rIrJrr�r�)r3rTr=rYr�r�r�r��scheduleobjr�r�r�r4r4r5�UpdateRemoteschedules�s&




��z$WebsiteManager.UpdateRemoteschedulesc
Cs�z�t�|�}tjj|d�}tj��}tj��}|D]F}d|j}d|}	t	�
|	|j�}
tj
�t	j�r8tj�|
�|
�d�dkr_z	tjj|d�Wqt||j||jdddd�}|��Yqq|D]N}|j
�d	�}
d
|
}	t	�
|	|jj�}
tj
�t	j�r�tj�|
�|
�d�dkr�|
�d	�}z	tjj|d�Wqbt|j|j||jdddd�}|��Yqbqbddd
�}t�|�}t|�WSty�}zdt|�d
�}t�|�}t|�WYd}~Sd}~ww)Nraz/home/%s/public_html/zcat %swp-config.php�No such file or directoryr�)r��Enabled)rgr~r�r�rerfrgr�zcat %s/wp-config.phpr+r.r\r)rrMrrorprr8rr1r%r3r�r:r�r;�	debugPathr�r�r�r6rr�r<�masterrIrJrr�r�)r3rTr=rYr��allweb�childdomainr��webpathr�rG�wpobj�chlid�	childPath�
fChildPathr�r�r�r4r4r5�ScanWordpressSite�s^



��	
��



��z WebsiteManager.ScanWordpressSitec
Cs:zyt�|�}tjj|d�}|d}tjj|d�}t�|jj||�dkr$nt�	�WS|j
}tjj|jd�}|j
}	|j}
t�|
�}d|}d|	||f}
t�|
dd�}|�d�}d|	�d	|�d
|�d|��}
t�|
�}ddd|d
�}t�|�}t|�WSty�}zddt|�d�}t�|�}t|�WYd}~Sd}~ww)Nrar�r+r�r#Tr&zsudo -u � zQ -d error_reporting=0 /usr/bin/wp core download --force --skip-content --version=z --path=r.�r>r1r�rGrr0)rrMrrorprr�rgr1r�r�rr2r�r�r�r%r3r<rIrJrr�r�)r3rTr=rYr�r=rr�r>r?r@r�r�r�r'�outputr�r�r�r4r4r5�
installwpcore�s<


�




��zWebsiteManager.installwpcorec
Csz_t�|�}tjj|d�}|d}tjj|d�}t�|jj||�dkr$nt�	�WS|j
}tjj|jd�}|j
}	|j}
t�|
�}d|}d|	||f}
t�|
�}ddd|d�}t�|�}t|�WSty�}zddt|�d	�}t�|�}t|�WYd}~Sd}~ww)
Nrar�r+r�zksudo -u %s %s -d error_reporting=0 /usr/bin/wp core verify-checksums --skip-plugins --skip-themes --path=%sr.r�rr0)rrMrrorprr�rgr1r�r�rr2r�r�r�r%r3rIrJrr�r�)r3rTr=rYr�r=rr�r>r?r@r�r�r�rGr�r�r�r4r4r5�
dataintegrity s6


�



��zWebsiteManager.dataintegrityc
C�Lz�t�|�}tjj|d�}|d}|d}|d}tjj|d�}t�|jj||�dkr,nt�	�WS|j
}	tjj|jd�}
|
j
}|
j}t�|�}
d|
}i}|j|d<||d<||d<||d<|	|d	<||d
<td|�}|��t�d�dd
d�}t�|�}t|�WSty�}zddt|�d�}t�|�}t|�WYd}~Sd}~ww)Nrar��plugin�pluginarrayr+r�rjr�r�r?�UpdateWPPluginr.r.r\rr0�rrMrrorprr�rgr1r�r�rr2r�r�r�rbr!rsr�rtrIrJrr�r��r3rTr=rYr�r=r�r�rr�r>r?r@r�r�rvrwr�r�r�r4r4r5�
UpdatePluginsG�F









��zWebsiteManager.UpdatePluginsc
Cr�)Nrar��Theme�
Themearrayr+r�rjr�r�r?�
UpdateWPThemer.r.r\rr0r��r3rTr=rYr�r=r�r�rr�r>r?r@r�r�rvrwr�r�r�r4r4r5�UpdateThemeswr�zWebsiteManager.UpdateThemesc
Cr�)Nrar�r�r�r+r�rjr�r�r?�
DeletePluginsr.r.r\rr0r�r�r4r4r5r��r�zWebsiteManager.DeletePluginsc
CsBz}t�|�}tjj|d�}|d}|d}|d}tjj|d�}|j}	tjj|jd�}
t�	|j
j||�dkr7nt��WS|
j
}|
j}t�|�}
d|
}i}|j|d<||d<||d<||d<|	|d	<||d
<td|�}|��ddd
�}t�|�}t|�WSty�}zddt|�d�}t�|�}t|�WYd}~Sd}~ww)Nrar�r�r�r+r�rjr�r�r?�DeleteThemesr.r\rr0)rrMrrorprr�rr2r�rgr1r�r�r�r�rbr!rsrIrJrr�r�r�r4r4r5r��sD








��zWebsiteManager.DeleteThemesc
Csdz�t�|�}tjj|d�}|d}|d}tjj|d�}t�|jj||�dkr(nt�	�WS|j
}tjj|jd�}	|	j
}
|	j}t�|�}d|}
d|
|
||f}t�|�}|�d�dkrnd	|
|
||f}t�|�}t�d
�nd|
|
||f}t�|�}t�d
�ddd
�}t�|�}t|�WSty�}zddt|�d�}t�|�}t|�WYd}~Sd}~ww)Nrar�r�r+r�zfsudo -u %s %s -d error_reporting=0 /usr/bin/wp plugin status %s --skip-plugins --skip-themes --path=%sr$r�zjsudo -u %s %s -d error_reporting=0 /usr/bin/wp plugin deactivate %s --skip-plugins --skip-themes --path=%sr/zhsudo -u %s %s -d error_reporting=0 /usr/bin/wp plugin activate %s --skip-plugins --skip-themes --path=%sr.r\rr0)rrMrrorprr�rgr1r�r�rr2r�r�r�r%r3r6r�rtrIrJrr�r�)r3rTr=rYr�r=r�rr�r>r?r@r�r�r�rDr�r�r�r4r4r5�ChangeStatussN


�
�
�





��zWebsiteManager.ChangeStatusc
Cs2zut�|�}tjj|d�}|d}|d}tjj|d�}t�|jj||�dkr(nt�	�WS|j
}tjj|jd�}	|	j
}
|	j}t�|�}d|}
i}|j|d<||d<|
|d<||d	<|
|d
<td|�}|��ddd
�}t�|�}t|�WSty�}zddt|�d�}t�|�}t|�WYd}~Sd}~ww)Nrar��themer+r�rjr�r�r�r?�ChangeStatusThemesr.r\rr0)rrMrrorprr�rgr1r�r�rr2r�r�r�rbr!rsrIrJrr�r�)r3rTr=rYr�r=r�rr�r>r?r@r�r�rvrwr�r�r�r4r4r5r�7s@








��z!WebsiteManager.ChangeStatusThemesc
Cszkt�|�}tjj|d�}i}|j|d<|d|d<|d|d<|d|d<dttdd��|d	<tjj|dd�}t�	|j
j||�d
krFnt��WSt
d|�}|��t�d�d
d
d
|d	d�}t�|�}	t|	�WSty�}
zddt|
�d�}t�|�}	t|	�WYd}
~
Sd}
~
ww)Nrarj�
StagingDomain�StagingNamer�rlrmrnror+�CreateStagingNowr.r.rqrr0)rrMrrorprbr�rrr�rgr1r�r!rsr�rtrIrJrr�)r3rTr=rYr�rvrrwr�r�r�r4r4r5r�cs6




�


��zWebsiteManager.CreateStagingNowc
Cs:�z�t�|�}tjj|d�}|d}|d}|dkr#|d}|d}n|d}	tjj|d�}
t�|
jj||�dkr:nt�	�WS|
j
}tjj|
jd�}|j
}
|j}t�|�}d	|}|d
kr�|	ryd|
||f}t�|�}d|
||f}t�|�}�nqd
|
||f}t�|�}�nc|dkr�d|
||f}t�|�}|	r�d|
||f}t�|�}tj�dt|��d|
||f}t�|�}tj�dt|���n#d|
||f}t�|�}tj�dt|��d|
||f}t�|�}tj�dt|��n�|dk�r"d|
||f}t�|�}|	�rd|
||f}t�|�}n�d|
||f}t�|�}n�|dk�rPd|
||f}t�|�}|	�rCd|
||f}t�|�}n�d|
||f}t�|�}n�|dk�r}dtj�d�}|�d|�d|�d |j�d!|�d"t|
j��d#|j
��
}t�|�nm|d$k�r�d|
||f}t�|�}|	�r�d%|
||f}t�|�}tj�dt|��d|
||f}t�|�}tj�dt|��n,d&|
||f}t�|�}tj�dt|��d|
||f}t�|�}tj�dt|��dd'd(�}t�|�}t|�WSt�y}zd)d)t|�d*�}t�|�}t|�WYd}~Sd}~ww)+Nrar��setting�PasswordProtection�
PPUsername�
PPPassword�settingValuer+r�r(ztsudo -u %s %s -d error_reporting=0 /usr/bin/wp plugin install litespeed-cache --path=%s --skip-plugins --skip-themeszusudo -u %s %s -d error_reporting=0 /usr/bin/wp plugin activate litespeed-cache --path=%s --skip-plugins --skip-themeszwsudo -u %s %s -d error_reporting=0 /usr/bin/wp plugin deactivate litespeed-cache --path=%s --skip-plugins --skip-themesr)zisudo -u %s %s -d error_reporting=0 /usr/bin/wp litespeed-purge all --path=%s --skip-plugins --skip-themesznsudo -u %s %s -d error_reporting=0 /usr/bin/wp config set WP_DEBUG true --path=%s --skip-plugins --skip-themeszDebugging mk true 1  output:r%zDebugging output:zosudo -u %s %s -d error_reporting=0 /usr/bin/wp config set WP_DEBUG false --path=%s --skip-plugins --skip-themeszDebugging mk false 0  output:r*zqsudo -u %s %s -d error_reporting=0 /usr/bin/wp option update blog_public 1 --path=%s --skip-plugins --skip-themeszqsudo -u %s %s -d error_reporting=0 /usr/bin/wp option update blog_public 0 --path=%s --skip-plugins --skip-themesr+zosudo -u %s %s -d error_reporting=0 /usr/bin/wp maintenance-mode activate --path=%s --skip-plugins --skip-themeszqsudo -u %s %s -d error_reporting=0 /usr/bin/wp maintenance-mode deactivate --path=%s --skip-plugins --skip-themes�/usr/local/CyberCP/bin/python �!/plogical/virtualHostUtilities.pyz EnableDisablePP --username 'z' --password 'z' --virtualHostName � --path z --wpid z --virtualHostUser �Wpcronzusudo -u %s %s -d error_reporting=0 /usr/bin/wp config set DISABLE_WP_CRON true --path=%s --skip-plugins --skip-themeszvsudo -u %s %s -d error_reporting=0 /usr/bin/wp config set DISABLE_WP_CRON false --path=%s --skip-plugins --skip-themesr.r\rr0)rrMrrorprr�rgr1r�r�rr2r�r�r�r%r3r�r�r�r�r�
cyberPanelr}r�rIrJrr�)r3rTr=rYr�r=r�r�r�r�rr�r>r?r@r�r�r�rDrB�execPathr�r�r�r4r4r5�UpdateWPSettings�s



�
���
�
�
�
�

�
��
�
��
����
�
�
�
�
�




��zWebsiteManager.UpdateWPSettingsc

Cs�z�t�|�}tjj|d�}i}||d<|j|d<|d|d<|d|d<|d|d<z|d	|d	<Wnd
|d	<Y|d|d<|d|d<|d|d
<|d|d<|d|d<|d|d<|d|d<|d|d<|d|d<|d|d<|d|d<z|d|d<|ddkr�d|d<WnYdttdd��|d<td|�}|�	�t
�d �d!d!d"|dd#�}t�
|�}t|�WSty�}	zd$d$t|	�d%�}t�
|�}t|�WYd}	~	Sd}	~	ww)&NrarYrjr1�
domainName�	WPVersionr~�	blogTitle�pluginbucketz-1�	adminUser�PasswordByPass�
adminPassword�Email�
adminEmailrc�updatesrirb�websiteOwner�packager}�
apacheBackendr���1rlrmrnro�wordpressInstallNewr.r+r.rqrr0r�
r3rTr=rYr�rvrwr�r�r�r4r4r5�submitWorpressCreation-s\


�

�


��z%WebsiteManager.submitWorpressCreationc
Cs��z�t�|�}|d}|d}|d}|d}|d��}|d�d�dkr^d}	d	t��|dd
�}
ddl}|j|	t�|
�d�}|��d
}
|
dkr^dd|��dd�}t�|�}t	|�WSt
jj|d�}t
jj|d�}t�
|d�dkr{t�dd�WSt�|||�dkr�t�dd�WS|ddkr�t�|�dkr�dddd�}t�|�}t	|�WSt�|�s�dddd�}t�|�}t	|�WSt�|�r�|�d�dkr�dddd�}t�|�}t	|�WSz|d}d}Wnd�t�d|��dd�ttdd ��}Yzd}	tjj|d"�}d#|jt|�f}|d!}q�Yd$ttdd ��}zt|d%�}Wnd&}Yzt|d'�}Wnd(}Yddl}d}d)tjd*}|d+|d,|d-|d.|d/td!�d0td!�d1t|d2�d3|d4|d5|d6|d7|}t�|�t �!d8�d!d!d9||d:�}t�|�}t	|�WSt"�y�}zddt|�d�}t�|�}t	|�WYd}~Sd}~ww);Nr�r�r�r�r��cyberpanel.websiter��>https://platform.cyberpersons.com/CyberpanelAdOns/CreateDomain�test-domain�r:r;r1rr<r>r�r0ra�r�rEr�r��Blacklisted domain.r��Invalid domain.z--zInvalid email.�HA�nobodyr��	[a-zA-Z]+�rmrnr+)r��%s%srlr��0�
mailDomainr�r�r�z% createVirtualHost --virtualHostName � --administratorEmail � --phpVersion 'z' --virtualHostUser � --ssl �
 --dkimCheck � --openBasedir �openBasedirz --websiteOwner "z
" --package "z" --tempStatusPath �
 --apache z --mailDomain %sr.r.)r>r�r�ro�	LinuxUser)#rrMrRr6rFrGrHrIrJrrrorp�currentContextPermission�
loadErrorJson�checkOwnerProtection�CheckDomainBlackList�
validatorsr1�email�join�re�findallr�rrr��pwdrr�r%�popenExecutionerr�rtr�)r3rTr=rYr1r�r��packageNamer�rU�domain_datarGrV�
domain_statusr�r��
loggedUser�newOwnerr�r�rx�tWebror�rrr�r�r4r4r5�submitWebsiteCreation_s�
�








*�
�����������
�����������

�


��z$WebsiteManager.submitWebsiteCreationc
Cs�zct�|�}tjj|d�}z|d}Wnd}Y|d}|d}|dkr0|d}|d}	ntj|d}
tj�	|
�rAd	|d
<t
jj|d�j}dtt
d
d��}t�|�sgdddd�}t�|�}
t|
�WS|d�d�dkr�d}dt��|dd�}ddl}|j|t�|�d�}|��d}|dkr�dd|��dd�}t�|�}
t|
�WSt�|||�d	kr�nt�dd�WS|d�d�dkr�t�dd�WS|dd	kr�d	|d<|dkr�t|	�dkr�|	�d�}	d|d|	}	nd|d|}	nd|�d �}	zt|d
�}Wnd!}Yd"tjd#}|d$|d%|d&|d'td	�d(td	�d)t|d�d*|	d+|jd,|d-|d.t|���}t�|�t �!d/�d	d	d0|d1�}t�|�}
t|
�WSt"�y�}zddt|�d�}t�|�}
t|
�WYd}~Sd}~ww)2Nra�aliasrrr�r�r��.confr+r��r1rlrmrnr�r�r�r�r�r�r�r<r>r�r0r��..r�rr�rrrr�r�z createDomain --masterDomain � --virtualHostName rz' --ssl r	r
r�� --websiteOwner � --tempStatusPath r� --aliasDomain r.r.)r>r�r�ro)#rrMrrorpr(�configBasePathr:r�r;rr�r�rrr1rIrJrr6rFrGrHr�rrn�lstriprr�r�r%rr�rtr�)r3rTr=rYr�r rr1r�r��
apachePathror�r�rUrrGrVrr�r�r�r4r4r5�submitDomainCreation�s�




�


�������
����������

�


��z#WebsiteManager.submitDomainCreationc
Cs�zFt�|�}tjj|d�}|d}z|d}Wnd}Yt�|||�dkr(nt�dd�WSt|�}|�|�}t	�
ddd|d��}	t|	�WStyi}
zddt
|
�d	�}t	�
|�}	t|	�WYd}
~
Sd}
~
ww)
Nrarr rr+�fetchStatusr.)r>r,r�r=)r>r,r�)rrMrrorpr�rr�findChildDomainsJsonrIrJrr�r�)r3rTr=rYr�rr �	cdManagerr��
final_jsonr��	final_dicr4r4r5�fetchDomains.	s*



��zWebsiteManager.fetchDomainsc
Cs�zHt�|�}z|�|||d�}Wnty0}zi}d|d<|�||�WYd}~WSd}~ww|�||�}ddd||d�}t�|�}	t|	�WStyk}zddt	|�d�}
t�|
�}t|�WYd}~Sd}~ww)N�patternAddedr+�pager.�r>�listWebSiteStatusr�r=rr�r>r5r�)
rrM�searchWebsitesJsonr��getFurtherAccountsrrIrJrr�)r3rTr=rYr�r��tempDatarr0r/�dicr4r4r5�searchWebsitesJ	s,
���


��zWebsiteManager.searchWebsitesc

Cs�z9t�|�}t�||�}g}|D]}|jj|dd�D]}|�|�qq|�|�}ddd|d�}	t�|	�}
t	|
�WSt
y\}zddt|�d�}t�|�}t	|�WYd}~Sd}~ww)Nr2)�domain__istartswithr+r.)r>r5r�r=rr6)rrMr�childdomains_setrtrs�findChildsListJsonrIrJrr�r�)
r3rTr=rYr�childDomainsr��childr�r0r/r�r:r4r4r5�searchChilds^	s$
�



��zWebsiteManager.searchChildsc
Cs�z*t�|�}t|d�}|�|||�}|�||�}ddd||d�}t�|�}t|�WStyM}	zddt	|	�d�}
t�|
�}t|�WYd}	~	Sd}	~	ww)Nr3r+r.r4rr6)
rrMr8�findWebsitesJsonrrIrJrr�r�)r3rTr=rY�
pageNumberr�rr0r/r�r:r4r4r5r8s	s 
�


��z!WebsiteManager.getFurtherAccountsc
CsNz�t�|�}t|d�}t|d�}tj�tj�rtj	�
d�|�||�\}}tj�tj�r4tj	�
d�t�||�}tj�tj�rGtj	�
d�|�
t|�|�}	tj�tj�r\tj	�
d�|�|||��}
tj�tj�rrtj	�
d�ddd	|
|	d
�}t�|�}t|�WSty�}
zddt|
�d�}t�|�}
t|
�WYd}
~
Sd}
~
ww)
Nr3�
recordsToShowzFetch sites step 1..zFetch sites step 2..zFetch sites step 3..zFetch sites step 4..zFetch sites step 5..r+r.r4rr6)rrMr8r:r�r;r%r�r�r�r��recordsPointerr�
getPaginationrn�findWebsitesListJsonrIrJrr�r�)r3rTr=rYrCrD�
endPageNumber�finalPageNumberrrr�r0r/r�r:r4r4r5�fetchWebsitesList�	s:
�


��z WebsiteManager.fetchWebsitesListc
Cszbt�|�}t|d�}t|d�}|�||�\}}t�||�}g}	|D]}
|
jjdd�D]}|jd|
j��kr9q-|	�|�q-q$|�	t
|	�|�}|�|	||��}
ddd|
|d�}t�
|�}t|�WSty�}zddt|�d	�}t�
|�}
t|
�WYd}~Sd}~ww)
Nr3rDr��alaiszmail.r+r.r4r6)rrMr8rErr=rtr1rsrFrnr>rIrJrr�r�)r3rTr=rYrCrDrHrIrr?r�r@rr�r0r/r�r:r4r4r5�fetchChildDomainsMain�	s4
��


��z$WebsiteManager.fetchChildDomainsMainc
Cs�d}d}zd}t|�}|��}|�dd�d}Wnty6}ztj�dt|��d}WYd}~nd}~wwddlm	}	t
j�t
j�rJtj�d	�|D]�}
t
j�t
j�r[tj�d
�|
jdkrcd}nd}d
|
j�d�}t
j�t
j�rytj�|�z|	�|�}
Wnd}
Yt
j�t
j�r�tj�d�t�|
�\}}}}t
j�t
j�r�tj�d�zdt|�}Wn
dtd�}Y|
j|
j||
jj|
jj|||
d�}|dkr�|t�|�}d}qL|dt�|�}qL|d}|S)N�[r�/etc/cyberpanel/machineIPr&r+�!Failed to read machine IP, error:�
192.168.100.1rUzfindWebsitesListJson 1zfindWebsitesListJson 2�	Suspended�Active�/usr/local/lsws/conf/vhosts/�/vhost.conf�PHP 8.1zfindWebsitesListJson 3zfindWebsitesListJson 4�%sMB�r1r��	ipAddressr�r��state�diskUsed�
phpVersion�,�])�open�readr7r�r�r�r�r�rWrVr:r�r;r%r�rZr1�,WrapGetPHPVersionFromFileToGetVersionWithPHPr�	FindStatsr�r�r�r�rrIrJ)r3rr��checker�ipFile�f�ipDatarYr�rVrCrZ�vhFile�PHPVersionActual�	DiskUsage�DiskUsagePercentage�bwInMB�bwUsager[r:r4r4r5rG�	s^��

�z#WebsiteManager.findWebsitesListJsoncCsfd}d}zd}t|�}|��}|�dd�d}Wnty6}ztj�dt|��d}WYd}~nd}~wwddlm	}	|D]m}
t
jj|
j
jd	�}d
|j�d�}z|	�|�}
Wnd}
Y|
jdkrgd
}nd}tjj|j
d�}|
j|j|j||j
j|jj|t|
j�t|
j�t|
j�t|
j�|
d�
}|dkr�|t�|�}d}q?|dt�|�}q?|d}|S)NrNrrOr&r+rPrQrUrarTrUrVrRrS��user)
r}r1r�rYr�r�rZ�CPU�Ramr\r]r^)r_r`r7r�r�r�r�r�rWrVrrorpr�rbr1rarZrr�r�r�r�r8�	CPUsMySQL�CPUsSite�
MemorySite�MemoryMySQLrIrJ)r3�
Dockersiter�rcrdrerfrYr�rVrC�websitergrhrZ�dpkgr:r4r4r5�findDockersitesListJson
sD��
&�z&WebsiteManager.findDockersitesListJsonc
Cs�d}d}zd}t|�}|��}|�dd�d}Wnty6}ztj�dt|��d}WYd}~nd}~ww|D]/}	|	j|	j	j|	j	j
||	j	jj|	j	j
j|	jd�}
|dkr_|t�|
�}d}q9|d	t�|
�}q9|d
}|S)NrNrrOr&r+rPrQ)r1rr�rYr�r�r�r]r^)r_r`r7r�r�r�r�r�r1r�r�r�r�r�rr�rIrJ)r3�childsr�rcrdrerfrYr�rCr:r4r4r5r>6
s0���z!WebsiteManager.findChildsListJsoncCs|||}||}||fSr0r4)r3r3�toShowrIrHr4r4r5rEU
szWebsiteManager.recordsPointercCslt|�t|�}g}d}|dkrd}|�|�|St|�}t|�d}td|�D]}|�|�|d}q(|S)Nr+��?)r�rsrr8�range)r3�recordsrz�pagesrrx�
finalPagesr�r4r4r5rFZ
s
	�

zWebsiteManager.getPaginationc
Cs^z�|d�d�dkr$d}dt��|dd�}ddl}|j|t�|�d�}t�|�}t�|d	�dkr8t�	d
d�WS|d}t
jj|d�}	t�
||	|�dkrMnt�	d
d�WSd
tjd}
|
d|}
t�|
�zddlm}|jj|d���WnYdddd�}t�|�}
t|
�WSty�}zddt|�d�}t�|�}
t|
�WYd}~Sd}~ww)N�websiteNamer�r��>https://platform.cyberpersons.com/CyberpanelAdOns/DeleteDomainr�r�rr<r	�websiteDeleteStatusrar+r�r�z3 deleteVirtualHostConfigurations --virtualHostName )�GDriveSitesr"r.�r>r�r�)r6rrFrGrHrIrJrMrrrrorpr�rr�r%r�websiteFunctions.modelsr�rtr�rr�r�)r3rTr=rUrrGrVrYr�r�r�r�r�r�r�r4r4r5�submitWebsiteDeletionm
sD�




��z$WebsiteManager.submitWebsiteDeletionc
Cs>z{|d�d�dkr$d}dt��|dd�}ddl}|j|t�|�d�}t�|�}tj	j
|d	�}|d}	zt|d
�}
Wnd}
Yt�|	||�dkrMnt�
dd�WSd
tjd}|d|	dt|
�}t�|�dddd�}t�|�}
t|
�WSty�}zddt|�d�}t�|�}
t|
�WYd}~Sd}~ww)Nr�r�r�r�r�r�rr<ra�
DeleteDocRootr+r�r�r�z  deleteDomain --virtualHostName z --DeleteDocRoot %sr.r�)r6rrFrGrHrIrJrMrrorpr8r�rrr�r�r%r3rr�)r3rTr=rUrrGrVrYr�r�r�r�r�r�r�r4r4r5�submitDomainDeletion�
sB�
�



��z#WebsiteManager.submitDomainDeletionc
Cs
z�t�|�}t�|d�dkrt�dd�WS|d}|d}tjj|d�}tjj|d�}t�|||�dkr5nt�dd�WS|d	krt	j
d
|}d|d|d
}	t�|	�|j
��}
|
D]}t	j
d
|j}d|d|d
}	t�|	�q]t��d|_nPt	j
d
|}d|d
d|}	t�|	�d|}	t�|	�|j
��}
|
D]"}t	j
d
|j}d|d
d|}	t�|	�d|}	t�|	�q�t��d|_|��ddd�}t�|�}
t|
�WSt�y}zdt|�d�}t�|�}
t|
�WYd}~Sd}~ww)Nrr�
websiteStatusr�rZr"rar+�Suspend�
/conf/vhosts/zmv r�z
-suspendedzchown -R lsadm:lsadm r.)r�r�)rrMrrrrorprr�r�Server_rootr%rr=r8r1r�r�reStartLiteSpeedSocketrZr�rIrJrr�r�)r3rTr=rYr�rZrvr��confPathr�r?rCr�r�r�r4r4r5�submitWebsiteStatus�
s\










��z"WebsiteManager.submitWebsiteStatusc
Cs�z�t�|�}t�|d�dkrt�dd�WStjj|d�}t�|d||�dkr(nt�dd�WSt�||�}t�	|�}d}d}|D]}	d	|	i}
|dkrT|t
�|
�}d}q@|d
t
�|
�}q@|d}d}d}|D]}	d|	i}
|dkr||t
�|
�}d}qh|d
t
�|
�}qh|d}|d}tjj|d
�}
|
j
}|
jj}|
jj}ddd|||||d�}t
�|�}t|�WSty�}zddt|�d�}
t
�|
�}t|�WYd}~Sd}~ww)Nrr�modifyStatusra�websiteToBeModifiedr+r�rN�packr]r^rZr"r.)r>r�r�r��packages�current_packrZ�currentAdmin)r>r�r�)rrMrrrrorpr�rOrNrIrJrr�r�rr�r�rr�r�)r3rTr=rYr��packs�adminsr�rcrCr:�
admin_datar��	modifyWebr�currentPackrgr�r/r�r4r4r5�submitWebsiteModifysZ

�


��z"WebsiteManager.submitWebsiteModifyc
CsFz�t�|�}t�|d�dkrt�dd�WSt�||�}t�|�}d}d}|D]}d|i}	|dkr:|t�|	�}d}q&|dt�|	�}q&|d}d}
d}|D]}d	|i}	|dkrb|
t�|	�}
d}qN|
dt�|	�}
qN|
d}
dd
||
d�}t�|�}t|�WSt	y�}
zdt
|
�d�}	t�|	�}t|�WYd}
~
Sd}
~
ww)
NrErr�rNr�r+r]r^rZr.)r>r�r�rZr\)rrMrrrOrNrIrJrr�r�)r3rTr=rYr�r�r�rcrCr:r�r�r/r�r4r4r5�fetchWebsiteDataJSONOsF

�


��z#WebsiteManager.fetchWebsiteDataJSONc
Cs�z�|d}|d}|d}|d}|d}t�|�}t�|d�dkr)t�dd�WStjj|d	�}	t�||	|�d
kr:nt�dd�WStjj|d�}
t�||	|
�d
krRnt�dd�WSt	j
d
|}|d}dt	jd}
|
d|d|}
t�
|
�tjj|d�}
tjj|d�}tjj|d�}||_||_||_|
|_|��d}t�|�d
d
dd�}t�|�}t|�WSty�}zddt|�d�}t�|�}t|�WYd}~Sd}~ww)Nr1�
packForWebrr\r�rr�
saveStatusrar+r�r�r�rUr�r�� changePHP --phpVersion '�	' --path r")rz^/usr/local/CyberCP/bin/python /usr/local/CyberCP/plogical/IncScheduler.py UpdateDiskUsageForcer.�r>r�r�)rrMrrrrorpr��checkUserOwnerShiprr�r�r%rrrr�r�r�r�r�r3rIrJrr�r�)r3rTr=r1r�rr\�newUserrYr�rr��completePathToConfigFiler�r��webpackr�r�r�r�r4r4r5�saveWebsiteChanges�sR





��z!WebsiteManager.saveWebsiteChangesc
Cs�tjj|jd����rBt�|�}tjj|jd�}tjj|d�}t�	|j||�dkr*nt�
�Si}t�|j
�}||d<|jj|d<|j����|d<|j����|d<|jj|d<|j|d	<t�|�\}	}
}}|jj|d
<||d<||d<|
d
krzd
}
|
|d<|	|d<|jj|d<t��|d<d}
tj�|
�r�d|d<nd|d<zgddl}ddlm}d|j}|j� |jj!t"|d��#��}|�$��%d�}|�&|d�}|�'�}||}d|d<t(|j)�|d<|�*��+�dd�%d�|d<|ddkr�d|j|d<nd |j|df|d<Wnt,�y%}zd|d<t-j.�/t(|��WYd}~nd}~wwd!}
tj�|
��r4d|d"<nd|d"<t0|d#|�}|�1�St0|d#dd$d%��}|�1�S)&Nr"rar+�marketingStatus�ftpTotal�ftpUsed�
databasesUsed�databasesTotalr1�bwInMBTotalrkrl�d�	diskUsage�diskInMB�
diskInMBTotalrB�/home/cyberpanel/postfixrr��datetime�&/etc/letsencrypt/live/%s/fullchain.pemr��ascii�
%Y%m%d%H%M%SZ�viewSSL�days�utf-8�	authority�Denial�%s has SELF-SIGNED SSL.�%s has SSL from %s.�/home/cyberpanel/pureftpd�ftpzwebsiteFunctions/website.htmlzThis domain does not exists.��errorr1)2rrortr1r;rrMrprr�r�r$�checkIfEMEnabledr�r��ftpAccounts�	users_setr8�count�
databases_set�	dataBasesrrb�	bandwidth�	diskSpacer'rPr:r��OpenSSLr��crypto�load_certificate�FILETYPE_PEMr_r`�get_notAfter�decode�strptime�nowr�r��
get_issuer�get_componentsr�r�r�r�rr)r3rSrTr=rYrvr�r]r�rirjrkrl�servicePathr�r��filePath�x509�
expireData�	finalDater��diffr�r^r4r4r5�loadDomainHome�s|



����
�zWebsiteManager.loadDomainHomec
Cs�tjj|jd����r=t�|�}tjj|d�}t�	|j
||�dkr"nt��Stjj|j
d�}i}|j
j|d<|j����|d<|j����|d<|j
j|d<|j
|d<|j|d	<t�|�\}}	}
}|j
j|d
<|
|d<||d<|	d
krud
}	|	|d<||d<|j
j|d<t��|d<d}tj�|�r�d|d<nd|d<d}tj�|�r�d|d<nd|d<zhddl}
ddlm}d|j}|
j�|
jj t!|d��"��}|�#��$d�}|�%|d�}|�&�}||}d|d<t'|j(�|d<|�)��*�dd�$d�|d<|dd k�rd!|j|d<nd"|j|df|d<Wnt+�y2}zd|d<t,j-�.t'|��WYd}~nd}~wwt/|d#|�}|�0�St/|d#dd$d%��}|�0�S)&Nr"rar+r�r�r�r�r1r2r�rkrlr�r�r�r�rBr�rrr�r�r�r�r�r�r�r�r�r�r�r�r�r�z!websiteFunctions/launchChild.htmlz!This child domain does not existsr�)1rrortr2r;rrMrrpr�r1r�rr�r�r�r8r�r�r�rrbr�r�r'rPr:r�r�r�r�r�r�r_r`r�r�r�r�r�r�r�r�r�r�r�r�rr)r3rSrTr=rYr�rvr]rirjrkrlr�r�r�r�r�r�r�r�r�r�r^r4r4r5�launchChildsz





�����zWebsiteManager.launchChildcCs�t�|�}tjj|d�}|d}|d|_|d}t�|j||�dkr$nt�dd�S|dkr;d|jd	|jd
}nd|jd	|jd}d|}t�	|�}	|	�
d
�dkrdt�dddd��}
t
|
�Stjj|jd�}t�|||j�}|�
d�dkr�t�ddd|d��}
t
|
�S|�d�}d}
d}t|�D]S}t|�dkr�|�d�}|d�d�}|d�d�}|d�d��d�}|d�d�}|d�dd�}|||||d�}|dkr�|
t�|�}
d}q�|
d t�|�}
q�|
d}
t�ddd!|
d"��}
t
|
�S)#Nra�logType�virtualHostr3r+�	logstatusrr�/logs/z.access_log�
.error_log�	ls -la %s�->r��Symlink attack.�r>r�r�r"�1,Nonez?Not able to fetch logs, see CyberPanel main log file, Error: %sr&rNr?r�r�"r/r^��	r�)r1rYr��resource�sizer]r.�r>r�r�r=)rrMrrorpr1r�rr%r3r6rIrJrrr�
getAccessLogsr�r7�reversedrn�strip�replace)r3rTr=rYr�r�r3�fileNamer�rGr/rvr�r�rcrC�logDatar1rYr�r�r�r:r4r4r5�getDataFromLogFilepsl


����

��z!WebsiteManager.getDataFromLogFilecCst�|�}tjj|d�}|d|_|d}t�|j||�dkr nt�dd�Sd|jd|jd	}d
|}t�	|�}|�
d�dkrOt�ddd
d��}	t
|	�Stjj|jd�}
t�|||
j�}|�
d�dkrst�dddd��}	t
|	�St�ddd|d��}	t
|	�S)Nrar�r3r+r�rrr�r�r�r�r�r�r�r"r�z5Not able to fetch logs, see CyberPanel main log file!r.r�)rrMrrorpr1r�rr%r3r6rIrJrrr�getErrorLogsr�)r3rTr=rYr�r3r�r�rGr/rvr�r4r4r5�fetchErrorLogs�s4


��
�zWebsiteManager.fetchErrorLogsc
Cs�t�|�}tjj|d�}|d|_t�|j||�dkrnt�dd�Sdd}t�	|��
d�d	krZtjd
|jd}d|}t�	|d
�}t
|�dkrYdddd�}t�|�}	t|	�Snd|j}t�	|�}d|}dd|d�}t�|�}	t|	�S)Nrar�r+�configstatusr�cat %s�&/usr/local/lsws/conf/dvhost_redis.conf�	127.0.0.1r�r�rU�cat �lsadmz&Configuration file is currently empty!)r>r�r�zredis-cli get "vhost:%s"zU#### This configuration is fetched from redis as Redis-Mass Hosting is being used.
%s)r>r��
configData)rrMrrorpr1r�rr%r3r6r�Server_root_pathrnrIrJr)
r3rTr=rYr�r�r�r�r>r/r4r4r5�getDataFromConfigFile�s0


�

�
z$WebsiteManager.getDataFromConfigFilecCslt�|�}|ddkrt�dd�S|d}|d|_t|�dkr.ddd�}t�|�}t|�Sd	d
}t�	|��
d�dkr�t��d
t
tdd��}t|d�}	|	�|�|	��tjd|jd}
dtjd}|d|
d|}t�	|�}|�
d�dkr�ddi}t�|�}t|�Sd|d�}
t�|
�}t|�Sd|j|�dd�f}t�|�ddi}t�|�}t|�S)Nr�r+r�rr�r�zOError: you are trying to save empty vhost file, your website will stop working.)r�r�r�r�r�r�rlrmrn�wr�rUr�r�z saveVHostConfigs --path � --tempPath r�zredis-cli set vhost:%s '%s'zS#### This configuration is fetched from redis as Redis-Mass Hosting is being used.
r�)rrMrr1rnrIrJrr%r3r6r�	checkHomer�rr_�write�closerr�rr�r�r�)r3rTr=rYr�r>r/r��tempPath�vhostr�r�r�r�r�r4r4r5�saveConfigsToFile
sD










�

z WebsiteManager.saveConfigsToFilec
Cs<t�|�}tjj|d�}|d|_t�|j||�dkrnt�dd�Sztjj|jd�}|j	d}|j
j}Wntjj|jd�}|j}d|jd	}Yz.d
|}	t
�|	|�}
t|
�dkrlddd�}t�|�}t|�WSd|
d
�}t�|�}t|�WSty�}
zdt|
�dd�}t�|�}t|�WYd}
~
Sd}
~
ww)Nrar�r+�
rewriteStatusrr"�
/.htaccessr�/public_html/.htaccessr�zRules file is currently empty�rr�)r�rewriteRulesr�)rr�r
)rrMrrorpr1r�rrr�r�r�rr%r3rnrIrJrr�r�)r3rTr=rYr��childDomr�r�rvr�r
r>r/r�r4r4r5�getRewriteRulesA
s<









��zWebsiteManager.getRewriteRulesc
Csvz�t�|�}tjj|d�}|d|_|d�d�}t�|j||�dkr$nt�dd�WSt	�
�dttd	d
��}t
|d�}|�|�|��ztjj|jd�}|jd
}	|jj}
Wnd|jd}	tjj|jd�}|j}
Yd||	f}t�||
�d|}t�|d�t��ddd�}
t�|
�}t|�WSty�}zdt|�d�}
t�|
�}t|�WYd}~Sd}~ww)Nrar�r
r�r+rr�/tmp/rmrn�wbr"rrrzcp %s %szrm -f %s�
cyberpanelr.r	)rrMrrorpr1�encoder�rrrr�rr_rrrr�r�r�rr%r�rr�rIrJrr�)r3rTr=rYr�r
rrr2r�r�rvr�r>r/r�r4r4r5�saveRewriteRulesh
sF








��zWebsiteManager.saveRewriteRulescCs@t�|�}tjj|d�}|d|_|d}|d}t�|j||�dkr$nt�dd�St�	�dt
td	d
��}t|d�}|�
|�|��dt
td	d
��}	t|	d�}|�
|�|��dtjd
}
|
d|jd|d|	}
t�|
�}|�d�dkr�ddd�}t�|�}
t|
�Stj�|�d|d�}t�|�}
t|
�S)Nrar��key�certr+�	sslStatusrrlrmrnr�r�r�z saveSSL --virtualHostName z --tempKeyPath z --tempCertPath r�r�r.)rr�)rrMrrorpr1r�rrrr�rr_rrrr�r%r3r6rIrJrr�r�r�)r3rTr=rYr�rr�tempKeyPathr�tempCertPathr�r�r�r�r4r4r5�saveSSL�
s<








�

zWebsiteManager.saveSSLcCs�t�|�}tjj|d�}|d|_|d}t�|j||�dkr nt�dd�Stj	d|j}|d}d	tj
d
}|d|d|}t�|�z^t
jj|jd
�}	|d|	_|	��|	jjdd�D]C}
z$tj	d|
j}|d}d	tj
d
}|d|d|}t�|�Wqaty�}ztj�dt|����WYd}~qad}~wwWntjj|jd
�}	|d|	_|	��Ydddd�}t�|�}
t|
�S)Nrar2r�r+�	changePHPrr�rUr�r�r�r�r"rKzError changing PHP for alias: r.)r>rr�)rrMrrorpr1r�rrr�r�r%rrr�r�r=rtr�r�r�r�r�rrIrJr)r3rTr=rYr�r\r�r�r�rvr r�r�r�r4r4r5r�
sF



"���



zWebsiteManager.changePHPcCs^�zt�|�}tjj|d�}|d|_t�|j||�dkrnt�dd�WStjj|jd�}tjj	|jd��
�r8nddd�}t�|�}t
|�WSt�d�g}d	tjd
}	|	d|j}	t�|	|j�}
t�d�t��tjksvt��tjkr|d|j}nd
|j}|
�d�dkr�d|}t�|�d|j|j|f}t�|�t�|	|j�}
|
�d�dkr�d|jid�}
t�|
�}t
|�WSd}|
�d�D]-}|r�|�dd�}t|�dkr�|d7}|�||d|d|d|d|d|dd��q�d|j|d�}
t�|
�}t
|�WSt�y.}ztj� t!|��dt!|�d�}t�|�}t
|�WYd}~Sd}~ww)Nrar1r+�getWebsiteCronrr"�You do not own this domain�rr�r��/plogical/cronUtil.py� getWebsiteCron --externalApp �/var/spool/cron/�/var/spool/cron/crontabs/�Permission deniedr�zchmod 644 %s�chown %s:%s %sz
0,CyberPanel,)rrn�cronsr&r�rr�r.r/�)�line�minute�hour�monthday�month�weekdayr�)"rrMrrorpr1r�rrrtr;rIrJrr*�CronPremrr�r�r%r3�decideDistro�centos�cent8r6r�r7rnrsr�r�r�r�r�)r3rTr=rYr�rvr:r�r"r�re�cronPathr�r�r/rxr$r7r�r4r4r5r�
sr











��


��zWebsiteManager.getWebsiteCronc
Csz�t�|�}tjj|d�}|d|_|d}t�|j||�dkr!nt�dd�WStjj	|jd��
�r3nddd	�}t�|�}t
|�WS|d8}tjj|jd�}z!t�d�d
tjd}	|	d|j}	t�|	|j�}
t�d�Wn"tjy�}zdd
d	�}t�|�}t
|�WYd}~WSd}~ww|
�d�}
|
|}|�dd�}t|�dkr�ddd	�}t�|�}t
|�WSd|j|d|d|d|d|d|dd�|d�}
t�|
�}t
|�WSt�y}zt|�dt|�d	�}t�|�}t
|�WYd}~Sd}~ww)Nrar1r$r+rrr"rrr�rrzUnable to access Cron filer&r�rr�zCron line incorrectr.r/r#)r%r&r'r(r)r��rrn�cronr$)rrMrrorpr1r�rrrtr;rIrJrr*r*rr�r�r%r3�
subprocess�CalledProcessErrorr7rnr�rr�)r3rTr=rYr�r$r:r�rvr�rer�r0r�r/r�r4r4r5�
getCronbyLine?sl







��



��


��zWebsiteManager.getCronbyLinec
Cs�z�t�|�}tjj|d�}|d|_|d}|d}|d}|d}|d}	|d}
|d	}t�|j||�d
kr9nt�dd�WStjj|jd
�}d||||	|
|f}
t	�
d
�dtjd}|d|j
dt|�d|
d}t�||j
�}t	�
d�|�d�dkr�d
|j
|
|d�}t�|�}t|�WSd|d�}t�|�}t|�WSty�}zdt|�d�}t�|�}t|�WYd}~Sd}~ww)Nrar1r$r%r&r'r(r)�cronCommandr+rrr"�%s %s %s %s %s %sr�rz saveCronChanges --externalApp � --line � --finalCron '�'�1,r�r/r)rrMrrorpr1r�rrr*r*rr�r�r�r%r3r6rIrJrr�)r3rTr=rYr�r$r%r&r'r(r)r�rv�	finalCronr�r�r�r/r:r�r�r4r4r5�saveCronChangess\


����
�





��zWebsiteManager.saveCronChangesc
CsHz�t�|�}tjj|d�}|d|_|d}t�|j||�dkr!nt�dd�WStjj|jd�}t	�
d�dtjd	}|d
|j
dt|�}t�||j
�}t	�
d�|�d�d
krsd|j
|�d�d|d�}	t�|	�}
t|
�WSd|d�}t�|�}t|�WSty�}
zdt|
�d�}t�|�}t|�WYd}
~
Sd}
~
ww)Nrar1r$r+�
addNewCronrr"r�rz remCronbyLine --externalApp r6r9r�r])�
remCronbyLinern�
removeLiner$)r=r�)rrMrrorpr1r�rrr*r*rr�r�r�r%r3r6r7rIrJrr�)r3rTr=rYr�r$rvr�r�r�r/r:r�r�r4r4r5r=�sB


�
�





��zWebsiteManager.remCronbyLinec
Csz�t�|�}tjj|d�}|d|_|d}|d}|d}|d}|d}	|d}
t�|j||�d	kr5nt�d
d�WStjj|jd�}t	�
�t	jksRt	�
�t	jkrXd
|j
}nd|j
}d|}
t	�|
d�d|j
|j
|f}
t	�|
d�t�d	�d|||||	|
f}dtjd}|d|j
d|d}t	�||j
�}t	�
�t	jks�t	�
�t	jkr�d|}
t	�|
�d}
t	�|
�t�d�|�d�dkr�d	|j
|d�}t�|�}t|�WSd|d�}t�|�}t|�WSt�y}zdt|�d�}t�|�}t|�WYd}~Sd}~ww)Nrar1r%r&r'r(r)r4r+r<rr"rrztouch %s�rootr!r5r�rz addNewCron --externalApp r7r8zchmod 600 %szsystemctl restart cronr9r�)r<rnr0)r<r�)rrMrrorpr1r�rrr%r+r,r-r�r�r*r*rr�r3�ubuntu�ubuntu20r6rIrJrr�r�)r3rTr=rYr�r%r&r'r(r)r�rvr.�commandTr:r�r�r�r/r:r�r�r4r4r5r<�s`






�





��zWebsiteManager.addNewCronc

Cs|z�t�|�}tjj|d�}|d|_|d}|d}t�|�s/dddd�}t�|�}t	|�WSt�
|j||�dkr:nt�d	d�WSd
|jd}	dtj
d
}
|
d|jd|dt|�d|	d|jd|j}
t�|
�}|�d�dkr{nd|dd�}t�|�}t	|�WSdddd�}t�|�}t	|�WSty�}zdt|�dd�}t�|�}t	|�WYd}~Sd}~ww)Nrar�aliasDomain�sslrr�)r>�createAliasStatusr�r+rErrr�r�z createAlias --masterDomain r'r� --sslPath rr%r�r�)rEr��existsStatusr.)rrMrrorpr1rrIrJrr�rrr�r�rr�r%r3r6r�)
r3rTr=rYr�rCrDr�r��sslpathr�r�r�r4r4r5�submitAliasCreationsZ




�������





��z"WebsiteManager.submitAliasCreationc
CsVz�t�|�}tjj|d�}|d|_|d}t�|j||�dkr!nt�dd�WSt�|||j�dkr3nt�dd�WSd|jd}d	t	j
d
}|d|jd|d
|d|j}t�
|�}|�d�dkrxdddd�}	t�|	�}
t|
�WSd|dd�}	t�|	�}
t|
�WSty�}zdt|�dd�}	t�|	�}
t|
�WYd}~Sd}~ww)NrarrCr+rrrrr�r�z issueAliasSSL --masterDomain r'rFrr�r�r.)rr�rG)rrMrrorpr1r�r�AliasDomainCheckrr�rr%r3r6rIrJrr�r�)r3rTr=rYr�rCrHr�r�r�r�r�r4r4r5�
issueAliasSSLPs8

(





��zWebsiteManager.issueAliasSSLc
Cs6zwt�|�}tjj|d�}|d|_|d}t�|j||�dkr!nt�dd�WSt�|||j�dkr3nt�dd�WSdt	j
d}|d	|jd
|}t�|�}|�
d�dkrhdd
dd�}t�|�}	t|	�WSd|dd�}t�|�}	t|	�WSty�}
zdt|
�dd�}t�|�}	t|	�WYd}
~
Sd}
~
ww)NrarrCr+�deleteAliasrr�r�z deleteAlias --masterDomain r'r�r�r.)rLr�rG)rrMrrorpr1r�rrJrr�r%r3r6rIrJrr�r�)r3rTr=rYr�rCr�r�r�r�r�r4r4r5�delateAliaszs6







��zWebsiteManager.delateAliasc

Cs�zCt�|�}|d|_|d}|ddkrnt�dd�WSdtjd}|d	|jd
|}t�|�}dddd�}t�	|�}t
|�WStyf}	zddt|	�d�}t�	|�}t
|�WYd}	~	Sd}	~	ww)
Nr��openBasedirValuer�r+�changeOpenBasedirrr�r�z& changeOpenBasedir --virtualHostName 'z' --openBasedirValue r.)r>rOr�)
rrMr1rrr�r%rrIrJrr�r�)
r3rTr=rYrNr�r�r�r�r�r4r4r5rO�s&





��z WebsiteManager.changeOpenBasedircC�Pt�|�}tjj|d�}t�|j||�dkrnt��St|dd|ji�}|�	�S)Nrar+z&websiteFunctions/installWordPress.htmlr��
rrMrrorpr�r1r�rrrr4r4r5�wordpressInstall��
zWebsiteManager.wordpressInstallc

CsZz�t�|�}tjj|d�}|d|_t�|j||�dkrnt�dd�WSt�	�i}||d<|d|d<|d|d<|d	|d	<|d
|d
<|d|d<|d
|d
<dt
tdd��|d<|ddkri|d|d<td|�}|�
�t�d�ddd|dd�}t�|�}t|�WSty�}	zddt
|	�d�}t�|�}t|�WYd}	~	Sd}	~	ww)Nrar1r+r1rr�r�r}r�r��passwordByPassr�r�rlrmrnrorr��	wordpressr.r.rqr0�rrMrrorpr1r�rrrr�rr!rsr�rtrIrJrr�r�r4r4r5�installWordpress�sB



�


��zWebsiteManager.installWordpressc

Csnz�|d}t�|�rnddddd�}t�|�}t|�WSt�d|���}|d}|�d	�dkrMd
|}t	�
t�|��ddddd�}t�|�}t|�WS|�d�dkrlddd
t�d|���d�}t�|�}t|�WS|�d�}	|	d}
z|	d}Wnd}Ydd||
d�}t�|�}t|�WSt
y�}zddd
t|�d�}t�|�}t|�WYd}~Sd}~ww)N�
statusFiler+r�100zInvalid status file.)�abortr1�installationProgress�
currentStatusr�r�z[200]zrm -f zSuccessfully Installed.z[404]r)rZr1r[r�r])r�CheckStatusFilleLocrIrJrr%r3r9r6r1�call�shlexr7r�r�)
r3rTr=rXr�r��
statusData�lastLiner��progressr\r[r�r4r4r5�installWordpressStatus�sT
�

�

�


�


��z%WebsiteManager.installWordpressStatuscCrP)Nrar+z#websiteFunctions/installJoomla.htmlr�rQrr4r4r5�
joomlaInstall rSzWebsiteManager.joomlaInstallc

CsFzt�|�}tjj|d�}|d|_t�|j||�dkrnt�dd�WSi}|d|d<|d|d<|d|d<|d	|d	<|d
|d
<dtt	dd
��|d<t
��|d	dkr_|d|d<td|�}|�
�t�d�ddd|dd�}t�|�}t|�WSty�}	zddt|	�d�}t�|�}t|�WYd}	~	Sd}	~	ww)Nrar1r+r1rrTr��prefixr}�siteNamerlrmrnrorr��joomlar.r.rqr0)rrMrrorpr1r�rr�rrrr!rsr�rtrIrJrr�r�r4r4r5�
installJoomla,s>



�


��zWebsiteManager.installJoomlacCs�t�|�}tjj|d�}tjj|jd�}t�|j||�dkrnt��Sd|jd}t	j
�|�rbd}t|�}	|	�
�}
|
�dd�d}t��}d	|d
||jd}
t|d|jd|
d
��}|��Sd|j|jf}t�||j�d|j|jf}d}t|d�}|�|�|��d||jf}t�|�d|j|j|jf}t�|�d|j|jf}t�||j�}t|d|j|dd��}|��S)Nrar"r+rlz.gitrOr&rzhttps://z
:%s/websites/z
/gitNotifyzwebsiteFunctions/setupGit.html)r��	installed�
webhookURL�+ssh-keygen -f /home/%s/.ssh/%s -t rsa -N ''zGHost github.com
IdentityFile /home/%s/.ssh/%s
StrictHostKeyChecking no
z/home/cyberpanel/configr�zmv %s /home/%s/.ssh/configz chown %s:%s /home/%s/.ssh/config�cat /home/%s/.ssh/%s.pub)r��
deploymentKeyri)rrMrrorprr1r�rr:r�r;r_r`r7r%�fetchCurrentPortrrr�r��
writelinesrr3)r3rSrTr=rYr�rvr�rdrerfrY�portrjr^r��
configContentr�rmr4r4r5�setupGitXsJ
�
�



�zWebsiteManager.setupGitc

Cs2zvt�|�}tjj|d�}|d|_t�|j||�dkrnt�dd�WSt�	�i}||d<|d|d<|d|d<|d	|d	<|d
|d
<dt
tdd
��|d<|d|d<td|�}|�
�t�d�dd|dd�}t�|�}t|�WSty�}	zdt
|	�d�}t�|�}t|�WYd}	~	Sd}	~	ww)Nrar1r+r1rr�r��username�reponame�branchrlrmrnro�defaultProvider�gitr.r.)r1r�ro)r1r�rVr�r4r4r5�setupGitRepo�s<



�


��zWebsiteManager.setupGitRepoc
Cs�zi}|j|d<td|�}|��ddd�}t�|�}t|�WStyA}zdt|�d�}t�|�}t|�WYd}~Sd}~ww)Nr1�pullr+r.)�pulledr�r)r1r!rsrIrJrr�r�)r3rTr=rvrwr�r�r�r4r4r5�	gitNotify�s





��zWebsiteManager.gitNotifyc

Cs�zNt�|�}tjj|d�}|d|_t�|j||�dkrnt��WSt�	�i}|d|d<||d<t
d|�}|��t�
d�ddd	�}t�|�}t|�WStyp}	zd
t|	�d	�}t�|�}t|�WYd}	~	Sd}	~	ww)Nrar1r+r�r��detachr.r.r\r�rrMrrorpr1r�rrrr!rsr�rtrIrJrr�r�r�r4r4r5�
detachRepo�s.








��zWebsiteManager.detachRepoc

Cs�zTt�|�}tjj|d�}|d|_t�|j||�dkrnt��WSt�	�i}|d|d<|d|d<||d<t
d|�}|��t�
d�dd	d
�}t�|�}t|�WStyv}	zdt|	�d
�}t�|�}t|�WYd}	~	Sd}	~	ww)Nrar1r+r��githubBranchr��changeBranchr.r.r\rr}r�r4r4r5r��s0








��zWebsiteManager.changeBranchcCrP)Nrar+z'websiteFunctions/installPrestaShop.htmlr�rQrr4r4r5�installPrestaShoprSz WebsiteManager.installPrestaShopcCrP)Nrar+z$websiteFunctions/installMagento.htmlr�rQrr4r4r5�installMagentorSzWebsiteManager.installMagentoc

Csrz�t�|�}tjj|d�}|d|_t�|j||�dkrnt�dd�WSt�	�i}||d<|d|d<|d|d<|d	|d	<|d
|d
<|d|d<|d|d<|d
|d<|d|d<dt
tdd��|d<|ddkru|d|d<td|�}|�
�t�d�ddd|dd�}t�|�}t|�WSty�}	zddt
|	�d�}t�|�}t|�WYd}	~	Sd}	~	ww)Nrar1r+r1rr�r�r}�	firstName�lastNamersrrTr��
sampleDatarlrmrnrorr��magentor.r.rqr0rVr�r4r4r5�magentoInstall#sF



�


��zWebsiteManager.magentoInstallcCrP)Nrar+z#websiteFunctions/installMautic.htmlr�rQrr4r4r5�
installMauticRrSzWebsiteManager.installMauticc
Cs�z�t�|�}tjj|d�}|d|_t�|j||�dkrnt�dd�WSd|j�d�}dtj	d	}|d
|}t
�|�t�
�i}||d<|d|d<|d
|d
<|d|d<|d|d<|d|d<dttdd��|d<|d
dkr||d|d<td|�}|��t�d�ddd|dd�}	t�|	�}
t|
�WSty�}zddt|�d�}	t�|	�}
t|
�WYd}~Sd}~ww)Nrar1r+r1rrTrUr�r�z) changePHP --phpVersion 'PHP 8.1' --path r�r�r}rsrrTr�rlrmrnrorr��mauticr.r.rqr0)rrMrrorpr1r�rrr�r%r�rrr�rr!rsr�rtrIrJrr�)r3rTr=rYr�r�r�rvrwr�r�r�r4r4r5�
mauticInstall^sH




�


��zWebsiteManager.mauticInstallc
Cs�z�t�|�}tjj|d�}|d|_t�|j||�dkrnt�dd�WSt�	�i}||d<|d|d<|d|d<|d	|d	<|d
|d
<|d|d<|d|d<|d
|d
<|d|d<dt
tdd��|d<|ddkru|d|d<d|j�d�}dtj
d}|d|}t�|�td|�}|��t�d�ddd|dd�}	t�|	�}
t|
�WSty�}zddt
|�d�}	t�|	�}
t|
�WYd}~Sd}~ww) Nrar1r+r1rr�r�r}�shopNamer�r��databasePrefixrrTr�rlrmrnrorr�rTrUr�r�z) changePHP --phpVersion 'PHP 8.3' --path �
prestashopr.r.rqr0)rrMrrorpr1r�rrrr�rrr�r%r�r!rsr�rtrIrJrr�)r3rTr=rYr�rvr�r�rwr�r�r�r4r4r5�prestaShopInstall�sN




�


��z WebsiteManager.prestaShopInstallc
Cs�z�|d}|d}|d}|d}|d}d|d<d|d<d|d	<|d|d
<z|d|d<Wnd|d<Y|d
|d<z|d}Wnd}Yz|d}Wnd}Ytjj|d�}	t�|	j|�r�|durnd|d
<ztjj|d�}
t|t�|�|d|	j||
dd�}|�	�Wnt
y�Ynwdddd�}t�|�}
t
|
�WS|�|	j|�WSt
y�}zdt|�dd�}t�|�}
t
|
�WYd}~Sd}~ww)Nr��	adminPass�
ownerEmailr��
ownerPasswordr+rD�	dkimCheckrr�r�zPHP 7.4rr��
websitesLimit�aclrnr�zexample@example.org)r:r/)r�r�rr�rg�initWebsitesLimitr��apirz!Could not authorize access to API)rGr�r�)r�r�rG)rrorpr"�check_passwordr�r�
hash_passwordrbr�r�rIrJrrr�)r3r=r�r�r�r�r�r��apiACLr�r��
websiteOwnr�r�r�r4r4r5�createWebsiteAPI�sd
���


��zWebsiteManager.createWebsiteAPIc
Csdt�|||�}d}d}zd}t|�}|��}	|	�dd�d}
Wnty=}ztj�dt	|��d}
WYd}~nd}~ww|D]k}|j
dkrJd}
nd	}
t�|�\}}}}d
|j
�d�}tj�tj�ritj�|�z
ddlm}|�|�}Wnd
}Ydt	|�}|j
|j|
|jj|jj|
||d�}|dkr�|t�|�}d}q@|dt�|�}q@|d}|S)NrNrrOr&r+rPrQrRrSrTrUrUrVrWrXr]r^)r�searchWebsiteObjectsr_r`r7r�r�r�r�r�rZrrbr1r:r�r;r%r�rWrVrar�r�r�r�rrIrJ)r3�currentlACLrT�
searchTermrr�rcrdrerfrYr�rCrZrirjrkrlrgrVrhr[r:r4r4r5r7sJ��

�z!WebsiteManager.searchWebsitesJsonc
Cs,|dd}|d}t�||�||�}d}d}zd}	t|	�}
|
��}|�dd�d}WntyJ}
ztj�dt	|
��d}WYd}
~
nd}
~
ww|D]B}|j
dkrWd	}nd
}t�|�\}}}}dt	|�}|j
|j||jj|jj||d�}|dkr�|t�|�}d}qM|d
t�|�}qM|d}|S)Nr?rNrrOr&r+rPrQrRrSrW)r1r�rYr�r�rZr[r]r^)rrr_r`r7r�r�r�r�r�rZrrbr1r�r�r�r�rrIrJ)r3rYrTrCrIrHrr�rcrdrerfrYr�rCrZrirjrkrlr[r:r4r4r5rB6s>��

�zWebsiteManager.findWebsitesJsoncCs|t�||�}tt|��td�}g}|dkrd}|�d�|St|�}t|�d}td|�D]
}|�dt|�d�q.|S�Nr?r{r+z<li><a href="\#"></a></li>z<li><a href="\#">z	</a></li>)	rrr�rnrsrr8r|r��r3rYrTrr~rrr�r4r4r5r_s
�z WebsiteManager.websitePaginationcCsztj��}tt|��td�}g}|dkrd}|�d�|St|�}t|�d}td|�D]
}|�dt	|�d�q-|Sr�)
rror8r�rnrsrr8r|r�r�r4r4r5�DockersitePaginationqs

�z#WebsiteManager.DockersitePaginationc
Csz�t�|�}tjj|d�}z$|d}i}d|d<tj�d�r#d|d<nd|d<t�	|�}t
|�WWSY|d|_t�|j||�dkrFnt�
dd�WSt��tjkr�tj|jd	}tj�|�r�t�|j�}d
|}	t�|	���}
|
d�d�d
}|
d�d�d
}|
d�d�d
}
|
d�d�d
}i}d|d<tj|d<||d<||d<|
|d<||d<||d<t�d|���|d<ni}d|d<tj|d<ni}d|d<tj|d<t�	|�}t
|�WSt�y}zddt|�d�}t�	|�}t
|�WYd}~Sd}~ww)Nra�globalr+r>z
/etc/httpd�serverrr�r!z	sudo cat �r�r.r�r?��
pmMaxChildren�pmStartServers�pmMinSpareServers�pmMaxSpareServers�phpPathr�r�r�)rrMrrorpr:r�r;rIrJrr1r�rr%rK�OLSr(r(�whichPHPExistsr3r9r7r-�apache�ols�lswsr�r�)r3rTr=rYr��
globalDatar��
finalConfPathr�r��phpConfr�r�r�r�r�r�r4r4r5�getSwitchStatus�sf








��zWebsiteManager.getSwitchStatuscCs�t�|�}tjj|d�}|d}|d}|d}t�|||�dkr"nt��Sdttdd��}d	t	j
d
}	|	d|dt|�d
|d|}	t�|	�t
�d�d|d�}
t�|
�}t|�S)Nrar�r�r�r+rlrmrnr�r�z switchServer --phpVersion 'z' --server r$r&r/)r>ro)rrMrrorpr�rr�rrr�r%rr�rtrIrJr)r3rTr=rYr�r�r\r�ror�r�r�r4r4r5�switchServer�s4
�����



zWebsiteManager.switchServerc
Cs��z�t�|�}tjj|d�}|d}|d}|d}|d}|d}	|d}
t�|||�dkr0nt��WSt|�t|�ksEt|�t|�krTd	d
d�}t�	|�}t
|�WSt|�t|	�krkd	dd�}t�	|�}t
|�WSztjj|d
�}
|
j}Wnt
jj|d
�}
|
jj}Ydttdd��}t��tjks�t��tjkr�d}d}nd}d}tj}|�d|�}|�d|�}|�d|�}|�d|�}|�d|	�}|�dd�t�d|��dd��}|�d|�}|�d|�}|�d |�}t|d!�}|�|�|��d"||
f}t�|�|
�d#�}
t j!�"tj#��rt$j%�&d$|
���t��tjk�s*t��tjk�rk|
dd%k�rN|
d&d'|
d&d&}d(|
d&d'�d)|
d&d&��}n$|
d'd'|
d'd&}d(|
d'd'�d)|
d'd&��}nd(|
d*��}t j!�"tj#��r�t$j%�&d+|���t'�(|�}t j!�"tj#��r�t$j%�&d,|���d-|��}t�)|�d.|��}t�)|�d/di}t�	|�}t
|�WSt*�y�}zd	t|�d�}t�	|�}t
|�WYd}~Sd}~ww)0Nrar�r�r�r�r�r�r+rzfpm.start_servers must not be less than pm.min_spare_servers and not greater than pm.max_spare_servers.r\z?pm.max_spare_servers must not be less than pm.min_spare_serversr"rlrmrnz/var/run/php-fpm/rz
/var/run/php/�nogroupz
{externalApp}z{pmMaxChildren}z{pmStartServers}z{pmMinSpareServers}z{pmMaxSpareServers}z{www}r�rrdz{Sock}z
{sockPath}z{group}r�z
sudo mv %s %sr�zPHP path in tune settings �etcr#r/zPHP �.r.zPHP Version in tune settings zPHP service in tune settings zsystemctl stop zsystemctl restart r>)+rrMrrorpr�rr8rIrJrrr�rr�r�rr%r+r,r-r)�phpFpmPoolReplacer�rrrr_rorr�r7r:r�r;r�r�r�r�r(�DecideFPMServiceName�normalExecutionerr�)r3rTr=rYr�r�r�r�r�r�r�r�r�rvr�ro�sockPath�group�
phpFPMConfr�r�r\�
phpServicer�r4r4r5�tuneSettings�s�

 �

�



"



 ""







��zWebsiteManager.tuneSettingsc	C�ht�|�}tjj|d�}t�|j||�dkrnt��Stjj|jd�}|j	}t
|d|j|d��}|��S)Nrar+r"zwebsiteFunctions/sshAccess.html�r�r��rrMrrorpr�r1r�rr�rr�	r3rSrTr=rYr�rvr�r^r4r4r5�	sshAccessI�

�zWebsiteManager.sshAccessc
Csz\t�|�}tjj|d�}|d|_t�|j||�dkrnt�dd�WStjj|jd�}d}t	j
�|�r>d|j|d	f}n	d
|d	|jf}t
�|�dd|jd�}t�|�}	t|	�WSty}
zddt|
�d
�}t�|�}	t|	�WYd}
~
Sd}
~
ww)Nrar1r+r>rr"z/etc/lsb-releasezecho '%s:%s' | chpasswdr�zecho "%s" | passwd --stdin %sr.)r>r�r
r0)rrMrrorpr1r�rrr:r�r;r�r%r�rIrJrr�r�)r3rTr=rYr�rv�
uBuntuPathr�r�r�r�r4r4r5�saveSSHAccessChangesYs,





��z#WebsiteManager.saveSSHAccessChangesc	Cr�)Nrar+r"z"websiteFunctions/setupStaging.htmlr�r�r�r4r4r5�setupStagingr�zWebsiteManager.setupStagingc

Csxz�t�|�}tjj|d�}|d|_t�|j�s(dddd�}t�|�}t	|�WSt�|d�s?dddd�}t�|�}t	|�WSt�
|j||�dkrJnt�dd�WSi}|d|d	<|d|d<||d
<dtt
dd
��}t|d�}	d}
|	�|
�|	��||d<td|�}|��dd|d�}t�|�}t	|�WSty�}zddt|�d�}t�|�}t	|�WYd}~Sd}~ww)Nrarrr�r�r�r+r>r1r�r
rmrn�azCloning process has started..,5ro�startCloningr.�r>r�ror0)rrMrrorpr1rrIrJrr�rr�rr_rrr,rsr��
r3rTr=rYr�r�r�rvror��message�str�r4r4r5r��sH











��zWebsiteManager.startCloningc
Csjt�|�}tjj|d�}t�|j||�dkrnt��Stjj|jd�}|j	}t
|d|j||d��}	|	��S)Nrar+r"z websiteFunctions/syncMaster.html)r�r�r2r�)
r3rSrTr=r2rYr�rvr�r^r4r4r5�syncToMaster�s
�zWebsiteManager.syncToMasterc

Cs�z�t�|�}tjj|d�}t�|d�s$dddd�}t�|�}t	|�WS|d|_t�
|j||�dkr4nt�dd�WSi}|d|d<z|d|d<Wnd	|d<Yz|d
|d
<Wnd	|d
<Yz|d|d<Wnd	|d<Y||d<d
tt
dd��}t|d�}	d}
|	�|
�|	��||d<td|�}|��dd|d�}t�|�}t	|�WSty�}zddt|�d�}t�|�}t	|�WYd}~Sd}~ww)Nrar2rr�r�r+r>�
eraseCheckF�dbCheck�copyChangedr�r
rmrnr�zSyncing process has started..,5ro�startSyncingr.r�r0)rrMrrorprr1rIrJrr�rr�rr_rrr,rsr�r�r4r4r5�	startSync�sV












��zWebsiteManager.startSyncc
Cs�z,i}||d<dttdd��|d<td|�}|��dd|dd�}t�|�}t|�WStyO}zd	d	t|�d
�}t�|�}t|�WYd}~Sd}~ww)NrSrlrmrnro�convertDomainToSiter+)r>r�rorr�)r�rr!rsrIrJrr�)r3rTrSrvrwr�r�r�r4r4r5r�s



��z"WebsiteManager.convertDomainToSitec
Cs�t�|�}tjj|d�}t�|j||�dkrnt��Sztjj|jd�}d|jg}|j	�
�}Wntjj|jd�|_|jj
g}|jjj	�
�}Yt|d|j|d��}	|	��S)Nrar+r"�/home/%s/public_htmlzwebsiteFunctions/manageGIT.html)r��folders)rrMrrorpr�r1r�rr�r8r�childWebsiter�r�rr)
r3rSrTr=rYr�rvr��	databasesr^r4r4r5�	manageGITs"


�zWebsiteManager.manageGITc
Cs��z�d|j}d|j}d|j}z4tjj|jd�}||_|j|_|j}|j|_|j|_|j	j
|_
|j	j|_d|_|j
d|jkrDd|_Wn;tjj|jd�}|j|_|jj|_|jj}|jj|_|jj|_|jj	j
|_
|jj	j|_d|_|j
|jkr�d|_Yd|_d}d||jf}tj�|�s�t�|�tj�|�s�t�|�tj�|��rt�|�}t|�dk�r|D]N}	d||	f|_t�t|jd	����}
|
d
|j
k�r|
d|_|
d|_|
d
|_z|
d|_Wnd|_Yz|
d|_ Wnd|_ Yd|_nq�|j�rd|_d|_d|_d|_ d|_|j
|k�r&||_WdS|j
|k�r2||_WdSztjj|jd�}|j
|jk�rI||_WWdSWnY|j
|k�r[d|_WdSz$|j!�"�D]}d|_d}
d|
|j#f}|j
|k�rzWWdS�qaWWdS|jj!�"�D]}d|_d}
d|
|j#f}|j
|k�r�YWdS�q�YWdSt$�y�}zt%j&�'dt(|��WYd}~dSd}~ww)Nr�z/home/%sz/home/vmail/%sr"rr+�/home/cyberpanel/git�%s/%sr��folder�
autoCommit�autoPush�	emailLogs�commandszFAdd Commands to run after every commit, separate commands using comma.�webhookCommand�False�Never�vmail�mysqlz/var/lib/mysql/rz%s. [folderCheck:3002]))r1rrorp�
masterWebsiterr��externalAppLocalr�r�r�r�r}r�rr�r��	confCheckr:r;�mkdir�listdirrn�	finalFilerIrqr_r`�autoCommitCurrent�autoPushCurrent�emailLogsCurrentr��webhookCommandCurrentr�r8r�r�r�r�r�r�)r3�
domainPath�vhRoot�	vmailPathrvr��
gitConfFolder�
gitConFile�files�file�gitConfr2r��basePath�dbPathr�r4r4r5�folderCheck:s�




�


�





��
���
����zWebsiteManager.folderCheckcCs��z2t�|�}tjj|d�}|d|_|d|_t�|j||�dkr#nt�dd�WS|�	�r/nt��WSd|j}d|}t
�||j��
d	�d
kr�d|j|jf}t
�||j�}|�
d	�d
kr}d|j|jf}t
�||j�d|j|jf}t
�||j�}dd||jd
�}t�|�}	t|	�WSd|j}t
�||j��d�dd
�}
d|j|jf}t
�||j�}|�
d	�d
kr�d|j|jf}t
�||j�d|j|jf}t
�||j�}d|j}t
�||j�}d}|�
d�d
kr�d}d}d|j}t
�||j�}
|
�
d�d
k�rd}
t
��}dt��||jf}dd|
||||
|j||j|j|j|j|jd�}t�|�}	t|	�WSt�yW}zddt|�d�}t�|�}	t|	�WYd}~Sd}~ww)Nrar1r�r+r>rz%s/.gitr�r�r�rlrk)r>�repormr}zgit -C %s branchr&�git -C %s remote -v�originzRemote currently not set.zgit -C %s rev-list --count HEAD�fatalrz!https://%s:%s/websites/%s/webhook)r>r��
finalBranchesrm�remote�remoteResult�totalCommitsr}�
webHookURLr�r�r�r�r�r0)rrMrrorpr1r�r�rr�r%r3r�r6rr�r}rIrJrr7rn�fetchIPr�r�r�r�r�r�r�)r3rTr=rYr��gitPathr�rmr�r��branchesrrrrprr�r4r4r5�fetchFolderDetails�s�




��




�


��z!WebsiteManager.fetchFolderDetailsc
Cs\z�t�|�}tjj|d�}|d|_|d|_t�|j||�dkr"nt�dd�WS|�	�r.nt��WSt
jj|jd�}d|j}t�
||j�}|�d	�d
kr|d|j|jf}t�||j�d|j|j|jf}t�||j�ddi}t�|�}	t|	�WSd|d
�}t�|�}	t|	�WSty�}
zddt|
�d�}t�|�}	t|	�WYd}
~
Sd}
~
ww)Nrar1r�r+r>rr"zgit -C %s initz#Initialized empty Git repository inr��&git -C %s config --local user.email %s�*git -C %s config --local user.name "%s %s"r\r0)rrMrrorpr1r�r�rr�rrr%r3r�r6r�r�r�r�rIrJrr�r�)r3rTr=rYr�rvr�rGr�r�r�r4r4r5�initRepo,sB




�	





��zWebsiteManager.initRepoc

Csj�zt�|�}tjj|d�}|d|_|d|_|d|_|d|_|d|_	t�
|j||�dkr2nt�dd	�WS|��r>nt��WS|j�
d
�dkrz|j�d
�d	}|j�d
�d}t�|�sgt�dd�WSzt|�}Wnt�dd�YWSt�|j�s�t�dd�WSt�|j�r�t�|j	�r�nt�dd�WSd
|j|j|jf}t�||j�d|j}t�||j�}|�
d�dkr�d|j|j|j|j	f}nd|j|j|j|j	f}t�||j�}	d|j}t�||j�}|�
|j�dk�rddi}
t�|
�}t|�WSd	|	d�}
t�|
�}t|�WSt�y4}zd	d	t|�d�}
t�|
�}t|�WYd}~Sd}~ww)Nrar1r��gitHost�gitUsername�gitReponamer+r>r�:r��!Invalid characters in your input.�`git -C %s config --local core.sshCommand "ssh -i /home/%s/.ssh/%s -o "StrictHostKeyChecking=no""r�r�z,git -C %s remote add origin git@%s:%s/%s.gitz0git -C %s remote set-url origin git@%s:%s/%s.gitr\r0)rrMrrorpr1r�rr
rr�rr�r6r7rr8�
validateInputrr�r%r�r3rIrJrr�r�)
r3rTr=rYr��
gitHostDomain�gitHostPortr�r�
possibleErrorr�r�r�r4r4r5�setupRemoteasr







�
��
	





��zWebsiteManager.setupRemotec

Cs�z�t�|�}tjj|d�}|d|_|d|_|d|_t�|j||�dkr'nt�	dd�WS|�
�r3nt�	�WSt�|j�r?nt�	dd�WS|j�d	�d
kr^dddd�}t
�|�}t|�WSt�|j�|_d
|j|j�d�f}t�||j�}|�d�d
kr�d|dd�}t
�|�}t|�WSdd|d�}t
�|�}t|�WSty�}	zdt|	�d�}t
�|�}t|�WYd}	~	Sd}	~	ww)Nrar1r��
branchNamer+r>rr�*r�zAlready on this branch.)r>�
commandStatusr�zgit -C %s checkout %sr�zSwitched to branchzRefreshing page in 3 seconds..�r>rzFailed to change branch�r>r�rr\)rrMrrorpr1r�rr�rr�rr6rIrJr�FetchExternalAppr�r�r%r3r�r�)
r3rTr=rYr�r�r�r�rr�r4r4r5�changeGitBranch�sJ




�

	




��zWebsiteManager.changeGitBranchc

CsJz�t�|�}tjj|d�}|d|_|d|_|d|_t�|j||�dkr'nt�	dd�WS|�
�r3nt�	�WSt�|j�r?nt�	dd�WSt�|j�|_
d	|j|jf}t�||j
�}|�|j�d
krsd|d�}t�|�}t|�WSdd|d
�}t�|�}t|�WSty�}	zdt|	�d�}t�|�}t|�WYd}	~	Sd}	~	ww)Nrar1r��
newBranchNamer+r>rrzgit -C %s checkout -b "%s"r�rzFailed to create branchrr\)rrMrrorpr1r�rr�rr�rrr�r%r3r6rIrJrr�r��
r3rTr=rYr�r�rr�r�r�r4r4r5�createNewBranch�s>





	




��zWebsiteManager.createNewBranchc
CsZ�zt�|�}tjj|d�}|d|_|d|_|d|_t�|j||�dkr(nt�	dd�WS|�
�r4nt�	dd�WSt�|j�rBnt�	�WSt�|j�|_
d|j}t�||j
�d	|j|j�d
d�f}t�||j
�}|�d�d
kr�zo|jdkr�t|jddd���|j�d�d
kr�|j�d�}|D]!}t|jdd|d���t�||j�}t|jdd|d���q�n!t|jdd|jd���t�|j|j�}t|jdd|d���t|jddd���WnYd|d�}	t�|	�}
t|
�WSdd|d�}	t�|	�}
t|
�WSt�y,}zdt|�t|�d�}	t�|	�}
t|
�WYd}~Sd}~ww)Nrar1r��
commitMessager+r>rzgit -C %s add -Azgit -C %s commit -m "%s"r�r�znothing to commitr�r�INFO�.Running commands after successful git commit..�rgr�r�r&�Running: %s�
Result: %s�Finished running commands.rzNothing to commit.r)rrMrrorpr1r�r!r�rr�rrr�r%r3r�r6r�r	r�r�r7r�rIrJrr�r�)r3rTr=rYr�r�rr�rGr�r�r�r4r4r5�
commitChanges3s�






��������
	




��zWebsiteManager.commitChangesc

Cs>z|t�|�}tjj|d�}|d|_|d|_t�|j||�dkr"nt�dd�WS|�	�r.nt��WSt�
|j�|_d|j|j|j
f}t�||j�d|j}t�||j�}|�d	�d
krmd|d�}t�|�}t|�WSdd|d
�}t�|�}t|�WSty�}	zdt|	�d�}t�|�}t|�WYd}	~	Sd}	~	ww)Nrar1r�r+r>rr�git -C %s pull�Already up to dater�r�Pull not required.rr\)rrMrrorpr1r�r�rr�rr�rr�r%r�r3r6rIrJrr�r�rr4r4r5�gitPull�s>



�

	




��zWebsiteManager.gitPullc
Cs�z�t�|�}tjj|d�}|d|_|d|_t�|j||�dkr"nt�dd�WS|�	�r.nt��WSt�
|j�|_d|j|j|j
f}t�||j�d|j}t�||jd	�}|�d
�dkr�d|j}t�||jd	��d
�}|�d�dkr�dddd�}t�|�}	t|	�WSd|j|f}t�||jd	�}|�d�dkr�|�d�dkr�|�d�dkr�d|d�}t�|�}	t|	�WSdd|d�}t�|�}	t|	�WSty�}
zdt|
�t|
�d�}t�|�}	t|	�WYd}
~
Sd}
~
ww)Nrar1r�r+r>rrzgit -C %s pushFzhas no upstream branchr�z%git -C %s rev-parse --abbrev-ref HEADr&zfatal: ambiguous argumentzYou need to commit first.rz'git -C %s push --set-upstream origin %szEverything up-to-date�rejectedr rzPush failed.)rrMrrorpr1r�r�rr�rr�rr�r%r�r3r6r<rIrJrr�r�)r3rTr=rYr�r�r�
currentBranchr�r�r�r4r4r5�gitPush�s^



�

�

��





��zWebsiteManager.gitPushc
Cs��z/t�|�}tjj|d�}|d|_|d|_|d|_|d|_|d|_	z|d|_
Wnd|_
Yt�|j||�d	krAnt�d
d�WS|�
�rMnt��WS|j�d�d
kr�|j�d�d}|j�d�d	}t�|�svt�d
d�WSzt|�}Wnt�d
d�YWSt�|j�s�t�d
d�WSt�|j�r�t�|j	�r�nt�d
d�WSt�|j�|_|j
r�d|j}t�||j�d|j|jf}t�||j�d|j|j|j	|jf}t�||j�}|�d�d
k�r!|�d�d
k�r!d|j|jf}t�||j�d|j|j|jf}t�||j�d	|d�}	t�|	�}
t|
�WSdd|d�}	t�|	�}
t|
�WSt �yS}zdt!|�d�}	t�|	�}
t|
�WYd}~Sd}~ww)Nrar1r�rr
r�overrideDataFr+r>rrr�r�	rm -rf %sz[git config --global core.sshCommand "ssh -i /home/%s/.ssh/%s -o "StrictHostKeyChecking=no""zgit clone git@%s:%s/%s.git %szalready existsr r	r
rzFailed to clone.rr\)"rrMrrorpr1r�rr
rr0r�rr�r6r7rr8rrr�r%r�rr�r3r�r�r�rIrJrr�r�)r3rTr=rYr�rrr�rr�r�r�r4r4r5�
attachRepoGIT�sv








� 


	


��zWebsiteManager.attachRepoGITc
Cs,zst�|�}tjj|d�}|d|_|d|_t�|j||�dkr"nt�dd�WS|�	�r.nt��WSt�
|j�|_d|j}t�
||j�d}d	||jf}d	||j�d
�df}d|}t�||j�ddi}	t�|	�}
t|
�WSty�}zdt|�d
�}	t�|	�}
t|
�WYd}~Sd}~ww)Nrar1r�r+r>rzrm -rf %s/.gitr�r�r�r�r1r\)rrMrrorpr1r�r�rr�rr�r%r�rr7r3rIrJrr�r�)r3rTr=rYr�r�r�r�r�r�r�r�r4r4r5�removeTrackingbs8




	


��zWebsiteManager.removeTrackingc

Cs�zVt�|�}tjj|d�}|d|_|d|_t�|j||�dkr"nt�dd�WS|�	�r.nt��WSd|j}t
�||j�}|�
d�d	krHd
}d|d�}t�|�}t|�WStyx}	zdt|	�d�}t�|�}t|�WYd}	~	Sd}	~	ww)
Nrar1r�r+r>rzcat %s/.gitignorer�r�zFile is currently empty.)r>�gitIgnoreContentr\)rrMrrorpr1r�r�rr�r%r3r�r6rIrJrr�r�)
r3rTr=rYr�r�r4r�r�r�r4r4r5�fetchGitignore�s0








��zWebsiteManager.fetchGitignorec
Cs*zrt�|�}tjj|d�}|d|_|d|_|d|_dtt	dd��}t�
|j||�dkr0nt�d	d
�WS|��r<nt��WSt
|d�}|�|j�|��t�|j�|_d||jf}t�||j�d	di}t�|�}	t|	�WSty�}
zd
t|
�d
�}t�|�}	t|	�WYd}
~
Sd}
~
ww)Nrar1r�r4rlrmrnr+r>rr�zmv %s %s/.gitignorer\)rrMrrorpr1r�r4r�rr�rr�r_rrrr�r%r�rIrJrr�)r3rTr=rYr�rr�r�r�r�r�r4r4r5�
saveGitIgnore�s8





	


��zWebsiteManager.saveGitIgnorec
Cs�z�t�|�}tjj|d�}|d|_|d|_t�|j||�dkr"nt�dd�WS|�	�r.nt��WSd}t�
|j�|_d|j|f}t�
||j��d	�}d
}d}	d}
|D]8}|�d�}t|
�|d|d�dd
�|d|dd�}
|
d}
|	dkr�|t�|
�}d}	qU|dt�|
�}qU|d}d|d�}t�|�}t|�WSty�ddd�}t�|�}t|�YSty�}zdt|�d�}t�|�}t|�WYd}~Sd}~ww)Nrar1r�r+r>rz'log --pretty=format:"%h|%s|%cn|%cd" -50zgit -C %s %sr&rN�|r�r8r.r/)r}�commitr�r:�dater]r^)r>�commitszNo commits found.r\)rrMrrorpr1r�r�rr�rr�r%r3r7r�r�rIrJr�
IndexErrorr�)r3rTr=rYr��initCommandr�r:r�rcr}r8�cmr:r�r�r4r4r5�fetchCommits�sP




,





��zWebsiteManager.fetchCommitsc
CsLz�t�|�}tjj|d�}|d|_|d|_|d|_t�|j||�dkr'nt�	dd�WS|�
�r3nt�	�WSt�|j�r?nt�	dd�WSt�|j�|_
d	|j|jf}t�||j
��d
�}g}|D]}|dkrt|�|�d
��d
��qcd|d�}	t�|	�}
t|
�WSty�}zdt|�d
�}	t�|	�}
t|
�WYd}~Sd}~ww)Nrar1r�r8r+r>rrz4git -C %s diff-tree --no-commit-id --name-only -r %sr&r�)r>r�r\)rrMrrorpr1r�r8r�rr�rrr�r%r3r7rsr<r)rIrJrr�r�)r3rTr=rYr�r�r��
FinalFilesrCr�r�r�r4r4r5�
fetchFiles s@




�



��zWebsiteManager.fetchFilesc
CsP�zlt�|�}tjj|d�}|d|_|d|_|d|_|d|_t�	|j||�dkr-nt�
dd�WS|��r9nt�
�WSt�|j�rM|j�
d	�d
krMnt�
dd�WSt�|j�|_d|j|j|j|j�d
��d�f}t�||j��d
�}d}|D]}t|�dkr�|d}q{|ddkr�n|d}q{zt||�d�d�d�d�}	Wnt||�d�d�d�d�}	Yt|�}
dd||f}t|d|
d�D]�}||ddkr�t||�d�d�d�d�}	|dd||f}q�||ddk�rd||�dd��dd�}
|dt|	�|
f}|	d}	q�||ddk�rBd||�dd��dd�}
|dt|	�|
f}|	d}	q�d||�dd��dd�}
|dt|	�|
f}|	d}	q�d|d�}t�|�}t|�WSt�y�dd d!�}t�|�}t|�YSt�y�}zdt|�d!�}t�|�}t|�WYd}~Sd}~ww)"Nrar1r�r�r8r+r>rr#r�rzgit -C %s show %s -- %s/%sr&r��@�+r]zw<tr><td style="border-top: none;color:blue">%s</td><td style="border-top: none;"><p style="color:blue">%s</p></td></tr>�#z<p style="color:green">%s</p>�<z&lt;�>z&gt;zg<tr style="color:green"><td style="border-top: none;">%s</td><td style="border-top: none;">%s</td></tr>�-z<p style="color:red">%s</p>ze<tr style="color:red"><td style="border-top: none;">%s</td><td style="border-top: none;">%s</td></tr>z	<p>%s</p>zS<tr><td style="border-top: none;">%s</td><td style="border-top: none;">%s</td></tr>)r>�fileChangedContent�Not a text file.r\)rrMrrorpr1r�r�r8r�rr�rr6rr�r�r%r3r7rnr8r|r�r�rIrJrr;r�)r3rTr=rYr�r�rG�
initialNumberrC�
lineNumber�fileLen�finalConentr��contentr�r�r�r4r4r5�fetchChangesInFileQs�





�

$"� ���
��
�






��z!WebsiteManager.fetchChangesInFilec
Cs�z�t�|�}tjj|d�}|d|_|d|_i}|j|d<|d|d<z|d|d<Wnd|d<Yz|d|d<Wnd|d<Yz|d	|d	<Wnd
|d	<Yz|d|d<Wnd|d<Y|j|d<t�|j||�dkrxnt�d
d�WS|�	�r�nt��WS|j
dkr�d}d||jf}d|tt
dd��f|_tj�|�s�t�|�tj�|�s�t�|�t|jd�}|�t�|��|��d
di}	t�|	�}
t|
�WSty�}zdt|�d�}	t�|	�}
t|
�WYd}~Sd}~ww)Nrar1r�r�r�r�r�Fr�rr�r+r>rr�r�rmrnr�r\)rrMrrorpr1r�r�rr�r�rr�rr�r:r�r;r�r_rrIrJrrr�)r3rTr=rYr�r:r�r�r�r�r�r�r4r4r5�saveGitConfigurations�sf















��z$WebsiteManager.saveGitConfigurationscCspd}d}d}|D])}|j|j�d�|jd�}|dkr$|t�|�}d}n	|dt�|�}|d}q|d}|S)NrNrr+z%m.%d.%Y_%H-%M-%S)r�r9r�r]r^)r�r9r�r�rIrJ)r3�logsr�rcrxrCr:r4r4r5�
getLogsInJson�s
zWebsiteManager.getLogsInJsonc
Cs^zvt�|�}tjj|d�}|d|_|d|_t|d�}t|d�}t�|j||�dkr.nt�	dd�WS|�
�r:nt�	�WS|jj�
��d	�}dd
lm}|�t|�|�}	|�||�\}
}|�|||
��}d||	d�}
t�|
�}t|�WSty�ddd
�}
t�|
�}t|�YSty�}zdt|�d
�}
t�|
�}t|�WYd}~Sd}~ww)Nrar1r�rDr3r+r>rr�)�	S3Backups)r>rPrrHr\)rrMrrorpr1r�r8r�rr�r��gitlogs_setr8r��s3Backups.s3BackupsrRrFrnrErQrIrJrr;r�r�)r3rTr=rYr�rDr3rPrRrrHrI�jsonDatar�r�r�r4r4r5�fetchGitLogss>








��zWebsiteManager.fetchGitLogsc
Cs�ze||_ztjj|jd�}||_d||_||_Wntjj|jd�}|j|_|j	j|_|j	|_Yt
�|j�|_d|j}t
�||j�}|�d�dk�rId|}t|jd|d���d	}d
}d||jf}	tj�|�sst�|�tj�|	�s~t�|	�tj�|	�r�t�|	�}
t|
�dkr�|
D]}d|	|f}t�t|d
����}
|
d|jkr�d}nq�|�r:z�|
d�r4|
ddk�r4t|jddd���|
d�d�dk�r|
d�d�}|D]%}t|jdd|d���t
�||jjd|j�}t|jdd|d���q�n't|jdd|
dd���t
�|
d|jjd|j�}t|jdd|d���t|jddd���WnYd|d�}t�|�}t|�WSd|}t|jd|d���d	d|d�}t�|�}t|�WSt�y�}zd	t|�d�}t�|�}t|�WYd}~Sd}~ww)Nr"r�r)r*r�zebhook Fired] Status: %s.r"r$rr�r�r+r�r�r�r�rr#r&r%r&r'r�ERRORr+rr\) r1rrorpr�r�rrr�r�rrr�r%r3r6r	r�r:r;r�r�rnrIrqr_r`r7rJrr�r�)r3r1r=r�r�rr��foundr�r�r�r�r�r�r�rGr�r�r�r4r4r5�webhook0s�







�
�����	
�
����
	




��zWebsiteManager.webhookc
Cs�z�t�|�}tjj|d�}|d}tjj|d�}t�|||�dkr"nt�dd�WSd|}d|}t�	||j
��d	�}d
}	d}
|D]e}|�d�dkr�|�d
�}z*d|ddd�d|d}
z|dd|d�
d��}Wn|d}YWnd|ddd�}
d}Y||
d�}|
dkr�|	t�|�}	d}
qA|	dt�|�}	qA|	d}	t�dd|	d��}t|�WSty�}zdt|�d�}t�|�}t|�WYd}~Sd}~ww)Nrar1r"r+r>r�/home/%s/.ssh/authorized_keysr�r&rNzssh-rsar�r�zssh-rsa �2z  ..  r.rAr�)r�rr]r^r.)r>r�r=r\)rrMrrorprr�rr%r3r�r7r6r�rIrJrr�r�)r3rTr=rYr�r1rv�
pathToKeyFile�catr�rcrC�keydatarr�r:r/r�r0r4r4r5�
getSSHConfigs�sV

 
���

��zWebsiteManager.getSSHConfigsc
CsDz~t�|�}tjj|d�}|d}t�|||�dkrnt�dd�WS|d}d|}tjj|d�}d	|j�d
|j�d|��}	t	�
|	�dtjd
}
|
d||f}
t	�
|
|j�}|�
d�dkroddd�}t�|�}
t|
�WSdd|d�}t�|�}
t|
�WSty�}zddt|�d�}t�|�}
t|
�WYd}~Sd}~ww)Nrar1r+r>rrrZr"zchown rr�r��/plogical/firewallUtilities.pyz" deleteSSHKey --key '%s' --path %sr�r�)r>�
delete_status)r>ra�error_mssage)rrMrrorpr�rrr�r%r3rr�r6rIrJrr�r�)r3rTr=rYr�r1rr\rvr�r�r�r0r/r�r4r4r5�deleteSSHKey�s8







��zWebsiteManager.deleteSSHKeyc
Csxz�t�|�}tjj|d�}|d}tjj|d�}t�|||�dkr"nt�dd�WS|d}d|}d	|}	t�	|	�d
|j
|j
|f}	t�	|	�dttdd
��}
t
|
d�}|�|�|��dtjd}|d|
|f}t�|�}
|
�d�dkr�ddd�}t�|�}t|�WSdd|
d�}t�|�}t|�WSty�}zddt|�d�}t�|�}t|�WYd}~Sd}~ww)Nrar1r"r+r>rrrZzmkdir -p /home/%s/.ssh/zchown %s:%s /home/%s/.ssh/rlrmrnr�z#sudo /usr/local/CyberCP/bin/python r`z" addSSHKey --tempPath %s --path %sr�r�)r>�
add_status)r>rdrb)rrMrrorprr�rr%r�r�r�rr_rrrr�r3r6rIrJrr�)r3rTr=rYr�r1rvrr\r�rr�r�r�r0r/r�r4r4r5�	addSSHKey�sD











��zWebsiteManager.addSSHKeyc
Cszt�|�}tjj|d�}t�|j||�dkrnt��St�	�}t�
�}t�d�r+d}nd}t|d|j|||d��}	|	�
�S)Nrar+r8rz#websiteFunctions/ApacheManager.html)r�rB�
apachemanager�
apachePHPs)rrMrrorpr�r1r�r'rP�findApachePHPVersionsr�rr)
r3rSrTr=rYr�rBrgrfr^r4r4r5�
ApacheManager)s

�zWebsiteManager.ApacheManagerc
Cs�t�|�}|ddkrt�dd�S|d}|d|_t��dttdd	��}t|d
�}|�	|�|�
�tj|jd}dt
jd
}|d|d|}t�|�}	|	�d�dkrgddi}
t�|
�}t|�Sd|	d�}t�|�}t|�S)Nr�r+r�rr�r�rlrmrnr�r!r�r�z  saveApacheConfigsToFile --path r�r�r�r>r\)rrMrr1rrr�rr_rrr(r(rr�r%r3r6rIrJr)
r3rTr=rYr�rrr�r�r�r>r/r0r4r4r5�saveApacheConfigsToFile>s*







z&WebsiteManager.saveApacheConfigsToFilec	Csti}t�|�}|ddkrnt��Sz|dkr"tjj|d�}|��WnYtj��|d<t|d|d�}|�	�S)Nr�r+rar�z)websiteFunctions/CreateDockerPackage.htmlrE)
rrMr�rrorpr�r8rr)	r3rSrTr=r�r]rY�DockerPackagesDeleter^r4r4r5�CreateDockerPackagefs"
��z"WebsiteManager.CreateDockerPackagecCs�t�|�}|ddkrnt��Sz|dkr tjj|d�}|��WnYt�|�}tj�	�}tj�	�}	|||	d�}
t
|d|
d�}|��S)Nr�r+ra)rZr�
assignpackagez#websiteFunctions/assignPackage.htmlrE)rrMr�rrorpr�rNrr8rr)r3rSrTr=r�rYrkrZ�dockerpackagesrmr]r^r4r4r5�
AssignPackage}s&
�


�zWebsiteManager.AssignPackagecCs�t�|�}d|i}tj����dkr;d}d}d}d}	d}
t||||	|
dd�}|��tjj	d	d
�}t||d�}
|
��t
|d|d
�}|��S)NrZrr`r.irYr��r��CPUsrp�	Bandwidth�	DiskSpacer�r+ra�rnr�z&websiteFunctions/CreateDockerSite.htmlrE)rrNrror8r�rr�rrprr)r3rSrTr=rZr]r:�cpu�Memoryrr�disk�saveobjrw�svr^r4r4r5�CreateDockersite�s"
�zWebsiteManager.CreateDockersitec
Cs�zIt�|�}|ddkr
nt��WStjj|d�}|d}|d}|d}|d}|d}	t|||||	d	d
�}
|
��ddd�}t�	|�}t
|�WStyk}
zdt|
�d�}t�	|�}t
|�WYd}
~
Sd}
~
ww)
Nr�r+rar:rurvrrrwr�rpr\r)
rrMr�rrorprr�rIrJrr�r�)r3rTr=rYr�r:rurvrrrwrxr>r/r�r0r4r4r5�AddDockerpackage�s,





��zWebsiteManager.AddDockerpackagec

Cs�zCt�|�}|ddkr
nt��WStjj|d�}|d}tjj|d�}|j|j|j	|j
|jd�}d|i}d|d�}	t�
|	�}
t|
�WStye}zdt|�d�}t�
|�}
t|
�WYd}~Sd}~ww)	Nr�r+rar})r�rorvrrrsr�r\r)rrMr�rrorprr�rqrprrrsrIrJrr�r�)
r3rTr=rYr�r}�docker_package�package_data�rdatar>r/r�r0r4r4r5�
Getpackage�s0

�



��zWebsiteManager.Getpackagec
Cs�zRt�|�}|ddkr
nt��WStjj|d�}|d}|d}|d}|d}|d}	tjj|d�}
||
_||
_||
_	|	|
_
|
��ddd	�}t�
|�}t|�WStyt}
zd
t|
�d	�}t�
|�}t|�WYd}
~
Sd}
~
ww)Nr�r+rar}ro�RAMrrrsr\r)rrMr�rrorprrqrprrrsr�rIrJrr�r�)r3rTr=rYr�r}ror�rrrsr|r>r/r�r0r4r4r5�
Updatepackage�s4





��zWebsiteManager.Updatepackagec
Cs�z[t�|�}|ddkr
nt��WStjj|d�}|d}|d}tjj|d�}z
tjj|d�}|��WnYtjjt	|�d�}	t||	d�}
|
�
�ddd	�}t�|�}t
|�WSty}}
zd
t|
�d	�}t�|�}t
|�WYd}
~
Sd}
~
ww)Nr�r+rar�rnr�rmrtr\r)rrMr�rrorprr�rr8r�rIrJrr�r�)r3rTr=rYr�r�rnrw�delasgr|ryr>r/r�r0r4r4r5�
AddAssignments4





��zWebsiteManager.AddAssignmentc 
Cs��z�tjj|d�}t�|�}|d}|d}|d}t|d�}t|d�}	t|d�}
t|d�}|d	}|d
}
|d}|d}t|	�d
krWddd�}t�|�}t|�WSt|�d
krlddd�}t�|�}t|�WSd}t	�
||�rundd|�d�d�}t�|�}t|�WStjj|d�}tjj|d�}z	tjj|d�}Wndtd�d�}t�|�}t|�YWSt
jj|jjd�}|j}|j}|
|}||	}||kr�dtd|�d|�d��d�}t�|�}t|�WS||k�rdtd|�d|�d��d�}t�|�}t|�WSt�|d�dk�rt�dd�WSt�|||�dk�r't�dd�WSt�|�dk�r?dddd�}t�|�}t|�WSd ttd!d"��}i}||d#<||d<||d<||d<||d$<||d<|	|d<|
|d<||d<||d<|
|d
<||d<d%�t	�d&|��dd'�ttd!d"��|d(<||d	<td)|�}|��t�d*�d+d+d,|d-�}t�|�}t|�WSt�y�}zdt|�d�}t�|�}t|�WYd}~Sd}~ww).Nra�sitename�Ownerr{�MysqlCPU�MYsqlRam�SiteCPU�SiteRam�App�
WPusername�WPemal�WPpasswd�rz"Minimum MySQL ram should be 256MB.r\z!Minimum site ram should be 256MB.z^[a-z0-9][a-z0-9]*$zinvalid site name "zd": must consist only of lowercase alphanumeric characters, as well as start with a letter or number.r�rmz&Please assign package to selected userzYou can add z or less then z CPUs.z Ram.rEr�r�r�rlrmrn�JobIDrTr�rrr��SubmitDockersiteCreationr.r+r.rq)rrorprrMr8rIrJrr�matchrr�rr�r}rqrprrrrrrrrrsr�rtr�) r3rTr=r�rYr�r�r{r�r�r�r�r�r�r�r�r0r/�patternrr�pkaobj�Dpkgobj�pkg_cpu�pkg_Ram�totalcup�totalRamr�r�rorwr�r4r4r5�submitDockerSiteCreation4s�
















,

�


��z'WebsiteManager.submitDockerSiteCreationc

Cs�tjj|d�}t�|�}i}z@|dkrMtjj|d�}t�|jj||�dkr&nt�	�WSi}	|jj|	d<d|	d<|j
|	d<td|	�}
|
��|�
�d|d<Wntyj}zd|d<t|�|d<WYd}~nd}~ww|�||�|d	<t|d
|�}|��S)Nrar+r1r�r:�Deleted�LPError�	LPMessagerz$websiteFunctions/ListDockersite.html)rrorprrMrr�r�r1r��SiteNamer�DeleteDockerAppr�r�r�r�rr)
r3rSrTr=r�r�rY�fdata�DockerSitesDelete�passdatar�r�r^r4r4r5�ListDockerSites�s8



����zWebsiteManager.ListDockerSitesc
Cs�zLt�|�}t|d�}t|d�}|�||�\}}t�||�}|�t|�|�}	tj�	dt
|��|�|||��}
ddd|
|	d�}t�
|�}t|�WStyo}
zddt
|
�d�}t�
|�}t|�WYd}
~
Sd}
~
ww)	Nr3rDzOur dockersiter+r.r4rr6)rrMr8rE�findDockersiteObjectsrFrnr�r�r�r�rxrIrJrr�)r3rTr=rYrCrDrHrI�dockersitesrr�r0r/r�r4r4r5�fetchDockersite�s(
�


��zWebsiteManager.fetchDockersitec	Cs`t�|�}tjj|d�}tjj|jd�}t�|jj||�dkr nt�	�St
|dd|i�}|��S)Nrar+z$websiteFunctions/DockerSiteHome.html�
dockerSite)rrMrrorprr1r�r�r�rr)	r3rSrTr=r�rYr��dsr^r4r4r5�Dockersitehome�s
�zWebsiteManager.Dockersitehome)NN)NNN)NNNNr0)��__name__�
__module__�__qualname__r�r�r�r6rErzr�r�r�rr�r�r�r�r�r�r�r�r�r�r�rrr	rrrrrr"rLrQrTrZrarhrprxr~r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rr+r1r;rAr8rJrMrGrxr>rErFr�r�r�r�r�r�r�r�r�r�r�rrrrrrr3r;r=r<rIrKrMrOrRrWrcrdrhrrrxr{r~r�r�r�r�r�r�r�r�r7rBrr�r�r�r�r�r�r�r�r�r�r�r�r�rrrrr r(r,r/r2r3r5r6r>r@rNrOrQrVrYr_rcrerirjrlrorzr{rr�r�r�r�r�r�r4r4r4r5r-/sH54#1$#E; +	0	
c&&<8-%5:G-8,'000-3,#(2kd&B/2+BC4AWUH'#?'1,0J@2*B3*(+-,7'!"/47;2)Ff&07"`5^<8X6<e/"3:1[I)k8'/(!"&m!r-)Tr4r:�os.path�sys�django�databases.modelsr�plogical.DockerSitesr�plogical.httpProcrr�rs�environ�
setdefault�setuprI�plogical.aclr�plogical.CyberCPLogFileWriterr�r�r�rrr	r
rrr
rrrrrr�plogical.virtualHostUtilitiesrr1r_�plogical.installUtilitiesrrurrr�loginSystem.modelsrr�packages.modelsr�plogical.mailUtilitiesr�randomrr�rr��plogical.childDomainr�mathr�plogical.aliasr �plogical.applicationInstallerr!�plogicalr"r#�emailMarketing.emACLr$�plogical.processUtilitiesr%r�r'�ApachController.ApacheVhostsr(�plogical.vhostConfsr)�plogical.cronUtilr*r,rr-r4r4r4r5�<module>sR<

Youez - 2016 - github.com/yon3zu
LinuXploit