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/dockerManager/__pycache__/container.cpython-310.pyc
o

��h��@sddlZddlZddlZddlmZddlmZej�d�ej	�
dd�e��ddlZddl
mZddlmZddlmZmZmZdd	lmZddlZddlZddlZdd
lmZddlmZddlZddl Zddl!Z!ddl"m#Z#dd
l$m%Z%ddl&Z'ddl(m)Z)Gdd�de'j*�Z+dS)�N)�datetime)�Docker_Sitesz/usr/local/CyberCP�DJANGO_SETTINGS_MODULEzCyberCP.settings)�
ACLManager)�HttpResponse�render�redirect)�
Administrator)�
Containers)�ceil)�ProcessUtilities)�ServerStatusUtil)�httpProcc@s`eZdZdIdd�Zdd�Zdd�Zedd	��Zd
d�ZdJdd
�Z	dJdd�Z
dJdd�ZdKdd�ZdKdd�Z
dKdd�ZdLdd�ZdKdd�Zdd�ZdKdd �ZdKd!d"�ZdJd#d$�ZdKd%d&�ZdKd'd(�ZdKd)d*�ZdJd+d,�ZdJd-d.�ZdKd/d0�ZdKd1d2�Zd3d4�ZdKd5d6�ZdKd7d8�ZdKd9d:�ZdKd;d<�Z dKd=d>�Z!d?d@�Z"dKdAdB�Z#dKdCdD�Z$dKdEdF�Z%dKdGdH�Z&dS)M�ContainerManagerNcCs.tj�|�||_||_||_||_||_dS�N)�multi�Thread�__init__�name�function�request�templateName�data)�selfrrrrr�r�-/usr/local/CyberCP/dockerManager/container.pyr"s
zContainerManager.__init__cCst|j|j|jd�}|��S)N�admin)rrrrr)r�procrrr�renderDM*szContainerManager.renderDMc
Csxz|jdkr
|��WdS|jdkrd}t�|�WdSWdSty;}ztj�t|�d�WYd}~dSd}~ww)N�submitInstallDocker�restartGunicornz&sudo systemctl restart gunicorn.socketz [ContainerManager.run])	rrr�executioner�
BaseException�logging�CyberCPLogFileWriter�writeToFile�str)r�command�msgrrr�run.s

�"��zContainerManager.runc
Csbztjt�|�||d�}|dkrWdSWdSty0}ztj�t|��WYd}~dSd}~ww)N)�stdout�stderr�r)	�
subprocess�call�shlex�splitr"r#r$r%r&)r'�
statusFile�resr(rrrr!8s��zContainerManager.executionerc
Cs�z,t�|j�}t�|d�dkrt��WSttjd�}|��d}t	�
|�t�d�WdSt
yL}ztj�tjt|�dd�WYd}~dSd}~ww)N�createContainerr�wzO/usr/local/CyberCP/bin/python /usr/local/CyberCP/dockerManager/dockerInstall.py�z [404].r,)r�	loadedACLr�currentContextPermission�	loadError�openr
�lswsInstallStatusPath�closerr!�time�sleepr"r#r$�statusWriterr&)r�
currentACLr%�execPathr(rrrrDs

(��z$ContainerManager.submitInstallDockerc
Cs�t��}t��}t�|�}|j�d�}|j�d�}|�d�d}d|vr5|�d�dd|�d�d}	n|}	z|�|d|�}
Wn&tj	j
yh|jd	}tj
j|d
�}t|d|j||d��}
|
��YSwi}d
|
dvr�|
dd
D]}d|vr�|�dd�}t|�|d||d<qwd||<qwi}d|
dvr�|
ddD]}|�d�}|d||d<q�|dus�|dus�|dus�|dur�tt�S|||	|||d�}d}t|||d�}
|
��S)N�tag�imagez (r�/�.r,�:�userID��pk�dockerManager/images.html)�typerBrA�Env�Config�=��ExposedPorts)�	ownerListrBrrA�
portConfig�envListzdockerManager/runContainer.htmlr)�docker�from_env�	APIClientr�loadAllUsers�GET�getr0�
inspect_image�errors�
ImageNotFound�sessionr	�objectsrrJr�printr�
loadImages)rrrFr�client�	dockerAPI�
adminNamesrArBr�inspectImage�valrrrR�item�splitedItemrQ�portDef�Data�templaterrrr3VsR
"

��

 
�z ContainerManager.createContainerc
Cs��z]|j}t�|�}|ddkrt�||�dkrt��WSt��}t��}z|j�	|�}Wntj
jyF}	ztd�WYd}	~	WSd}	~	wwi}zOt
jj	|d�}
||d<|
jd|
j|d<t�|
j�|d<|
j|d	<t�|
j�|d
<t�|
j�|d<|
j|d<|
jdkr�d
|d<d|d<nd|d<d|d<Wn9t
jy�||d<|jjr�|jjdnd|d<i|d<|j|d	<i|d
<i|d<d|d<d|d<d|d<Ynw|jddd�}|jdd�}|j|d<d|dv�rI|dd|ddd|d<zt|d d!d"�}
Wnd}
Yd#|d$<t |d d!d%�t |d&d!d%�}t |d d'�t |d&d'�}|d#k�rHt!||d(|
d)�|d$<nd|d<d|d$<d*}t"|||d�}|�#�WSt$�yw}ztt%|��WYd}~Sd}~ww)+Nrr,zContainer not found�rrrErB�ports�cidrR�volList�memoryLimit�true�
startOnReboot�Yes�
restartPolicy�false�Nor�UnknowniF)�decode�streamT�rw�status�usage�memory_stats�limit�d�memoryUsage�	cpu_stats�	cpu_usage�percpu_usageg�cpuUsage�total_usage�precpu_stats�system_cpu_usagegY@�z dockerManager/viewContainer.html)&rrr6�checkContainerOwnershipr8rSrTrU�
containersrXrZ�NotFoundrr
r]rBrA�json�loadsrkrl�env�volumes�memoryrp�DoesNotExist�tags�id�stats�logsry�len�float�roundrrr"r&)rrrFrrr?r`ra�	container�err�conr�r��	cpu_count�	cpu_delta�system_deltarirr(rrr�loadContainerHome�s�

��



�
�
 ��
�
��z"ContainerManager.loadContainerHomecCs�t��}t��}t�|�}t�||�}|j��}g}	d}
g}|D]}|j|vr,|�	|�q |s1d}
t�
|�}
tt|��td�}g}|dkrNd}|�	d�nt
|�}t|�d}td|�D]
}|�	dt|�d�q]d	}t|||||
|
d
�d�}|��S)NTF�
g�?r,z<li><a href="\#"></a></li>z<li><a href="\#">z	</a></li>z!dockerManager/listContainers.html)�
pagination�unlistedContainersrb�showUnlistedContainerr)rSrTrUrr6�findAllContainersr��listr�appendrVr�r�r�int�ranger&rr)rrrFrr`rar?r��
allContainers�containersListr�r�r�rb�pagesr��
finalPages�irirrrr�listContainers�sB



�
��zContainerManager.listContainersc
Cs�zA|d}tjj|d���rt�||�dkrt�dd�WSt��}t�	�}|j
�|�}|���
d�}d|dd�}t�|�}	t|	�WStyd}
zdd	t|
�d�}t�|�}	t|	�WYd}
~
Sd}
~
ww)
Nrrjr,�containerLogStatusrzutf-8�None)r��containerLog�
error_message�Error)r
r]�filter�existsrr��
loadErrorJsonrSrTrUr�rXr�rvr��dumpsrr"r&)rrFrrr`rar�r��data_ret�	json_datar(rrr�getContainerLogss$


��z!ContainerManager.getContainerLogscCs��z1tjj|d�}|jjdkrt�dd�WSt��}t�	�}|d}|d}|d}|d}	|d	}
|d
}|d}|�
|d|�}
i}i}|��D]\}}|dd
ks[|dd
krc|d||d<qKd|
dvr�|
ddD])}t||�dks�t||�dkr�ddd�}t
�|�}t|�WS||||<qpi}|��D]\}}|ddd�||d<q�tjj|	d�}|d|d||d||d�}|
d|d<z|jjd#i|��}Wn2t�y}z%d|vr�td�|jdd �dt|�d�}t
�|�}t|�WYd}~WSd}~wwt|||||
t
�|�t
�|�t
�|�|jd!�	}|��dd"d�}t
�|�}t|�WSt�yU}zdt|�d�}t
�|�}t|�WYd}~Sd}~ww)$NrGr,�createContainerStatusrrrBrA�dockerOwnerr�rRrmrErN�valuerOrLii��z"Choose port between 1024 and 65535)r�r��dest�rw��bind�mode�src��userNameT)rB�detachrrk�publish_all_ports�environmentr���	mem_limitzport is already allocatedzDeleting container)�force)	rrrArBr�rkr�r�rlr�r)r	r]rX�acl�adminStatusrr�rSrTrUrY�itemsr�r�r�rr��create�	Exceptionr^�remover&r
r��saver")rrFrrr`rarrBrAr�r�rRrmrcrQ�envDict�keyr�rer�r�r��index�volume�
containerArgsr�r�r�r(rrr�submitContainerCreations�� 

�
�
���




��z(ContainerManager.submitContainerCreationc
Cs`z�tjj|d�}|jjdkrt�dd�WSt��}t�	�}|d}|d}z|�
|d|�}ddd	�}	t�|	�}
t
|
�WWStjjyIYnwz|jj||d
�}t|j�Wn%tjjy~}zdt|�d	�}	t�|	�}
t
|
�WYd}~WSd}~wwddd	�}	t�|	�}
t
|
�WSty�}zdt|�d	�}	t�|	�}
t
|
�WYd}~Sd}~ww)NrGr,�installImageStatusrrBrArEzImage already installed)r�r�)rAr�)r	r]rXr�r�rr�rSrTrUrYr�r�rrZr[�images�pullr^r��APIErrorr&r")rrFrrr`rarBrArcr�r�r(rrr�submitInstallImagersD

�
��



��z#ContainerManager.submitInstallImageFc
Cs.z�|d}tjj|d���r"t�||�dkr"|rWdSt�dd�WSt��}t�	�}|d}d|vr5d	}nd
}|s@tjj
|d�}	|s�z|j�
|�}
Wn-tjj
yw}z|r^WYd}~WdSddd
�}t�|�}
t|
�WYd}~WSd}~wwz
|
��|
��WnYz|
��Wn>tjjy�}zdt|�d
�}t�|�}
t|
�WYd}~WSd}~w|r�YWdSddd
�}t�|�}
t|
�YWS|s�|s�|	��|r�WdSddd
�}t�|�}
t|
�WSt�y}z"|r�t|�WYd}~Sdt|�d
�}t�|�}
t|
�WYd}~Sd}~ww)Nrrjr,zPermission error�websiteDeleteStatusr�unlistedr�TF�Container does not existr5)�delContainerStatusr�ruz
Unknown errorr�)r
r]r�r�rr�r�rSrTrUrXr�rZr�r�r�r�stop�killr�r�r&�deleter")rrFr�calledrr`rar�r��containerOBJr�r�r�r�r(rrr�submitContainerDeletion�sv

��
�





��z(ContainerManager.submitContainerDeletionc
Cs�z6tjj|d�}|jjdkrt�dd�WSt�|�}t|d�}|�	|||�}dd|d�}t
�|�}t|�WSt
yX}	zdt|	�d�}
t
�|
�}t|�WYd}	~	Sd}	~	ww)	NrGr,�listContainerStatusr�pager�)r�r�r)r�r�)r	r]rXr�r�rr�r6r��findContainersJsonr�r�rr"r&)rrFrrr?�
pageNumberr��	final_dic�
final_jsonr(�dicrrr�getContainerList�s 



��z!ContainerManager.getContainerListcCs�tjj|d�}|jjdkrt��S|dd}|d}t�||�||�}d}d}	|D]%}
|
j|
j	j
|
j|
jd�}|	dkrG|t
�|�}d}	q+|dt
�|�}q+|d}|S)	NrGr,r��[r)rrrArB�,�])r	r]rXr�r�rr8�findContainersObjectsrrr�rArBr�r�)rr?rFr�r�finalPageNumber�
endPageNumberr�r��checkerr�r�rrrr��s z#ContainerManager.findContainersJsonc

Cs�z�|d}t�||�dkrt�dd�WSt��}t��}|d}z|j�|�}Wn6tjj	yK}zddd�}	t
�|	�}
t|
�WYd}~WSd}~wddd�}	t
�|	�}
t|
�YWSz-|d	kri|�
�n"|d
krr|��n|dkr{|��nddd�}	t
�|	�}
t|
�WWSWn%tjjy�}zdt|�d�}	t
�|	�}
t|
�WYd}~WSd}~wwt�d
�|j}dd|d�}	t
�|	�}
t|
�WSty�}zdt|�d�}	t
�|	�}
t|
�WYd}~Sd}~ww)Nrr,�containerActionStatusr�actionr�)r�r�ru�startr��restartzUnknown Actionr�r�)r�r�ry)rr�r�rSrTrUr�rXrZr�r�r�rr�r�r�r�r&r<r=ryr")
rrFrrr`rar�r�r�r�r�ryr(rrr�doContainerActions\

�






�
��



��z"ContainerManager.doContainerActionc
Cs zm|d}t�||�dkrt�dd�WSt��}t��}z|j�|�}Wn6tjj	yG}zddd�}t
�|�}	t|	�WYd}~WSd}~wddd�}t
�|�}	t|	�YWS|j
}
dd|
d	�}t
�|�}	t|	�WSty�}zdt|�d�}t
�|�}	t|	�WYd}~Sd}~ww)
Nrr,�containerStatusrr��r�r�rur�)r�r�ry)rr�r�rSrTrUr�rXrZr�r�r�rryr"r&)rrFrrr`rar�r�r�r�ryr(rrr�getContainerStatus=s6

�




��z#ContainerManager.getContainerStatusc
Cs(zq|j�d�}t�||�dkrt�dd�WSt��}t��}z|j�|�}Wn6tj	j
yI}zddd�}	t�|	�}
t
|
�WYd}~WSd}~wddd�}	t�|	�}
t
|
�YWS|��}t
|dd	�}d
|d|d<|WSty�}
zdt|
�d�}	t�|	�}
t
|
�WYd}
~
Sd}
~
ww)
Nrr,r�rr�r�ruzapplication/force-download)�content_typezattachment; filename="z.tar"zContent-Disposition)rWrXrr�r�rSrTrUr�rZr�r�r�r�exportr"r&)rrrFrrr`rar�r�r�r��eFile�responser(rrr�exportContainer[s6

�


��z ContainerManager.exportContainerc
Csrz�|d}t�||�dkrt�dd�WSt��}t��}z|j�|�}Wn6tjj	yG}zddd�}t
�|�}	t|	�WYd}~WSd}~wddd�}t
�|�}	t|	�YWSz|�
�}
Wn%tjjy�}zdt|�d�}t
�|�}	t|	�WYd}~WSd}~wwdd|
d	�}t
�|�}	t|	�WSty�}zdt|�d�}t
�|�}	t|	�WYd}~Sd}~ww)
Nrr,�containerTopStatusrr�)rr�rur�)rr��	processes)rr�r�rSrTrUr�rXrZr�r�r�r�topr�r&r")rrFrrr`rar�r�r�r�rr(rrr�getContainerTopysD

�


��


��z ContainerManager.getContainerTopc
CsPz�tjj|d�}|jjdkrt�dd�WSt��}t�	�}|d}|d}tjj|d�}z|j
�|�}Wn6tjjyW}	zddd	�}
t
�|
�}t|�WYd}	~	WSd}	~	wdd
d	�}
t
�|
�}t|�YWSt|||jd�}|��ddd	�}
t
�|
�}t|�WSty�}
zdt|
�d	�}
t
�|
�}t|�WYd}
~
Sd}
~
ww)
NrGr,�assignContainerStatusrrrr�r�)rr�ru)rrrlr�)r	r]rXr�r�rr�rSrTrUr�rZr�r�r�rr
r�r�r"r&)rrFrrr`rarr�r�r�r�r�r�r(rrr�assignContainer�sD

�

�



��z ContainerManager.assignContainerc

Cs�z�tjj|d�}|jjdkrt�dd�WSt��}t�	�}|d}z	|j
j|d�}Wn8tjj
yO}zdt|�d�}	t�|	�}
t|
�WYd}~WSd}~wddd�}	t�|	�}
t|
�YWStt�|��|D]%}d	|d
vr�|d
�d	�dd|d
�d	�d|d<ql|d
|d<qldd
|d�}	t�|	�}
t|
�WSty�}zdt|�d�}	t�|	�}
t|
�WYd}~Sd}~ww)NrGr,�searchImageStatusr�string)�term)rr�rurCrrE�name2r�)rr��matches)r	r]rXr�r�rr�rSrTrUr��searchrZr�r&r�r�rr^r0r")
rrFrrr`rar	rr�r�r�rBr(rrr�searchImage�s@
�

.


��zContainerManager.searchImagec
Cs�z�tjj|d�}t��}t��}z|j��}Wntjj	y2}z
t
t|��WYd}~WSd}~wwi}	g}
|D]e}z^|jdd�
d�d}d|vr]d}
|�
d�D]}|
d|7}
qSn|}
g}|jD]}|�
d�}t|�dkrx|�|d�qdt|�||
vr�|	|d	�|�n
|
�|�||
|d
�|	|<Wq9Yq9d}t|||	dd�d
�}|��WSty�}zt
t|��WYd}~Sd}~ww)NrG�RepoTagsrrErCrNr5r,r�)rrr�rI)r��testr)r	r]rXrSrTrUr�r�rZr�rr&�attrsr0r�r�r�r^�extendrrr")rrrFrrr`ra�	imageListr�r��namesrBrrrer�rA�getTagrirr(rrrr��sZ���

�

��
��zContainerManager.imagesc
Cs�zUt��}t��}|j��}i}g}|D]1}	z*|	jdd�d�d}
|
|vr2||
d�|	j�n
|�	|
�|
|	jd�||
<WqYqd}t
||d|id�}|��WStym}
zt
t|
��WYd}
~
Sd}
~
ww)	NrrrEr�)rr�zdockerManager/manageImages.htmlr�r)rSrTrUr�r�rr0rr�r�rrr"rr&)rrrFrr`rarr�rrBrrirr(rrr�manageImagess2


��
��zContainerManager.manageImagesc
Csz_|d}t��}t��}z|j�|�}Wn8tjjy:}zdt|�d�}t�	|�}	t
|	�WYd}~WSd}~wddd�}t�	|�}	t
|	�YWSdd|��d�}t�	|�}	t
|	�WSty�}
zdt|
�d�}t�	|�}	t
|	�WYd}
~
Sd}
~
ww)Nrr)�imageHistoryStatusr�rur,r�)rr��history)
rSrTrUr�rXrZr�r&r�r�rrr")rrFrrr`rarBr�r�r�r(rrr�getImageHistory:s0
�




��z ContainerManager.getImageHistoryc
Cs>z|tjj|d�}|jjdkrt��WSt��}t�	�}|d}z|dkr*|j
��}n|j
�|�}t
|�Wn8tjjyZ}zdt|�d�}	t�|	�}
t|
�WYd}~WSd}~wddd�}	t�|	�}
t|
�YWSddd�}	t�|	�}
t|
�WSty�}zdt|�d�}	t�|	�}
t|
�WYd}~Sd}~ww)NrGr,rr��removeImageStatusr�rur�)r	r]rXr�r�rr8rSrTrUr��pruner�r^rZr�r&r�r�rr")rrFrrr`rarr�r�r�r�r(rrr�removeImageVs<

�





��zContainerManager.removeImagec
Cszmt��}t��}|d}|d}|d}|d}	|d}
|d}|d}|d}
|d	kr0Wd
S|�||d�}|dkr>|WS|d
|	d|||
|d|
dd�}|jdkrZddi|d<|jjdi|��}|j|_|�	�WdSt
y�}z
t|�WYd}~Sd}~ww)Nrr�rBrAr�r�rkr��unknownzImage name not knownTrrEr�)rBr�rrkr�r�r�r�r,�Name�always�restart_policyr)rSrTrUr�rpr�r�r�rlr�r"r&)rrFrr�r`rarr�rBrAr�r��portr��	delStatusr�r�r(rrr�doRecreateContainer{sF
�
	��z$ContainerManager.doRecreateContainerc
Cs��zQ|d}t�||�dkrt�dd�WSt��}t��}|d}|d}|d}|d}	|d	kr8d}d
di}
nd}i}
z|j�|�}Wn6tjj	yg}zddd
�}
t
�|
�}t|�WYd}~WSd}~wddd
�}
t
�|
�}t|�YWSz|j
|d|
d�Wn%tjjy�}zdt|�d
�}
t
�|
�}t|�WYd}~WSd}~wwtjj|d�}||_||_d|v�r@|d�r@i}|��D]\}}|ddks�|ddkr�|d||d<q�i}|	��D]\}}|ddks�|ddkr�q�|ddd�||d<q�|d|j|j|t
�|j�||jd�}|�|||�}|dk�r4dt|�d
�}
t
�|
�}t|�WSt
�|�|_t
�|�|_|��ddd
�}
t
�|
�}t|�WSt�yu}zdt|�d
�}
t
�|
�}t|�WYd}~Sd}~ww)Nrr,�saveSettingsStatusrr�rprRrmTrr r�)r%r�rur�)r�r!rj�envConfirmationrNr�r�r�r�r��rr�rBrAr�rkr�r�r�)rr�r�rSrTrUr�rXrZr�r�r�r�updater�r&r
r]r�rpr�rBrAr�rkr$r�r�r�r")rrFrrr`rar�rprRrm�rPolicyr�r�r�r�r�r�r�r�r�r�r��recreateStatusr(rrr�saveContainerSettings�s�


�



�
����
�






��z&ContainerManager.saveContainerSettingsc

Cs�z�|d}t�||�dkrt�dd�WSt��}t��}z|j�|�}Wn6tjj	yG}zddd�}t
�|�}	t|	�WYd}~WSd}~wddd�}t
�|�}	t|	�YWSt
jj|d�}
|d|
j|
jt
�|
j�t
�|
j�t
�|
j�|
jd	�}|�|||
�}|dkr�dt|�d�}t
�|�}	t|	�WSdd
d�}t
�|�}	t|	�WSty�}zdt|�d�}t
�|�}	t|	�WYd}~Sd}~ww)Nrr,r%rr�)�recreateContainerStatusr�rurjr'r�)rr�r�rSrTrUr�rXrZr�r�r�rr
r]rBrAr�r�rkr�r�r$r&r")
rrFrrr`rar�r�r�r�r�r*r(rrr�recreateContainer�sR

�




�





��z"ContainerManager.recreateContainerc

Cszhtjj|d�}|jjdkrt��WS|d}|d}d|vr0|�d�dd|�d�d}nd|}t|�t	�d	|d
d|i��
�}g}|dD]	}	|�|	d�qLd||d
dd�}
t
�|
�}t
|�WSty�}zdt|�d�}
t
�|
�}t
|�WYd}~Sd}~ww)NrGr,rBr�rErrCzlibrary/z0https://registry.hub.docker.com/v2/repositories/z/tags�resultsr�next)�
getTagsStatusr�r/r�)r0r�)r	r]rXr�r�rr8r0r^�requestsr�r�r�rr"r&)
rrFrrrBr��image2�registryData�tagListrAr�r�r(rrr�getTags/s6
"��


��zContainerManager.getTagsc
Cs�z9tjj|d�}|jjdkrt��WS|d}i}d|d<||d<td|�}|��}dd|d�}t	�
|�}	t|	�WSty[}
zdt
|
�d�}t	�
|�}	t|	�WYd}
~
Sd}
~
ww)	NrGr,r�JobIDr��ryr�rrr)r	r]rXr�r�rr8r�ListContainersr�r�rr"r&)rrFrrr�passdata�da�retdatar�r�r(rrr�getDockersiteListOs&




��z"ContainerManager.getDockersiteListcCs�z�tjj|d�}|jjdkrt��WS|d}|d}t��}|j	�|�}|j
}|�di��dd�}	|	rOt�|	�
d�d	d
�}
t��|
}t|��
d�d	}nd}|j|j|j|�dd�|	||�d
i��dd�|�di��di�|�dg�|�|�d
i��dg��|jdd�d�dd	�|jdd�dd�dd	�d�}
ddd|
gd�}t�|�}t|�WSty�}zd	t|�d�}t�|�}t|�WYd}~Sd}~ww)NrGr,rr��State�	StartedAtrNrDrz%Y-%m-%dT%H:%M:%SzN/A�CreatedrL�Image�NetworkSettings�Ports�MountsrKFrxr{rzrr�r�)r�rry�created�
started_at�uptimerBrkr�r��memory_usager�r�r7�ryr�)r	r]rXr�r�rr8rSrTr�rr�strptimer0�nowr&�short_idrry�_mask_sensitive_envr�r�r�rr")rrFrrr�containerIDr`r��container_inforE�started_timerF�
uptime_str�detailsr�r�r(rrr�getContainerAppinfojsJ


�


��z$ContainerManager.getContainerAppinfocspg}gd�}|D]-}d|vr0|�dd�\�}t�fdd�|D��r*|���d��q|�|�q|�|�q|S)z=Helper method to mask sensitive data in environment variables)�password�secretr��token�authrMr,c3s�|]	}|���vVqdSr)�lower)�.0�keywordrjrr�	<genexpr>�s�z7ContainerManager._mask_sensitive_env.<locals>.<genexpr>z	=********)r0�anyr�)r�env_vars�masked_vars�sensitive_keywords�varr�rrjrrL�sz$ContainerManager._mask_sensitive_envc
Cs�zEtjj|d�}|jjdkrt��WS|d}|d}i}d|d<||d<||d<d|d<td|�}|��}dd	|d
�}	t	�
|	�}
t|
�WStyg}zdt
|�d�}	t	�
|	�}
t|
�WYd}~Sd}~ww)
NrGr,rr�r6rM�2�
numberOfLinesr�r7rr)r	r]rXr�r�rr8r�
ContainerLogsr�r�rr"r&�rrFrrrrMr9r:r;r�r�r(rrr�getContainerApplog�s,




��z#ContainerManager.getContainerApplogc
Csdz�ddlm}tjj|d�}|jjdkrt��WS|d}|d}|d}|d}|jj|d	�}	i}
d
|d<|	j	j
|d<|	j	j
|d
<||d<|	j	j	j|d<||d<|	j|d<|	j
|d<|	j|d<|	j|d<|	j|d<||d<||d<|	j	j|d<td|
�}|��ddd�}t�|�}
t|
�WSty�}zdt|�d�}t�|�}
t|
�WYd}~Sd}~ww)Nr)�DockerSitesrGr,r�
WPusername�WPemail�WPpasswd)�SiteNamerNr6�Domain�domain�WPemal�OwnerrF�MysqlCPU�MYsqlRam�SiteCPU�SiteRam�sitename�externalAppr�rHr)�websiteFunctions.modelsrer	r]rXr�r�rr8rrkr��	CPUsMySQL�MemoryMySQL�CPUsSite�
MemorySiterirsr�
RebuildAppr�r�rr"r&)rrFrrerrrfrgrh�
dockersiter9r:r�r�r(rrr�recreateappcontainer�sH










��z%ContainerManager.recreateappcontainerc
C�z9tjj|d�}|jjdkrt��WS|d}|d}i}||d<td|�}|��}dd|d�}	t	�
|	�}
t|
�WSty[}zdt
|�d	�}	t	�
|	�}
t|
�WYd}~Sd}~ww�
NrGr,rr�rMr�r7rr)r	r]rXr�r�rr8r�RestartContainerr�r�rr"r&rcrrr�RestartContainerAPP��&




��z$ContainerManager.RestartContainerAPPc
Cr|r})r	r]rXr�r�rr8r�
StopContainerr�r�rr"r&rcrrr�StopContainerAPPr�z!ContainerManager.StopContainerAPP)NNNNN)NNN)NN)NNF)'�__name__�
__module__�__qualname__rrr)�staticmethodr!rr3r�r�r�r�r�r�r�r�r�r�rrrrr�rrrr$r+r-r5r<rRrLrdr{rr�rrrrr sJ




2
P
+

V
'
I

1


$
)
&
0

%
*
X
2
 
3


,r),�os.path�os�sys�djangor�plogical.DockerSitesr�pathr��environ�
setdefault�setupr��plogical.aclr�plogical.CyberCPLogFileWriterr$r#�django.shortcutsrrr�loginSystem.modelsr	r-r/r<�dockerManager.modelsr
�mathrrS�docker.utilsr1�plogical.processUtilitiesr�serverStatus.serverStatusUtilr
�	threadingr�plogical.httpProcrrrrrrr�<module>s4