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: //proc/self/root/usr/local/CyberCP/mailServer/__pycache__/mailserverManager.cpython-310.pyc
o

��hr/�@s�ddlZddlZddlmZddlZddlmZddlm	Z	ej
�d�ej�
dd�e��ddlmZzd	d
lmZmZddlmZWnYddlmZddlZddlZddlZzddlmZdd
lmZWnYddl Z z.ddl!mZ"ddl!m#Z$ddl%m&Z&m'Z'ddl(m)Z)ddl*m+Z+ddl,m-Z-ddl.m/Z/WnYddlZddl0m1Z1ddl2Z2ddl3Z4ddl5Z5Gdd�de4j6�Z7dd�Z8e9dkr�e8�dSdS)�N)�randint)�redirect)�httpProc�/usr/local/CyberCP�DJANGO_SETTINGS_MODULE�CyberCP.settings)�HttpResponse�)�Domains�EUsers)�
loadLoginPage��virtualHostUtilities)�
mailUtilities)r
)�Records)�Forwardings�Pipeprograms)�
ACLManager)�DNS)�
Administrator)�Websites��ProcessUtilitiesc@s(eZdZdHdd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Zdd�Z	dd�Z
dd�ZdIdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zd d!�Zd"d#�Zd$d%�Zd&d'�Zd(d)�Zd*d+�Zd,d-�Zd.d/�Zd0d1�Zd2d3�Zd4d5�Zd6d7�Zd8d9�Zd:d;�Zd<d=�Z d>d?�Z!d@dA�Z"dBdC�Z#dDdE�Z$dFdG�Z%dS)J�MailServerManagerNcCs"tj�|�||_||_||_dS�N)�multi�Thread�__init__�request�function�	extraArgs)�selfrrr �r"�2/usr/local/CyberCP/mailServer/mailserverManager.pyr0s
zMailServerManager.__init__c
CsZz|jdkr
|��WdSWdSty,}ztj�t|�d�WYd}~dSd}~ww)N�RunServerLevelEmailChecksz [MailServerManager.run])rr$�
BaseException�logging�CyberCPLogFileWriter�writeToFile�str)r!�msgr"r"r#�run6s
�"��zMailServerManager.runcCst|jddd�}|��S)NzmailServer/index.html�createEmail)rr�render)r!�procr"r"r#�
loadEmailHome=s�zMailServerManager.loadEmailHomecC�v|jjd}t�|�}tj�d�st|jdddid�}|��St�	||�}|t�
|�}t|jd|dd�d�}|��S)	N�userID�/home/cyberpanel/postfixz"mailServer/createEmailAccount.html�statusrr,r	��websiteListr3�r�sessionr�	loadedACL�os�path�existsrr-�findAllSites�findChildDomains�r!r1�
currentACLr.�websitesNamer"r"r#�createEmailAccountB�
�
�z$MailServerManager.createEmailAccountcCr0)	Nr1r2zmailServer/listEmails.htmlr3r�
listEmailsr	r4r6r>r"r"r#rCRrBzMailServerManager.listEmailsc
Cs�z�|jjd}t�|�}t�|d�dkrt�dd�WSt�|jj�}|d}|d�	�}|d}z|d}Wnd	}Yt
jj|d
�}t�
|||�dkrNnt��WSt�||�	�|�}	|	ddkr�|d	kr�d}
d
|�dt|��d|
�d�}dttdd��}t|d�}
|
�|�|
��dtjd}|d|��}t�|�dddd�}t�|�}t|�WSdd|	dd�}t�|�}t|�WSty�}zddt|�d�}t�|�}t|�WYd}~Sd}~ww)Nr1r,r�createEmailStatus�domain�username�passwordByPass�EmailLimits�����pkr	�30d�@� �/�
�/home/cyberpanel/順�?B�w�/usr/local/CyberCP/bin/python �/plogical/mailUtilities.py�% SaveEmailLimitsNew --tempConfigPath �None)r3rD�
error_message)rr7rr8�currentContextPermission�
loadErrorJson�json�loads�body�lowerr�objects�get�checkOwnershiprrAr)r�open�write�closer�
cyberPanelr�outputExecutioner�dumpsrr%)r!r1r?�data�
domainName�userName�passwordrH�admin�result�lt�limitString�
RandomFiler(�execPath�data_ret�	json_datar*r"r"r#�submitEmailCreationbsR









��z%MailServerManager.submitEmailCreationcCr0)	Nr1r2z"mailServer/deleteEmailAccount.htmlr3r�deleteEmailr	r4r6r>r"r"r#�deleteEmailAccount�rBz$MailServerManager.deleteEmailAccountc
Csz�|jjd}t�|�}t�|d�dkrt�dd�WSt�|jj�}|d}t	j
j|d�}t�|||�dkr7nt��WSz	t
j
j|d�}Wnddd	d
�}t�|�}t|�YWS|j��}|��dkrvddd	d
�}t�|�}t|�WSd}	d}
d}|D]R}z d|j�d
�}
t�|
dd��d��d�}t|d�}|d}Wnd}d}Y||jd|j||d�}|d}|
dkr�|	t�|�}	d}
q~|	dt�|�}	q~|	d}	ddd|	d�}t�|�}t|�WSt�y	}zddt|�d
�}t�|�}	t|	�WYd}~Sd}~ww)Nr1rvr�fetchStatusrErJr	�rEzNo email accounts exists!�r3rxrY�[zsudo awk -v email="zA" '$1 == email {print $2}' /etc/rspamd/badusers.map || echo "0,0"TrPrO�0m�%sMB)�id�email�	DiskUsage�numberofEmails�duration�,�]rX�r3rxrYri)rr7rr8rZr[r\r]r^rr`rarbr
rhr�
eusers_set�all�countrrrg�rstrip�split�intr�r%r))r!r1r?rirErm�	final_dic�
final_json�emailsrt�checkerr��items�commandrnr�r��dicr*rsr"r"r#�getEmailsForDomain�sd








��z$MailServerManager.getEmailsForDomainc
Cszj|jjd}t�|�}t�|d�dkrt�dd�WSt�|jj�}|d}t	j
j|d�}|j}t
j
j|d�}t�|jjj||�dkrDnt��WSt�|�|j����dkr[|��ddd	d
�}t�|�}	t|	�WSty�}
zddt|
�d
�}t�|�}	t|	�WYd}
~
Sd}
~
ww)Nr1rvr�deleteEmailStatusr�rrJr	rX)r3r�rY)rr7rr8rZr[r\r]r^rr`ra�
emailOwnerrrb�domainOwnerrErrwr�r�r��deleterhrr%r))r!r1r?rir�eUser�emailOwnerDomainrmrsrtr*r"r"r#�submitEmailDeletion�s2





��z%MailServerManager.submitEmailDeletionc
Cs
zb|jjd}t�|�}|dkrt�|jj�}|d}n|d}tjj	|d�}t�
|||�dkr1nt�dd�WStjj	|d�}d	t
jd
}d|||jjf}t�|�ddd
�}t�|�}	t|	�WSty�}
zdt|
�d
�}t�|�}	t|	�WYd}
~
Sd}
~
ww)Nr1�selectedDomain�websiteNamerJr	r3rryrUz!/plogical/virtualHostUtilities.pyz;%s setupAutoDiscover --virtualHostName %s --websiteOwner %srX�r3rY)rr7rr8r\r]r^rr`rarbr[rrrfrmrkr�executionerrhrr%r))r!rir1r?r�rm�websiterrrsrtr*r"r"r#�
fixMailSSLs0






��zMailServerManager.fixMailSSLcCr0)	Nr1r2�mailServer/emailForwarding.htmlr3r�emailForwardingr	r4r6r>r"r"r#r�7rBz!MailServerManager.emailForwardingc
Cs(z�|jjd}t�|�}t�|d�dkrt�dd�WSt�|jj�}|d}|d}|dkr�t	j
j|d�}tj
j|d	�}t�
|jjj||�d
krInt��WStj
j|d�}d}	d}
d
}|D],}|j|jkrfq]||j|jd
�}
|d
}|
dkr�|	t�|
�}	d
}
q]|	dt�|
�}	q]|	d}	d
d
d|	d�}t�|�}t|�WStj
j|d�}d}	d}
d
}|D],}|j|jkr�q�||j|jd
�}
|d
}|
dkr�|	t�|
�}	d
}
q�|	dt�|
�}	q�|	d}	d
d
d|	d�}t�|�}t|�WSt�y}zddt|�d�}t�|�}	t|	�WYd}~Sd}~ww)Nr1r�rrx�emailAddress�forwardingOptionzPipe to programr�rJr	��sourcer{)r~r��destinationr�r�rXr�rz)rr7rr8rZr[r\r]r^rr`rarrbr�r�rEr�filterr�r�rhrrr%r))r!r1r?rir�r�r�rm�currentForwardingsrtr�r~r�r�r�r�r*rsr"r"r#�fetchCurrentForwardingsHsx

�

�


��z)MailServerManager.fetchCurrentForwardingsc
Cs�z�|jjd}t�|�}t�|d�dkrt�dd�WSt�|jj�}|d}|d}|d}t	j
j|d�}tj
j|d	�}t�
|jjj||�d
krInt��WS|dkrbtj
j||d�D]}	|	��qZn@tj
j||d�D]7}	|	��|�d
�d}
d||
f}d|d}t�|�d|
d}t�|�d}t�|�d}t�|�qjd
d
ddd�}
t�|
�}t|�WSty�}zddt|�d�}
t�|
�}t|�WYd}~Sd}~ww)Nr1r�r�deleteForwardingStatusr�r�r�r�rJr	�Forward to email)r�r�rM�%s FILTER %spipe:dummyzsed -i 's/^z!.*//g' /etc/postfix/script_filterz!pipe.*//g' /etc/postfix/master.cf�"postmap /etc/postfix/script_filter�postfix reloadrXzSuccessfully deleted!)r3r�rY�successMessage)r3r�rY)rr7rr8rZr[r\r]r^rr`rarrbr�r�rErr�r�rr�rr�rhrr%r))r!r1r?rir�r�r�r�rmr��sourceusername�
virtualfilterr�rsrtr*r"r"r#�submitForwardDeletion�sR


�


�


��z'MailServerManager.submitForwardDeletionc
Cs>z�|jjd}t�|�}t�|d�dkrt�dd�WSt�|jj�}|d}|d}|d}t	j
j|d�}tj
j|d	�}t�
|jjj||�d
krInt��WStj
j||d���dkrjdddd
�}	t�|	�}
t|
�WS|dkr�tj
j|d���dkr�t||d�}|��t||d�}|��n\t||d�}|��|�d�d}d||f}
d|
d}t�|�|�d�d
}tj
j|d�}|j}|}d|||f}d|d}t�|�d}t�|�d}t�|�d}t�|�d
d
ddd�}	t�|	�}
t|
�WSt�y}zddt|�d
�}	t�|	�}
t|
�WYd}~Sd}~ww)Nr1r�r�createStatusr�r�r�r�rJr	)r�r�z/You have already forwarded to this destination.�r3r�rYr�r�rMr�zecho 'z' >> /etc/postfix/script_filterryzR%spipe unix - n n - - pipe flags=Rq user=%s  argv=%s -f  $(sender) -- $(recipient)z' >> /etc/postfix/master.cfz�sed -i 's|^smtpd_recipient_restrictions =.*|smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination, check_recipient_access hash:/etc/postfix/script_filter, permit|' /etc/postfix/main.cfr�r�rXzSuccessfully Created!)r3r�rYr�)rr7rr8rZr[r\r]r^rr`rarrbr�r�rErr�r�rhr�saverr�rr�r�externalAppr%r))r!r1r?rir�r�r�r�rmrsrt�
forwardingr�r�r�rjr�r��	pipeowner�
filterpiper*r"r"r#�submitEmailForwardingCreation�sl

�










��z/MailServerManager.submitEmailForwardingCreationc
Cs�z�|jjd}t�|�}t�|d�dkrt�dd�WSt�|jj�}|d}t	j
j|d�}t�|||�dkr7nt��WSz	t
j
j|d�}Wntd	��d
}tj�|�rkt|ddd
���}|�|�dkrhd}	nd}	nd}	|j��}
d}d}|
D]%}
|
jd|
j�d�d�}|dkr�|t�|�}d}qx|dt�|�}qx|d}t�dd||	d|d��}t|�WSty�}zddt|�d�}t�|�}t|�WYd}~Sd}~ww)Nr1rCrr3r�rJr	ryz No emails exist for this domain.z/etc/postfix/vmail_ssl.map�r�utf-8)�encodingrIr{r}�MB)rr�r�r�rX)r3rx�serverHostname�mailConfiguredrYrirz)rr7rr8rZr[r\r]r^rr`rarbr
r%r9r:r;rc�read�findr�r�rr�r�rhrr))r!r1r?rir�rm�emailDomain�postfixMapPath�postfixMapDatar��recordsrtr�r�r�r�r*r�r"r"r#�fetchEmailssT


�

��zMailServerManager.fetchEmailscCr0)	Nr1r2z#mailServer/changeEmailPassword.htmlr3r�changeEmailPasswordr	r4r6r>r"r"r#�changeEmailAccountPasswordXrBz,MailServerManager.changeEmailAccountPasswordc
Cs�z�|jjd}t�|�}t�|d�dkrt�dd�WSt�|jj�}|d}|d}t	j
j|d�}tj
j|d�}zt�
|jjj||�d	krFnt��WWSWnt�
|jjj||�d	kr^nt��YWSYd
}tj�|�r�t�|�d�t���}d|��}||_nt�|�d�t���}d|��}||_|��d	d	d
d�}	t�|	�}
t|
�WSty�}zddt|�d�}	t�|	�}
t|
�WYd}~Sd}~ww)Nr1r�r�passChangeStatusrrGr�rJr	z/etc/redhat-releaser�z	{CRYPT}%srX)r3r�rY) rr7rr8rZr[r\r]r^rr`rarrbr�r�rE�
childOwnerr9r:r;�bcrypt�hashpw�encode�gensalt�decoderlr�rhrr%r))r!r1r?rirrl�emailDBrm�
CentOSPathrsrtr*r"r"r#�submitPasswordChangehsL
��


��z&MailServerManager.submitPasswordChangecCsR|jjd}t�|�}d}t�||�}|t�|�}t|jd||d�d�}|��S)Nr1r	zmailServer/dkimManager.html)r5�openDKIMInstalled�dkimManager)rr7rr8r<r=rr-)r!r1r?r�r@r.r"r"r#r��s

�zMailServerManager.dkimManagerc
Cs�z�|jjd}t�|�}t�|d�dkrt�dd�WSt�|jj�}|d}t	j
j|d�}t�|||�dkr7nt�
�WSzbddl}|jdd�}||�}|jd	|j}d
|d}	d|	}
t�|
d
�}|�d�d}|�d�d}
d
|d}	d|	}
t�|
d
�}t�|�ddd|||
�|ddd�}t�|�}t|�WWSty�}zdddt|�d�}t�|�}WYd}~nd}~wwt|�WSty�}zddt|�d�}t�|�}t|�WYd}~Sd}~ww)Nr1r�rrxrjrJr	��	cache_dir�.�/etc/opendkim/keys/�/default.txt�	sudo cat �opendkim�(��)z/default.privatezKeys successfully fetched!rX)r3rx�
keysAvailable�	publicKey�
privateKey�dkimSuccessMessagerY)r3rxr�rYrz)rr7rr8rZr[r\r]r^rr`rarb�	loadError�
tldextract�
TLDExtractrE�suffixrrg�index�rindexr�createDKIMRecordsrhrr%r))r!r1r?rirjrmr��no_cache_extract�
extractDomainr:r��output�	leftIndex�
rightIndexr�rsrtr*r"r"r#�
fetchDKIMKeys�sV


�
��

��zMailServerManager.fetchDKIMKeyscCs0z�|jjd}t�|�}t�|d�dkrt�dd�WSt�|jj�}|d}t	j
j|d�}t�|||�dkr7nt��WSdt
jd	}|d
|}t�|�}t	j
j|d�}t�||�|�d�dkr�d
}t�|�d}t�|�d}t�|dd�ddl}	|	jdd�}
|
|�}|jd|j}tj
j|d�}
|
��d|d}d|}t�|�}|�d�d}|�d�d}t�|�t|
|
jd|d|||�ddddd�	}|��dddd�}t� |�}t!|�WSdd|d�}t� |�}t!|�WSt"�y}zddt#|�d�}t� |�}t!|�WYd}~Sd}~ww) Nr1r�r�generateStatusrjrJr	rUrVz generateKeys --domain �1,NonerIzfchown cyberpanel:cyberpanel -R /usr/local/CyberCP/lib/python3.6/site-packages/tldextract/.suffix_cachezfchown cyberpanel:cyberpanel -R /usr/local/CyberCP/lib/python3.8/site-packages/tldextract/.suffix_cachezdchown cyberpanel:cyberpanel -R /usr/local/CyberCP/lib/python*/site-packages/tldextract/.suffix_cacheTr�r�)�namer�r�zcat r�r�r�zdefault._domainkey.�TXTi)	r��	domain_idr��type�content�ttl�prio�disabled�authrX)r3r�rY)$rr7rr8rZr[r\r]r^rr`rarbrrfrrgr�dnsTemplater�r�r�r�rEr��
dnsDomainsr�r�r�r��
dnsRecordsr~rhrr%r))r!r1r?rirjrmrrr�r�r�r�r��topLevelDomain�zoner:r�r��recordrsrtr*r"r"r#�generateDKIMKeys�st







�	




��z"MailServerManager.generateDKIMKeysc
Cs�z.|jjd}t�|�}t�|d�dkrt�dd�WSt�tj	d�t
�ddd��}t|�WSt
yP}zdt|�d�}t
�|�}t|�WYd}~Sd}~ww)	Nr1r�r�installOpenDKIM)�Install�openDKIMr	rX�rrY)rr7rr8rZr[�_thread�start_new_threadrrr\rhrr%r))r!r1r?r�r*r�r"r"r#r+s


��z!MailServerManager.installOpenDKIMc
Cs*zqdtj}t�t�|���d�}|�d�dkrNdtj	d}|d}t
�|�}|�d�dkr0nt�
d	|d
dd��}t|�WSt�
d
|d
d
d��}t|�WS|�d�dkrdt�
d
dd
|d��}t|�WSt�
dd
|d��}t|�WSty�}zd
dt|�d�}t�
|�}t|�WYd}~Sd}~ww)Nr�r�z[200]rIrUrVz configureOpenDKIMr�z*Failed to install OpenDKIM configurations.r	r)rY�
requestStatus�abort�	installedrXz[404])rr
rYr)rrYr)rr
rY)r�installLogPath�
subprocess�check_output�shlexr�r�r�rrfrrgr\rhrr%r))r!r��
installStatusrrr�r�r*r�r"r"r#�installStatusOpenDKIM9sV

�
�
�
�

��z'MailServerManager.installStatusOpenDKIMc
Csd}t�d|�}|�d�dkrdSz+t�d|���}|D]}|�d�dkr;|ddkr;|�d�d	�d
�|_d	|_qWntyY}zt	j
�dt|��WYd}~nd}~wwd}t
|�}|��}|�d
d	�d}	d|	}
t�|
�}|�d�dkr~dSd	S)N�/etc/postfix/main.cf�cat %szmyhostname = server.example.comrIr�
myhostname�#�=r	rNz$%s. [checkIfMailServerSSLIssued:864]�/etc/cyberpanel/machineIPrPz openssl s_client -connect %s:465�18 (self signed certificate))rrgr��
splitlinesr��strip�mailHostName�MailSSLr%r&r'r(r)rcr�)r!�postfixPath�postFixData�postFixLinesr�r*�ipFile�f�ipData�	ipAddressr�rnr"r"r#�checkIfMailServerSSLIssuedos2�� ��
z,MailServerManager.checkIfMailServerSSLIssuedc
Cs�z5tj�|jdd�|jd}i}|��|d<t|d�}|�t�|��|�	�tj�|jdd�WdSt
yW}zdt|�d�}t�|�}t|�WYd}~Sd}~ww)	N�tempStatusPathz&Checking if MailServer SSL issued..,10�
reportFilerrT�Completed [200].rr)
r&r'�statusWriterr r&rcrdr\rhrer%r)r)r!r(�reportr(r*r�r�r"r"r#r$�s


��z+MailServerManager.RunServerLevelEmailChecksc	
Cs�z^t��tjkst��tjkrd}t�|�nt��tjkr&d}t�|�tj�|j	dd�t��tjkr:d}nEt��tjkrPd}t�|�d}t�|�n/d}t�|�d	}t
|d
�}|�dt|�
�d��|�d
�|��d|}t�|�d}t�|�ddl}dt|�
��}t�|�dt|�
��}t�|�d}dt|�
��|f}t�|�tj�|j	dd�t��tjks�t��tjkr�nd}t�|�t��tjkr�d}nt��tjkr�d}nd}t�|�t��tjk�rSd}tj|dd�d}tj|dd�d}t
|d
�}|�d�|��zd}tj|dd�WnYz&d }tj|dd�d!}tj|dd�d"}tj|dd�d }tj|dd�WnYtj�|j	dd#�Wd&St�y�}ztj�|j	dd$t|�d%�WYd}~dSd}~ww)'Nzyum remove postfix -yzapt-get -y remove postfixr'zRe-installing postfix..,10zWyum install --enablerepo=gf-plus -y postfix3 postfix3-ldap postfix3-mysql postfix3-pcrezjdnf --nogpg install -y https://mirror.ghettoforge.net/distributions/gf/gf-release-latest.gf.el8.noarch.rpmz;dnf install --enablerepo=gf-plus postfix3 postfix3-mysql -yz apt-get install -y debconf-utilszpf.unattend.textrTz postfix postfix/mailname string rPz8postfix postfix/main_mailer_type string "Internet Site"
zdebconf-set-selections zapt-get -y install postfixrz"postconf -e "myhostname = %s"rz%sed -i 's|server.example.com|%s|g' %szRe-installing Dovecot..,15z<apt-get -y install dovecot-imapd dovecot-pop3d postfix-mysqlz=yum --enablerepo=gf-plus -y install dovecot23 dovecot23-mysqlz=dnf install --enablerepo=gf-plus dovecot23 dovecot23-mysql -yz apt-get -y install dovecot-mysqlz=curl https://repo.dovecot.org/DOVECOT-REPO-GPG | gpg --importT��shellz:gpg --export ED409DA1 > /etc/apt/trusted.gpg.d/dovecot.gpgz$/etc/apt/sources.list.d/dovecot.listzEdeb https://repo.dovecot.org/ce-2.3-latest/ubuntu/bionic bionic main
z
apt update -yz�DEBIAN_FRONTEND=noninteractive DEBIAN_PRIORITY=critical sudo apt-get -q -y -o "Dpkg::Options::=--force-confdef" -o "Dpkg::Options::=--force-confold" --only-upgrade install dovecot-mysql -yzdpkg --configure -azapt --fix-broken install -yzPostfix/dovecot reinstalled.,40z!%s [install_postfix_dovecot][404]�
r	)r�decideDistro�centos�cent8r��ubuntur&r'r*r rcrdr)�getfqdnre�socketr�callr%)	r!r��	file_name�pfr4�postfix_main�debPathr(r*r"r"r#�install_postfix_dovecot�s�













���z)MailServerManager.install_postfix_dovecotc

Cs��zGd}d}d}d}d}t|d���}t|d�}d|d	}	|D]}
|
�d
�dkr/|�|	�q |�|
�q |��t|d���}t|d�}d|d
}	|D]}
|
�d�dkr\|�|	�qM|�|
�qM|��t|d���}t|d�}d|d
}	|D]}
|
�d�dkr�|�|	�qz|�|
�qz|��t|d���}t|d�}d|d
}	|D]}
|
�d�dkr�|�|	�q�|�|
�q�|��t|d���}t|d�}d|d
}	|D]}
|
�d�dkr�|�|	�q�|�|
�q�|��|jdk�rFd|j|f}t�|�d|j	|f}t�|�d|j|j	|f}t�|�d|j|j	|f}t�|�d|j|j	|f}t�|�d|j|j	|f}t�|�WdSWdSt
�yk}ztj�
|jddt|�d�WYd}~dSd}~ww)N�E/usr/local/CyberCP/install/email-configs-one/mysql-virtual_domains.cf�I/usr/local/CyberCP/install/email-configs-one/mysql-virtual_forwardings.cf�G/usr/local/CyberCP/install/email-configs-one/mysql-virtual_mailboxes.cf�I/usr/local/CyberCP/install/email-configs-one/mysql-virtual_email2email.cf�A/usr/local/CyberCP/install/email-configs-one/dovecot-sql.conf.extr�rTzDconnect = host=localhost dbname=cyberpanel user=cyberpanel password=z port=3306
�connectrIzpassword = rPrl�ONz&sed -i 's|host=localhost|host=%s|g' %sz!sed -i 's|port=3306|port=%s|g' %szsed -i 's|localhost|%s:%s|g' %sr'z%s [setup_email_Passwords][404]r.rr	)rc�	readlinesr��
writelinesre�remotemysql�	mysqlhostrr��	mysqlportr%r&r'r*r r))
r!�
mysqlPassword�mysql_virtual_domains�mysql_virtual_forwardings�mysql_virtual_mailboxes�mysql_virtual_email2email�dovecotmysqlri�writeDataToFile�dataWrittenr�r�r*r"r"r#�setup_email_Passwordss�








�

�

������z'MailServerManager.setup_email_Passwordsc
Cs�zBt|d�}|��}|��t|d�}|}|}|D]"}|�|�}	|	dkr6|d|	�|||	t|�d�}|�|�q|��WdStyd}
ztj�	|j
ddt|
�d�WYd}
~
dSd}
~
ww)Nr�rTrIr'z"%s [centos_lib_dir_to_ubuntu][404]r.)rcrBrer��lenrdr%r&r'r*r r))r!�filename�old�new�fd�lines�
centos_prefix�
ubuntu_prefix�liner�r*r"r"r#�centos_lib_dir_to_ubuntu�s&


$���z*MailServerManager.centos_lib_dir_to_ubuntuc
Cs��z�d}d}d}d}d}d}d}d}tj�|�rt�|�tj�|�r(t�|�tj�|�r3t�|�tj�|�r>t�|�tj�|�rIt�|�tj�|�rTt�|�tj�|�r_t�|�tj�|�rjt�|�d	}	t�|	�d
}	t�|	�t��tjkr�|�ddd
�|�ddd�ddl	}
|
�
dd�|
�
dd�|
�
dd�|
�
dd�|
�
d|�|
�
d|�|
�
d|�|
�
d|�d}	t�|	�d}	t�|	�d}	t�|	�d}	t�|	�d|}	t�|	�d|}	t�|	�d}	t�|	�d}	t�|	�d}	t�|	�d }	t�|	�d!|}	t�|	�d!|}	t�|	�d"}	t�|	�d#}	t�|	�d$}	t�|	�d%}	t�|	�d&}	t�|	�d'}	t�|	�d(}	t�|	�d)}	t�|	�d*}	t�|	�d+|}	t�|	�t��tjk�r�d,}	t�|	�d-}	t�|	�d.}	t�|	�d/}	t�|	�tj�r�d}t|d0���}t|d1�}
|D]}|�
d2�d3k�r�|
�|�|
�d4��q�|
�|��q�|
��d5}	t�|	�Wd9SWd9St�y�}ztj�|jd6d7t|�d8�WYd}~dSd}~ww):Nz%/etc/postfix/mysql-virtual_domains.cfz)/etc/postfix/mysql-virtual_forwardings.cfz'/etc/postfix/mysql-virtual_mailboxes.cfz)/etc/postfix/mysql-virtual_email2email.cfrz/etc/postfix/master.cf�/etc/dovecot/dovecot.confz!/etc/dovecot/dovecot-sql.conf.extz�openssl req -newkey rsa:2048 -new -nodes -x509 -days 3650 -subj "/C=US/ST=Denial/L=Springfield/O=Dis/CN=www.example.com" -keyout /etc/postfix/key.pem -out /etc/postfix/cert.pemz�openssl req -newkey rsa:2048 -new -nodes -x509 -days 3650 -subj "/C=US/ST=Denial/L=Springfield/O=Dis/CN=www.example.com" -keyout /etc/dovecot/key.pem -out /etc/dovecot/cert.pemz6/usr/local/CyberCP/install/email-configs-one/master.cfz
/usr/libexec/z	/usr/lib/z4/usr/local/CyberCP/install/email-configs-one/main.cfz/usr/libexec/postfixz/usr/lib/postfix/sbinrr;r<r=r>z9/usr/local/CyberCP/install/email-configs-one/dovecot.confr?z.chmod o= /etc/postfix/mysql-virtual_domains.cfz2chmod o= /etc/postfix/mysql-virtual_forwardings.cfz0chmod o= /etc/postfix/mysql-virtual_mailboxes.cfz2chmod o= /etc/postfix/mysql-virtual_email2email.cfz	chmod o= z3chgrp postfix /etc/postfix/mysql-virtual_domains.cfz7chgrp postfix /etc/postfix/mysql-virtual_forwardings.cfz5chgrp postfix /etc/postfix/mysql-virtual_mailboxes.cfz7chgrp postfix /etc/postfix/mysql-virtual_email2email.cfzchgrp postfix zgroupadd -g 5000 vmailz0useradd -g vmail -u 5000 vmail -d /home/vmail -mz systemctl enable postfix.servicezsystemctl start postfix.servicez/chgrp dovecot /etc/dovecot/dovecot-sql.conf.extz*chmod o= /etc/dovecot/dovecot-sql.conf.extz systemctl enable dovecot.servicezsystemctl start dovecot.servicez"systemctl restart  postfix.servicez
chmod 755 z"mkdir -p /etc/pki/dovecot/private/z mkdir -p /etc/pki/dovecot/certs/�mkdir -p /etc/opendkim/keys/z^sed -i 's/auth_mechanisms = plain/#auth_mechanisms = plain/g' /etc/dovecot/conf.d/10-auth.confr�rTzssl_key = <key.pemrIz$ssl_dh = </usr/share/dovecot/dh.pem
zsystemctl restart dovecotr'z&%s [setup_postfix_dovecot_config][404]r.r	)r9r:r;�removerr�r/r2rY�shutil�copyrcrBr�rCrer%r&r'r*r r))r!rHrIrJrK�main�master�dovecotrLr�r]�dovecotConfrir(r�r*r"r"r#�setup_postfix_dovecot_config�s�









���



























�$�����z.MailServerManager.setup_postfix_dovecot_configc
Cs�zUtj�|jdd�t��tjkrd}nt��tjkrd}nd}t�	|�t��tjkr4d}t�
|�t��tjksBt��tjkrSd}t�
|�d}t�
|�WdSWdSt
yw}ztj�|jdd	t|�d
�WYd}~dSd}~ww)
Nr'zInstalling opendkim..,40zyum -y install opendkimzdnf install opendkim -yz:DEBIAN_FRONTEND=noninteractive apt-get -y install opendkimzdnf install opendkim-tools -yzapt install opendkim-tools -yr[z%s [installOpenDKIM][404]r.rr	)r&r'r*r rr/r0r1r9�systemr�r2�ubuntu20r%r))r!r�r*r"r"r#�installOpenDKIMNew�s8�


�
����z$MailServerManager.installOpenDKIMNewc	
Cs(zud}d}t|d�}|�|�|��d}d}t|d�}|�|�|��t��tjkr^t|d���}t|d�}|D]}|�d�d	krT|�d
�rT|ddkrT|�d
�q:|�|�q:|��d}t�	|�d}t�	|�d}t�	|�WdSt
y�}ztj�
dt|����WYd}~dSd}~ww)Nz/etc/opendkim.confz�
Mode	sv
Canonicalization	relaxed/simple
KeyTable	refile:/etc/opendkim/KeyTable
SigningTable	refile:/etc/opendkim/SigningTable
ExternalIgnoreList	refile:/etc/opendkim/TrustedHosts
InternalHosts	refile:/etc/opendkim/TrustedHosts
�arzg
smtpd_milters = inet:127.0.0.1:8891
non_smtpd_milters = $smtpd_milters
milter_default_action = accept
r�rT�SocketrIzlocal:rrzSocket  inet:8891@localhost
zsystemctl start opendkimzsystemctl enable opendkimzsystemctl restart postfixr	zError in configureOpenDKIM )rcrdrerr/r2rBr�rCr�r%r&r'r(r))	r!�openDKIMConfigurePath�
configDatar(�postfixFilePathrir�r�r*r"r"r#�configureOpenDKIM�s>
	



$


��z#MailServerManager.configureOpenDKIMcCsd}t�|�d}t�|�d}t�|�d}t�|�d}t�|�d}t�|�d}t�|�d}t�|�d	}t�|�d
}t�|�d}t�|�d}t�|�d
}t�|�d}t�|�d}t�|�d}t�|�d}t�|�d}t�|�d}t�|�d}t�|�d}t�|�d}t�|�d}t�|�d}t�|�gd�}|D]}d|}t�|�q�gd�}|D]}d|}t�|�q�d}tj|dd�d }tj|dd�d!}tj|dd�d"}tj|dd�d#}tj|dd�d$}tj|dd�gd%�}|D]}zd&dl}|�|�W�qY�qd'}tj|dd�d(}t�|�d)}t�|�gd*�}|D]}d+|}t�|��q:d,}t�|�d-}t�|�d.}t�|�t��tjk�shtj�rwd/}t�|�d0}t�|�nd1}t�|�d2}t�|�d3}t�|�dS)4Nz6find /usr/local/CyberCP -type d -exec chmod 0755 {} \;z6find /usr/local/CyberCP -type f -exec chmod 0644 {} \;z#chmod -R 755 /usr/local/CyberCP/binz%chown -R root:root /usr/local/CyberCPz3find /usr/local/lscp -type d -exec chmod 0755 {} \;z3find /usr/local/lscp -type f -exec chmod 0644 {} \;z chmod -R 755 /usr/local/lscp/binz%chmod -R 755 /usr/local/lscp/fcgi-binz=chown -R lscpd:lscpd /usr/local/CyberCP/public/phpmyadmin/tmpz"chown -R root:root /usr/local/lscpzMmkdir -p /usr/local/lscp/cyberpanel/snappymail/data/_data_/_default_/configs/zMmkdir -p /usr/local/lscp/cyberpanel/snappymail/data/_data_/_default_/domains/zMmkdir -p /usr/local/lscp/cyberpanel/snappymail/data/_data_/_default_/storage/zJmkdir -p /usr/local/lscp/cyberpanel/snappymail/data/_data_/_default_/temp/zKmkdir -p /usr/local/lscp/cyberpanel/snappymail/data/_data_/_default_/cache/z;chown -R lscpd:lscpd /usr/local/lscp/cyberpanel/snappymail/z8chmod -R 775 /usr/local/lscp/cyberpanel/snappymail/data/z.usermod -a -G lscpd nobody 2>/dev/null || truezRchown -R lscpd:lscpd /usr/local/CyberCP/public/snappymail/data 2>/dev/null || truez.chmod 700 /usr/local/CyberCP/cli/cyberPanel.pyz8chmod 700 /usr/local/CyberCP/plogical/upgradeCritical.pyz:chmod 755 /usr/local/CyberCP/postfixSenderPolicy/client.pyz0chmod 640 /usr/local/CyberCP/CyberCP/settings.pyz<chown root:cyberpanel /usr/local/CyberCP/CyberCP/settings.py)z/etc/yum.repos.d/MariaDB.repo�/etc/pdns/pdns.confz!/etc/systemd/system/lscpd.service�/etc/pure-ftpd/pure-ftpd.conf�"/etc/pure-ftpd/pureftpd-pgsql.conf�"/etc/pure-ftpd/pureftpd-mysql.conf�!/etc/pure-ftpd/pureftpd-ldap.confrZz%/usr/local/lsws/conf/httpd_config.xmlz /usr/local/lsws/conf/modsec.confz/usr/local/lsws/conf/httpd.confzchmod 644 %s)rnrorprqrZrmz/etc/pure-ftpd/db/mysql.confz/etc/powerdns/pdns.confzchmod 600 %szchmod 640 /etc/postfix/*.cfTr,zchmod 644 /etc/postfix/main.cfzchmod 640 /etc/dovecot/*.confz#chmod 644 /etc/dovecot/dovecot.confz+chmod 640 /etc/dovecot/dovecot-sql.conf.extz%chmod 644 /etc/postfix/dynamicmaps.cf)z/usr/local/lsws/FileManager/z&/usr/local/CyberCP/install/FileManagerz5/usr/local/CyberCP/serverStatus/litespeed/FileManagerz(/usr/local/lsws/Example/html/FileManagerrzchmod 755 /etc/pure-ftpd/z-chmod +x /usr/local/CyberCP/plogical/renew.pyz3chmod +x /usr/local/CyberCP/CLManager/CLPackages.py)z)/usr/local/CyberCP/CLScript/panel_info.pyz1/usr/local/CyberCP/CLScript/CloudLinuxPackages.pyz./usr/local/CyberCP/CLScript/CloudLinuxUsers.pyz0/usr/local/CyberCP/CLScript/CloudLinuxDomains.pyz2/usr/local/CyberCP/CLScript/CloudLinuxResellers.pyz//usr/local/CyberCP/CLScript/CloudLinuxAdmins.pyz+/usr/local/CyberCP/CLScript/CloudLinuxDB.pyz'/usr/local/CyberCP/CLScript/UserInfo.pyzchmod +x %sz2chmod 600 /usr/local/CyberCP/plogical/adminPass.pyz/chmod 600 /etc/cagefs/exclude/cyberpanelexcludez.find /usr/local/CyberCP/ -name '*.pyc' -deletez#chown root:pdns /etc/pdns/pdns.confzchmod 640 /etc/pdns/pdns.confz'chown root:pdns /etc/powerdns/pdns.confz!chmod 640 /etc/powerdns/pdns.confz4chmod 640 /usr/local/lscp/cyberpanel/logs/access.log)	rr�rr5r]�rmtreer/r0r1)r!r��filesr��impFile�fileMr]�	clScriptsr"r"r#�fixCyberPanelPermissions�s�































z*MailServerManager.fixCyberPanelPermissionsc
Cs:�zxd}zCt�t�d|��}|d|_|d|_|d|_|d|_d|_|j�	d�d	kr1d
|_
d}t|�}|��}|�
dd
�d
}||_Wn&tym}zd|_tj�tj�rctj�dt|��WYd}~nd}~ww|��tj�|jdd�|��d
kr�Wd
Stj�|jdd�d
dl}|j�d�tj�dd�d
dl m!}	|�"|	j#dd�d
kr�Wd
Stj�|jdd�|�$�d
kr�tj�|jdd�Wd
Stj�|jdd�|�%�d
kr�tj�|jdd�Wd
S|�&�d
k�rtj�|jdd�Wd
S|j'�r!tj�|jdd�d
dl(m)}
|
�*|j+d |j+�d
d!l,m-}d
dl(m)}
t.j/�0�D],}z$|j/j1d"|j2d#�}
tj�|jdd$|j2�|
�3d
d%|j2|j4�W�q2Y�q2tj�|jdd&�|�5�tj�|jdd'�WdSt�y�}zd
t|�d(�}t�6|�}t7|�WYd}~Sd}~ww))Nz/etc/cyberpanel/mysqlPasswordr�	mysqluser�
mysqlpasswordrFrErAz
rds.amazonrIr	rrPr�OFFz%s. [setupConnection:75]r'z.Removing and re-installing postfix/dovecot..,5zResetting configurations..,40rrr)�settings�default�PASSWORDzConfigurations reset..,70z+setup_postfix_dovecot_config failed. [404].z'Restoreing OpenDKIM configurations..,70zInstall OpenDKIM failed. [404].z configureOpenDKIM failed. [404].z&Setting up Mail Server SSL if any..,75r
z/home/%s/public_html)�ChildDomains�mail.%sryz Creating mail domain for %s..,80z	/dev/nullzFixing permissions..,90r)r)8r\r]rrgrxryrFrErDr��RDSrcr�r��	LOCALHOSTr%r9r:r;�	debugPathr&r'r(r)r&r*r r:�sys�append�environ�
setdefault�CyberCPr{rO�	DATABASESrcrfrlr�plogical.virtualHostUtilitiesr�issueSSLForMailServerr�websiteFunctions.modelsr~rr`r�rarE�setupAutoDiscoverrmrwrhr)r!�passFile�jsonDatar"r#r$�ipAddressLocalr*r�r{rr~�websites�childr�r�r"r"r#�ResetEmailConfigurations�s�




����
��z*MailServerManager.ResetEmailConfigurationsc
Cs�d}t|�}|��}|�dd�d}zddl}|�d|�}||kr+dd||ffWSWn
dd||ffYSd|}t�|�}	|	�d�d	krLd
SdS)NrrPr	rrzmail.%s does not point to %s.z%openssl s_client -connect mail.%s:993rrI)rzNo valid SSL on port 993.)r	zAll checks are OK.)rcr�r�r4�
gethostbynamerrgr�)
r!r�r"r#r$r%r4�
siteIPAddrr�rnr"r"r#�debugEmailForSite�s"�
z#MailServerManager.debugEmailForSitec

Cs|jjd}t�|�}tj�d�st|jdddid�}|��St�	||�}|t�
|�}z:ddlm}|�
�|jkrcd}d	t��d
�}ddl}|j|t�|�d�}	|	��d}
|
dkr^d
}ntd�WSd
}Wntyz}zd
}WYd}~nd}~wwt|j||dd�d�}|��S)Nr1r2r�r3rr�rz@https://platform.cyberpersons.com/CyberpanelAdOns/Adonpermissionr�)r��IP)rir	zmailServer/EmailLimits.htmlz(https://cyberpanel.net/cyberpanel-addonsr4)rr7rr8r9r:r;rr-r<r=�plogical.processUtilitiesr�decideServer�OLS�fetchIP�requests�postr\rhrr%)
r!r1r?r.r@r�urlrir��response�Status�templater*r"r"r#rHs@
��
���
�zMailServerManager.EmailLimitsc
Cs�z�|jjd}t�|�}t�|d�dkrt�dd�WSt�|jj�}|d}|d}|d}t	j
j|d�}tj
j|d	�}t�
|jjj||�d
krInt��WSt��dkrddtjd}	|	d
}	t�|	�dtjd}	|	d}	t�|	�|�dt|��d|�d�}
dttdd��}t|d�}|�|
�|��dtjd}	|	d|��}	t�|	�}
|
�d�dkr�dd
i}nd
dd�}t�|�}t|�WSt y�}zddt|�d�}t�|�}t|�WYd}~Sd}~ww)Nr1r�rr�r�r�r�r�rJr	rUrVz installRspamdz SetupEmailLimitsrNrOrPrQrRrSrTrWr�rIr3rnr�r�)!rr7rr8rZr[r\r]r^rr`rarrbr�r�rEr�checkIfRspamdInstalledrrfrr�r)rrcrdrergr�rhrr%)r!r1r?rir�r�r�r�rmrrrprqr(rnrsrtr*r"r"r#�SaveEmailLimitsNew=sP











��z$MailServerManager.SaveEmailLimitsNew)NNNr)&�__name__�
__module__�__qualname__rr+r/rArCrurwr�r�r�r�r�r�r�r�r�r�r�r�rrrr&r$r:rOrYrcrfrlrwr�r�rHr�r"r"r"r#r.sN
=@
$$Q5L>1
7N6 o\!?4`)rcCs`tjdd�}|jddd�|jddd�|��}|jdkr.d	|ji}tdd|�}|��dSdS)
N�
CyberPanel)�descriptionrzSpecifiy a function to call!)�helpz--tempStatusPathzPath of temporary status file.r�r')�argparse�ArgumentParser�add_argument�
parse_argsrr'rr�)�parser�argsr �
backgroundr"r"r#r_ss

�r_�__main__):�os.pathr9r��randomr�django�django.shortcutsr�plogical.httpProcrr:r�r�r��setup�django.httpr�modelsr
r�loginSystem.viewsr�plogical.CyberCPLogFileWriterr'r&r\rrr�r�plogical.mailUtilitiesrr	�
dns.modelsr�rr�mailServer.modelsrr�plogical.aclr�plogical.dnsUtilitiesr�loginSystem.modelsrr�rr�rr��	threadingrr�rrr_r�r"r"r"r#�<module>svS
�