Files
CyberPanel/ftp/views.py

206 lines
5.4 KiB
Python
Raw Normal View History

2017-10-24 19:16:36 +05:00
# -*- coding: utf-8 -*-
2024-02-14 08:44:41 +05:00
import json
import time
from random import randint
2019-12-10 15:09:10 +05:00
2024-02-14 08:44:41 +05:00
from django.shortcuts import redirect, HttpResponse
from plogical.acl import ACLManager
from plogical.httpProc import httpProc
from plogical.processUtilities import ProcessUtilities
2019-12-11 10:40:35 +05:00
from .ftpManager import FTPManager
2017-10-24 19:16:36 +05:00
from loginSystem.views import loadLoginPage
2019-12-11 10:40:35 +05:00
from .pluginManager import pluginManager
2017-10-24 19:16:36 +05:00
# Create your views here.
def loadFTPHome(request):
try:
2018-10-08 22:12:05 +05:00
fm = FTPManager(request)
return fm.loadFTPHome()
2017-10-24 19:16:36 +05:00
except KeyError:
return redirect(loadLoginPage)
def createFTPAccount(request):
try:
2018-10-08 22:12:05 +05:00
result = pluginManager.preCreateFTPAccount(request)
if result != 200:
return result
2017-10-24 19:16:36 +05:00
2018-10-08 22:12:05 +05:00
fm = FTPManager(request)
coreResult = fm.createFTPAccount()
2017-10-24 19:16:36 +05:00
2018-10-08 22:12:05 +05:00
result = pluginManager.postCreateFTPAccount(request, coreResult)
if result != 200:
return result
2017-10-24 19:16:36 +05:00
2018-10-08 22:12:05 +05:00
return coreResult
2017-10-24 19:16:36 +05:00
except KeyError:
return redirect(loadLoginPage)
def submitFTPCreation(request):
try:
2018-10-08 22:12:05 +05:00
result = pluginManager.preSubmitFTPCreation(request)
if result != 200:
return result
2017-10-24 19:16:36 +05:00
2018-10-08 22:12:05 +05:00
fm = FTPManager(request)
coreResult = fm.submitFTPCreation()
2017-10-24 19:16:36 +05:00
2018-10-08 22:12:05 +05:00
result = pluginManager.postSubmitFTPCreation(request, coreResult)
if result != 200:
return result
2017-10-24 19:16:36 +05:00
2018-10-08 22:12:05 +05:00
return coreResult
2017-10-24 19:16:36 +05:00
2018-10-08 22:12:05 +05:00
except KeyError:
return redirect(loadLoginPage)
2017-10-24 19:16:36 +05:00
def deleteFTPAccount(request):
try:
2018-10-08 22:12:05 +05:00
fm = FTPManager(request)
return fm.deleteFTPAccount()
2017-10-24 19:16:36 +05:00
except KeyError:
return redirect(loadLoginPage)
def fetchFTPAccounts(request):
try:
2018-10-08 22:12:05 +05:00
fm = FTPManager(request)
return fm.fetchFTPAccounts()
except KeyError:
return redirect(loadLoginPage)
2017-10-24 19:16:36 +05:00
def submitFTPDelete(request):
try:
2018-10-08 22:12:05 +05:00
result = pluginManager.preSubmitFTPDelete(request)
if result != 200:
return result
2017-10-24 19:16:36 +05:00
2018-10-08 22:12:05 +05:00
fm = FTPManager(request)
coreResult = fm.submitFTPDelete()
2018-06-30 15:29:56 +05:00
2018-10-08 22:12:05 +05:00
result = pluginManager.postSubmitFTPDelete(request, coreResult)
if result != 200:
return result
2018-06-30 15:29:56 +05:00
2018-10-08 22:12:05 +05:00
return coreResult
2017-10-24 19:16:36 +05:00
2018-10-08 22:12:05 +05:00
except KeyError:
return redirect(loadLoginPage)
2017-10-24 19:16:36 +05:00
def listFTPAccounts(request):
try:
2018-10-08 22:12:05 +05:00
fm = FTPManager(request)
return fm.listFTPAccounts()
2017-10-24 19:16:36 +05:00
except KeyError:
return redirect(loadLoginPage)
2024-02-14 08:44:41 +05:00
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:
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)
2017-10-24 19:16:36 +05:00
def getAllFTPAccounts(request):
try:
2018-10-08 22:12:05 +05:00
fm = FTPManager(request)
return fm.getAllFTPAccounts()
2017-10-24 19:16:36 +05:00
except KeyError:
2018-10-08 22:12:05 +05:00
return redirect(loadLoginPage)
2017-10-24 19:16:36 +05:00
def changePassword(request):
try:
2018-10-08 22:12:05 +05:00
result = pluginManager.preChangePassword(request)
if result != 200:
return result
fm = FTPManager(request)
coreResult = fm.changePassword()
2017-10-24 19:16:36 +05:00
2018-10-08 22:12:05 +05:00
result = pluginManager.postChangePassword(request, coreResult)
if result != 200:
return result
2017-10-24 19:16:36 +05:00
2018-10-08 22:12:05 +05:00
return coreResult
2017-10-24 19:16:36 +05:00
2018-10-08 22:12:05 +05:00
except KeyError:
return redirect(loadLoginPage)