mirror of
https://github.com/usmannasir/cyberpanel.git
synced 2025-11-07 13:56:01 +01:00
Filemanager security update.
This commit is contained in:
13
dns/views.py
13
dns/views.py
@@ -530,15 +530,22 @@ def deleteDNSZone(request):
|
||||
try:
|
||||
val = request.session['userID']
|
||||
|
||||
val = request.session['userID']
|
||||
|
||||
admin = Administrator.objects.get(pk=val)
|
||||
domainsList = []
|
||||
|
||||
if admin.type == 1:
|
||||
domains = Domains.objects.all()
|
||||
|
||||
for items in domains:
|
||||
domainsList.append(items.name)
|
||||
else:
|
||||
websites = admin.websites_set.all()
|
||||
|
||||
for web in websites:
|
||||
try:
|
||||
tempDomain = Domains.objects.get(name = web.domain)
|
||||
domainsList.append(web.domain)
|
||||
except:
|
||||
pass
|
||||
|
||||
|
||||
return render(request, 'dns/deleteDNSZone.html',{"domainsList":domainsList})
|
||||
|
||||
@@ -15,6 +15,7 @@ fileManager.controller('fileManagerCtrl', function($scope,$http,FileUploader) {
|
||||
var aceEditorMode = '';
|
||||
|
||||
var domainName = window.location.pathname.split("/")[2];
|
||||
var domainRandomSeed = "";
|
||||
|
||||
var homePathBack = "/home/"+domainName;
|
||||
$scope.currentPath = "/home/"+domainName;
|
||||
@@ -67,7 +68,9 @@ fileManager.controller('fileManagerCtrl', function($scope,$http,FileUploader) {
|
||||
|
||||
var data = {
|
||||
completeStartingPath : completePath,
|
||||
method : "list"
|
||||
method : "list",
|
||||
domainRandomSeed:domainRandomSeed,
|
||||
domainName: domainName
|
||||
};
|
||||
|
||||
|
||||
@@ -118,7 +121,6 @@ fileManager.controller('fileManagerCtrl', function($scope,$http,FileUploader) {
|
||||
parentNode.appendChild(prepareChildNodeLI(path,completePath,dropDown));
|
||||
}
|
||||
|
||||
|
||||
function prepareChildNodeLI(path,completePath,dropDown){
|
||||
|
||||
// text nodes are created
|
||||
@@ -364,6 +366,8 @@ fileManager.controller('fileManagerCtrl', function($scope,$http,FileUploader) {
|
||||
var permissionsNode = document.createTextNode(permissions);
|
||||
|
||||
|
||||
|
||||
|
||||
//
|
||||
|
||||
|
||||
@@ -598,6 +602,8 @@ fileManager.controller('fileManagerCtrl', function($scope,$http,FileUploader) {
|
||||
|
||||
// table functions
|
||||
|
||||
|
||||
|
||||
$scope.fetchForTableSecondary = function(node,functionName) {
|
||||
|
||||
allFilesAndFolders = [];
|
||||
@@ -632,7 +638,9 @@ fileManager.controller('fileManagerCtrl', function($scope,$http,FileUploader) {
|
||||
var data = {
|
||||
completeStartingPath : completePathToFile,
|
||||
method : "listForTable",
|
||||
home: homePathBack
|
||||
home: homePathBack,
|
||||
domainRandomSeed:domainRandomSeed,
|
||||
domainName: domainName
|
||||
};
|
||||
|
||||
var tableBody = document.getElementById("tableBodyFiles");
|
||||
@@ -666,6 +674,11 @@ fileManager.controller('fileManagerCtrl', function($scope,$http,FileUploader) {
|
||||
var fileSize = filesData[keys[i]][3];
|
||||
var permissions = filesData[keys[i]][4];
|
||||
var dirCheck = filesData[keys[i]][5];
|
||||
console.log(fileName);
|
||||
if(fileName === "..filemanagerkey"){
|
||||
|
||||
continue;
|
||||
}
|
||||
tableBody.appendChild(createTR(fileName,fileSize,lastModified,permissions,dirCheck));
|
||||
|
||||
}
|
||||
@@ -682,12 +695,51 @@ fileManager.controller('fileManagerCtrl', function($scope,$http,FileUploader) {
|
||||
}
|
||||
|
||||
};
|
||||
$scope.fetchForTableSecondary(null,"startPoint");
|
||||
|
||||
function findFileExtension(fileName){
|
||||
return (/[.]/.exec(fileName)) ? /[^.]+$/.exec(fileName) : undefined;
|
||||
}
|
||||
|
||||
// Create entry point for domain
|
||||
|
||||
function createEntryPoint(){
|
||||
|
||||
url = "/filemanager/createTemporaryFile";
|
||||
|
||||
var data = {
|
||||
domainName:domainName
|
||||
};
|
||||
|
||||
var config = {};
|
||||
|
||||
$http.post(url, data,config).then(ListInitialDatas, cantLoadInitialDatas);
|
||||
|
||||
|
||||
function ListInitialDatas(response) {
|
||||
|
||||
if(response.data.createTemporaryFile === 1){
|
||||
domainRandomSeed = response.data.domainRandomSeed;
|
||||
$scope.fetchForTableSecondary(null,"startPoint");
|
||||
}
|
||||
else
|
||||
{
|
||||
var notification = alertify.notify(response.data.error_message, 'error', 10, function(){ console.log('dismissed'); });
|
||||
}
|
||||
}
|
||||
function cantLoadInitialDatas(response) {
|
||||
var notification = alertify.notify("Could not connec to server, refresh page.", 'error', 10, function(){ console.log('dismissed'); });
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
createEntryPoint();
|
||||
|
||||
|
||||
|
||||
|
||||
// html editor
|
||||
|
||||
@@ -698,7 +750,9 @@ fileManager.controller('fileManagerCtrl', function($scope,$http,FileUploader) {
|
||||
|
||||
var data = {
|
||||
fileName : completePathForFile,
|
||||
method : "readFileContents"
|
||||
method : "readFileContents",
|
||||
domainRandomSeed:domainRandomSeed,
|
||||
domainName: domainName
|
||||
};
|
||||
|
||||
|
||||
@@ -738,7 +792,9 @@ fileManager.controller('fileManagerCtrl', function($scope,$http,FileUploader) {
|
||||
var data = {
|
||||
fileName : completePathForFile,
|
||||
method : "writeFileContents",
|
||||
fileContent: editor.getValue()
|
||||
fileContent: editor.getValue(),
|
||||
domainRandomSeed:domainRandomSeed,
|
||||
domainName: domainName
|
||||
};
|
||||
|
||||
|
||||
@@ -790,7 +846,13 @@ fileManager.controller('fileManagerCtrl', function($scope,$http,FileUploader) {
|
||||
|
||||
uploader.onAfterAddingFile = function(fileItem) {
|
||||
$scope.errorMessage = true;
|
||||
fileItem.formData.push({"completePath":$scope.currentPath});
|
||||
fileItem.formData.push(
|
||||
{
|
||||
"completePath":$scope.currentPath,
|
||||
domainRandomSeed:domainRandomSeed,
|
||||
domainName: domainName
|
||||
|
||||
});
|
||||
};
|
||||
|
||||
// folder functions
|
||||
@@ -823,6 +885,8 @@ fileManager.controller('fileManagerCtrl', function($scope,$http,FileUploader) {
|
||||
var data = {
|
||||
folderName : completePathForFolder,
|
||||
method : "createNewFolder",
|
||||
domainRandomSeed:domainRandomSeed,
|
||||
domainName: domainName
|
||||
};
|
||||
|
||||
|
||||
@@ -872,6 +936,8 @@ fileManager.controller('fileManagerCtrl', function($scope,$http,FileUploader) {
|
||||
var data = {
|
||||
fileName : completePathForFile,
|
||||
method : "createNewFile",
|
||||
domainRandomSeed:domainRandomSeed,
|
||||
domainName: domainName
|
||||
};
|
||||
|
||||
|
||||
@@ -914,6 +980,8 @@ fileManager.controller('fileManagerCtrl', function($scope,$http,FileUploader) {
|
||||
path : $scope.currentPath,
|
||||
method : "deleteFolderOrFile",
|
||||
fileAndFolders: allFilesAndFolders,
|
||||
domainRandomSeed:domainRandomSeed,
|
||||
domainName: domainName
|
||||
};
|
||||
|
||||
|
||||
@@ -962,7 +1030,9 @@ fileManager.controller('fileManagerCtrl', function($scope,$http,FileUploader) {
|
||||
listOfFiles : allFilesAndFolders,
|
||||
compressedFileName: $scope.compressedFileName,
|
||||
compressionType: $scope.compressionType,
|
||||
method: 'compress'
|
||||
method: 'compress',
|
||||
domainRandomSeed:domainRandomSeed,
|
||||
domainName: domainName
|
||||
};
|
||||
|
||||
|
||||
@@ -1017,7 +1087,9 @@ fileManager.controller('fileManagerCtrl', function($scope,$http,FileUploader) {
|
||||
fileToExtract: completeFileToExtract,
|
||||
extractionType: extractionType,
|
||||
extractionLocation: $scope.extractionLocation,
|
||||
method: 'extract'
|
||||
method: 'extract',
|
||||
domainRandomSeed:domainRandomSeed,
|
||||
domainName: domainName
|
||||
};
|
||||
|
||||
|
||||
@@ -1069,7 +1141,9 @@ fileManager.controller('fileManagerCtrl', function($scope,$http,FileUploader) {
|
||||
basePath : $scope.currentPath,
|
||||
newPath : $scope.pathToMoveTo,
|
||||
fileAndFolders:allFilesAndFolders,
|
||||
method: 'move'
|
||||
method: 'move',
|
||||
domainRandomSeed:domainRandomSeed,
|
||||
domainName: domainName
|
||||
};
|
||||
|
||||
|
||||
@@ -1120,7 +1194,9 @@ fileManager.controller('fileManagerCtrl', function($scope,$http,FileUploader) {
|
||||
basePath : $scope.currentPath,
|
||||
newPath : $scope.pathToCopyTo,
|
||||
fileAndFolders:allFilesAndFolders,
|
||||
method: 'copy'
|
||||
method: 'copy',
|
||||
domainRandomSeed:domainRandomSeed,
|
||||
domainName: domainName
|
||||
};
|
||||
|
||||
|
||||
@@ -1238,7 +1314,9 @@ fileManager.controller('fileManagerCtrl', function($scope,$http,FileUploader) {
|
||||
basePath : $scope.currentPath,
|
||||
existingName: $scope.fileToRename,
|
||||
newFileName : $scope.newFileName,
|
||||
method: 'rename'
|
||||
method: 'rename',
|
||||
domainRandomSeed:domainRandomSeed,
|
||||
domainName: domainName
|
||||
};
|
||||
|
||||
|
||||
@@ -1274,6 +1352,8 @@ fileManager.controller('fileManagerCtrl', function($scope,$http,FileUploader) {
|
||||
|
||||
var data = {
|
||||
domainName : domainName,
|
||||
domainRandomSeed:domainRandomSeed,
|
||||
domainName: domainName
|
||||
};
|
||||
|
||||
|
||||
@@ -1305,7 +1385,9 @@ fileManager.controller('fileManagerCtrl', function($scope,$http,FileUploader) {
|
||||
url = "/filemanager/downloadFile";
|
||||
|
||||
var data = {
|
||||
fileToDownload: $scope.currentPath + "/" + allFilesAndFolders[0]
|
||||
fileToDownload: $scope.currentPath + "/" + allFilesAndFolders[0],
|
||||
domainRandomSeed:domainRandomSeed,
|
||||
domainName: domainName
|
||||
};
|
||||
|
||||
|
||||
|
||||
@@ -5,6 +5,7 @@ urlpatterns = [
|
||||
url(r'^(?P<domain>([\da-z\.-]+\.[a-z\.]{2,12}|[\d\.]+)([\/:?=&#]{1}[\da-z\.-]+)*[\/\?]?)$', views.loadFileManagerHome, name='loadFileManagerHome'),
|
||||
url(r'^changePermissions',views.changePermissions, name='changePermissions'),
|
||||
url(r'^downloadFile',views.downloadFile, name='downloadFile'),
|
||||
url(r'^createTemporaryFile',views.createTemporaryFile, name='createTemporaryFile'),
|
||||
|
||||
]
|
||||
|
||||
|
||||
@@ -11,6 +11,8 @@ from websiteFunctions.models import Websites
|
||||
import subprocess
|
||||
import shlex
|
||||
import os
|
||||
from plogical.virtualHostUtilities import virtualHostUtilities
|
||||
|
||||
|
||||
# Create your views here.
|
||||
|
||||
@@ -21,12 +23,28 @@ def loadFileManagerHome(request,domain):
|
||||
|
||||
admin = Administrator.objects.get(pk=val)
|
||||
|
||||
if Websites.objects.filter(domain=domain).exists():
|
||||
if admin.type == 1:
|
||||
viewStatus = 1
|
||||
if admin.type == 3:
|
||||
viewStatus = 0
|
||||
|
||||
return render(request, 'filemanager/index.html', {"viewStatus": viewStatus})
|
||||
else:
|
||||
website = Websites.objects.get(domain=domain)
|
||||
if website.admin == admin:
|
||||
viewStatus = 1
|
||||
|
||||
if admin.type == 3:
|
||||
viewStatus = 0
|
||||
|
||||
return render(request, 'filemanager/index.html', {"viewStatus": viewStatus})
|
||||
else:
|
||||
return HttpResponse("Domain ownership error.")
|
||||
else:
|
||||
return HttpResponse("Domain does not exists.")
|
||||
|
||||
|
||||
except KeyError:
|
||||
return redirect(loadLoginPage)
|
||||
|
||||
@@ -62,6 +80,8 @@ def changePermissions(request):
|
||||
return redirect(loadLoginPage)
|
||||
|
||||
def downloadFile(request):
|
||||
try:
|
||||
|
||||
data = json.loads(request.body)
|
||||
fileToDownload = data['fileToDownload']
|
||||
|
||||
@@ -73,5 +93,67 @@ def downloadFile(request):
|
||||
response['Content-Disposition'] = 'inline; filename=' + os.path.basename(fileToDownload)
|
||||
except Exception as e:
|
||||
raise Http404
|
||||
|
||||
return response
|
||||
|
||||
except KeyError:
|
||||
return redirect(loadLoginPage)
|
||||
|
||||
|
||||
|
||||
def createTemporaryFile(request):
|
||||
try:
|
||||
val = request.session['userID']
|
||||
|
||||
data = json.loads(request.body)
|
||||
domainName = data['domainName']
|
||||
|
||||
admin = Administrator.objects.get(pk=val)
|
||||
|
||||
## Create file manager entry
|
||||
|
||||
if Websites.objects.filter(domain=domainName).exists():
|
||||
if admin.type == 1:
|
||||
|
||||
execPath = "sudo python " + virtualHostUtilities.cyberPanel + "/plogical/filemanager.py"
|
||||
|
||||
execPath = execPath + " createTemporaryFile --domainName " + domainName
|
||||
|
||||
output = subprocess.check_output(shlex.split(execPath))
|
||||
|
||||
if output.find("0,") > -1:
|
||||
data_ret = {'createTemporaryFile': 0, 'error_message': "None"}
|
||||
json_data = json.dumps(data_ret)
|
||||
return HttpResponse(json_data)
|
||||
|
||||
else:
|
||||
domainRandomSeed = output.rstrip('\n')
|
||||
data_ret = {'createTemporaryFile': 1, 'error_message': "None", 'domainRandomSeed':domainRandomSeed}
|
||||
json_data = json.dumps(data_ret)
|
||||
return HttpResponse(json_data)
|
||||
|
||||
else:
|
||||
website = Websites.objects.get(domain=domainName)
|
||||
if website.admin == admin:
|
||||
execPath = "sudo python " + virtualHostUtilities.cyberPanel + "/plogical/filemanager.py"
|
||||
|
||||
execPath = execPath + " createTemporaryFile --domainName " + domainName
|
||||
|
||||
output = subprocess.check_output(shlex.split(execPath))
|
||||
|
||||
if output.find("0,") > -1:
|
||||
data_ret = {'createTemporaryFile': 0, 'error_message': "None"}
|
||||
json_data = json.dumps(data_ret)
|
||||
return HttpResponse(json_data)
|
||||
|
||||
else:
|
||||
domainRandomSeed = output.rstrip('\n')
|
||||
data_ret = {'createTemporaryFile': 1, 'error_message': "None", 'domainRandomSeed': domainRandomSeed}
|
||||
json_data = json.dumps(data_ret)
|
||||
return HttpResponse(json_data)
|
||||
else:
|
||||
data_ret = {'createTemporaryFile': 0, 'error_message': "Domain ownership error."}
|
||||
json_data = json.dumps(data_ret)
|
||||
return HttpResponse(json_data)
|
||||
|
||||
except KeyError:
|
||||
return redirect(loadLoginPage)
|
||||
|
||||
73
install/FileManager/.idea/workspace.xml
generated
73
install/FileManager/.idea/workspace.xml
generated
@@ -14,10 +14,9 @@
|
||||
<file leaf-file-name="fileManager.php" pinned="false" current-in-tab="true">
|
||||
<entry file="file://$PROJECT_DIR$/php/fileManager.php">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="689">
|
||||
<caret line="610" column="5" lean-forward="true" selection-start-line="610" selection-start-column="5" selection-end-line="610" selection-end-column="5" />
|
||||
<state relative-caret-position="455">
|
||||
<caret line="26" column="41" lean-forward="true" selection-start-line="0" selection-start-column="0" selection-end-line="652" selection-end-column="26" />
|
||||
<folding>
|
||||
<element signature="n#listDir#0;n#fileManager#0;n#!!top" expanded="false" />
|
||||
<element signature="n#listForTable#0;n#fileManager#0;n#!!top" expanded="false" />
|
||||
<element signature="n#readFileContents#0;n#fileManager#0;n#!!top" expanded="false" />
|
||||
<element signature="n#writeFileContents#0;n#fileManager#0;n#!!top" expanded="false" />
|
||||
@@ -29,11 +28,22 @@
|
||||
<element signature="n#moveFileAndFolders#0;n#fileManager#0;n#!!top" expanded="false" />
|
||||
<element signature="n#copyFileAndFolders#0;n#fileManager#0;n#!!top" expanded="false" />
|
||||
<element signature="n#renameFileOrFolder#0;n#fileManager#0;n#!!top" expanded="false" />
|
||||
<element signature="n#cleanInput#0;n#fileManager#0;n#!!top" expanded="false" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file leaf-file-name="caller.php" pinned="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/php/caller.php">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="450">
|
||||
<caret line="31" column="23" lean-forward="false" selection-start-line="31" selection-start-column="23" selection-end-line="31" selection-end-column="23" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
</leaf>
|
||||
</component>
|
||||
<component name="FileTemplateManagerImpl">
|
||||
@@ -69,6 +79,7 @@
|
||||
<option value="$PROJECT_DIR$/css/fileManager.css" />
|
||||
<option value="$PROJECT_DIR$/index.html" />
|
||||
<option value="$PROJECT_DIR$/php/fileManager.php" />
|
||||
<option value="$PROJECT_DIR$/php/caller.php" />
|
||||
</list>
|
||||
</option>
|
||||
</component>
|
||||
@@ -80,10 +91,10 @@
|
||||
</component>
|
||||
<component name="PhpWorkspaceProjectConfiguration" backward_compatibility_performed="true" />
|
||||
<component name="ProjectFrameBounds" extendedState="6">
|
||||
<option name="x" value="1402" />
|
||||
<option name="y" value="4" />
|
||||
<option name="width" value="1299" />
|
||||
<option name="height" value="764" />
|
||||
<option name="x" value="1466" />
|
||||
<option name="y" value="-4" />
|
||||
<option name="width" value="1287" />
|
||||
<option name="height" value="696" />
|
||||
</component>
|
||||
<component name="ProjectView">
|
||||
<navigator currentView="ProjectPane" proportions="" version="1">
|
||||
@@ -100,7 +111,6 @@
|
||||
<foldersAlwaysOnTop value="true" />
|
||||
</navigator>
|
||||
<panes>
|
||||
<pane id="Scratches" />
|
||||
<pane id="ProjectPane">
|
||||
<subPane>
|
||||
<expand>
|
||||
@@ -118,6 +128,7 @@
|
||||
</subPane>
|
||||
</pane>
|
||||
<pane id="Scope" />
|
||||
<pane id="Scratches" />
|
||||
</panes>
|
||||
</component>
|
||||
<component name="PropertiesComponent">
|
||||
@@ -152,26 +163,27 @@
|
||||
<workItem from="1512371928726" duration="717000" />
|
||||
<workItem from="1512401006678" duration="9000" />
|
||||
<workItem from="1512401100852" duration="2365000" />
|
||||
<workItem from="1523948661253" duration="6266000" />
|
||||
</task>
|
||||
<servers />
|
||||
</component>
|
||||
<component name="TimeTrackingManager">
|
||||
<option name="totallyTimeSpent" value="28493000" />
|
||||
<option name="totallyTimeSpent" value="34759000" />
|
||||
</component>
|
||||
<component name="ToolWindowManager">
|
||||
<frame x="1431" y="-4" width="1301" height="772" extended-state="6" />
|
||||
<editor active="true" />
|
||||
<layout>
|
||||
<window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.21214451" sideWeight="0.5" order="0" side_tool="false" content_ui="combo" />
|
||||
<window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.10069177" sideWeight="0.5" order="0" side_tool="false" content_ui="combo" />
|
||||
<window_info id="TODO" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="6" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Event Log" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="7" side_tool="true" content_ui="tabs" />
|
||||
<window_info id="Database" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Version Control" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="false" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Version Control" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="false" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Structure" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Terminal" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Favorites" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="2" side_tool="true" content_ui="tabs" />
|
||||
<window_info id="Debug" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Favorites" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="2" side_tool="true" content_ui="tabs" />
|
||||
<window_info id="Cvs" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="4" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Message" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Commander" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
|
||||
@@ -199,7 +211,6 @@
|
||||
<state relative-caret-position="0">
|
||||
<caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
|
||||
<folding>
|
||||
<element signature="n#listDir#0;n#fileManager#0;n#!!top" expanded="false" />
|
||||
<element signature="n#listForTable#0;n#fileManager#0;n#!!top" expanded="false" />
|
||||
<element signature="n#readFileContents#0;n#fileManager#0;n#!!top" expanded="false" />
|
||||
<element signature="n#writeFileContents#0;n#fileManager#0;n#!!top" expanded="false" />
|
||||
@@ -211,6 +222,28 @@
|
||||
<element signature="n#moveFileAndFolders#0;n#fileManager#0;n#!!top" expanded="false" />
|
||||
<element signature="n#copyFileAndFolders#0;n#fileManager#0;n#!!top" expanded="false" />
|
||||
<element signature="n#renameFileOrFolder#0;n#fileManager#0;n#!!top" expanded="false" />
|
||||
<element signature="n#cleanInput#0;n#fileManager#0;n#!!top" expanded="false" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/php/fileManager.php">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="0">
|
||||
<caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
|
||||
<folding>
|
||||
<element signature="n#listForTable#0;n#fileManager#0;n#!!top" expanded="false" />
|
||||
<element signature="n#readFileContents#0;n#fileManager#0;n#!!top" expanded="false" />
|
||||
<element signature="n#writeFileContents#0;n#fileManager#0;n#!!top" expanded="false" />
|
||||
<element signature="n#createNewFolder#0;n#fileManager#0;n#!!top" expanded="false" />
|
||||
<element signature="n#createNewFile#0;n#fileManager#0;n#!!top" expanded="false" />
|
||||
<element signature="n#deleteFolderOrFile#0;n#fileManager#0;n#!!top" expanded="false" />
|
||||
<element signature="n#compress#0;n#fileManager#0;n#!!top" expanded="false" />
|
||||
<element signature="n#extract#0;n#fileManager#0;n#!!top" expanded="false" />
|
||||
<element signature="n#moveFileAndFolders#0;n#fileManager#0;n#!!top" expanded="false" />
|
||||
<element signature="n#copyFileAndFolders#0;n#fileManager#0;n#!!top" expanded="false" />
|
||||
<element signature="n#renameFileOrFolder#0;n#fileManager#0;n#!!top" expanded="false" />
|
||||
<element signature="n#cleanInput#0;n#fileManager#0;n#!!top" expanded="false" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
@@ -224,12 +257,19 @@
|
||||
<entry file="file://$PROJECT_DIR$/js/fileManager.js" />
|
||||
<entry file="file://$PROJECT_DIR$/css/fileManager.css" />
|
||||
<entry file="file://$PROJECT_DIR$/index.html" />
|
||||
<entry file="file://$PROJECT_DIR$/php/caller.php">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="450">
|
||||
<caret line="31" column="23" lean-forward="false" selection-start-line="31" selection-start-column="23" selection-end-line="31" selection-end-column="23" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/php/fileManager.php">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="689">
|
||||
<caret line="610" column="5" lean-forward="true" selection-start-line="610" selection-start-column="5" selection-end-line="610" selection-end-column="5" />
|
||||
<state relative-caret-position="455">
|
||||
<caret line="26" column="41" lean-forward="true" selection-start-line="0" selection-start-column="0" selection-end-line="652" selection-end-column="26" />
|
||||
<folding>
|
||||
<element signature="n#listDir#0;n#fileManager#0;n#!!top" expanded="false" />
|
||||
<element signature="n#listForTable#0;n#fileManager#0;n#!!top" expanded="false" />
|
||||
<element signature="n#readFileContents#0;n#fileManager#0;n#!!top" expanded="false" />
|
||||
<element signature="n#writeFileContents#0;n#fileManager#0;n#!!top" expanded="false" />
|
||||
@@ -241,6 +281,7 @@
|
||||
<element signature="n#moveFileAndFolders#0;n#fileManager#0;n#!!top" expanded="false" />
|
||||
<element signature="n#copyFileAndFolders#0;n#fileManager#0;n#!!top" expanded="false" />
|
||||
<element signature="n#renameFileOrFolder#0;n#fileManager#0;n#!!top" expanded="false" />
|
||||
<element signature="n#cleanInput#0;n#fileManager#0;n#!!top" expanded="false" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
|
||||
@@ -13,6 +13,25 @@ class Caller{
|
||||
{
|
||||
if ($_SERVER['REQUEST_METHOD'] === 'POST' and isset($_POST['method'])) {
|
||||
|
||||
$pathToSeed = '/home/' . $_POST['domainName'] . '/..filemanagerkey';
|
||||
$receivedSeed = $_POST['domainRandomSeed'];
|
||||
|
||||
$myfile = fopen($pathToSeed, "r") or die("Unable to open file!");
|
||||
$seed = fread($myfile,filesize($pathToSeed));
|
||||
fclose($myfile);
|
||||
|
||||
if ($seed != $receivedSeed){
|
||||
$answer = array(
|
||||
'uploadStatus' => 0,
|
||||
'answer' => 'Not allowed to upload in this path.',
|
||||
'error_message' => "None",
|
||||
'fileName' => $_FILES['file']['name']
|
||||
);
|
||||
$json = json_encode($answer);
|
||||
echo $json;
|
||||
return;
|
||||
}
|
||||
|
||||
switch ($_POST['method']) {
|
||||
case 'upload':
|
||||
$this->uploadFile();
|
||||
|
||||
@@ -11,6 +11,25 @@ class fileManager
|
||||
$postdata = file_get_contents("php://input");
|
||||
$request = json_decode($postdata);
|
||||
|
||||
$pathToSeed = '/home/' . $request->domainName . '/..filemanagerkey';
|
||||
$receivedSeed = $request->domainRandomSeed;
|
||||
|
||||
$myfile = fopen($pathToSeed, "r") or die("Unable to open file!");
|
||||
$seed = fread($myfile,filesize($pathToSeed));
|
||||
fclose($myfile);
|
||||
|
||||
if ($seed != $receivedSeed){
|
||||
|
||||
$json_data = array(
|
||||
"error_message" => "You can not open filemanager for this domain.",
|
||||
"copied" => 1,
|
||||
);
|
||||
$json = json_encode($json_data);
|
||||
echo $json;
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
if (isset($request->method)) {
|
||||
|
||||
switch ($request->method) {
|
||||
@@ -85,6 +104,7 @@ class fileManager
|
||||
array_push($tempDir, $dirFile);
|
||||
} else {
|
||||
array_push($tempFiles, $dirFile);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -249,7 +249,7 @@ app.controller('deleteEmailAccount', function($scope,$http) {
|
||||
function ListInitialDatas(response) {
|
||||
|
||||
|
||||
if(response.data.deleteEmailStatus == 1){
|
||||
if(response.data.deleteEmailStatus === 1){
|
||||
|
||||
|
||||
$scope.emailDetails = true;
|
||||
|
||||
45
plogical/filemanager.py
Normal file
45
plogical/filemanager.py
Normal file
@@ -0,0 +1,45 @@
|
||||
import os.path
|
||||
import shutil
|
||||
import CyberCPLogFileWriter as logging
|
||||
import subprocess
|
||||
import argparse
|
||||
import shlex
|
||||
from random import randint
|
||||
|
||||
|
||||
class filemanager:
|
||||
|
||||
@staticmethod
|
||||
def createTemporaryFile(domainName):
|
||||
try:
|
||||
|
||||
path = "/home/" + domainName + "/..filemanagerkey"
|
||||
|
||||
fileKey = str(randint(1000, 9999))
|
||||
|
||||
filemanager = open(path,'w')
|
||||
filemanager.write(fileKey)
|
||||
filemanager.close()
|
||||
|
||||
print fileKey
|
||||
|
||||
except BaseException,msg:
|
||||
logging.CyberCPLogFileWriter.writeToFile(
|
||||
str(msg) + " [createEmailAccount]")
|
||||
print "0," + str(msg)
|
||||
|
||||
|
||||
def main():
|
||||
|
||||
parser = argparse.ArgumentParser(description='CyberPanel Filemanager')
|
||||
parser.add_argument('function', help='Specific a function to call!')
|
||||
parser.add_argument('--domainName', help='Domain name!')
|
||||
|
||||
|
||||
args = parser.parse_args()
|
||||
|
||||
if args.function == "createTemporaryFile":
|
||||
filemanager.createTemporaryFile(args.domainName)
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
@@ -4,12 +4,6 @@ import CyberCPLogFileWriter as logging
|
||||
import subprocess
|
||||
import argparse
|
||||
import shlex
|
||||
import installUtilities
|
||||
from random import randint
|
||||
import sslUtilities
|
||||
from os.path import join
|
||||
from os import listdir, rmdir
|
||||
from shutil import move
|
||||
|
||||
|
||||
class mailUtilities:
|
||||
|
||||
@@ -15,6 +15,7 @@ fileManager.controller('fileManagerCtrl', function($scope,$http,FileUploader) {
|
||||
var aceEditorMode = '';
|
||||
|
||||
var domainName = window.location.pathname.split("/")[2];
|
||||
var domainRandomSeed = "";
|
||||
|
||||
var homePathBack = "/home/"+domainName;
|
||||
$scope.currentPath = "/home/"+domainName;
|
||||
@@ -67,7 +68,9 @@ fileManager.controller('fileManagerCtrl', function($scope,$http,FileUploader) {
|
||||
|
||||
var data = {
|
||||
completeStartingPath : completePath,
|
||||
method : "list"
|
||||
method : "list",
|
||||
domainRandomSeed:domainRandomSeed,
|
||||
domainName: domainName
|
||||
};
|
||||
|
||||
|
||||
@@ -118,7 +121,6 @@ fileManager.controller('fileManagerCtrl', function($scope,$http,FileUploader) {
|
||||
parentNode.appendChild(prepareChildNodeLI(path,completePath,dropDown));
|
||||
}
|
||||
|
||||
|
||||
function prepareChildNodeLI(path,completePath,dropDown){
|
||||
|
||||
// text nodes are created
|
||||
@@ -364,6 +366,8 @@ fileManager.controller('fileManagerCtrl', function($scope,$http,FileUploader) {
|
||||
var permissionsNode = document.createTextNode(permissions);
|
||||
|
||||
|
||||
|
||||
|
||||
//
|
||||
|
||||
|
||||
@@ -598,6 +602,8 @@ fileManager.controller('fileManagerCtrl', function($scope,$http,FileUploader) {
|
||||
|
||||
// table functions
|
||||
|
||||
|
||||
|
||||
$scope.fetchForTableSecondary = function(node,functionName) {
|
||||
|
||||
allFilesAndFolders = [];
|
||||
@@ -632,7 +638,9 @@ fileManager.controller('fileManagerCtrl', function($scope,$http,FileUploader) {
|
||||
var data = {
|
||||
completeStartingPath : completePathToFile,
|
||||
method : "listForTable",
|
||||
home: homePathBack
|
||||
home: homePathBack,
|
||||
domainRandomSeed:domainRandomSeed,
|
||||
domainName: domainName
|
||||
};
|
||||
|
||||
var tableBody = document.getElementById("tableBodyFiles");
|
||||
@@ -666,6 +674,11 @@ fileManager.controller('fileManagerCtrl', function($scope,$http,FileUploader) {
|
||||
var fileSize = filesData[keys[i]][3];
|
||||
var permissions = filesData[keys[i]][4];
|
||||
var dirCheck = filesData[keys[i]][5];
|
||||
console.log(fileName);
|
||||
if(fileName === "..filemanagerkey"){
|
||||
|
||||
continue;
|
||||
}
|
||||
tableBody.appendChild(createTR(fileName,fileSize,lastModified,permissions,dirCheck));
|
||||
|
||||
}
|
||||
@@ -682,12 +695,51 @@ fileManager.controller('fileManagerCtrl', function($scope,$http,FileUploader) {
|
||||
}
|
||||
|
||||
};
|
||||
$scope.fetchForTableSecondary(null,"startPoint");
|
||||
|
||||
function findFileExtension(fileName){
|
||||
return (/[.]/.exec(fileName)) ? /[^.]+$/.exec(fileName) : undefined;
|
||||
}
|
||||
|
||||
// Create entry point for domain
|
||||
|
||||
function createEntryPoint(){
|
||||
|
||||
url = "/filemanager/createTemporaryFile";
|
||||
|
||||
var data = {
|
||||
domainName:domainName
|
||||
};
|
||||
|
||||
var config = {};
|
||||
|
||||
$http.post(url, data,config).then(ListInitialDatas, cantLoadInitialDatas);
|
||||
|
||||
|
||||
function ListInitialDatas(response) {
|
||||
|
||||
if(response.data.createTemporaryFile === 1){
|
||||
domainRandomSeed = response.data.domainRandomSeed;
|
||||
$scope.fetchForTableSecondary(null,"startPoint");
|
||||
}
|
||||
else
|
||||
{
|
||||
var notification = alertify.notify(response.data.error_message, 'error', 10, function(){ console.log('dismissed'); });
|
||||
}
|
||||
}
|
||||
function cantLoadInitialDatas(response) {
|
||||
var notification = alertify.notify("Could not connec to server, refresh page.", 'error', 10, function(){ console.log('dismissed'); });
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
createEntryPoint();
|
||||
|
||||
|
||||
|
||||
|
||||
// html editor
|
||||
|
||||
@@ -698,7 +750,9 @@ fileManager.controller('fileManagerCtrl', function($scope,$http,FileUploader) {
|
||||
|
||||
var data = {
|
||||
fileName : completePathForFile,
|
||||
method : "readFileContents"
|
||||
method : "readFileContents",
|
||||
domainRandomSeed:domainRandomSeed,
|
||||
domainName: domainName
|
||||
};
|
||||
|
||||
|
||||
@@ -738,7 +792,9 @@ fileManager.controller('fileManagerCtrl', function($scope,$http,FileUploader) {
|
||||
var data = {
|
||||
fileName : completePathForFile,
|
||||
method : "writeFileContents",
|
||||
fileContent: editor.getValue()
|
||||
fileContent: editor.getValue(),
|
||||
domainRandomSeed:domainRandomSeed,
|
||||
domainName: domainName
|
||||
};
|
||||
|
||||
|
||||
@@ -790,7 +846,13 @@ fileManager.controller('fileManagerCtrl', function($scope,$http,FileUploader) {
|
||||
|
||||
uploader.onAfterAddingFile = function(fileItem) {
|
||||
$scope.errorMessage = true;
|
||||
fileItem.formData.push({"completePath":$scope.currentPath});
|
||||
fileItem.formData.push(
|
||||
{
|
||||
"completePath":$scope.currentPath,
|
||||
domainRandomSeed:domainRandomSeed,
|
||||
domainName: domainName
|
||||
|
||||
});
|
||||
};
|
||||
|
||||
// folder functions
|
||||
@@ -823,6 +885,8 @@ fileManager.controller('fileManagerCtrl', function($scope,$http,FileUploader) {
|
||||
var data = {
|
||||
folderName : completePathForFolder,
|
||||
method : "createNewFolder",
|
||||
domainRandomSeed:domainRandomSeed,
|
||||
domainName: domainName
|
||||
};
|
||||
|
||||
|
||||
@@ -872,6 +936,8 @@ fileManager.controller('fileManagerCtrl', function($scope,$http,FileUploader) {
|
||||
var data = {
|
||||
fileName : completePathForFile,
|
||||
method : "createNewFile",
|
||||
domainRandomSeed:domainRandomSeed,
|
||||
domainName: domainName
|
||||
};
|
||||
|
||||
|
||||
@@ -914,6 +980,8 @@ fileManager.controller('fileManagerCtrl', function($scope,$http,FileUploader) {
|
||||
path : $scope.currentPath,
|
||||
method : "deleteFolderOrFile",
|
||||
fileAndFolders: allFilesAndFolders,
|
||||
domainRandomSeed:domainRandomSeed,
|
||||
domainName: domainName
|
||||
};
|
||||
|
||||
|
||||
@@ -962,7 +1030,9 @@ fileManager.controller('fileManagerCtrl', function($scope,$http,FileUploader) {
|
||||
listOfFiles : allFilesAndFolders,
|
||||
compressedFileName: $scope.compressedFileName,
|
||||
compressionType: $scope.compressionType,
|
||||
method: 'compress'
|
||||
method: 'compress',
|
||||
domainRandomSeed:domainRandomSeed,
|
||||
domainName: domainName
|
||||
};
|
||||
|
||||
|
||||
@@ -1017,7 +1087,9 @@ fileManager.controller('fileManagerCtrl', function($scope,$http,FileUploader) {
|
||||
fileToExtract: completeFileToExtract,
|
||||
extractionType: extractionType,
|
||||
extractionLocation: $scope.extractionLocation,
|
||||
method: 'extract'
|
||||
method: 'extract',
|
||||
domainRandomSeed:domainRandomSeed,
|
||||
domainName: domainName
|
||||
};
|
||||
|
||||
|
||||
@@ -1069,7 +1141,9 @@ fileManager.controller('fileManagerCtrl', function($scope,$http,FileUploader) {
|
||||
basePath : $scope.currentPath,
|
||||
newPath : $scope.pathToMoveTo,
|
||||
fileAndFolders:allFilesAndFolders,
|
||||
method: 'move'
|
||||
method: 'move',
|
||||
domainRandomSeed:domainRandomSeed,
|
||||
domainName: domainName
|
||||
};
|
||||
|
||||
|
||||
@@ -1120,7 +1194,9 @@ fileManager.controller('fileManagerCtrl', function($scope,$http,FileUploader) {
|
||||
basePath : $scope.currentPath,
|
||||
newPath : $scope.pathToCopyTo,
|
||||
fileAndFolders:allFilesAndFolders,
|
||||
method: 'copy'
|
||||
method: 'copy',
|
||||
domainRandomSeed:domainRandomSeed,
|
||||
domainName: domainName
|
||||
};
|
||||
|
||||
|
||||
@@ -1238,7 +1314,9 @@ fileManager.controller('fileManagerCtrl', function($scope,$http,FileUploader) {
|
||||
basePath : $scope.currentPath,
|
||||
existingName: $scope.fileToRename,
|
||||
newFileName : $scope.newFileName,
|
||||
method: 'rename'
|
||||
method: 'rename',
|
||||
domainRandomSeed:domainRandomSeed,
|
||||
domainName: domainName
|
||||
};
|
||||
|
||||
|
||||
@@ -1274,6 +1352,8 @@ fileManager.controller('fileManagerCtrl', function($scope,$http,FileUploader) {
|
||||
|
||||
var data = {
|
||||
domainName : domainName,
|
||||
domainRandomSeed:domainRandomSeed,
|
||||
domainName: domainName
|
||||
};
|
||||
|
||||
|
||||
@@ -1305,7 +1385,9 @@ fileManager.controller('fileManagerCtrl', function($scope,$http,FileUploader) {
|
||||
url = "/filemanager/downloadFile";
|
||||
|
||||
var data = {
|
||||
fileToDownload: $scope.currentPath + "/" + allFilesAndFolders[0]
|
||||
fileToDownload: $scope.currentPath + "/" + allFilesAndFolders[0],
|
||||
domainRandomSeed:domainRandomSeed,
|
||||
domainName: domainName
|
||||
};
|
||||
|
||||
|
||||
|
||||
@@ -249,7 +249,7 @@ app.controller('deleteEmailAccount', function($scope,$http) {
|
||||
function ListInitialDatas(response) {
|
||||
|
||||
|
||||
if(response.data.deleteEmailStatus == 1){
|
||||
if(response.data.deleteEmailStatus === 1){
|
||||
|
||||
|
||||
$scope.emailDetails = true;
|
||||
|
||||
Reference in New Issue
Block a user