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

��h?�@s�ddlZddlZej�d�ddlZej�dd�e��ddlm	Z
ddlZddlmZ
ddlZddlZddlZddlmZmZddlmZddlZddlZddlZdd	lmZdd
lmZddlmZGdd
�d
�Zdd�Zedkrye�dSdS)�Nz/usr/local/CyberCP�DJANGO_SETTINGS_MODULEzCyberCP.settings)�mysqlUtilities)�CyberCPLogFileWriter)�Websites�ChildDomains)�
Administrator)�Users)�datetime)�ProcessUtilitiesc@sbeZdZedd��Zedd��Zedd��Zeddd	��Zed
d��Zedd
��Z	edd��Z
dS)�FTPUtilitiesc	
Cs�zPg}|�d�|�d�|�d�|�|�t�|�}|dkr%td�ntd�d|dd	d|dd	d|dd
}t|�tj�||d|�WdStym}ztj	�
t|�d�WYd}~d
Sd}~ww)N�chownz-Rzftpuser:2001��Permissions not changed.�User permissions setted.z9INSERT INTO ftp_ftpuser (userid,passwd,homedir) VALUES ('�'�,z);�ftp� [createNewFTPAccount]r)�append�
subprocess�call�print�sqlr�	SendQuery�
BaseException�loggingr�writeToFile�str)	�udb�upass�username�password�path�cmd�res�query�msg�r'�+/usr/local/CyberCP/plogical/ftpUtilities.py�createNewFTPAccounts*





0�
���z FTPUtilities.createNewFTPAccountc
Cs�z5d|}t�|�}t�|�}|dkrtd�WdStd�d|}t�|�}t�|�}|dkr3WdSWdStyR}ztj�t	|�d�WYd}~dSd}~ww)Nzsudo chmod -R 775 r
rrrzsudo chown -R lscpd:cyberpanel r)
�shlex�splitrrrrrrrr)�	directory�commandr#r$r&r'r'r(�changePermissions4s*




���zFTPUtilities.changePermissionsc
Cs`z
d|}t�||�WdSty/}ztj�t|�d�dt|�fWYd}~Sd}~ww)Nzmkdir %s�r
�Nonez  [ftpFunctions]r)r
�executionerrrrrr)r"�externalAppr-r&r'r'r(�ftpFunctionsYs
���zFTPUtilities.ftpFunctionsNc
Cs<z�z
tjj|d�}|jj}Wntjj|d�}|j}Yt�|�j}t	�
|�j}	|�d�}|dkrXd|d|}|�
d�dkrEtd��t�||�}
|
dd	krRn
t|
d	��d|}tj�|�rktd
|�WdSt��tjd	kswtjr�ddlm}m}|||�}
nt��}|�|�d��|��}
t jj|d
�}|dkr�|j!d|}|j"j#dkr�t$|||
||	||j"j%dddt&�'�d�}|�(�n'|j)�*��+�|j"j#kr�t$|||
||	||j"j%dddt&�'�d�}|�(�ntd��td�WdSt�y}zt,j-�.t/|�d�tdt/|��dt/|�fWYd}~Sd}~ww)N��domain�/r0z/home/z..���z0Specified path must be inside virtual host home!rr
z0, %s file is symlinked.��crypt�
METHOD_SHA512�utf-8)�userName�0�_�1i �)r5�userr!�uid�gid�dir�	quotasize�status�ulbandwidth�dlbandwidth�datez@Exceeded maximum amount of FTP accounts allowed for the package.z1,Noner/z [submitFTPCreation]z0,)0r�objects�get�masterr2r�pwd�getpwnam�pw_uid�grp�getgrnam�gr_gid�lstrip�findrrr3�osr"�islinkrr
�decideDistro�
ubuntu22Check�
alma9checkr9r:�hashlib�md5�update�encode�	hexdigestrr<�package�ftpAccountsr�	diskSpacer	�now�save�	users_set�all�countrrrr)�
domainNamer<r!r"�owner�api�websiter2rArB�resultr9r:�FTPPass�hash�adminr@r&r'r'r(�submitFTPCreationgsx
�
�
��zFTPUtilities.submitFTPCreationc
CsNztjj|d�}|��WdSty&}zdt|�fWYd}~Sd}~ww)N�r@r/r)rrIrJ�deleterr)�ftpUsernamerr&r'r'r(�submitFTPDeletion�s��zFTPUtilities.submitFTPDeletionc
Cs�z;t��tjdks
tjrddlm}m}|||�}nt��}|�|�	d��|�
�}tjj
|d�}||_|��WdStyS}zdt|�fWYd}~Sd}~ww)Nr
rr8r;ro)r
N)r
rVrWrXr9r:rYrZr[r\r]rrIrJr!rbrr)r<r!r9r:rkrlrr&r'r'r(�changeFTPPassword�s ��zFTPUtilities.changeFTPPasswordcCs(z
tjj|d�}|j��WSYdS)Nr4)rrIrJrcrd)�virtualHostNamerir'r'r(�
getFTPRecords�s
zFTPUtilities.getFTPRecords)N)�__name__�
__module__�__qualname__�staticmethodr)r.r3rnrrrsrur'r'r'r(rs

$

Z

rcCs�tjdd�}|jddd�|jddd�|jdd	d�|jd
dd�|jdd
d�|jddd�|jddd�|��}|jdkrRt�|j|j|j	|j
|j|j�dSdS)NzCyberPanel Installer)�description�functionzSpecific a function to call!)�helpz--domainNamezDomain to create FTP for!z
--userNamezUsername for FTP Accountz
--passwordzPassword for FTP Accountz--ownerzFTP Account owner.z--pathzPath to ftp directory!z--apiz
API Check!rn)
�argparse�ArgumentParser�add_argument�
parse_argsr{rrnrfr<r!r"rgrh)�parser�argsr'r'r(�main�s
$�r��__main__) rT�sysr"r�django�environ�
setdefault�setup�plogicalrrrrrr*r}�websiteFunctions.modelsrr�loginSystem.modelsrrLrOrY�
ftp.modelsrr	�plogical.processUtilitiesr
rr�rvr'r'r'r(�<module>s2S
�