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/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)