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__/DockerSites.cpython-310.pyc
o

��hs��@sddlZddlZddlZddlZddlmZddlZddlZddlZej	�
d�zddlZWnYzddlm
Z
ddlmZddlmZWnYddlmZddlmZddlZddlZGd	d
�d
e�ZGdd�dej�Zd
d�Zedkr~e�dSdS)�N)�randintz/usr/local/CyberCP)�randomPassword)�
ACLManager)�
DockerInstall)�ProcessUtilities)�CyberCPLogFileWritercseZdZd�fdd�	Z�ZS)�DockerDeploymentErrorNTcs$||_||_||_t��|j�dS�N)�message�
error_code�recovery_possible�super�__init__)�selfr
rr��	__class__��*/usr/local/CyberCP/plogical/DockerSites.pyrszDockerDeploymentError.__init__)NT)�__name__�
__module__�__qualname__r�
__classcell__rrrrrsrc@seZdZdZdZdZdZdZdZdZ	dZ
d	d
�Zdd�Zd
d�Z
edd��Zedd��Zedd��Zdd�Zdd�Zdd�Zdd�Zdd�Zdd �Zd!d"�Zd#d$�Zd%d&�ZdAd)d*�Zd+d,�Zd-d.�Zd/d0�Zd1d2�Zd3d4�Z dBd6d7�Z!d8d9�Z"d:d;�Z#d<d=�Z$d>d?�Z%d@S)C�Docker_Sites���DOCKER_NOT_INSTALLED�PORT_IN_USE�CONTAINER_FAILED�NETWORK_FAILED�
VOLUME_FAILED�	DB_FAILEDcCs0tj�|�||_||_z|jd|_WnYz=t��tjks(t��tj	kr?|jd�
dd��d|jd�
dd���|_n|jd�
dd��d|jd�
dd���|_WnYd}t�|�}|�
d�d	k�rd
dlm}d
dlm}|��}|d
}tj�tj�r�t�d|���|�
d�d	kr�|�d�}	dttdd��}
tj�|
�r�t�|
�t|
d�}|�|	�|��d|jd}|d|
}t� |�|d}
|
�
d�d	k�r|
�d�}	dttdd��}
tj�|
�r�t�|
�t|
d�}|�|	�|��d|jd}|d|
}t� |�dSdSdS)N�JobID�name� ��-�_zcat /etc/csf/csf.confzSECTION:Initial Settings���r)�CSF)�virtualHostUtilities�tcpINzTCPIN docker: �8088z,8088�/home/cyberpanel/i�i'�wz#sudo /usr/local/CyberCP/bin/python z/plogical/csf.pyz' modifyPorts --protocol TCP_IN --ports �tcpOUTz( modifyPorts --protocol TCP_OUT --ports )!�multi�Threadr�function_run�datar!r�decideDistro�centos�cent8�replace�
DockerAppName�outputExecutioner�find�plogical.csfr(�plogical.virtualHostUtilitiesr)�fetchCSFSettings�os�path�exists�	debugPath�logging�writeToFile�strr�remove�open�write�close�
cyberPanel�executioner)rr1r2�command�resultr(r)�currentSettingsr*�ports�	portsPathrB�execPathr.rrrr1s`.,�









�zDocker_Sites.__init__c
Cs�z'|jdkr
|��WdS|jdkr|��WdS|jdkr%|��WdSWdStyC}zt�t|�d�WYd}~dSd}~ww)N�DeployWPContainer�SubmitDockersiteCreation�DeployN8NContainerz [Docker_Sites.run])r1rPrQrR�
BaseExceptionrArBrC)r�msgrrr�runvs


� ��zDocker_Sites.runcCs�t��tjkst��tjkrgd}t�|�}|rnd|fSd}t�|�}|r&nd|fSd}t�|�}|r4nd|fSd}t�|�}|rBnd|fSd}t�|dd�}|rRnd|fSd	}t�|dd�}|rcd
Sd|fSd}t�|dd�}|svd|fSd}t�|dd�}|s�d|fSd
}t�|�}|s�d|fSd}t�|�}|s�d|fSd}t�|�}|s�d|fSd}t�|�}|s�d|fSd}t�|dd�}|s�d|fSd}t�|dd�}|s�d|fSd
S)NzUdnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.reporzJdnf install docker-ce docker-ce-cli containerd.io docker-compose-plugin -yzsystemctl enable dockerzsystemctl start dockerz|curl -L "https://github.com/docker/compose/releases/download/v2.23.2/docker-compose-linux-x86_64" -o /usr/bin/docker-compose�rootTz chmod +x /usr/bin/docker-compose�rNz~curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpgz�echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/nullzapt-get updatezNapt-get install -y docker-ce docker-ce-cli containerd.io docker-compose-pluginz�curl -L "https://github.com/docker/compose/releases/download/v2.23.2/docker-compose-linux-$(uname -m)" -o /usr/local/bin/docker-composez&chmod +x /usr/local/bin/docker-compose)rr3r4r5rI)rrJ�
ReturnCoderrr�
InstallDocker�s�







zDocker_Sites.InstallDockercCs^ddlmm}t��tjkr@d}t|d���}d|��}|�|�dkr>d|�d|�d�}t|d	�}|�	|�|�
�dSdSd
}t|d���}|�|�}|�d�}|�d�}	d
|�
|	d�_d|��|�
|	d�_d|��|�
|	d�_d|�
|	d�_d|�
|	d�_d|�
|	d�_d|�
|	d�_d|�
|	d�_|�|	�|�|�}
|
j	|ddd�|�|�dS)Nrz&/usr/local/lsws/conf/httpd_config.conf�rz
127.0.0.1:r'z
extprocessor dockerzG {
  type                    proxy
  address                 127.0.0.1:z�
  maxConns                100
  pcKeepAliveTimeout      3600
  initTimeout             300
  retryTimeout            0
  respBuffer              0
}    
�az%/usr/local/lsws/conf/httpd_config.xml�extProcessorList�extProcessor�proxy�type�dockerr"�address�100�maxConns�3600�pcKeepAliveTimeout�300�initTimeout�0�retryTimeout�
respBufferzUTF-8T)�encoding�xml_declaration)�xml.etree.ElementTree�etree�ElementTreer�decideServer�OLSrE�readr9rFrG�
fromstring�Element�
SubElement�text�append�dump)�port�ET�ConfPathr2�StringCheck�ProxyContent�WriteToFilerV�ext_processor_list�new_ext_processor�treerrr�
SetupProxy�s@
��

�




zDocker_Sites.SetupProxycCs"zsd|�d�}tj�|�st�d|���WdSt|d��}|��}Wd�n1s,wYd|vr=t�d�Wd	Sd
|�d|�d|�d
|�d|�d�}t|d��
}|�|�Wd�n1sdwYt�d|���Wd	Sty�}zt�dt	|����WYd}~dSd}~ww)zGSetup n8n vhost with proper proxy configuration including Origin headerz/usr/local/lsws/conf/vhosts/z/vhost.confzError: Vhost file not found at FrZNzcontext / {z#Context already exists, skipping...Tzh

# N8N Proxy Configuration
context / {
  type                    proxy
  handler                 dockerz�
  addDefaultCharset       off
  websocket               1

  extraHeaders            <<<END_extraHeaders
  RequestHeader set X-Forwarded-For $ip
  RequestHeader set X-Forwarded-Proto https
  RequestHeader set X-Forwarded-Host "z"
  RequestHeader set Origin "z, z"
  RequestHeader set Host "z"
  END_extraHeaders
}
r[zSuccessfully updated vhost for zError setting up n8n vhost: )
r=r>r?rArBrErrrF�	ExceptionrC)�domainry�
vhost_path�f�content�
proxy_context�errr�
SetupN8NVhost$s@
�
��
�
�����zDocker_Sites.SetupN8NVhostcCsvd|��}z	t|d���}Wnd}Ytd|���|�|�dkr9d|�d�}t|d�}|�|�|��dSdS)	Nr`rZr$zvalue of content r'z2
RewriteEngine On
REWRITERULE ^(.*)$ HTTP://dockerz/$1 [P]
r[)rErr�printr9rFrG)ry�htaccessr|�Content�HTAccessContentr~rrr�
SetupHTAccessVs
�

�zDocker_Sites.SetupHTAccessc
Cs��z�t�|jd�d}t�|�}tj�tj�rt�	d|���|�
d�dkr9tj�tj�r2t�	d�d}t�|�t�|jd�|jd	�
d
d�|jd<d
�gd�|jd��d�|jd��d�|jd��d�|jd��d�|jd��d�|jd��d�|jd��d�|jd��d�|jd��d�|jd��d �|jd	��d!�|jd��d"�|jd��d#�|jd��d$�|jd%��d&�|jd'��d(�|jd��d)�|jd��d*�|jd��d+�|jd��d,�|jd��d-�|jd��d.�|jd/��d&�|jd0��d1��}d2|jd��}t�|dddd3�\}}|d4k�r;t�|jd5t|��d6��Wd4Sd7|jd�d8�}t|d9�}|�|�|��d:|�d
|jd;��}t�|dddd3�\}}|d4k�r}t�|jd5t|��d6��Wd4Sd<|jd;�d=|jd;��}t�|d>d?�t��tjk�s�t��tjk�r�d@}ndA}|�dB|jd;�dC|jd	�dD�}t�|dddd3�\}}tj�tj��r�t�	|�|d4k�r�t�|jd5t|��d6��Wd4St�|jdE�t�dF�i}	d|	dG<|jd|	dH<td|	�}
|
��\}}t�|�}tj�tj��rt�	t|��t|�dIk�r3t�	dJ�t�|jdJ�Wd4SdK}|dL|jd��}t�|�dK}|dM|jd�dN|jdO��}t�||jdP�t��tjk�sot��tjk�rrdQ}
ndR}
dS|
�dT|jd�dU�}t�|�d4dVlm}|��t�|jdW�WdSt �y�}z$t�	t|��dX��t�|jd5t|��d6��t!t|��WYd}~dSd}~ww)YNz#Checking if Docker is installed..,0�
docker --helpzreturn code of docker install �	not foundr'�'About to run docker install function...�O/usr/local/CyberCP/bin/python /usr/local/CyberCP/dockerManager/dockerInstall.pyzDocker is ready to use..,10�SiteNamer#r%�ServiceNamer$z
version: '3.8'

services:
  'zQ':
    user: root
    image: cyberpanel/openlitespeed:latest
    ports:
      - "ryz;:8088"
#      - "443:443"
    environment:
      DB_NAME: "�MySQLDBNamez"
      DB_USER: "�MySQLDBNUserz"
      DB_PASSWORD: "�
MySQLPasswordz"
      WP_ADMIN_EMAIL: "�
adminEmailz"
      WP_ADMIN_USER: "�	adminUserz"
      WP_ADMIN_PASSWORD: "�
adminPasswordz"
      WP_URL: �finalURLz
      DB_Host: 'z-db:3306'
      SITE_NAME: 'z&'
    volumes:
#      - "/home/docker/z5:/usr/local/lsws/Example/html"
      - "/home/docker/z=/data:/usr/local/lsws/Example/html"
    depends_on:
      - 'zC-db'
    deploy:
      resources:
        limits:
          cpus: '�CPUsSitez/'  # Use 50% of one CPU core
          memory: �
MemorySitez&M  # Limit memory to 512 megabytes
  'zt-db':
    image: mariadb
    restart: always
    environment:
#      ALLOW_EMPTY_PASSWORD=no
      MYSQL_DATABASE: 'z'
      MYSQL_USER: 'z'
      MYSQL_PASSWORD: 'z'
      MYSQL_ROOT_PASSWORD: 'z%'
    volumes:
      - "/home/docker/zR/db:/var/lib/mysql"
    deploy:
      resources:
        limits:
          cpus: '�	CPUsMySQL�MemoryMySQLz/M  # Limit memory to 512 megabytes            
�mkdir -p /home/docker/rrzError z . [404]r,�-docker-compose.ymlr-�mv �ComposePath�
chmod 600 � && chown root:root rVT�docker compose�docker-compose� -f � -p '�' up -dzBringing containers online..,50�r!r"rz:Unkonwn error, containers not running. [DeployWPContainer]�H/usr/local/CyberCP/bin/python /usr/local/CyberCP/plogical/DockerSites.py� SetupProxy --port z SetupHTAccess --port z --htaccess �htaccessPath�externalApp�nobody�nogroupzchown -R nobody:z /home/docker/z/data��installUtilitieszCompleted. [200]z. [DeployWPContainer])"rA�statusWriterr!rr8r=r>r?r@rBr9rIr2r6�joinrCrErFrGr3r5r4�time�sleepr�ListContainers�json�loads�len�plogical.installUtilitiesr��reStartLiteSpeedSocketrSr�)rrJrKrO�WPSiter
�TempComposer~�
dockerCommand�passdata�da�retdata�
containers�groupr�rTrrrrPqs�



����
�������������#�$�%�&�(�,�-�2



 "






  
��zDocker_Sites.DeployWPContainerc%
Cs��zNddlm}m}ddlm}|jd}t|d�}|�d�|��|jd}|jd}|jd	}|jd
}	|jd}
|jd}|jd
}|jd}
|jd}|jd}|jd}|jd}|}i}||d<||d<||d<d|d<||d<d|d<d|d<d|d<d|d<d|d<d|d <|	}|j	j
|dd!���dk�rIz5|j	j|dd!�}|j
d"kr�d#|_
|��t�|j|jd$|jd%�dkr�t|d�}|�d&�|��Wnt|�}|�||�}t�|j�}t�d'|�|d}	t|d(���}t�d)|�|�d*�d+k�r
n0|�d,�d+k�r&t|d�}|�d-|�|��YWdSt|d�}|�d.�|��t�d/�q�t|d�}|�d0�|��Y|j	j|d!�}|j����dk�rdt�|jd1�WdSt �!�}t �!�}t �!�}t �!�}|j	��dk�rd2} nt"t#|j	�$�j%�d�} id|�d3d4|�d5��d6d7|�d8��d9|�d:|�d;|�d<|�d=|
�d>|�d?| �d@d7|�dA��dB|�dC|
�dD|�dE|�dF|�dG|�||d7|�dH�|j&d7|��dI��}!|dRidJ|�d3d7|�d5��d@d7|�dA��d6d7|�d8��dKt'j(�d:|�d;|�d=|
�d>|�d?| �dB|�dC|
�dD|�dE|�dF|�dG|�d|��}"|"��|jdLdMk�r9t'dN|!�}#|#�)�WdS|jdLdOk�rMt'dP|!�}#|#�)�WdSWdSt*�yl}$zt�dQt"|$��WYd}$~$dSd}$~$ww)SNr)�DockerSites�Websites)�WebsiteManagerr!r-zCreating Website...,10�Domain�WPemal�Owner�userID�MysqlCPU�MYsqlRam�SiteCPU�SiteRam�sitename�
WPusername�WPpasswdr��tempStatusPath�
domainNamer�zPHP 8.1�phpSelection�websiteOwner�Default�packager�ssl�	dkimCheck�openBasedir�
mailDomain�
apacheBackend)r�zPHP 7.3zPHP 8.0�adminID�
currentACLzYou dont own this site.[404]zCreating website result....%srZz&Error web creating lastline ....... %sz[200]r'z[404]z*Failed to Create Website: error: %s. [404]zCreating Website....,20rzCreating DockerSite....,30z5Docker container already exists on this domain. [404]�11000r�z
/home/docker/z/docker-compose.yml�	MySQLPathz/home/z/public_html/sqldocker�
MySQLRootPassr�r�r�r�r�ry�SitePathz/public_html/wpdockerr�r�r�r��	blogTitler��/public_html/.htaccess�r�r�r�r��docRoot�admin�SiteType�App�	WordPressrP�n8nrRz,Error Submit Docker site Creation ....... %sr)+�websiteFunctions.modelsr�r��websiteFunctions.websiter�r2rE�
writelinesrG�objects�filter�count�getr��saver�checkOwnershipr��submitWebsiteCreationr�r�r�rArBrrr9r�r��dockersites_set�allr�r!r�
generate_passrC�int�lastryr�r�	Wordpress�startrS)%rr�r�r�r��
statusFiler�r�r�r�r�r�r�r�r�r�r�r��currentTemp�
DataToPass�UserID�website�ab�
coreResult�coreResult1�
reutrntempath�lastLine�webobj�dbname�dbpasswd�
dbusernamer�ry�f_data�
dockersiteobj�
backgroundrTrrrrQ6sX















��

�



�


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

���z%Docker_Sites.SubmitDockersiteCreationc	
Cs0z{d|jd�d�}t�|�d|jd��}t�|�d|jd�d�}t�|�t��}|j}d|i}|jj|d�}t�	d	t
|����|D]}d
|j��}t�|�d|j��}t�|�qHd|jd�d
�}t�|�ddlm
}|��WdSty�}zt�	dt
|��WYd}~dSd}~ww)Nzdocker-compose -f /home/docker/r�z/docker-compose.yml down�rm -rf /home/docker/zrm -f /home/r�r")�filterszList of containers zdocker stop z
docker rm z
rm -rf /home/z/public_html/.htaccess'rr�z"Error Delete Docker APP ....... %s)r2rrIr`�from_envr7r��listrArBrC�short_idr�r��reStartLiteSpeedrS)	rrJ�client�
FilerValue�label_filterr��	containerr�rTrrr�DeleteDockerApp�s4




��zDocker_Sites.DeleteDockerAppcCs��z6t��}tj�tj�rt�d|j	���|j
jdd�}tj�tj�r<t�dt|����|D]}t�d|j
���q0g}t��tjksLt��tjkrP|j	}n|j	�dd�}tj�tj�rft�d|���|D]#}tj�tj�r}t�d	|j
�d
|���|��|j
��vr�|�|�qhtj�tj�r�t�dt|����d}d
}|D]{}zX|j|j
|j|j�di�|j�di��di��dd�d|jvr�|jddng|jdd��d�d|jvr�|jddnid�}|d
kr�|t�|�}d}n	|dt�|�}Wq�t�y}	zt�d|j
�dt|	����WYd}	~	q�d}	~	ww|d}tj�tj��r3t�d|���d|fWSt�yY}
zt�dt|
��d
t|
�fWYd}
~
Sd}
~
ww) NzDockerAppName: T)r�zTotal containers found: zContainer name: r&r%z/Searching for containers with name containing: zChecking container: z against filter: zFiltered containers count: �[r�State�Health�Status�unknown�
HostConfig�Binds�2��tail�utf-8�PortBindings)�idr"�status�state�health�volumes�logs_50rMr�,zError processing container z: �]zFinal JSON data: �List Container ....... %s)r`rr=r>r?rr@rArBr7r�rr�r"r3r4r5r6�lowerrwrr)�attrsr��logs�decoder��dumpsr�rCrS)rr�all_containersrr��search_name�	json_data�checker�dicr�rTrrrr��sn
�����
��zDocker_Sites.ListContainersc
Cs�zt��}|j�|jd�}|j|jdd��d�}d|fWSty?}zt�	dt
|��dt
|�fWYd}~Sd}~ww)N�containerID�
numberOfLinesr$r&rr0r)r`rr�r�r2r3r4rSrArBrC)rrrr3rTrrr�
ContainerLogs@s
��zDocker_Sites.ContainerLogsc
Cs�zOt��}|j�|jd�}|jdd�}|j|j|jd|j	vr&|j	ddng|j
dd��d�d|j	vr;|j	dd	ni|d
d|dd
dd�}d|fWStyp}zt
�dt|��dt|�fWYd}~Sd}~ww)Nr;F)�streamr!r"r#r$r&r'�memory_stats�usage�	cpu_stats�	cpu_usage�total_usage)r(r"r)r,r-rM�memory�cpurr0r)r`rr�r�r2�statsrr"r)r2r3r4rSrArBrC)rrrrFr:rTrrr�
ContainerInfoRs&
�
��zDocker_Sites.ContainerInfocCs|��|��dSr	)rrQ)rrrr�
RebuildAppmszDocker_Sites.RebuildAppc
C�lzt��}|j�|jd�}|��WdSty5}zt�dt	|��dt	|�fWYd}~Sd}~ww�Nr;rWr0r)
r`rr�r�r2�restartrSrArBrC�rrrrTrrr�RestartContainerq���zDocker_Sites.RestartContainerc
CrIrJ)
r`rr�r�r2�stoprSrArBrCrLrrr�
StopContainer�rNzDocker_Sites.StopContainer��Pc
Cs�z�|jd�d|�d�}t�d|���t|�D]s}t��}|j�|�}|jdkro|j	�di��di��d�}|d	vs?|d
urNt�d|�d|���Wd
S|j	�di��di��dg�}	|	ro|	d}
t�d|
�dd����t�d|�d|j�d|�d|d�d|��
�t
�|�qWdStjj
y�t�d|�d��YdSty�}zt�dt|����WYd
}~dSd
}~ww)z�
        Check if a container is running, accepting healthy, unhealthy, and starting states
        Total wait time will be 4 minutes (3 retries * 80 seconds)
        r�r%�-1zChecking container health for: �runningrrr)�healthy�	unhealthy�startingNz
Container z is running with status: T�Logr'zContainer health check failed: �Outputr$z	 status: z
, health: z
, attempt r�/Fz
 not foundz!Error checking container health: )r2rArB�ranger`rr�r�r)r2r�r��errors�NotFoundr�rC)r�container_name�max_retries�delay�formatted_name�attemptrrr+�health_logs�last_logr�rrr�check_container_health�s4
.��z#Docker_Sites.check_container_healthc
Cs�z�d}t�|dddd�\}}|dkrtd��t|���}|dkr*td|�d�|j��d}t�|dddd�\}}|dkr?td	��|��d
krItd��d}t�|dddd�\}}|dkr^td
��t|���d}t|jd�t|jd�}||kr�td|�dt|��d�d��d}t�|dddd�\}}	|dks�|	s�td��WdSty�}
z|
�d}
~
wty�}
z	tdt|
�����d}
~
ww)Nz.df -B 1G /home/docker --output=avail | tail -1rrzFailed to check disk space�z4Insufficient disk space. Need at least 5GB but only z
GB available.zsystemctl is-active dockerzFailed to check Docker status�activezDocker service is not runningz$docker info --format '{{.MemTotal}}'z Failed to get Docker memory infoir�r�zInsufficient memory. Need zMB but only zMB available�INSUFFICIENT_MEMORYzgetent group dockerzDocker group does not existTzResource verification failed: )	rr8rr��strip�ERROR_VOLUME_FAILEDr2r�rC)rrJrK�output�available_gb�
docker_status�total_memory�total_memory_mb�required_memory�docker_groupr�rrr�verify_system_resources�sP
�����z$Docker_Sites.verify_system_resourcesc
Cs�zCd|jd��}t�|dddd�d|jd�d|jd��}t�|dddd�d}t�|dddd�}|sAd}t�|dddd�Wd	StyX}z	td
t|�����d}~ww)Nr�r�rz	chown -R r�z:docker /home/docker/z#docker network ls | grep cyberpanelz docker network create cyberpanelTzEnvironment setup failed: )r2rr8r�rrC)rrJ�network_existsr�rrr�setup_docker_environment�s��z%Docker_Sites.setup_docker_environmentc
Cs�zUd|jd�d|jd�d�}t�|dddd�d|jd�d|jd��}t�|dddd�d	tj�|jd��d
�}t�|dddd�}d|��vrStd|����Wd
Styj}z	tdt	|�����d}~ww)Nzcat > r�z
 << 'EOF'
�ComposeContentz
EOFrr�r��cd z && docker-compose up -d�errorzContainer deployment failed: T�Deployment failed: )
r2rr8r=r>�dirnamer1rr�rC)rrJrKr�rrr�deploy_containerss��zDocker_Sites.deploy_containersc
Cs�z;dtj�|jd��d�}t�|dddd�d|jd��}t�|dddd�d|jd��}t�|dddd�WdStyX}zt�d	t	|����WYd}~d
Sd}~ww)Nrvr�z && docker-compose down -vrrr�zrm -f TzCleanup failed: F)
r=r>ryr2rr8r�rArBrC)rrJr�rrr�cleanup_failed_deployments��z&Docker_Sites.cleanup_failed_deploymentc
Cs�z�|jd�d|jd�d�}|jd�d|jd�d�}t�d|�d|���d|jd�d�}t�|dddd	�\}}d
|vrWd|��}t�|dddd	�\}}td|����d
}d}d}	||kr�d|�d�}t�|dddd	�\}}
d|
vryd}	n4d|��}t�|dddd	�\}}|d
kr�td|�d���|d	7}t�d�t�d|�d|���||ksa|	s�td��d|��}t�|dddd	�\}}|d
kr�td|�d���t�d|�d|	���WdSty�}
zt�dt	|
����tdt	|
�����d}
~
ww) Nr�r%rSz-db-1zMonitoring containers: z and zdocker ps -a --filter name=z --format '{{.Status}}'r�exitedzdocker logs zContainer exited. Logs: �rFzdocker exec z pg_isready -U postgreszaccepting connectionsTz,docker inspect --format='{{.State.Status}}' zDatabase container is in z staterz*Waiting for database to be ready, attempt rZz5Database failed to become ready within timeout periodzn8n container is in z:Deployment monitoring completed successfully. n8n status: z, database ready: zError during monitoring: zMonitoring failed: )
r2rArBrr8rr�r�r�rC)r�n8n_container_name�db_container_namerJrKr)r3r_�retry_count�db_readyrk�	db_status�
n8n_statusr�rrr�monitor_deployment.sP


�
��zDocker_Sites.monitor_deploymentTc
Cs zrt�dt|����|r|��t|t�rp|j|jkr&d}t�	|�WdS|j|j
kret|jd�d}|dkrbt
�
t
jt
j�}|�d|f�}|��|dkrZt|�|jd<WdS|d7}|dks9Wd	S|j|jkrp|��WSWd	Sty�}zt�d
t|����WYd}~d	Sd}~ww)zA
        Handle deployment failures and attempt recovery
        rxr�Tryri��z	127.0.0.1rFzError during failure handling: N)rArBrCr{�
isinstancerr�ERROR_DOCKER_NOT_INSTALLEDrrI�ERROR_PORT_IN_USEr�r2�socket�AF_INET�SOCK_STREAM�
connect_exrG�ERROR_DB_FAILED�recover_databaser�)rrw�cleanuprO�new_port�sockrKr�rrr�handle_deployment_failurems:

�
�
��z&Docker_Sites.handle_deployment_failurec
Cs�zMt��}|jd�d�}z3|j�|�}|jdkr5|�d�}|jdkr9|��t	�
d�|�|�r=WWdSWWdSWWdSWWdStjj
yMYWdSwtyj}zt�d	t|����WYd
}~dSd
}~ww)z;
        Attempt to recover the database container
        r��-dbrT�pg_isready -U postgresr�
TFzDatabase recovery failed: N)r`rr2r�r�r)�exec_run�	exit_coderKr�r�rer\r]r�rArBrC)rrr�db_container�exec_resultr�rrrr��s:
�


��
�����zDocker_Sites.recover_databasec
Cs�|rVz6d|jd�d�}tjtj�|�dd�t|d��}tj||dd�Wd	�Wd	S1s1wYWd	StyU}zt	�
d
t|����WYd	}~d	Sd	}~wwd	S)z5
        Log deployment metrics for analysis
        z/var/log/cyberpanel/docker/r�z
_metrics.jsonT)�exist_okr-r)�indentNzError logging metrics: )r2r=�makedirsr>ryrEr�rxr�rArBrC)r�metrics�log_filer�r�rrr�log_deployment_metrics�s&�"���z#Docker_Sites.log_deployment_metricsc
Cs8d}d}||k�r�z�t�|jd�d}t�|�}|�d�dkrBtj�tj	�r,t�
d�|��\}}|sBt�|jd|�d	��WdSt�|jd
�|��t�|jd�d|j
d
��}t�|dddd�\}}|dkrrtd|����t�|jd�|j
d�dd�|j
d<|��}d|j
d
�d�}	t|	d��
}
|
�|�Wd�n1s�wYd|	�d|j
d��}t�|dddd�\}}|dkr�td|����d|j
d�d|j
d��}t�|dd�t�|jd �t��tjks�t��tjkr�d!}nd"}|�d#|j
d�d$|j
d�d%�}t�|dddd�\}}|dk�r$td&|����t�|jd'�t�d(�|�|j
d�d)���rE|�|j
d��sKtd*|j��t�|jd+�d,}|d-|j
d.��}t�|�t�|jd/�d,}|d0|j
d
�d1|j
d.��}t�|�t�|jd2�dd3lm}
|
��|��}|�|�t�|jd4�WdSt�y�}z.t�
d5t |����|�!|��r�|d7}WYd}~qt�|jd6t |��d	��WYd}~d7Sd}~wt"�y}z#t�
d8t |����|�!|�t�|jd6t |��d	��WYd}~d7Sd}~wwt�|jd9|�d:��d7S);z<
        Main deployment method with error handling
        rQrz%Starting deployment verification...,0r�r�r'r�zFailed to install Docker: z [404]z"Docker installation verified...,20zSystem resources verified...,10r�r�NrzFailed to create directories: zDirectories created...,30r�r#r%r�r,r�r-r�r�zFailed to move compose file: r�r�rVTz!Docker compose file created...,40r�r�r�r�r�zFailed to deploy containers: zContainers deployed...,60r�r�z(Containers failed to reach healthy statezContainers healthy...,70r�r�ryzProxy configured...,80z SetupN8NVhost --domain z --port zN8N vhost configured...,90r�z(Deployment completed successfully. [200]zDeployment error: rxFzUnexpected error: zDeployment failed after z attempts [404])#rAr�r!rr8r9r=r>r?r@rBrYrrr2rr6�generate_compose_configrErFrIr3r5r4r�r�re�ERROR_CONTAINER_FAILEDr�r�r�r�r�rCr�r�)rr_�current_tryrJrK�install_resultrwr
�compose_configr�r�r�rOr�r�r�rrrrR�s�


�"

�
 

�
��zDocker_Sites.DeployN8NContainercCsddddgddddd	�d
|jd|jdd
�d�}ddgd�dddd�idd�d|jd�d��dd�d|jd�dd
�d|jd�dd�d d!�d"d#�d$d%|jd&���d'd%|jd&���d(d%|jd&���d)d*�d+d,�d-d.�d/d0�d1d2�d3d0d4��d�}d5�gd6�|jd��d7�|d8��d9�|d:��d;�|d<d=��d>�|d<d?��d@�|d<dA��dB�|d<dC��dD�|d<dE��dF�|dGdH��dI�|dGdJ��dK�|dGdL��dM�|jd&��dN�|jdO��dP�|jdQ��dR�|jd��dS�|d8��d9�|d:��d;�|d<d=��d>�|d<d?��d@�|d<dA��dB�|d<dC��dT�|dGd��dU�|dGd��dV�|dGd��dW�|dGd��dX�|dGd��dY�|dGd��dZ�|dGd1��d[�|dGd��d\�|dGd ��d]�|dGd"��d^�|dGd$��d_�|dGd'��d`�|dGd(��da�|dGd)��db�|dGd+��dc�|dGd-��dd�|dGd/��de�|dGdf��dg�|dGdh��di�|jdj��dk�|jd��dl�|jd&��dm�|jdn��dP�|jdo��dp�|jd��dq��S)rzb
        Generate the docker-compose configuration with improved security and reliability
        zpostgres:16-alpinerVz	CMD-SHELLr��10s�5srf�30s)�test�interval�timeout�retries�start_period�postgresr�r�)�
POSTGRES_USER�POSTGRES_PASSWORD�POSTGRES_DB)�image�user�healthcheck�environmentzdocker.n8n.io/n8nio/n8n)�CMD�wgetz--spiderzhttp://localhost:5678�20srQ)r�r�r�r��DB_TYPE�
postgresdb�DB_POSTGRESDB_HOSTr�r��DB_POSTGRESDB_PORT�5432�DB_POSTGRESDB_DATABASE�DB_POSTGRESDB_USER�DB_POSTGRESDB_PASSWORD�N8N_HOSTz0.0.0.0�N8N_PORT�5678�NODE_ENV�
production�N8N_EDITOR_BASE_URLzhttps://r��WEBHOOK_URL�WEBHOOK_TUNNEL_URL�N8N_PUSH_BACKEND�sse�GENERIC_TIMEZONE�UTC�N8N_ENCRYPTION_KEY�auto�%N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS�true�DB_POSTGRESDB_SCHEMA�public�https)�N8N_PROTOCOL�N8N_SECURE_COOKIEr$zhversion: '3.8'

volumes:
  db_storage:
    driver: local
  n8n_storage:
    driver: local

services:
  'z-db':
    image: r�z
    user: r�z2
    restart: always
    healthcheck:
      test: r�r�z
      interval: r�z
      timeout: r�z
      retries: r�z
      start_period: r�z(
    environment:
      - POSTGRES_USER=r�r�z
      - POSTGRES_PASSWORD=r�z
      - POSTGRES_DB=r�z$
    volumes:
      - "/home/docker/z~/db:/var/lib/postgresql/data"
    networks:
      - n8n-network
    deploy:
      resources:
        limits:
          cpus: 'r�z'
          memory: r�zM

  'z':
    image: z"
    environment:
      - DB_TYPE=z
      - DB_POSTGRESDB_HOST=z
      - DB_POSTGRESDB_PORT=z 
      - DB_POSTGRESDB_DATABASE=z
      - DB_POSTGRESDB_USER=z 
      - DB_POSTGRESDB_PASSWORD=z
      - DB_POSTGRESDB_SCHEMA=z
      - N8N_HOST=z
      - N8N_PORT=z
      - NODE_ENV=z
      - N8N_EDITOR_BASE_URL=z
      - WEBHOOK_URL=z
      - WEBHOOK_TUNNEL_URL=z
      - N8N_PUSH_BACKEND=z
      - GENERIC_TIMEZONE=z
      - N8N_ENCRYPTION_KEY=z/
      - N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=z
      - N8N_PROTOCOL=r�z
      - N8N_SECURE_COOKIE=r�z
    ports:
      - "ryz:5678"
    depends_on:
      - z'-db
    volumes:
      - "/home/docker/zw/data:/home/node/.n8n"
    networks:
      - n8n-network
    deploy:
      resources:
        limits:
          cpus: 'r�r�z9M

networks:
  n8n-network:
    driver: bridge
    name: �_network)r2r�)r�postgres_config�
n8n_configrrrr�6s0�������
��
���	�
���
�������
 	�
��
�
�
�
�
�
�
�
����!�"�#�
&�
'�
(�
)�
+�
,�
-�
.�
/�
0�
1�
2�
3�
4�
5�
6�
7�
8�
9�
:�
;�
<�
=�?�A�C�I�J�O�z$Docker_Sites.generate_compose_configN)rQrR)T)&rrrr��Joomlar�r�r��ERROR_NETWORK_FAILEDrjr�rrUrY�staticmethodr�r�r�rPrQrr�r=rGrHrMrPrerrrtrzr{r�r�r�r�rRr�rrrrr%sPE
f
:
1
F0L
'6
?' src
Cs�z�tjdd�}|jddd�|jddd�|jddd�|jd	dd�|jd
dd�|��}|jdkr<t�|j�WdS|jdkrLt�|j|j	�WdS|jd
kr\t�
|j|j�WdS|jdkr�idd�dd�dd�dd�dd�dd�dd�dd�dd�dd �d!d"�d#d�d$d�d%d&�d'd(�d)d*�d+d�dd,d-d.d/d0��}td|�}|��WdS|jd1kr�d2|ji}td|�}|�
�WdSWdSty�}z
tt|��WYd}~dSd}~ww)3NzCyberPanel Docker Sites)�description�functionzSpecify a function to call!)�helpz--portr$z
--htaccessz
--externalAppz--domainr�r�r��DeployWPDockerr!z/home/cyberpanel/hey.txtr�z./home/docker.cyberpanel.net/docker-compose.ymlr�z1/home/docker.cyberpanel.net/public_html/sqldockerr��
testdbwp12345r��testdbwpr�r�r��2r��512ry�8000r�z0/home/docker.cyberpanel.net/public_html/wpdockerr�r�r�zwp docker testr�zdocker.cyberpanel.netr�zdocker siter�zusman@cyberpersons.comz1/home/docker.cyberpanel.net/public_html/.htaccess�	docke8463z/home/docker.cyberpanel.netr�rr�)�argparse�ArgumentParser�add_argument�
parse_argsr�rr�ryr�r�r�r�rRrrSr�rC)�parser�argsr2�dsrTrrr�Main�s�



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

�
���r��__main__) r�r=�sysr��randomrr��shutilr`r>rw�django�plogicalr�plogical.aclr�dockerManager.dockerInstallr�plogical.processUtilitiesr�plogical.CyberCPLogFileWriterrrAr��	threadingr/r�rr0rr�rrrrr�<module>sP">
�