File: //proc/self/root/usr/local/CyberCP/ftp/views.py
# -*- coding: utf-8 -*-
import json
import time
from random import randint
from django.shortcuts import redirect, HttpResponse
from plogical.acl import ACLManager
from plogical.httpProc import httpProc
from plogical.processUtilities import ProcessUtilities
from .ftpManager import FTPManager
from loginSystem.views import loadLoginPage
from .pluginManager import pluginManager
# Create your views here.
def loadFTPHome(request):
try:
fm = FTPManager(request)
return fm.loadFTPHome()
except KeyError:
return redirect(loadLoginPage)
def createFTPAccount(request):
try:
result = pluginManager.preCreateFTPAccount(request)
if result != 200:
return result
fm = FTPManager(request)
coreResult = fm.createFTPAccount()
result = pluginManager.postCreateFTPAccount(request, coreResult)
if result != 200:
return result
return coreResult
except KeyError:
return redirect(loadLoginPage)
def submitFTPCreation(request):
try:
result = pluginManager.preSubmitFTPCreation(request)
if result != 200:
return result
fm = FTPManager(request)
coreResult = fm.submitFTPCreation()
result = pluginManager.postSubmitFTPCreation(request, coreResult)
if result != 200:
return result
return coreResult
except KeyError:
return redirect(loadLoginPage)
def deleteFTPAccount(request):
try:
fm = FTPManager(request)
return fm.deleteFTPAccount()
except KeyError:
return redirect(loadLoginPage)
def fetchFTPAccounts(request):
try:
fm = FTPManager(request)
return fm.fetchFTPAccounts()
except KeyError:
return redirect(loadLoginPage)
def submitFTPDelete(request):
try:
result = pluginManager.preSubmitFTPDelete(request)
if result != 200:
return result
fm = FTPManager(request)
coreResult = fm.submitFTPDelete()
result = pluginManager.postSubmitFTPDelete(request, coreResult)
if result != 200:
return result
return coreResult
except KeyError:
return redirect(loadLoginPage)
def listFTPAccounts(request):
try:
fm = FTPManager(request)
return fm.listFTPAccounts()
except KeyError:
return redirect(loadLoginPage)
def ResetFTPConfigurations(request):
try:
userID = request.session['userID']
currentACL = ACLManager.loadedACL(userID)
proc = httpProc(request, 'ftp/ResetFTPconf.html')
return proc.render()
except KeyError:
return redirect(loadLoginPage)
def resetftpnow(request):
try:
from plogical.virtualHostUtilities import virtualHostUtilities
userID = request.session['userID']
currentACL = ACLManager.loadedACL(userID)
if currentACL['admin'] == 1:
pass
else:
return ACLManager.loadErrorJson('FilemanagerAdmin', 0)
data = json.loads(request.body)
tempStatusPath = "/home/cyberpanel/" + str(randint(1000, 9999))
execPath = f"/usr/local/CyberCP/bin/python /usr/local/CyberCP/ftp/ftpManager.py ResetFTPConfigurations --tempStatusPath {tempStatusPath}"
ProcessUtilities.popenExecutioner(execPath)
time.sleep(2)
data_ret = {'status': 1, 'error_message': "None",
'tempStatusPath': tempStatusPath}
json_data = json.dumps(data_ret)
return HttpResponse(json_data)
except KeyError:
return redirect(loadLoginPage)
def getresetstatus(request):
try:
userID = request.session['userID']
currentACL = ACLManager.loadedACL(userID)
if currentACL['admin'] == 1:
pass
else:
return ACLManager.loadErrorJson('FilemanagerAdmin', 0)
data = json.loads(request.body)
statusfile = data['statusfile']
installStatus = ProcessUtilities.outputExecutioner("sudo cat " + statusfile)
if installStatus.find("[200]") > -1:
command = 'sudo rm -f ' + statusfile
ProcessUtilities.executioner(command)
final_json = json.dumps({
'error_message': "None",
'requestStatus': installStatus,
'abort': 1,
'installed': 1,
})
return HttpResponse(final_json)
elif installStatus.find("[404]") > -1:
command = 'sudo rm -f ' + statusfile
ProcessUtilities.executioner(command)
final_json = json.dumps({
'abort': 1,
'installed': 0,
'error_message': "None",
'requestStatus': installStatus,
})
return HttpResponse(final_json)
else:
final_json = json.dumps({
'abort': 0,
'error_message': "None",
'requestStatus': installStatus,
})
return HttpResponse(final_json)
except KeyError:
return redirect(loadLoginPage)
def getAllFTPAccounts(request):
try:
fm = FTPManager(request)
return fm.getAllFTPAccounts()
except KeyError:
return redirect(loadLoginPage)
def changePassword(request):
try:
result = pluginManager.preChangePassword(request)
if result != 200:
return result
fm = FTPManager(request)
coreResult = fm.changePassword()
result = pluginManager.postChangePassword(request, coreResult)
if result != 200:
return result
return coreResult
except KeyError:
return redirect(loadLoginPage)