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/ftp/__pycache__/ftpManager.cpython-310.pyc
o

��hm�@sddlZddlZddlZddlZej�d�ej�dd�e�	�ddl
Z
ddlmZddl
mZzddlmZdd	lmZWnYddlmZzdd
lmZddlmZddlmZdd
lmZWnYddlZddlmZddl Z Gdd�d�Z!dd�Z"e#dkr�e"�dSdS)�N�/usr/local/CyberCP�DJANGO_SETTINGS_MODULE�CyberCP.settings)�httpProc)�HttpResponse�)�Users)�
Administrator)�
loadLoginPage)�Websites)�FTPUtilities)�
ACLManager)�ProcessUtilitiesc@s~eZdZddd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Zdd�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�ZdS)�
FTPManagerNcCs||_||_dS�N)�request�	extraArgs)�selfrr�r�$/usr/local/CyberCP/ftp/ftpManager.py�__init__s
zFTPManager.__init__cCst|jddd�}|��S)Nzftp/index.html�createFTPAccount)rr�render)r�procrrr�loadFTPHome#s�zFTPManager.loadFTPHomecCsz|jjd}t�|�}tjj|d�}tj�	d�s&t
|jdddid�}|��St�||�}t
|jd||j
dd	�d�}|��S)
N�userID��pk�/home/cyberpanel/pureftpdzftp/createFTPAccount.html�statusrrr)�websiteList�OwnerFTPr)r�sessionr
�	loadedACLr	�objects�get�os�path�existsrr�findAllSites�userName)rr�
currentACL�adminr�websitesNamerrrr(s
��zFTPManager.createFTPAccountc
Cs�z�|jjd}t�|�}t�|d�dkrt�dd�WSt�|jj�}|d}|d}|d}t	j
j|d�}t�|||�d	kr?nt�
�WSz|d
}Wnd}Yt	j
j|d�}z|d
}	t|	�dkrdnd}	Wnd}	Yt�||||	|j|�}
|
dd	kr�d	d	dd�}t�|�}t|�WSdd|
d	d�}t�|�}t|�WSty�}
zddt|
�d�}t�|�}t|�WYd}
~
Sd}
~
ww)Nrrr�creatFTPStatus�ftpUserName�passwordByPass�	ftpDomainrr�api�0)�idr'�None)rr.�
error_message)rr"r
r#�currentContextPermission�
loadErrorJson�json�loads�bodyr	r$r%�checkOwnership�	loadError�lenr�submitFTPCreationr*�dumpsr�
BaseException�str)rrr+�datar*�password�
domainNamer,r2r'�result�data_ret�	json_data�msgrrrr?9sP

�




��zFTPManager.submitFTPCreationcC�h|jjd}t�|�}tj�d�st|jdddid�}|��St�	||�}t|jd|dd�d�}|��S)	Nrrzftp/deleteFTPAccount.htmlrr�deleteFTPAccountr�r r�
rr"r
r#r&r'r(rrr)�rrr+rr-rrrrKos
�
�zFTPManager.deleteFTPAccountc
CsBz~|jjd}t�|�}t�|d�dkrt�dd�WSt�|jj�}|d}t	j
j|d�}t�|||�dkr7nt��WSt
j
j|d�}|j��}d	}d}	|D]}
d
|
ji}|	dkrc|t�|�}d}	qN|dt�|�}qN|d}t�dd
|d��}t|�WSty�}
zdt|
�d�}t�|�}t|�WYd}
~
Sd}
~
ww)NrrKr�fetchStatusr1rr��domain�[r*�,�]r5)rOr6rC)rOr6)rr"r
r#r7r8r9r:r;r	r$r%r<r�	users_set�all�userr@rrArB)rrr+rCrQr,�website�ftpAccountsrH�checker�items�dic�
final_jsonrIrGrrr�fetchFTPAccounts~s<





��zFTPManager.fetchFTPAccountsc
Cs�zW|jjd}t�|�}t�|d�dkrt�dd�WSt�|jj�}|d}t	j
j|d�}tj
j|d�}t�
|jj||�dkr@nt��WSt�|�t�ddd	d
��}t|�WStyz}zddt|�d
�}	t�|	�}
t|
�WYd}~Sd}~ww)NrrKr�deleteStatus�ftpUsernamer�rWrr5)rr_r6)rr"r
r#r7r8r9r:r;r	r$r%rr<rQr�submitFTPDeletionr@rrArB)rrr+rCr/r,�ftpr]rIrGrHrrr�submitFTPDelete�s*




��zFTPManager.submitFTPDeletecCrJ)	Nrrzftp/listFTPAccounts.htmlrr�listFTPAccountsrrLrMrNrrrre�s
�
�zFTPManager.listFTPAccountsc
Cs^z�|jjd}t�|�}t�|d�dkrt�dd�WSt�|jj�}|d}t	j
j|d�}tj
j|d�}t�
|||�dkr>nt��WStj
j|d�}d	}d}	|D](}
|
j|
j|
jt|
j�d
d�}|	dkro|t�|�}d}	qP|dt�|�}qP|d
}t�ddd|d��}t|�WSty�}
zddt|
�d�}t�|�}t|�WYd}
~
Sd}
~
ww)NrrerrO�selectedDomainrPrrrR�MB)r4rW�dir�	quotasizerSrTr5)rrOr6rC)rrOr6)rr"r
r#r7r8r9r:r;rr$r%r	r<r�filterr4rWrhrBrir@rrA)rrr+rCrfrQr,�recordsrHrZr[r\r]rI�	final_dicrrr�getAllFTPAccounts�sD

�

��zFTPManager.getAllFTPAccountsc
Csz_|jjd}t�|�}t�|d�dkrt�dd�WSt�|jj�}|d}|d}t	j
j|d�}tj
j|d�}|d	d
kr?n|j
j|krJt��WSt�||�d
d
dd�}t�|�}	t|	�WSty�}
zddt|
�d�}t�|�}	t|	�WYd}
~
Sd}
~
ww)
Nrrer�changePasswordStatusr/r0rrar,rr5)rrnr6)rr"r
r#r7r8r9r:r;r	r$r%rrQr,r�changeFTPPasswordr@rrArB)rrr+rCr*rDr,rcrGrHrIrrr�changePasswords0




��zFTPManager.changePasswordcCs�dd�}t��tjkst��tjkr%d}t�|dd�d}t�|dd�n3t��tjkr?d}t�|dd�d}t�|dd�nt��tjkrXd}t�|dd�d	}t�|dd�d
|�}t�|dd�d}t�|dd�d}t�|dd�d
S)NcSst��tjkr	dSdS)N�pure-ftpd-mysql�	pure-ftpd)r�decideDistro�ubunturrrr�pureFTPDServiceName!sz7FTPManager.installPureFTPD.<locals>.pureFTPDServiceNamez5DEBIAN_FRONTEND=noninteractive apt purge pure-ftp* -y�rootTz=DEBIAN_FRONTEND=noninteractive apt install pure-ftpd-mysql -yzyum erase pure-ftp* -yzyum install -y pure-ftpdzdnf install pure-ftpd -yzsystemctl enable zgroupadd -g 2001 ftpgroupzQuseradd -u 2001 -s /bin/false -d /bin/null -c "pureftpd user" -g ftpgroup ftpuserr)rrsrt�ubuntu20�executioner�centos�cent8)rru�commandrrr�installPureFTPDs.
zFTPManager.installPureFTPDcCs�t��tjkrd}d}nd}d}t�|�ddl}|�d�d|}t�|�}|��dkrAtj	�
d	|�tj	�|jd
d�dSdS)
Nrqzsystemctl start pure-ftpd-mysqlrrzsystemctl start pure-ftpdr�zsystemctl is-active %s�activez3[ERROR] Pure-FTPd failed to start. Service status: �tempStatusPathz8[ERROR] Pure-FTPd service failed to start properly [404]r)
rrsrtrx�time�sleep�outputExecutioner�strip�logging�CyberCPLogFileWriter�writeToFile�statusWriterr)r�serviceNamer{r��outputrrr�
startPureFTPDOs"


�zFTPManager.startPureFTPDc

Cs��z�ztj�d�stjddd�Wn#ty4}z|jtjkr*tj�	dt
|���WYd}~nd}~wwt��tj
ksCt��tjkrFd}nd}t�|dd�t��}t�d	�d
}ddl}tj�|�rp|�|�|�d|�n|�d|�t��tjks�t��tjkr�zt�d
�t�d�t�d�Wn/ty�}z#tj�	dt
|�dd�tj�|jddt
|�d�WYd}~WdSd}~wwt|dd���}t|dd�}	d|d}
|D]}|�d�dkr�|	�|
�q�|	�|�q�|	��d}|j dk�r%d|j!|f}t�|dd�d|j"|f}t�|dd�d |}t�|dd�t��tjk�s5t��tjk�r�tj�d!��rJt�#d!�|�$|dd!�n|�$|dd!�d"}t�|dd�d#t%�&�}t�|dd�d$}t�|dd�d%}t�|dd�d&}t�|dd�d'}t�|dd�d(}t�|dd�d)}t�|dd�t��tj'�r�d*}t�|dd�d)}t�|dd�t�|�WdSt(�y�}z#tj�	d+t
|�d,�tj�|jdd+t
|�d�WYd}~dSd}~ww)-Nz/etc/ssl/privatei�)�modez0[ERROR] Could not create directory for FTP SSL: z�openssl req -newkey rsa:1024 -new -nodes -x509 -days 3650 -subj "/C=US/ST=Denial/L=Springfield/O=Dis/CN=www.example.com" -keyout /etc/ssl/private/pure-ftpd.pem -out /etc/ssl/private/pure-ftpd.pemz�openssl req -x509 -nodes -days 7300 -newkey rsa:2048 -subj "/C=US/ST=Denial/L=Springfield/O=Dis/CN=www.example.com" -keyout /etc/ssl/private/pure-ftpd.pem -out /etc/ssl/private/pure-ftpd.pemrvTz/usr/local/CyberCP/installz/etc/pure-ftpdrz
pure-ftpd-onez/etc/pure-ftpd/confz/etc/pure-ftpd/authz/etc/pure-ftpd/dbz4[ERROR] Error creating extra pure-ftpd directories: z.  Should be okrrz% [installPureFTPDConfigurations][404]z/pureftpd-mysql.conf�r�wzMYSQLPassword �
�
MYSQLPassword���z"/etc/pure-ftpd/pureftpd-mysql.conf�ONzsed -i 's|localhost|%s|g' %szsed -i 's|3306|%s|g' %sz6sed -i 's|MYSQLSocket /var/lib/mysql/mysql.sock||g' %sz/etc/pure-ftpd/db/mysql.confz echo 1 > /etc/pure-ftpd/conf/TLSz,echo %s > /etc/pure-ftpd/conf/ForcePassiveIPz9echo "40110 40210" > /etc/pure-ftpd/conf/PassivePortRangez2echo "no" > /etc/pure-ftpd/conf/UnixAuthenticationzIecho "/etc/pure-ftpd/db/mysql.conf" > /etc/pure-ftpd/conf/MySQLConfigFilezEln -s /etc/pure-ftpd/conf/MySQLConfigFile /etc/pure-ftpd/auth/30mysqlzGln -s /etc/pure-ftpd/conf/UnixAuthentication /etc/pure-ftpd/auth/65unixz)systemctl restart pure-ftpd-mysql.servicezIsed -i 's/MYSQLCrypt md5/MYSQLCrypt crypt/g' /etc/pure-ftpd/db/mysql.confz[ERROR] z  [installPureFTPDConfigurations]))r&r'r(�makedirs�OSError�errno�EEXISTr�r�r�rBrrsryrzrx�getcwd�chdir�shutil�rmtree�copytreertrw�mkdirrAr�r�open�	readlines�find�
writelines�close�remotemysql�	mysqlhost�	mysqlport�remove�copyr
�fetchIP�
ubuntu22Check�IOError)
r�
mysqlPassword�er{�cwd�ftpdPathr�rIrC�writeDataToFile�dataWrittenr[�ftpConfPathrrr�installPureFTPDConfigurationsjs�d����



�� 
 ��z(FTPManager.installPureFTPDConfigurationsc
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/machineIPr�r�OFFz%s. [setupConnection:75]rz"Removing and re-installing FTP..,5zinstallPureFTPD failed. [404].zResetting configurations..,40rrr)�settingszConfigurations reset..,70�default�PASSWORDz,installPureFTPDConfigurations failed. [404].zstartPureFTPD failed. [404].zFixing permissions..,90zCompleted [200].)rr6)(r9r:rr�r�r�r�r�r�r��RDSr��read�split�	LOCALHOSTrAr&r'r(�	debugPathr�r�r�rBr�rr|�sys�append�environ�
setdefault�CyberCPr�r��	DATABASESr�r
�fixPermissionsr@r)r�passFile�jsonData�ipFile�f�ipData�ipAddressLocalrIr�r�rlr]rrr�ResetFTPConfigurationsQsf




����
��z!FTPManager.ResetFTPConfigurationsr)�__name__�
__module__�__qualname__rrrr?rKr^rdrermrpr|r�r�r�rrrrrs 
6*.0hrcCs^tjdd�}|jddd�|jddd�|��}|jdkr-d	|ji}td|�}|��dSdS)
N�
CyberPanel)�description�functionzSpecify a function to call!)�helpz--tempStatusPathzPath of temporary status file.r�r)�argparse�ArgumentParser�add_argument�
parse_argsr�rrr�)�parser�argsrrcrrr�main�s


�r��__main__)$�os.pathr&r�r��djangor'r�r�r��setupr9�plogical.httpProcr�django.httpr�modelsr�loginSystem.modelsr	�plogical.CyberCPLogFileWriterr�r��loginSystem.viewsr
�websiteFunctions.modelsr�plogical.ftpUtilitiesr�plogical.aclr
�plogical.processUtilitiesrr�rr�r�rrrr�<module>sFz
�