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

��h���@s�ddlZddlmZddlZddlmZddlmZddl	m
Z
ddlmZddl
mZddlmZdd	lmZGd
d�d�ZdS)�N)�HttpResponse)�CyberCPLogFileWriter)�ProcessUtilities)�Websites)�randint)�FileSystemStorage)�
ACLManager)�Trashc
@s�eZdZddddddddd	d
�	Zdd�Zed
d��Zedd��Zedd��Zedd��Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd �Zd!d"�Zd#d$�Zd%d&�Zd'd(�Zd)d*�Zd+d,�Zd-d.�Zd/d0�Zd1d2�Zd3d4�Zd5d6�Zd7d8�Zd9d:�Zd;S)<�FileManagerzapplication/x-httpd-php�
javascript�
text/x-pythonz	text/htmlz	text/x-goztext/cssztext/x-javaztext/x-perlztext/x-sass)	�phpr�python�html�go�css�java�perl�scsscCs||_||_dS)N)�request�data)�selfrr�r�-/usr/local/CyberCP/filemanager/filemanager.py�__init__s
zFileManager.__init__cCs�|�d�r
tjdS|�d�rtjdS|�d�rtjdS|�d�r(tjdS|�d	�r2tjd
S|�d�r<tjdS|�d
�sF|�d�rKtjdS|�d�rUtjdS|�d�r_tjdSdS)Nz.phpr
z.jsrz.pyrz.htmlrz.gorz.cssrz.plz.PLrz.javarz.scssr�)�endswithr
�modes)�fileNamerrr�findModes&
















zFileManager.findModecCs�|tjdkr	dS|tjdkrdS|tjdkrdS|tjdkr$dS|tjd	kr-d
S|tjdkr6dS|tjd
kr?dS|tjdkrHdS|tjdkrQdSdS)Nr
a
    <script src="https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.58.1/mode/javascript/javascript.min.js"
            integrity="sha512-e3U/84Fo+2ZAnRhLkjStm2hYnkmZ/NRmeesZ/GHjDhcLh35eYTQxsfSeDppx6Se5aX0N6mrygH7tr4wugWsPeQ=="
            crossorigin="anonymous"></script>  
    <script src="https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.58.1/addon/hint/javascript-hint.min.js"
            integrity="sha512-PPI9W6pViVZfJ5uvmYZsHbPwf7T+voS0OpohIrN8Q4CRCCa6JK39JJ0R16HHmyV7EQR8MTa+O56CpWjfKOxl0A=="
            crossorigin="anonymous"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.58.1/mode/css/css.min.js"
            integrity="sha512-DG+5u//fVN9kpDgTGe78IJhJW8e5+tlrPaMgNqcrzyPXsn+GPaF2T62+X3ds7SuhFR9Qeb7XZ6kMD8X09FeJhA=="
            crossorigin="anonymous"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.58.1/mode/xml/xml.min.js"
            integrity="sha512-k1HnoY9EXahEfPz7kq/lD9DltloKH9OrB9XNKYoUQrNz9epe5F4mQP5PfuIfeRfoXHkNrE0gF3Mx4LhC5BVl9Q=="
            crossorigin="anonymous"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.58.1/mode/htmlmixed/htmlmixed.min.js"
            integrity="sha512-p15qsXPrhaUkH+/RPE6QzCmxUAPkCRw89ityx+tWC1lAYI6Et2L0UpN+iqifxUdt+ss1FQ+9CuzxpBeT9mR3/w=="
            crossorigin="anonymous"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.58.1/mode/clike/clike.min.js" integrity="sha512-HT3t3u7HfQ7USbSZa0Tk5caEnUfO8s58OWqMBwm96xaZAbA17rpnXXHDefR8ixVmSSVssbOv3W3OMh6mNX/XuQ==" crossorigin="anonymous"></script>
    
    <script src="https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.58.1/addon/hint/anyword-hint.min.js" integrity="sha512-wdYOcbX/zcS4tP3HEDTkdOI5UybyuRxJMQzDQIRcafRLY/oTDWyXO+P8SzuajQipcJXkb2vHcd1QetccSFAaVw==" crossorigin="anonymous"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.58.1/addon/hint/css-hint.min.js" integrity="sha512-iXuwWkAmdAUNuO5rUtzmJZ/LoeJoSG8ZeQVdcUBCkV0dxfe7bxfzQMKCwQ6uNNs0FZ9jmSrN/jzJX7G1bOs4Nw==" crossorigin="anonymous"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.58.1/addon/hint/html-hint.min.js" integrity="sha512-aGi2Yn9VkLP9HiwiMXfkY7KQoGfwDW6JiGUtPhiPJAL9J7+rwwPVWUtUYvHW+xp3yJ7F0UhTPoPumUZv3+E/Rg==" crossorigin="anonymous"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.58.1/addon/hint/sql-hint.min.js" integrity="sha512-zVNOyYBOmDcGRo9/Tz+rYW8vjhAO4D/jqbj9+IIb1xWMU1ROyNWPCeWcOoBTquOBBmdiue78xJg5kkdWzsZJog==" crossorigin="anonymous"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.58.1/addon/hint/xml-hint.min.js" integrity="sha512-XtLGFClKrm3hNY3bS01LPiIkF64i9CnlxCqj5O+TSQq7UW8kFhFIc3kOR3bJ98h4ThxFaKdJA9PpQC76LvD/oQ==" crossorigin="anonymous"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.58.1/mode/php/php.min.js"
            integrity="sha512-m8sosGXUwyH6Ppzoy+CoQ/r5zAwZRGdNFUgGH81E3RDQkFnAsE4cP1I3tokvZwgMsDZB5mHxs+7egAgvhaCcMw=="
            crossorigin="anonymous"></script>
ra4
    <script src="https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.58.1/addon/hint/show-hint.min.js"
            integrity="sha512-ge9uKCpgPmuJY2e2zPXhpYCZfyb1/R7KOOfMZ3SzSX3ZayWpINs3sHnI8LGEHUf6UOFX/D03FVHgR36uRL8/Vw=="
            crossorigin="anonymous"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.58.1/mode/javascript/javascript.min.js"
            integrity="sha512-e3U/84Fo+2ZAnRhLkjStm2hYnkmZ/NRmeesZ/GHjDhcLh35eYTQxsfSeDppx6Se5aX0N6mrygH7tr4wugWsPeQ=="
            crossorigin="anonymous"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.58.1/addon/hint/javascript-hint.min.js"
            integrity="sha512-PPI9W6pViVZfJ5uvmYZsHbPwf7T+voS0OpohIrN8Q4CRCCa6JK39JJ0R16HHmyV7EQR8MTa+O56CpWjfKOxl0A=="
            crossorigin="anonymous"></script>
rz�
    <script src="https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.58.1/mode/python/python.min.js" integrity="sha512-DS+asaww1mE0V/N6YGVgoNIRj+yXB9hAV68vM6rVeWs0G+OyMd24LKrnS4Z+g26rgghU7qvGeEnRVUArV7nVog==" crossorigin="anonymous"></script>
 ra�

    <script src="https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.58.1/mode/javascript/javascript.min.js"
                        integrity="sha512-e3U/84Fo+2ZAnRhLkjStm2hYnkmZ/NRmeesZ/GHjDhcLh35eYTQxsfSeDppx6Se5aX0N6mrygH7tr4wugWsPeQ=="
                        crossorigin="anonymous"></script>  
    <script src="https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.58.1/addon/hint/javascript-hint.min.js"
                        integrity="sha512-PPI9W6pViVZfJ5uvmYZsHbPwf7T+voS0OpohIrN8Q4CRCCa6JK39JJ0R16HHmyV7EQR8MTa+O56CpWjfKOxl0A=="
                        crossorigin="anonymous"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.58.1/mode/css/css.min.js"
                        integrity="sha512-DG+5u//fVN9kpDgTGe78IJhJW8e5+tlrPaMgNqcrzyPXsn+GPaF2T62+X3ds7SuhFR9Qeb7XZ6kMD8X09FeJhA=="
                        crossorigin="anonymous"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.58.1/mode/xml/xml.min.js"
                        integrity="sha512-k1HnoY9EXahEfPz7kq/lD9DltloKH9OrB9XNKYoUQrNz9epe5F4mQP5PfuIfeRfoXHkNrE0gF3Mx4LhC5BVl9Q=="
                        crossorigin="anonymous"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.58.1/mode/htmlmixed/htmlmixed.min.js"
                        integrity="sha512-p15qsXPrhaUkH+/RPE6QzCmxUAPkCRw89ityx+tWC1lAYI6Et2L0UpN+iqifxUdt+ss1FQ+9CuzxpBeT9mR3/w=="
                        crossorigin="anonymous"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.58.1/addon/hint/anyword-hint.min.js" integrity="sha512-wdYOcbX/zcS4tP3HEDTkdOI5UybyuRxJMQzDQIRcafRLY/oTDWyXO+P8SzuajQipcJXkb2vHcd1QetccSFAaVw==" crossorigin="anonymous"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.58.1/addon/hint/css-hint.min.js" integrity="sha512-iXuwWkAmdAUNuO5rUtzmJZ/LoeJoSG8ZeQVdcUBCkV0dxfe7bxfzQMKCwQ6uNNs0FZ9jmSrN/jzJX7G1bOs4Nw==" crossorigin="anonymous"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.58.1/addon/hint/html-hint.min.js" integrity="sha512-aGi2Yn9VkLP9HiwiMXfkY7KQoGfwDW6JiGUtPhiPJAL9J7+rwwPVWUtUYvHW+xp3yJ7F0UhTPoPumUZv3+E/Rg==" crossorigin="anonymous"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.58.1/addon/hint/sql-hint.min.js" integrity="sha512-zVNOyYBOmDcGRo9/Tz+rYW8vjhAO4D/jqbj9+IIb1xWMU1ROyNWPCeWcOoBTquOBBmdiue78xJg5kkdWzsZJog==" crossorigin="anonymous"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.58.1/addon/hint/xml-hint.min.js" integrity="sha512-XtLGFClKrm3hNY3bS01LPiIkF64i9CnlxCqj5O+TSQq7UW8kFhFIc3kOR3bJ98h4ThxFaKdJA9PpQC76LvD/oQ==" crossorigin="anonymous"></script>
rz�
    <script src="https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.58.1/mode/go/go.min.js" integrity="sha512-DxeIplahS44UYHUdqtsLJ21g5xHilhuP7Y4i+NSsD7J4ow+LXIXLHsjvEpMqcTSg15rkaqBRIXEETAjq3yb5Cw==" crossorigin="anonymous"></script>
rz�
    <script src="https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.58.1/mode/css/css.min.js" integrity="sha512-DG+5u//fVN9kpDgTGe78IJhJW8e5+tlrPaMgNqcrzyPXsn+GPaF2T62+X3ds7SuhFR9Qeb7XZ6kMD8X09FeJhA==" crossorigin="anonymous"></script>
rz�
    <script src="https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.58.1/mode/clike/clike.min.js" integrity="sha512-HT3t3u7HfQ7USbSZa0Tk5caEnUfO8s58OWqMBwm96xaZAbA17rpnXXHDefR8ixVmSSVssbOv3W3OMh6mNX/XuQ==" crossorigin="anonymous"></script>
rz�
    <script src="https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.58.1/mode/perl/perl.min.js" integrity="sha512-6rKFA1mIjmFqxMM/b0dtjQOWFRAoqKCmhb7/6u2KohJcP4poKbrUI08Yf5GXsK+rkCr2dQnppV7gMe2a0HGQBQ==" crossorigin="anonymous"></script>        
rz�
    <script src="https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.58.1/mode/sass/sass.min.js" integrity="sha512-lFZETu8ovGFrFbFWAJnwgJrRcQ06C0BhjySIpBFPUatL/vqFz/mZIvXhlLtbOwbvRCp+XcLCmTEigKOJPN+YhA==" crossorigin="anonymous"></script>
r)r
r��moderrr�
findModeFiles/s&zFileManager.findModeFilescCsd|S)Nzj<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/codemirror/5.58.1/theme/%s.min.css" />r)�themerrr�
findThemeFile�szFileManager.findThemeFilecCs|dkrdSdS)Nrz�<select ng-model="optionValue" ng-change="additionalOptions()">
                <option>Python 2</option>
                <option>Python 3</option>
            </select>
rrr rrr�findAdditionalOptions�sz!FileManager.findAdditionalOptionscCs|||d�}t�|�}t|�S)N)�status�
error_message�uploadStatus)�json�dumpsr)rr&�errorMessage�	final_dic�
final_jsonrrr�ajaxPre�s
zFileManager.ajaxPrecCsd|dS)N�'r)r�pathrrr�returnPathEnclosed�szFileManager.returnPathEnclosedcCs�z5|jd}tjj|d�}|�d�dkr|�dd�WSd|jd|jd	|�|�}t�	||j�WdSt
d
�YdS)N�
domainName��domain�..���r�ENot allowed to move in this path, please choose location inside home!z	chown -R �:� zPermisson not changed)rr�objects�get�findr.�externalAppr1r�executioner�print)rr0r2�website�commandrrr�changeOwner�s
"zFileManager.changeOwnercCs��z#i}d|d<zA|jd}tjj|d�}d|}|jd�|�dks-|jd�d�dkr5|�d	d
�WWSd|�|jd�}t�||j	��
�}Wn4d}|jd�|�dksc|jd�d�dkrl|�d	d
�YWSd|�|jd�}t�|��
�}Yd	}|D]�}z||�d
�}	dd�|	D�}	|	ddks�|	ddks�|	d	dks�|	d�d�r�Wq�t
|	�dkr�|	dd�}
d
�|
�|	d<d	}|	d	d	dkr�d}ttt|	d�td���}|	dd
|	dd
|	d}
|	d|	d|
||	d	|g|t|�<|d}Wq�t�y}z
t�t|��WYd}~q�d}~wwt�|�}t|�WSt�y?}z|�d	t|��WYd}~Sd}~ww)N�r&r2r3�/home/%s�completeStartingPathr6r5rz1Not allowed to browse this path, going back home!�!ls -la --group-directories-first �/r9cS�g|]}|dkr|�qS�rr��.0�arrr�
<listcomp>��z,FileManager.listForTable.<locals>.<listcomp>�.�totalzmail.�	��d�i���)rrr:r;r<r.r1r�outputExecutionerr=�
splitlines�split�
startswith�len�join�str�int�float�
BaseException�logging�writeToFiler)r*r)r�	finalDatar2r@�	pathCheckrA�output�counter�items�currentFiler�dirCheck�size�lastModified�msg�	json_datarrr�listForTable�st
������
2 ���

��zFileManager.listForTablec

Cs\�zi}d|d<z�|jd}tjj|d�}d|�|jd�}t�||j���}d}|D]`}zY|�	d�}d	d
�|D�}|ddksM|dd
ksM|ddkrOWq,t
|�dkrb|dd�}	d�|	�|d<d}
|dddkrnd}
|d|jdd|d|
g|t|�<|d}Wq,Yq,Wnzd|�|jd�}t�|���}d}|D]`}zY|�	d�}dd
�|D�}|ddks�|dd
ks�|ddkr�Wq�t
|�dkr�|dd�}	d�|	�|d<d}
|dddkr�d}
|d|jdd|d|
g|t|�<|d}Wq�Yq�Yt
�|�}t|�WSt�y-}z|�dt|��WYd}~Sd}~ww)NrCr&r2r3rFrErr9cSrHrIrrJrrrrM�rNz$FileManager.list.<locals>.<listcomp>r6rOr5rPrQrRFrSTrGcSrHrIrrJrrrrMrN)rrr:r;r1rrXr=rYrZr\r]r^r)r*rrar.)
rrdr2r@rArfrgrhrirrjrnrmrrr�list�sz
�
$���
$��

��zFileManager.listc
C�fz�i}d|d<zJ|jd}tjj|d�}d|}|jd�d�dks,|jd�|�dkr4|�d	d
�WWSd|�|jd�}t�||j	�|�
|�|jd��Wn=d}|jd�d�dksk|jd�|�dkrt|�d	d
�YWSd|�|jd�}t�|�|�
|�|jd��Yt�|�}t
|�WSty�}z|�d	t|��WYd}~Sd}~ww)
NrCr&r2r3rDrr5r6rr7ztouch rG�rrr:r;r<r.r1rr>r=rBr)r*rrar^�rrdr2r@�homePathrArnrmrrr�
createNewFile3s2
((


��zFileManager.createNewFilec
Crq)
NrCr&r2r3rD�
folderNamer5r6rr7�mkdir rGrrrsrrr�createNewFolderRs2
((


��zFileManager.createNewFolderc
Cs>�z�i}d|d<|jd}z�z|jd}Wnd}Ytjj|d�}d||_d}d|j}t�|�}|�d	�d
krHd}d|j}t�|�n
d
|j}t�|�|jdD]z}|jdd|�d�d
ksv|jdd|�|j�d
kr�|�	dd�WWS|r�d|�
|jdd|�}t�||j�qWd|j}	d|	}t�||j�t||�
|jd�|�
|�d��
�d|�
|jdd|�|	f}t�||j�qW|dkr�d|j}t�|�Wn�z|jd}Wnd}Yd|_d}d|j}t�|�}|�d	�d
k�rd}d|j}t�|�n
d
|j}t�|�|jdD]C}|jdd|�d�d
k�sG|jdd|�|j�d
k�rR|�	dd�YWS|�rhd|�
|jdd|�}t�|��q&|dk�ryd|j}t�|�Yt�|�}
t|
�WSt�y�}z|�	dt|��WYd}~Sd}~ww)NrCr&r2�	skipTrashFr3rDztouch %s/hello.txtzNo such file or directoryr6rzchattr -R -i %szrm -f %s/hello.txt�fileAndFoldersr0rGr5r7zrm -rf �	%s/.trashzmkdir %s)r@�originalPathr�mv %s %szchattr -R +i %s)rrr:r;rtrrXr<r>r.r1r=r	�saver)r*rrar^)rrdr2ryr@�RemoveOKrA�result�item�	trashPathrnrmrrr�deleteFolderOrFileus�






.��
� 

�




0��
�


�

��zFileManager.deleteFolderOrFilec
CsBz�i}d|d<|jd}z|jd}Wnd}Ytjj|d�}d||_|jdD]Q}|jd	d
|�d�dksJ|jd	d
|�|j�dkrS|�d
d�WSd|j}tjj||�|�d�}d|�|d
|�|j	f}t
�||j�|�
�q+t�|�}	t|	�WSty�}
z|�d
t|
��WYd}
~
Sd}
~
ww)NrCr&r2ryFr3rDrzr0rGr5r6rr7r{)r@rr})rrr:r;rtr<r.r	r1r|rr>r=�deleter)r*rrar^)rrdr2ryr@r�r��tItemrArnrmrrr�restore�s8

.��



��zFileManager.restorec	
CsL�z	i}d|d<|jd}z�tjj|d�}d|}|jd�d�dks-|jd�|�dkr5|�d	d
�WWSt|jd�dkr�|jdd
|jdd	�d�dksd|jdd
|jdd	�|�dkrl|�d	d
�WWSd|�|jdd
|jdd	�|jdf}t�	||j
�|�|jd�t�
|�}t|�WWSd|�|jd�}t�	||j
�|jdD]I}|jdd
|�d�dks�|jdd
|�|�dkr�|�d	d
�WWSdd|�|jdd
|�d|�|jd�}t�	||j
�q�|�|jd�Wn�d
}|jd�d�dk�s#|jd�|�dk�r,|�d	d
�YWSt|jd�dk�r�|jdd
|jdd	�d�dk�s^|jdd
|jdd	�|�dk�rg|�d	d
�YWSd|�|jdd
|jdd	�|jdf}t�	|�|�|jd�t�
|�}t|�YWSd|�|jd�}t�	|�|jdD]K}|jdd
|�d�dk�s�|jdd
|�|�dk�r�|�d	d
�YWSdd|�|jdd
|�d|�|jd�}t�	|��q�|�|jd�Yt�
|�}t|�WSt�y%}z|�d	t|��WYd}~Sd}~ww)NrCr&r2r3rD�newPathr5r6rr7rz�basePathrGzyes| cp -Rf %s %srwz	%scp -Rf zyes |r9)rrr:r;r<r.r\r1rr>r=rBr)r*rrar^)	rrdr2r@rtrArnr�rmrrr�copy�s�
(&"� �
.��
���,("� �


��
���

��zFileManager.copyc	
Cs��zAi}d|d<|jd}z�tjj|d�}d|}d|�|jd�}t�||j�|jdD]q}|jd	d
|�d�dksM|jd	d
|�|�dkrW|�	d
d�WWS|jdd
|�d�dkss|jdd
|�|�dkr}|�	d
d�WWSd|�|jd	d
|�d|�|jdd
|�}t�||j�q/Wn�d
}d|�|jd�}t�|�|jdD]s}|jd	d
|�d�dks�|jd	d
|�|�dkr�|�	d
d�YWS|jdd
|�d�dk�s|jdd
|�|�dk�r|�	d
d�YWSd|�|jd	d
|�d|�|jdd
|�}t�|�q�|�
|jd�Yt�|�}t
|�WSt�y]}z|�	d
t|��WYd}~Sd}~ww)NrCr&r2r3rDrwr�rzr�rGr5r6rr7�mv r9)rrr:r;r1rr>r=r<r.rBr)r*rrar^)	rrdr2r@rtrAr�rnrmrrr�moveQs�
.��.�������
��0������

��zFileManager.movec
Cs��z%i}d|d<|jd}z�tjj|d�}d|}|jdd|jd�d	�d
ks;|jdd|jd�|�d
krC|�dd�WWS|jd
�d	�d
ksW|jd�|�d
kr_|�dd�WWSd|�|jdd|jd�d|�|jdd|jd
�}t�||j	�|�
|jdd|jd
�Wn�d}|jdd|jd�d	�d
ks�|jdd|jd�|�d
kr�|�dd�YWS|jd
�d	�d
ks�|jd�|�d
kr�|�dd�YWSd|�|jdd|jd�d|�|jdd|jd
�}t�|�|�
|jdd|jd
�Yt�|�}t
|�WSt�yA}z|�dt|��WYd}~Sd}~ww)NrCr&r2r3rDr�rG�existingNamer5r6rr7�newFileNamer�r9rrrsrrr�rename�sb
"�(����""�(����
 

��zFileManager.renamec
CsJz�i}d|d<|jd}z<tjj|d�}d|}|jd�|�dks,|jd�d�dkr4|�d	d
�WWSd|�|jd�}t�||j	�|d<Wn4d
}|jd�|�dksb|jd�d�dkrk|�d	d
�YWSd|�|jd�}t�|�|d<Yt
j|dd�}t|dd�WSt
y�}z|�d	t|��WYd}~Sd}~ww)NrCr&r2r3rDrr6r5rzNot allowed.z LANG=C.UTF-8 LC_ALL=C.UTF-8 cat �fileContentsrGF)�ensure_asciizapplication/json; charset=utf-8)�content_type)rrr:r;r<r.r1rrXr=r)r*rrar^)rrdr2r@rerArnrmrrr�readFileContents�s.
((��zFileManager.readFileContentsc	
Cs�z�i}d|d<zad|jd|jd<t��ddttdd	��f}|jd}tjj|d
�}t|d�}|�	|jd�
d
��|��d|j|j|f}t
�|�d||�|jd�f}t
�||j�t�|�WnBd|jd<t��ddttdd	��f}t|d�}|�	|jd�
d
��|��d||�|jd�f}t
�|�t�|�Yt�|�}t|�WSty�}z|�dt|��WYd}~Sd}~ww)NrCr&rDr2�homez%s/%sz/usr/local/CyberCP/tmp���'r3�wb�fileContentzutf-8�chown %s:%s %szcp %s %srrGr)rr�CreateSecureDirr^rrr:r;�open�write�encode�closer=rr>r1�os�remover)r*rrar.)	rrd�tempPathr2r@rcrArnrmrrr�writeFileContents�sB







��zFileManager.writeFileContentsc
Cs��z�i}d|d<d|d<t��d}ttdd��}|jjd}t�}z|�||�}|�|�|d	<Wnt	yL}zt
�d
t|��WYd}~nd}~ww|jd}z�d|jd}	t
jj|d
�}
d|jd}t�||
j�}|�d�dkr~|�dd�WWSt�|jdd|j�dkr�|�dd�WWS|jdd|j�|	�dks�|jdd|j�d�dkr�|�dd�WWSd|�||�d|�|jdd|j�}t�||
j�|�|�|jdd|j��z	t�||�WnYWn�d}	d|jd}t�|�}t
�d|�t�|jdd|j�dk�r+|�dd�YWS|jdd|j�|	�dk�sK|jdd|j�d�dk�rT|�dd�YWSd|�||�d|�|jdd|j�}t�|�|�|�|jdd|j��z	t�||�WnYYt�|�}
t|
�WSt	�y�}zz	t�||�WnY|�dt|��WYd}~Sd}~ww)NrCr(zFile transfer completed.�answerz/usr/local/CyberCP/tmp/r�r��filerz%s. [375:upload]r2rDr3�	ls -la %s�completePath�->r6r�Symlink attack.rGr7r5zcp r9zupload file res %s)rr�r^rr�FILESrr~�urlrarbrcrrr:r;rrXr=r<r.�commandInjectionCheck�namer1r>rBr�r�r)r*r)rrd�
UploadPath�RanddomFileName�myfile�fs�filenamermr2rer@rAr�rnrrr�uploads���
����� �
  �����
 �

��zFileManager.uploadc
CsH�zi}d|d<|jd}z|tjj|d�}d|}|jd�d�dks-|jd�|�dkr5|�d	d
�WWS|jd�d�dksI|jd�|�dkrQ|�d	d
�WWS|jdd
krmd|�|jd�d|�|jd�}nd|�|jd�d|�|jd�}t�||j	�Wnud}|jd�d�dks�|jd�|�dkr�|�d	d
�YWS|jd�d�dks�|jd�|�dkr�|�d	d
�YWS|jdd
kr�d|�|jd�d|�|jd�}nd|�|jd�d|�|jd�}t�|�Yt
�|�}t|�WSt
�y#}z|�d	t|��WYd}~Sd}~ww)NrCr&r2r3rD�extractionLocationr5r6rr7�
fileToExtract�extractionType�zipz	unzip -o z -d ztar -xf z -C rG)rrr:r;r<r.r1rr>r=r)r*rrar^rsrrr�extractlsv
((��������(������

��zFileManager.extractc
Cs��z3i}d|d<|jd}z�tjj|d�}|jddkr4|�|jdd|jd	d
�}d|d}n|�|jdd|jd	d
�}d|d}d|}|jdD]-}|jd|�d�dksn|jd|�|�dkrx|�dd�WWSd||�|�f}qTd|jd|f}t�||j	�|�
|jd	�Wn�|jddkr�|�|jdd|jd	d
�}d|d}n|�|jdd|jd	d
�}d|d}d}|jdD]/}|jd|�d�dks�|jd|�|�dk�r|�dd�YWSd||�|�f}q�d|jd|f}t�|d�}	t�
d|	�|�
|jd	�Yt�|�}
t|
�WSt�yO}z|�dt|��WYd}~Sd}~ww)NrCr&r2r3�compressionTyper�r�rG�compressedFileNamez.zipzzip -r r9z.tar.gzz
tar -czvf rD�listOfFilesr5r6rr7z%s%s zcd %s && %s�rootzcompress file res %s)rrr:r;r1r<r.rr>r=rBrXrbrcr)r*rrar^)rrdr2r@r�rArtr��finalCommand�resrnrmrrr�compress�sp
��&����&��

��zFileManager.compressc
Cs�z[i}d|d<|jd}tjj|d�}|jddkr3d|jdd|�|jd	d
|jd�}nd|jdd|�|jd	d
|jd�}t�||j�t�	|�}t
|�WStyu}z|�d
t
|��WYd}~Sd}~ww)NrCr&r2r3�	recursivez	chmod -R �newPermissionsr9r�rG�permissionsPathzchmod r)rrr:r;r1rr>r=r)r*rrar.r^)rrdr2r@rArnrmrrr�changePermissions�s&
��

��zFileManager.changePermissionsc	Cs6tjj|d�}|j}t��tjkst��tjkrd}nd}d|}t�|�}|�	d�dkr:t
�dddd	��}t|�Sd
|j|j|f}t�
|�d|}t�|�}|�	d�dkret
�dddd	��}t|�Sd|||f}t�
|�d
|||f}t�
|�dd|d}t�
|�dd|d}t�
|�d|||f}t�|�d|}t�|�|j��D]g}d|j}t�|�}|�	d�dkr�t
�dddd	��}t|�Sd|j}t�
|�d|j}t�
|�d|||jf}t�
|�d|||jf}t�
|�d|j}t�
|�d|||jf}t�
|�q�dS)Nr3�nobody�nogroupzls -la /home/%sr�r6rr�)r&�	logstatusr'zchown %s:%s /home/%szls -la /home/%s/public_html/z(chown -R -P %s:%s /home/%s/public_html/*z-chown -R -P %s:%s /home/%s/public_html/.[^.]*z&find %s -type d -exec chmod 0755 {} \;z/home/z/public_htmlz&find %s -type f -exec chmod 0644 {} \;z chown %s:%s /home/%s/public_htmlzchmod 750 /home/%s/public_htmlr�zchown -R -P %s:%s %s/*zchown -R -P %s:%s %s/.[^.]*zchmod 755 %sr�)rr:r;r=r�decideDistro�centos�cent8rXr<r)r*r�popenExecutionerr>�childdomains_set�allr0)	rr2r@r=�	groupNamerAr�r-�childsrrr�fixPermissions�sx
��

��







��







�zFileManager.fixPermissionsN)�__name__�
__module__�__qualname__rr�staticmethodrr"r$r%r.r1rBrorprurxr�r�r�r�r�r�r�r�r�r�r�r�rrrrr
sB
�

\


>D#c$UA/%.X9Ar
)r��django.shortcutsrr)�plogical.CyberCPLogFileWriterrrb�plogical.processUtilitiesr�websiteFunctions.modelsr�randomr�django.core.files.storager�plogical.aclr�filemanager.modelsr	r
rrrr�<module>s