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

��h*��@s(ddlZddlZddlZddlZddlZej�d�ej�	dd�e�
�ddlmZddl
Z
zddlmZddlmZdd	lmZmZdd
lmZWnYddlZddlmZmZmZddlmZddlZddlZddlmZ dd
l!m"Z"ddl#m$Z$Gdd�d�Z%dd�Z&e'dkr�e&�dSdS)�N�/usr/local/CyberCP�DJANGO_SETTINGS_MODULE�CyberCP.settings)�HttpResponse)�DNS)�
Administrator�)�Domains�Records)�
mailUtilities)�match�I�M)�
ACLManager)�ProcessUtilities)�httpProcc@seZdZdZd9dd�Zdd�Zd:dd�Zd:d	d
�Zd:dd�Zd:d
d�Z	d:dd�Z
d:dd�Zd:dd�Zd:dd�Z
d:dd�Zd:dd�Zd:dd�Zd:dd�Zd:dd �Zd:d!d"�Zd:d#d$�Zd:d%d&�Zd:d'd(�Zd:d)d*�Zd:d+d,�Zd:d-d.�Zd:d/d0�Zd1d2�Zd3d4�Zd5d6�Zd7d8�ZdS);�
DNSManagerz#/home/cyberpanel/defaultNameserversNcCs
||_dS�N)�	extraArgs)�selfr�r�$/usr/local/CyberCP/dns/dnsManager.py�__init__ s
zDNSManager.__init__cCsDdtj|jjf}t|d���}|d�d�|_|d�d�|_dS)N�%s%s�rr�
r)	r�CFPath�admin�userName�open�	readlines�rstrip�email�key)r�cfFile�datarrr�
loadCFKeys#szDNSManager.loadCFKeyscCs.tjj|d�}d}t||d|jid�}|��S)N��pkzdns/index.html�type�
createDNSZone)r�objects�getrr)�render)r�request�userIDr�template�procrrr�loadDNSHome)szDNSManager.loadDNSHomecCs@t��tj�d�rddi}nddi}d}t|||d�}|��S)N�/home/cyberpanel/powerdns�statusrrzdns/createNameServer.html�createNameServer)r�	checkHome�os�path�existsrr-�rr.r/�	finalDatar0r1rrr�createNameserver/s
zDNSManager.createNameservercCs$zotjj|d�}t�|�}t�|d�dkrt�dd�WS|d}|d}|d}|d}|d	}	t�||�t	jj|d
�}
t
|
|
j|d|dddd
d�	}|��t
|
|
j|d|	dddd
d�	}|��d
dd�}t
�|�}
t|
�WSty�}zdt|�d�}t
�|�}
t|
�WYd}~Sd}~ww)Nr'r5r�
NSCreation�domainForNS�ns1�ns2�	firstNSIP�
secondNSIP��name�A�r�	�domainOwner�	domain_idrDr)�content�ttl�prio�disabled�auth�None)r=�
error_message)rr+r,r�	loadedACL�currentContextPermission�
loadErrorJsonr�dnsTemplater	r
�id�save�json�dumpsr�
BaseException�str)rr/r%r�
currentACLr>r?r@rArB�newZone�record�	final_dic�
final_json�msgrrrr=;sV
�	�	



��zDNSManager.NSCreationcCs8tj�d�rddi}nddi}d}t|||d�}|��S)Nr3r4rrzdns/createDNSZone.htmlr*)r7r8r9rr-r:rrrr*ss
zDNSManager.createDNSZonecCs�zTtjj|d�}t�|�}t�|d�dkrt�dd�WS|d}t||dd�}|��d|d	|d
}t	||j
|d|dddd
d�	}|��dd
i}	t�|	�}
t
|
�WStyv}zdt|�d�}	t�|	�}
t
|
�WYd}~Sd}~ww)Nr'r*r�zoneCreation�
zoneDomain�MASTER)rrDr)�ns1.z hostmaster.z 1 10800 3600 1209600 3600�SOArFrrG)rarP)rr+r,rrQrRrSr	rVr
rUrWrXrrYrZ)rr/r%rr[rbr\rJ�	soaRecordr^r_r`rrrra~s:
�	


��zDNSManager.zoneCreationcC�Rt�|�}tj�d�sddi}nddi}t�||�|d<d}t|||d�}|��S)Nr3r4rr�domainsListzdns/addDeleteDNSRecords.html�addDeleteRecords�rrQr7r8r9�findAllDNSZonesrr-�rr.r/r[r;r0r1rrr�addDeleteDNSRecords�s

zDNSManager.addDeleteDNSRecordsc
Cs�z�t�|�}t�|d�dkrt�dd�WS|d}|d}tjj|d�}t�|||�dkr.nt��WStjj|d�}t	jj
|jd	�}d
}	|dkrKd}	n>|d
krRd}	n7|dkrYd}	n0|dkr`d}	n)|dkrgd}	n"|dkrnd}	n|dkrud}	n|dkr|d}	n
|dkr�d}	n|dkr�d}	d}
d}|D].}|j|	kr�|j|j|j
|j|j|jd �}
|dkr�|
t�|
�}
d}q�|
d!t�|
�}
q�q�|
d"}
t�ddd#|
d$��}t|�WSty�}zddt|�d%�}t�|�}t|�WYd}~Sd}~ww)&Nrir�fetchStatus�selectedZone�currentSelectionr'rrC)rI��aRecordrE�
aaaaRecord�AAAA�cNameRecord�CNAME�mxRecord�MX�	txtRecord�TXT�	spfRecord�SPF�nsRecord�NSrfre�	srvRecord�SRV�	caaRecord�CAA�[)rUr)rDrJ�priorityrK�,�]rO�r4rnrPr%�r4rnrP)rrQrRrSrr+r,�checkOwnershipZoner	r
�filterrUr)rDrJrLrKrWrXrrYrZ)rr/r%r[rbrpr�domain�records�	fetchType�	json_data�checker�items�dicr_r`r^rrr�getCurrentRecordsForDomain�st


�

��z%DNSManager.getCurrentRecordsForDomainc
Cs|�zt�|�}t�|d�dkrt�dd�WS|d}|d}|d}t|d�}|dkr0td��|d	kr8td
��tjj|d�}t�	|||�dkrInt��WSt
jj|d
�}	d}
|dkr�|d}|dkrf|}
ntd|tt
B�rq|}
n|d|}
t�|	|
||d|��n�|dkr�|dkr�|}
ntd|tt
B�r�|}
n|d|}
|d}|d}
t�|	|
|||
|��nW|dkr�|dkr�|}
ntd|tt
B�r�|}
n|d|}
|d}t�|	|
||d|��n+|dk�r|dkr�|}
ntd|tt
B�r�|}
n|d|}
|d}t�|	|
||d|�n�|dk�r9|dk�r|}
ntd|tt
B��r$|}
n|d|}
|d}t�|	|
||d|�n�|dk�rg|dk�rF|}
ntd|tt
B��rR|}
n|d|}
|d}t�|	|
||d|�n�|dk�r{|d }t�|	|||d|�n�|d!k�r�|d"}|dk�r�d#|}ntd|tt
B��r�|}n|d|}t�|	|||d|�n_|d$k�r�|dk�r�|}
ntd|tt
B��r�|}
n|d|}
|d%}|d}
t�|	|
|||
|�n-|d&k�r
|dk�r�|}
ntd|tt
B��r�|}
n|d|}
|d'}t�|	|
||d|�ddd(d)�}t�|�}t|�WSt�y=}zddt|�d)�}t�|�}t|�WYd}~Sd}~ww)*Nrir�
add_statusro�
recordType�
recordNamerK�$TTL: The item must be greater than 0�Q�'TTL: The item must be lesser than 86401r'rrCrqrE�recordContentA�@�E([\da-z\.-]+\.[a-z\.]{2,12}|[\d\.]+)([\/:?=&#]{1}[\da-z\.-]+)*[\/\?]?�.rx�recordContentMXr�rt�recordContentAAAArv�recordContentCNAMEr|�recordContentSPFrz�recordContentTXTre�recordContentSOAr~�recordContentNSrdr��recordContentSRVr��recordContentCAArO�r4r�rP)rrQrRrS�int�
ValueErrorrr+r,r�r	rrr
r�createDNSRecordrWrXrrYrZ)rr/r%r[rbr�r�rKr�zone�valuer�r�r�r�r�r�r�r�r�r�r�r^r_r`rrr�addDNSRecord�s�

���
�

�

�



�

�

�


��zDNSManager.addDNSRecordc

Cs|z�t�|�}t�|d�dkrt�dd�WS|d}tjj|d�}t�|||�dkr*nt��WStjj|dd�}t�	|||�dkrBnt��WS|ddkrR|d|_
|d	dkrqt|d	�|_|jdkrht
d
��|jdkrqt
d��|d
dkr~t|d
�|_|ddkr�|d|_|��ddd�}t�|�}t|�WSty�}	zdt|	�d�}t�|�}t|�WYd}	~	Sd}	~	ww)Nrirr�ror'rrU�nameNow�ttlNowr�r�r��priorityNow�
contentNowrO�r4rP)rrQrRrSrr+r,r�r
�VerifyRecordOwnerrDr�rKr�rLrJrVrWrXrrYrZ)
rr/r%r[rbrr]r^r_r`rrr�updateRecord�sF










��zDNSManager.updateRecordc

Cs�zKt�|�}t�|d�dkrt�dd�WS|d}tjj|d�}tjj|d�}t�|j	j
||�dkr3nt��WS|��dddd	�}t
�|�}t|�WStyn}	zddt|	�d	�}t
�|�}t|�WYd}	~	Sd}	~	ww)
Nrir�
delete_statusrU)rUr'rrO�r4r�rP)rrQrRrSr
r+r,rr�rHrD�	loadError�deleterWrXrrYrZ)
rr/r%r[rU�	delRecordrr^r_r`rrr�deleteDNSRecord�s(




��zDNSManager.deleteDNSRecordcCrg)Nr3r4rrrhzdns/deleteDNSZone.html�
deleteZonerjrlrrr�
deleteDNSZone�s

zDNSManager.deleteDNSZonec

Csz_|d}t�|�}tjj|d�}t�|d�dkr t�dd�WSt�|||�dkr*nt��WSt	jj|d�}tjj|d�}|ddkrM|j
|krMt��WS|��dd	d
�}t�
|�}t|�WSty�}	zdt|	�d
�}t�
|�}t|�WYd}	~	Sd}	~	ww)Nrbr'r�rr�rrCrrO)r�rP)rrQrr+r,rRrSr�r�r	rr�rWrXrrYrZ)
rr/r%rbr[r�delZoner^r_r`rrr�submitZoneDeletions0







��zDNSManager.submitZoneDeletioncCs�t�|�}tj�d�sddi}nddi}t�||�|d<tj�tj�rkttjd��	�}z|d�
d�|d<WnYz|d�
d�|d	<WnYz|d
�
d�|d<WnYz|d�
d�|d
<WnYd}t|||d�}|��S)Nr3r4rrrhrr�firstNS�secondNS��thirdNS��forthNSz$dns/configureDefaultNameServers.htmlr)
rrQr7r8r9�findAllDomainsr�defaultNameServersPathrr r!rr-)rr.r/r[r%�nsDatar0r1rrr�configureDefaultNameServers(s4

z&DNSManager.configureDefaultNameServerscCs�z�t�|�}|ddkr
nt��WSd}zd|d�d�|d�d�|d�d�|d	�d�f}WnHzd
|d�d�|d�d�|d�d�f}Wn+zd|d�d�|d�d�f}Wnzd|d�d�}WnYYYYttjd
�}|�|�d��|��ddl	}|j
dd�}ttjd���}|D]$}	||	�d��}
|
jd|
j
}tjj|d�}t�||	dt��dd�q�ddd�}
t�|
�}t|�WSty�}zdt|�d�}
t�|
�}t|�WYd}~Sd}~ww)Nrrrqz%s
%s
%s
%s
r�rr�r�r�z	%s
%s
%s
z%s
%s
z%s
�wr)�	cache_dirrr�rCrEixrOr�)rrQrSr!rrr��write�close�
tldextract�
TLDExtractr r��suffixr	r+r,rr��fetchIPrWrXrrYrZ)rr/r%r[�	nsContent�writeToFiler��no_cache_extractr��ns�
extractDomain�topLevelDomainr�r^r_r`rrr�saveNSConfigurationsHsP

<0$�



��zDNSManager.saveNSConfigurationscCs�t�|�}tj�d�sd}nd}tjj|d�}d}dtj	|j
f}tj�|�rAd}t�||�}||_|�
�||||j|jd�}	n||d�}	d}
t||
|	d	�}|��S)
Nr3rrr'r)rhr4�
CloudFlare�cfEmail�cfToken)r4r�z&dns/addDeleteDNSRecordsCloudFlare.htmlri)rrQr7r8r9rr+r,rrrr�rr&r"r#rr-)rr.r/r[r4rr��cfPathrhr%r0r1rrr�addDeleteDNSRecordsCloudFlare~s&

�
z(DNSManager.addDeleteDNSRecordsCloudFlarec

Cs�zW|d}|d}|d}t�|�}t�|d�dkr!t�dd�WStjj|d�}dtj|j	f}t
|d	�}	|	�d
|||f�|	��t
�|d�dd
d�}
t�|
�}t|�WStyy}zdt|�d�}
t�|
�}t|�WYd}~Sd}~ww)Nr�r��cfSyncrirr4r'rr�z%s
%s
%si�rrOr�)rrQrRrSrr+r,rrrrr�r�r7�chmodrWrXrrYrZ)
rr/r%r�r�r�r[rr�r�r^r_r`rrr�
saveCFConfigs�s,





��zDNSManager.saveCFConfigscs`�z�t�|�}t�|d�dkrt�dd�WS|d}|d}tjj|d�}||_t�|||�dkr2nt��WS|�	�|dd	�}t
j
|j|jd
�}z	|j
j|d�}	Wn#tyu}
zt�ddt|
�dd
��}t|�WYd}
~
WSd}
~
wwt|	�dkr�t�ddddd
��}t|�WSt|	dd�d�D]�}|d}
|d}d}|dkr�d}n>|dkr�d}n7|dkr�d}n0|dkr�d}n)|dkr�d}n"|dkr�d}n|d kr�d!}n|d"kr�d#}n
|d$kr�d%}n|d&kr�d'}z|j
jj|d|d(�d�}Wn&t�y}
zt�ddt|
�dd
��}t|�WYd}
~
WSd}
~
wwt�d)|
d*��t|�fd+d�d�}d,}d}|D]A}|d-dk�r>d.}n|d-}|d|d/|d|d0d1||d2|d3d4�}|dk�ri|t�|�}d}�q2|d5t�|�}�q2|d6}t�ddd7|d
��}t|�WSWdSt�y�}zddt|�d8�}t�|�}t|�WYd}~Sd}~ww)9Nrirrnrorpr'r�2�rD�per_page�r"�token��params�[]r�rqcS�|dS�NrDr��vrrr�<lambda>��zADNSManager.getCurrentRecordsForDomainCloudFlare.<locals>.<lambda>�r#rDrUrrrErsrtrurvrwrxryrzr{r|r}r~rfrerr�r�r�)r�r)z\.*�$cs��d|d�d|dS)NrqrD�_r))�subr���progrrr��sr�rK�AUTOr)rJ�1400�proxied�	proxiable)rUr)rDrJr�rK�proxyr�r�r�rOr�)rrQrRrSrr+r,rr�r&r�r"r#�zonesrYrWrXrZr�len�sorted�dns_records�re�compile)rr/r%r[rbrprr��cfr��er_r��	zone_name�zone_idr�r�r�r��
dns_recordrKr�r`r^rr�r�$getCurrentRecordsForDomainCloudFlare�s�


��
���

�B
��z/DNSManager.getCurrentRecordsForDomainCloudFlarec
Cs�z�t�|�}t�|d�dkrt�dd�WS|d}|d}tjj|d�}||_t�|||�dkr1nt��WS|�	�|dd	�}t
j
|j|jd
�}z	|j
j|d�}	Wn#tyt}
zt�ddt|
�dd
��}t|�WYd}
~
WSd}
~
wwt|	dd�d�D]}|d}
|j
j�|
|�dddd�}t�|�}t|�WSWdSty�}zddt|�d�}t�|�}t|�WYd}~Sd}~ww)NrirrnrorUr'rr�r�r�r�r��r4r�rPr%cSr�r�rr�rrrr�>r�z6DNSManager.deleteDNSRecordCloudFlare.<locals>.<lambda>r�rOr�)rrQrRrSrr+r,rr�r&r�r"r#r�rYrWrXrZrr�r�r�)rr/r%r[rbrUrr�r�r�r�r_r�rr^r`rrr�deleteDNSRecordCloudFlare!sD


��
�	
��z$DNSManager.deleteDNSRecordCloudFlarec
Cs:�zwt�|�}t�|d�dkrt�dd�WS|d}|d}|d}t|d�}|dkr0td��|d	kr8td
��tjj|d�}||_	t�
|||�dkrLnt��WS|��|d
d�}	tj|j
|jd�}
z	|
jj|	d�}Wn#ty�}zt�ddt|�dd��}
t|
�WYd}~WSd}~wwt|dd�d�D�]�}|d}d}|dkr�|d}|dkr�|}ntd|ttB�r�|}n|d|}t�|
||||d|��n�|dkr�|dkr�|}ntd|ttB�r�|}n|d|}|d}|d}t�|
||||||��ne|d k�r/|dk�r|}ntd|ttB��r|}n|d|}|d!}t�|
||||d|��n5|d"k�r_|dk�r<|}ntd|ttB��rH|}n|d|}|d#}t�|
||||d|��n|d$k�r�|dk�rl|}ntd|ttB��rx|}n|d|}|d%}t�|
||||d|�n�|d&k�r�|dk�r�|}ntd|ttB��r�|}n|d|}|d'}t�|
||||d|�n�|d(k�r�|d)}t�|
||||d|�n�|d*k�r|d+}|dk�r�d,|}ntd|ttB��r�|}n|d|}t�|
||||d|�na|d-k�r6|dk�r|}ntd|ttB��r|}n|d|}|d.}|d}t�|
||||||�n.|d/k�rd|dk�rC|}ntd|ttB��rO|}n|d|}|d0}t�|
||||d|�ddd1d2�}t�|�}
t|
�WSWdSt�y�}zddt|�d2�}t�|�}
t|
�WYd}~Sd}~ww)3Nrirr�ror�r�rKr�r�r�r'rr�r�r�r�r�rcSr�r�rr�rrrr�rr�z3DNSManager.addDNSRecordCloudFlare.<locals>.<lambda>r�rUrqrEr�r�r�r�rxr�r�rtr�rvr�r|r�rzr�rer�r~r�rdr�r�r�r�rOr�)rrQrRrSr�r�rr+r,rr�r&r�r"r#r�rYrWrXrZrr�rrr
r�createDNSRecordCloudFlare)rr/r%r[rbr�r�rKrr�r�r�r�r_r�r�r�r�r�r�r�r�r�r�r�r�r�r^r`rrr�addDNSRecordCloudFlareMs


����

�

�

�

�



�

�

�
��
��z!DNSManager.addDNSRecordCloudFlarec
Csz^t�|�}t�|d�dkrt�dd�WS|d}tjj|d�}||_t�|||�dkr-nt��WSt	�}|�
||�\}}|dkrPddd�}	t�|	�}
t
|
�WSd|d�}	t�|	�}
t
|
�WSty�}zdt|�d�}	t�|	�}
t
|
�WYd}~Sd}~ww)	Nrirr�ror'rrOr�)rrQrRrSrr+r,rr�r�
cfTemplaterWrXrrYrZ)rr/r%r[rbr�dnsr4�errorr^r_r`rrr�syncCFs2








��zDNSManager.syncCFc
Cs�z�t�|�}t�|d�dkrt�dd�WS|d}|d}|d}tjj|d�}||_t�|||�dkr5nt��WS|�	�|d	d
�}t
j
|j|jd�}	|	j
j|d�}
|
d}|d
}d|i}|	j
jj||d�}
|dkrod}nd}|
D]B}|d}|d}|d}|d}|d}||kr�qs|d
}|||||d�}|	j
jj|||d�dddd�}t�|�}t|�WSWdSty�}zddt|�d�}t�|�}t|�WYd}~Sd}~ww)NrirrnrorDr�r'rr�r�r�r�rUTFr)rJrKr�)r)rDrJrKr�)r%rOr�)rrQrRrSrr+r,rr�r&r�r"r#r�r��putrWrXrrYrZ)rr/r%r[rbrDr�rr�r�r�r�rr��new_r_proxied_flagr�r_name�r_type�	r_content�r_ttl�	r_proxied�
dns_record_id�new_dns_recordr^r_r`rrr�enableProxy3sb


�
�
��zDNSManager.enableProxyc
CsHz�t��tjkst��tjkr!d}t�|dd�d}t�|dd�t��tjks+tjr5d}t�|dd�n	d}t�|dd�t��tjksLt��tjkr�zt�dd�Wngty�}z[|j	t	j
kr�|j	t	jkr�tj
�|jd	d
t|�d�WYd}~WdSzt�d�Wn)ty�}ztj
�|jd	d
t|�d�WYd}~WYd}~WdSd}~wwWYd}~nd}~wwt��tjks�t��tjkr�d}t�|dd�d}t�|dd�}d}t�|dd�WdSd}t�|dd�WdSt�y#}z#tj
�dt|�d�tj
�|jd	dt|�d�WYd}~dSd}~ww)Nzsystemctl stop systemd-resolved�rootTz*systemctl disable systemd-resolved.servicezQDEBIAN_FRONTEND=noninteractive apt-get -y purge pdns-server pdns-backend-mysql -yz$yum -y erase pdns pdns-backend-mysqlz/etc/resolv.confzetc/resolved.conf�tempStatusPathz?[ERROR] Unable to rename /etc/resolv.conf to install PowerDNS: z[404]rzH[ERROR] Unable to remove existing /etc/resolv.conf to install PowerDNS: z-DEBIAN_FRONTEND=noninteractive apt-get updatezPDEBIAN_FRONTEND=noninteractive apt-get -y install pdns-server pdns-backend-mysqlzsystemctl stop pdns || truerz&yum -y install pdns pdns-backend-mysql�[ERROR] z [installPowerDNS]z [installPowerDNS][404])r�decideDistro�ubuntu�cent8�executioner�ubuntu20r7�rename�OSError�errno�EEXIST�ENOENT�logging�CyberCPLogFileWriter�statusWriterrrZ�removerYr�)r�commandr��e1�resultr`rrr�installPowerDNS�sr�������������zDNSManager.installPowerDNSc
Cs �z^t��}t�d�t��tjkst��tjkrd}n1d}tj�|�}tj�	|�sMz	tj
|dd�WntyL}z
|jtj
krB�WYd}~nd}~wwddl}tj�	|�rkz
|�||d�Wn	t�|�Y|�d|�zQt|d	��B}|��}|r�d
|vr�t�d�tj�d�d
|d}	t|d��
}|�|	�Wd�n1s�wYt�d�Wd�n1s�wYWnty�}zt�dt|��WYd}~nd}~wwt|d	���}
t|d�}d|d}|
D]}
|
�d�dk�r|�|�q�|�|
�q�|��|jdk�r.d|j|f}t� |dd�d|j!|f}t� |dd�t��tj"k�s>t��tj#k�r]d}t� |dd�d|}t� |dd�d|}t� |dd�WdSt$�y�}z#tj%�dt|�d �tj%�&|j'd!dt|�d"�WYd}~dSd}~ww)#Nz/usr/local/CyberCP/installz/etc/pdns/pdns.confz/etc/powerdns/pdns.confi�)�moderz.bakzdns-one/pdns.confrz
launch=gmysqlz0PowerDNS config incomplete, attempting to fix...z%PowerDNS config incomplete, fixing...z�# PowerDNS MySQL Backend Configuration
launch=gmysql
gmysql-host=localhost
gmysql-port=3306
gmysql-user=cyberpanel
gmysql-password=zc
gmysql-dbname=cyberpanel

# Basic PowerDNS settings
daemon=no
guardian=no
setgid=pdns
setuid=pdns
r�z,MySQL backend configuration written directlyz*Warning: Could not verify config content: zgmysql-password=rzgmysql-password����ONz4sed -i 's|gmysql-host=localhost|gmysql-host=%s|g' %srTz/sed -i 's|gmysql-port=3306|gmysql-port=%s|g' %sz>id -u pdns &>/dev/null || useradd -r -s /usr/sbin/nologin pdnszchown root:pdns %szchmod 640 %srrz  [installPowerDNSConfigurations]rz% [installPowerDNSConfigurations][404])(r7�getcwd�chdirrr�centosrr8�dirnamer9�makedirsrr r!�shutil�mover&�copyr�readr�r#�
InstallLogr��	ExceptionrZr �find�
writelinesr��remotemysql�	mysqlhostr�	mysqlportrr�IOErrorr$r%r)r�
mysqlPassword�cwd�dnsPath�dnsDirr�r3�frJ�mysql_configr%�writeDataToFile�dataWrittenr�r'r`rrr�installPowerDNSConfigurations�s�
���
���
�����
 ���z(DNSManager.installPowerDNSConfigurationscCstd}t�|�ddl}|�d�d}t�|�}d}t�|�}|��dkr8tj�d|�tj�	|j
dd	�dSd
S)Nzsystemctl enable pdnsrr�zsystemctl start pdnszsystemctl is-active pdns�activez2[ERROR] PowerDNS failed to start. Service status: rz7[ERROR] PowerDNS service failed to start properly [404]r)rr�time�sleep�outputExecutioner�stripr#r$r�r%r)rr'rIr)�outputrrr�
startPowerDNS(s



�zDNSManager.startPowerDNSc
Cs>z�d}zCt�t�d|��}|d|_|d|_|d|_|d|_d|_|j�	d�d	kr0d
|_
d}t|�}|��}|�
dd
�d
}||_Wn&tyl}zd|_tj�tj�rbtj�dt|��WYd}~nd}~wwtj�|jdd�|��d
kr�tj�|jdd�Wd
Stj�|jdd�d
dl}|j�d�tj�dd�d
dlm }	tj�|jdd�|�!|	j"dd�d
kr�tj�|jdd�Wd
S|�#�d
kr�tj�|jdd�Wd
Stj�|jdd�t$�%�tj�|jdd�WdSt�y}zd
t|�d�}
t�&|
�}t'|�WYd}~Sd}~ww) Nz/etc/cyberpanel/mysqlPasswordzcat %s�	mysqluser�
mysqlpasswordr=r<r-z
rds.amazonr,rz/etc/cyberpanel/machineIPrr�OFFz%s. [setupConnection:75]rz"Removing and re-installing DNS..,5zinstallPowerDNS failed. [404].zResetting configurations..,40rrr)�settingszConfigurations reset..,70�default�PASSWORDz,installPowerDNSConfigurations failed. [404].zstartPowerDNS failed. [404].zFixing permissions..,90zCompleted [200].r�)(rW�loadsrrKrOrPr=r<r;r9�RDSrr6�split�	LOCALHOSTrYr7r8r9�	debugPathr#r$r�rZr%rr*�sys�append�environ�
setdefault�CyberCPrRrG�	DATABASESrNr�fixPermissionsrXr)r�passFile�jsonData�ipFilerC�ipData�ipAddressLocalr`rZrRr^r_rrr�ResetDNSConfigurationsBsf




����
��z!DNSManager.ResetDNSConfigurationsr)NN)�__name__�
__module__�__qualname__r�rr&r2r<r=r*rarmr�r�r�r�r�r�r�r�r�r�rrrrrr*rGrNrfrrrrrs>




8

#

J
1
2


 
 
6


l
,
@
'M@hrcCs\tjdd�}|jddd�|jddd�|��}|jdkr,d	|ji}t|�}|��dSdS)
N�
CyberPanel)�description�functionzSpecify a function to call!)�helpz--tempStatusPathzPath of temporary status file.rfr)�argparse�ArgumentParser�add_argument�
parse_argsrlrrrf)�parser�argsr�ftprrr�main�s

�ru�__main__)(rnr �os.pathr7rZ�djangor8r[r\r]�setup�django.httprrW�plogical.dnsUtilitiesr�loginSystem.modelsr�modelsr	r
�plogical.mailUtilitiesrr�rr
r�plogical.aclrr��plogical.CyberCPLogFileWriterr$r#�plogical.processUtilitiesr�plogical.httpProcrrrurgrrrr�<module>sPs
�