diff --git a/filemanager/templates/filemanager/editFile.html b/filemanager/templates/filemanager/editFile.html new file mode 100755 index 000000000..d14deda02 --- /dev/null +++ b/filemanager/templates/filemanager/editFile.html @@ -0,0 +1,106 @@ +{% load i18n %} + + + + {% trans "Editing File - CyberPanel" %} + + + + + {% load static %} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+
+
+ {{ content }} +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/filemanager/urls.py b/filemanager/urls.py index 114469614..13d6d5f39 100755 --- a/filemanager/urls.py +++ b/filemanager/urls.py @@ -6,6 +6,7 @@ urlpatterns = [ url(r'^changePermissions$',views.changePermissions, name='changePermissions'), url(r'^controller$',views.controller, name='controller'), url(r'^downloadFile$',views.downloadFile, name='downloadFile'), + url(r'^editFile$', views.editFile, name='editFile'), url(r'^(?P(.*))$', views.loadFileManagerHome, name='loadFileManagerHome'), ] diff --git a/filemanager/views.py b/filemanager/views.py index d23d40135..e00f7ad2d 100755 --- a/filemanager/views.py +++ b/filemanager/views.py @@ -165,3 +165,41 @@ def upload(request): except KeyError: return redirect(loadLoginPage) + +def editFile(request): + try: + userID = request.session['userID'] + admin = Administrator.objects.get(pk=userID) + from urllib.parse import quote + from django.utils.encoding import iri_to_uri + + domainName = request.GET.get('domainName') + fileName = request.GET.get('fileName') + + currentACL = ACLManager.loadedACL(userID) + + if ACLManager.checkOwnership(domainName, admin, currentACL) == 1: + pass + else: + return ACLManager.loadError() + + domainName = domainName + website = Websites.objects.get(domain=domainName) + + pathCheck = '/home/%s' % (domainName) + + fm = FM(request, {}) + + if fileName.find(pathCheck) == -1 or fileName.find('..') > -1: + return fm.ajaxPre(0, 'Not allowed.') + + command = 'cat ' + fm.returnPathEnclosed(fileName) + content = ProcessUtilities.outputExecutioner(command, website.externalApp) + + if ACLManager.checkOwnership(domainName, admin, currentACL) == 1: + return render(request, 'filemanager/editFile.html', {'domainName': domainName, 'fileName': fileName, 'content': content}) + else: + return ACLManager.loadError() + + except KeyError: + return redirect(loadLoginPage)