⚝
One Hat Cyber Team
⚝
Your IP:
216.73.216.74
Server IP:
104.21.80.1
Server:
Linux vmi2315822.contaboserver.net 5.15.0-134-generic #145-Ubuntu SMP Wed Feb 12 20:08:39 UTC 2025 x86_64
Server Software:
LiteSpeed
PHP Version:
8.3.21
Buat File
|
Buat Folder
Eksekusi
Dir :
~
/
usr
/
local
/
CyberCP
/
websiteFunctions
/
View File Name :
views.py
# -*- coding: utf-8 -*- from django.shortcuts import redirect from django.http import HttpResponse, JsonResponse from loginSystem.models import Administrator from loginSystem.views import loadLoginPage import json import plogical.CyberCPLogFileWriter as logging from plogical.acl import ACLManager from plogical.httpProc import httpProc from websiteFunctions.models import wpplugins from websiteFunctions.website import WebsiteManager from websiteFunctions.pluginManager import pluginManager from django.views.decorators.csrf import csrf_exempt from .dockerviews import startContainer as docker_startContainer from .dockerviews import stopContainer as docker_stopContainer from .dockerviews import restartContainer as docker_restartContainer from .resource_monitoring import get_website_resource_usage import jwt from datetime import datetime, timedelta import OpenSSL from plogical.processUtilities import ProcessUtilities import os import re def loadWebsitesHome(request): val = request.session['userID'] admin = Administrator.objects.get(pk=val) proc = httpProc(request, 'websiteFunctions/index.html', {"type": admin.type}) return proc.render() def createWebsite(request): try: userID = request.session['userID'] wm = WebsiteManager() return wm.createWebsite(request, userID) except KeyError: return redirect(loadLoginPage) def WPCreate(request): try: userID = request.session['userID'] wm = WebsiteManager() return wm.WPCreate(request, userID,) except KeyError: return redirect(loadLoginPage) def ListWPSites(request): try: userID = request.session['userID'] DeleteID = request.GET.get('DeleteID') wm = WebsiteManager() return wm.ListWPSites(request, userID, DeleteID) except KeyError: return redirect(loadLoginPage) def WPHome(request): try: userID = request.session['userID'] WPid = request.GET.get('ID') DeleteID = request.GET.get('DeleteID') wm = WebsiteManager() return wm.WPHome(request, userID, WPid, DeleteID) except KeyError: return redirect(loadLoginPage) def RestoreHome(request): try: userID = request.session['userID'] BackupID = request.GET.get('BackupID') wm = WebsiteManager() return wm.RestoreHome(request, userID, BackupID) except KeyError: return redirect(loadLoginPage) def RemoteBackupConfig(request): try: userID = request.session['userID'] DeleteID = request.GET.get('DeleteID') wm = WebsiteManager() return wm.RemoteBackupConfig(request, userID, DeleteID) except KeyError: return redirect(loadLoginPage) def BackupfileConfig(request): try: userID = request.session['userID'] ID = request.GET.get('ID') DeleteID = request.GET.get('DeleteID') wm = WebsiteManager() return wm.BackupfileConfig(request, userID, ID, DeleteID) except KeyError: return redirect(loadLoginPage) def AddRemoteBackupsite(request): try: userID = request.session['userID'] ID = request.GET.get('ID') DeleteSiteID = request.GET.get('DeleteID') wm = WebsiteManager() return wm.AddRemoteBackupsite(request, userID, ID,DeleteSiteID ) except KeyError: return redirect(loadLoginPage) def WordpressPricing(request): try: userID = request.session['userID'] wm = WebsiteManager() return wm.WordpressPricing(request, userID,) except KeyError: return redirect(loadLoginPage) def RestoreBackups(request): try: userID = request.session['userID'] DeleteID = request.GET.get('DeleteID') wm = WebsiteManager() return wm.RestoreBackups(request, userID, DeleteID) except KeyError: return redirect(loadLoginPage) def AutoLogin(request): try: userID = request.session['userID'] wm = WebsiteManager() return wm.AutoLogin(request, userID) except KeyError: return redirect(loadLoginPage) def ConfigurePlugins(request): try: userID = request.session['userID'] userobj = Administrator.objects.get(pk=userID) DeleteFileID = request.GET.get('delete', None) if DeleteFileID != None: try: jobobj = wpplugins.objects.get(pk=DeleteFileID, owner=userobj) jobobj.delete() Deleted = 1 except BaseException as msg: logging.CyberCPLogFileWriter.writeToFile("DeleteFileID ....... %s....msg.....%s" % (DeleteFileID,msg)) Deleted = 0 wm = WebsiteManager() return wm.ConfigurePlugins(request, userID) except KeyError: return redirect(loadLoginPage) def Addnewplugin(request): try: userID = request.session['userID'] wm = WebsiteManager() return wm.Addnewplugin(request, userID) except KeyError: return redirect(loadLoginPage) def SearchOnkeyupPlugin(request): try: userID = request.session['userID'] result = pluginManager.preWebsiteCreation(request) if result != 200: return result wm = WebsiteManager() coreResult = wm.SearchOnkeyupPlugin(userID, json.loads(request.body)) result = pluginManager.postWebsiteCreation(request, coreResult) if result != 200: return result return coreResult except KeyError: return redirect(loadLoginPage) def AddNewpluginAjax(request): try: userID = request.session['userID'] result = pluginManager.preWebsiteCreation(request) if result != 200: return result wm = WebsiteManager() coreResult = wm.AddNewpluginAjax(userID, json.loads(request.body)) result = pluginManager.postWebsiteCreation(request, coreResult) if result != 200: return result return coreResult except KeyError: return redirect(loadLoginPage) def EidtPlugin(request): try: userID = request.session['userID'] pluginbID = request.GET.get('ID') wm = WebsiteManager() return wm.EidtPlugin(request, userID, pluginbID) except KeyError: return redirect(loadLoginPage) def deletesPlgin(request): try: userID = request.session['userID'] result = pluginManager.preWebsiteCreation(request) if result != 200: return result wm = WebsiteManager() coreResult = wm.deletesPlgin(userID, json.loads(request.body)) result = pluginManager.postWebsiteCreation(request, coreResult) if result != 200: return result return coreResult except KeyError: return redirect(loadLoginPage) def Addplugineidt(request): try: userID = request.session['userID'] result = pluginManager.preWebsiteCreation(request) if result != 200: return result wm = WebsiteManager() coreResult = wm.Addplugineidt(userID, json.loads(request.body)) result = pluginManager.postWebsiteCreation(request, coreResult) if result != 200: return result return coreResult except KeyError: return redirect(loadLoginPage) def submitWorpressCreation(request): try: userID = request.session['userID'] result = pluginManager.preWebsiteCreation(request) if result != 200: return result wm = WebsiteManager() coreResult = wm.submitWorpressCreation(userID, json.loads(request.body)) result = pluginManager.postWebsiteCreation(request, coreResult) if result != 200: return result return coreResult except KeyError: return redirect(loadLoginPage) def FetchWPdata(request): try: userID = request.session['userID'] result = pluginManager.preWebsiteCreation(request) if result != 200: return result wm = WebsiteManager() coreResult = wm.FetchWPdata(userID, json.loads(request.body)) result = pluginManager.postWebsiteCreation(request, coreResult) if result != 200: return result return coreResult except KeyError: return redirect(loadLoginPage) def GetCurrentPlugins(request): try: userID = request.session['userID'] result = pluginManager.preWebsiteCreation(request) if result != 200: return result wm = WebsiteManager() coreResult = wm.GetCurrentPlugins(userID, json.loads(request.body)) # coreResult = wm.GetCsurrentPlugins(userID, json.loads(request.body)) result = pluginManager.postWebsiteCreation(request, coreResult) if result != 200: return result return coreResult except KeyError: return redirect(loadLoginPage) def fetchstaging(request): try: userID = request.session['userID'] result = pluginManager.preWebsiteCreation(request) if result != 200: return result wm = WebsiteManager() coreResult = wm.fetchstaging(userID, json.loads(request.body)) result = pluginManager.postWebsiteCreation(request, coreResult) if result != 200: return result return coreResult except KeyError: return redirect(loadLoginPage) def fetchDatabase(request): try: userID = request.session['userID'] result = pluginManager.preWebsiteCreation(request) if result != 200: return result wm = WebsiteManager() coreResult = wm.fetchDatabase(userID, json.loads(request.body)) result = pluginManager.postWebsiteCreation(request, coreResult) if result != 200: return result return coreResult except KeyError: return redirect(loadLoginPage) def SaveUpdateConfig(request): try: userID = request.session['userID'] result = pluginManager.preWebsiteCreation(request) if result != 200: return result wm = WebsiteManager() coreResult = wm.SaveUpdateConfig(userID, json.loads(request.body)) result = pluginManager.postWebsiteCreation(request, coreResult) if result != 200: return result return coreResult except KeyError: return redirect(loadLoginPage) def DeploytoProduction(request): try: userID = request.session['userID'] #result = pluginManager.preWebsiteCreation(request) #if result != 200: # return result wm = WebsiteManager() return wm.DeploytoProduction(userID, json.loads(request.body)) #result = pluginManager.postWebsiteCreation(request, coreResult) #if result != 200: # return result #return coreResult except KeyError: return redirect(loadLoginPage) def WPCreateBackup(request): try: userID = request.session['userID'] result = pluginManager.preWebsiteCreation(request) if result != 200: return result wm = WebsiteManager() coreResult = wm.WPCreateBackup(userID, json.loads(request.body)) result = pluginManager.postWebsiteCreation(request, coreResult) if result != 200: return result return coreResult except KeyError: return redirect(loadLoginPage) def RestoreWPbackupNow(request): try: userID = request.session['userID'] result = pluginManager.preWebsiteCreation(request) if result != 200: return result wm = WebsiteManager() coreResult = wm.RestoreWPbackupNow(userID, json.loads(request.body)) result = pluginManager.postWebsiteCreation(request, coreResult) if result != 200: return result return coreResult except KeyError: return redirect(loadLoginPage) def SaveBackupConfig(request): try: userID = request.session['userID'] result = pluginManager.preWebsiteCreation(request) if result != 200: return result wm = WebsiteManager() coreResult = wm.SaveBackupConfig(userID, json.loads(request.body)) result = pluginManager.postWebsiteCreation(request, coreResult) if result != 200: return result return coreResult except KeyError: return redirect(loadLoginPage) def SaveBackupSchedule(request): try: userID = request.session['userID'] result = pluginManager.preWebsiteCreation(request) if result != 200: return result wm = WebsiteManager() coreResult = wm.SaveBackupSchedule(userID, json.loads(request.body)) result = pluginManager.postWebsiteCreation(request, coreResult) if result != 200: return result return coreResult except KeyError: return redirect(loadLoginPage) def AddWPsiteforRemoteBackup(request): try: userID = request.session['userID'] result = pluginManager.preWebsiteCreation(request) if result != 200: return result wm = WebsiteManager() coreResult = wm.AddWPsiteforRemoteBackup(userID, json.loads(request.body)) result = pluginManager.postWebsiteCreation(request, coreResult) if result != 200: return result return coreResult except KeyError: return redirect(loadLoginPage) def UpdateRemoteschedules(request): try: userID = request.session['userID'] result = pluginManager.preWebsiteCreation(request) if result != 200: return result wm = WebsiteManager() coreResult = wm.UpdateRemoteschedules(userID, json.loads(request.body)) result = pluginManager.postWebsiteCreation(request, coreResult) if result != 200: return result return coreResult except KeyError: return redirect(loadLoginPage) def ScanWordpressSite(request): try: userID = request.session['userID'] result = pluginManager.preWebsiteCreation(request) if result != 200: return result wm = WebsiteManager() coreResult = wm.ScanWordpressSite(userID, json.loads(request.body)) result = pluginManager.postWebsiteCreation(request, coreResult) if result != 200: return result return coreResult except KeyError: return redirect(loadLoginPage) def installwpcore(request): try: userID = request.session['userID'] result = pluginManager.preWebsiteCreation(request) if result != 200: return result wm = WebsiteManager() coreResult = wm.installwpcore(userID, json.loads(request.body)) result = pluginManager.postWebsiteCreation(request, coreResult) if result != 200: return result return coreResult except KeyError: return redirect(loadLoginPage) def dataintegrity(request): try: userID = request.session['userID'] result = pluginManager.preWebsiteCreation(request) if result != 200: return result wm = WebsiteManager() coreResult = wm.dataintegrity(userID, json.loads(request.body)) result = pluginManager.postWebsiteCreation(request, coreResult) if result != 200: return result return coreResult except KeyError: return redirect(loadLoginPage) def GetCurrentThemes(request): try: userID = request.session['userID'] result = pluginManager.preWebsiteCreation(request) if result != 200: return result wm = WebsiteManager() coreResult = wm.GetCurrentThemes(userID, json.loads(request.body)) result = pluginManager.postWebsiteCreation(request, coreResult) if result != 200: return result return coreResult except KeyError: return redirect(loadLoginPage) def UpdateWPSettings(request): try: userID = request.session['userID'] data = json.loads(request.body) wm = WebsiteManager() return wm.UpdateWPSettings(userID, data) except KeyError: return redirect(loadLoginPage) def UpdatePlugins(request): try: userID = request.session['userID'] result = pluginManager.preWebsiteCreation(request) if result != 200: return result wm = WebsiteManager() coreResult = wm.UpdatePlugins(userID, json.loads(request.body)) result = pluginManager.postWebsiteCreation(request, coreResult) if result != 200: return result return coreResult except KeyError: return redirect(loadLoginPage) def UpdateThemes(request): try: userID = request.session['userID'] result = pluginManager.preWebsiteCreation(request) if result != 200: return result wm = WebsiteManager() coreResult = wm.UpdateThemes(userID, json.loads(request.body)) result = pluginManager.postWebsiteCreation(request, coreResult) if result != 200: return result return coreResult except KeyError: return redirect(loadLoginPage) def DeletePlugins(request): try: userID = request.session['userID'] result = pluginManager.preWebsiteCreation(request) if result != 200: return result wm = WebsiteManager() coreResult = wm.DeletePlugins(userID, json.loads(request.body)) result = pluginManager.postWebsiteCreation(request, coreResult) if result != 200: return result return coreResult except KeyError: return redirect(loadLoginPage) def DeleteThemes(request): try: userID = request.session['userID'] result = pluginManager.preWebsiteCreation(request) if result != 200: return result wm = WebsiteManager() coreResult = wm.DeleteThemes(userID, json.loads(request.body)) result = pluginManager.postWebsiteCreation(request, coreResult) if result != 200: return result return coreResult except KeyError: return redirect(loadLoginPage) def ChangeStatus(request): try: userID = request.session['userID'] result = pluginManager.preWebsiteCreation(request) if result != 200: return result wm = WebsiteManager() coreResult = wm.ChangeStatus(userID, json.loads(request.body)) result = pluginManager.postWebsiteCreation(request, coreResult) if result != 200: return result return coreResult except KeyError: return redirect(loadLoginPage) def StatusThemes(request): try: userID = request.session['userID'] result = pluginManager.preWebsiteCreation(request) if result != 200: return result wm = WebsiteManager() coreResult = wm.ChangeStatusThemes(userID, json.loads(request.body)) result = pluginManager.postWebsiteCreation(request, coreResult) if result != 200: return result return coreResult except KeyError: return redirect(loadLoginPage) def CreateStagingNow(request): try: userID = request.session['userID'] result = pluginManager.preWebsiteCreation(request) if result != 200: return result wm = WebsiteManager() coreResult = wm.CreateStagingNow(userID, json.loads(request.body)) result = pluginManager.postWebsiteCreation(request, coreResult) if result != 200: return result return coreResult except KeyError: return redirect(loadLoginPage) def modifyWebsite(request): try: userID = request.session['userID'] wm = WebsiteManager() return wm.modifyWebsite(request, userID) except BaseException as msg: return HttpResponse(str(msg)) except KeyError: return redirect(loadLoginPage) def deleteWebsite(request): try: userID = request.session['userID'] wm = WebsiteManager() return wm.deleteWebsite(request, userID) except KeyError: return redirect(loadLoginPage) def CreateNewDomain(request): try: userID = request.session['userID'] wm = WebsiteManager() return wm.CreateNewDomain(request, userID) except KeyError: return redirect(loadLoginPage) def siteState(request): try: userID = request.session['userID'] wm = WebsiteManager() return wm.siteState(request, userID) except KeyError: return redirect(loadLoginPage) def listWebsites(request): try: userID = request.session['userID'] wm = WebsiteManager() return wm.listWebsites(request, userID) except KeyError: return redirect(loadLoginPage) def listChildDomains(request): try: userID = request.session['userID'] wm = WebsiteManager() return wm.listChildDomains(request, userID) except KeyError: return redirect(loadLoginPage) def submitWebsiteCreation(request): try: userID = request.session['userID'] result = pluginManager.preWebsiteCreation(request) if result != 200: return result wm = WebsiteManager() coreResult = wm.submitWebsiteCreation(userID, json.loads(request.body)) result = pluginManager.postWebsiteCreation(request, coreResult) if result != 200: return result return coreResult except KeyError: return redirect(loadLoginPage) def submitDomainCreation(request): try: userID = request.session['userID'] result = pluginManager.preDomainCreation(request) if result != 200: return result wm = WebsiteManager() coreResult = wm.submitDomainCreation(userID, json.loads(request.body)) result = pluginManager.postDomainCreation(request, coreResult) if result != 200: return result return coreResult except KeyError: return redirect(loadLoginPage) def fetchDomains(request): try: userID = request.session['userID'] wm = WebsiteManager() return wm.fetchDomains(userID, json.loads(request.body)) except KeyError: return redirect(loadLoginPage) def searchWebsites(request): try: userID = request.session['userID'] wm = WebsiteManager() return wm.searchWebsites(userID, json.loads(request.body)) except KeyError: return redirect(loadLoginPage) def searchChilds(request): try: userID = request.session['userID'] wm = WebsiteManager() return wm.searchChilds(userID, json.loads(request.body)) except KeyError: return redirect(loadLoginPage) def getFurtherAccounts(request): try: userID = request.session['userID'] wm = WebsiteManager() return wm.getFurtherAccounts(userID, json.loads(request.body)) except KeyError: return redirect(loadLoginPage) def fetchWebsitesList(request): try: userID = request.session['userID'] wm = WebsiteManager() return wm.fetchWebsitesList(userID, json.loads(request.body)) except KeyError: return redirect(loadLoginPage) def fetchChildDomainsMain(request): try: userID = request.session['userID'] wm = WebsiteManager() return wm.fetchChildDomainsMain(userID, json.loads(request.body)) except KeyError: return redirect(loadLoginPage) def submitWebsiteDeletion(request): try: userID = request.session['userID'] result = pluginManager.preWebsiteDeletion(request) if result != 200: return result wm = WebsiteManager() coreResult = wm.submitWebsiteDeletion(userID, json.loads(request.body)) result = pluginManager.postWebsiteDeletion(request, coreResult) if result != 200: return result return coreResult except KeyError: return redirect(loadLoginPage) def submitDomainDeletion(request): try: userID = request.session['userID'] result = pluginManager.preDomainDeletion(request) if result != 200: return result wm = WebsiteManager() coreResult = wm.submitDomainDeletion(userID, json.loads(request.body)) result = pluginManager.postDomainDeletion(request, coreResult) if result != 200: return result return coreResult except KeyError: return redirect(loadLoginPage) def convertDomainToSite(request): try: userID = request.session['userID'] wm = WebsiteManager() return wm.convertDomainToSite(userID, request) except KeyError: return redirect(loadLoginPage) def submitWebsiteStatus(request): try: userID = request.session['userID'] result = pluginManager.preWebsiteSuspension(request) if result != 200: return result wm = WebsiteManager() coreResult = wm.submitWebsiteStatus(userID, json.loads(request.body)) result = pluginManager.postWebsiteSuspension(request, coreResult) if result != 200: return result return coreResult except KeyError: return redirect(loadLoginPage) def submitWebsiteModify(request): try: userID = request.session['userID'] wm = WebsiteManager() return wm.submitWebsiteModify(userID, json.loads(request.body)) except KeyError: return redirect(loadLoginPage) def saveWebsiteChanges(request): try: userID = request.session['userID'] result = pluginManager.preWebsiteModification(request) if result != 200: return result wm = WebsiteManager() coreResult = wm.saveWebsiteChanges(userID, json.loads(request.body)) result = pluginManager.postWebsiteModification(request, coreResult) if result != 200: return result return coreResult except KeyError: return redirect(loadLoginPage) def domain(request, domain): try: if not request.GET._mutable: request.GET._mutable = True request.GET['domain'] = domain result = pluginManager.preDomain(request) if result != 200: return result userID = request.session['userID'] wm = WebsiteManager(domain) coreResult = wm.loadDomainHome(request, userID) result = pluginManager.postDomain(request, coreResult) if result != 200: return result return coreResult except KeyError: return redirect(loadLoginPage) def launchChild(request, domain, childDomain): try: userID = request.session['userID'] wm = WebsiteManager(domain, childDomain) return wm.launchChild(request, userID) except KeyError: return redirect(loadLoginPage) def getDataFromLogFile(request): try: userID = request.session['userID'] wm = WebsiteManager() return wm.getDataFromLogFile(userID, json.loads(request.body)) except KeyError: return redirect(loadLoginPage) def fetchErrorLogs(request): try: userID = request.session['userID'] wm = WebsiteManager() return wm.fetchErrorLogs(userID, json.loads(request.body)) except KeyError: return redirect(loadLoginPage) def getDataFromConfigFile(request): try: userID = request.session['userID'] wm = WebsiteManager() return wm.getDataFromConfigFile(userID, json.loads(request.body)) except KeyError: return redirect(loadLoginPage) def saveConfigsToFile(request): try: userID = request.session['userID'] result = pluginManager.preSaveConfigsToFile(request) if result != 200: return result wm = WebsiteManager() coreResult = wm.saveConfigsToFile(userID, json.loads(request.body)) result = pluginManager.postSaveConfigsToFile(request, coreResult) if result != 200: return result return coreResult except KeyError: return redirect(loadLoginPage) def getRewriteRules(request): try: userID = request.session['userID'] wm = WebsiteManager() return wm.getRewriteRules(userID, json.loads(request.body)) except KeyError: return redirect(loadLoginPage) def saveRewriteRules(request): try: userID = request.session['userID'] result = pluginManager.preSaveRewriteRules(request) if result != 200: return result wm = WebsiteManager() coreResult = wm.saveRewriteRules(userID, json.loads(request.body)) result = pluginManager.postSaveRewriteRules(request, coreResult) if result != 200: return result return coreResult except KeyError: return redirect(loadLoginPage) def saveSSL(request): try: userID = request.session['userID'] result = pluginManager.preSaveSSL(request) if result != 200: return result wm = WebsiteManager() coreResult = wm.saveSSL(userID, json.loads(request.body)) result = pluginManager.postSaveSSL(request, coreResult) if result != 200: return result return coreResult except KeyError: return redirect(loadLoginPage) def changePHP(request): try: userID = request.session['userID'] result = pluginManager.preChangePHP(request) if result != 200: return result wm = WebsiteManager() coreResult = wm.changePHP(userID, json.loads(request.body)) result = pluginManager.postChangePHP(request, coreResult) if result != 200: return result return coreResult except KeyError: return redirect(loadLoginPage) def listCron(request): try: userID = request.session['userID'] wm = WebsiteManager() return wm.listCron(request, userID) except KeyError: return redirect(loadLoginPage) def getWebsiteCron(request): try: userID = request.session['userID'] wm = WebsiteManager() return wm.getWebsiteCron(userID, json.loads(request.body)) except KeyError: return redirect(loadLoginPage) def getCronbyLine(request): try: userID = request.session['userID'] wm = WebsiteManager() return wm.getCronbyLine(userID, json.loads(request.body)) except KeyError: return redirect(loadLoginPage) def saveCronChanges(request): try: userID = request.session['userID'] wm = WebsiteManager() return wm.saveCronChanges(userID, json.loads(request.body)) except KeyError: return redirect(loadLoginPage) def remCronbyLine(request): try: userID = request.session['userID'] result = pluginManager.preRemCronbyLine(request) if result != 200: return result wm = WebsiteManager() coreResult = wm.remCronbyLine(userID, json.loads(request.body)) result = pluginManager.postRemCronbyLine(request, coreResult) if result != 200: return result return coreResult except KeyError: return redirect(loadLoginPage) def addNewCron(request): try: userID = request.session['userID'] result = pluginManager.preAddNewCron(request) if result != 200: return result wm = WebsiteManager() coreResult = wm.addNewCron(userID, json.loads(request.body)) result = pluginManager.postAddNewCron(request, coreResult) if result != 200: return result return coreResult except KeyError: return redirect(loadLoginPage) def domainAlias(request, domain): try: userID = request.session['userID'] wm = WebsiteManager(domain) return wm.domainAlias(request, userID) except KeyError: return redirect(loadLoginPage) def submitAliasCreation(request): try: userID = request.session['userID'] result = pluginManager.preSubmitAliasCreation(request) if result != 200: return result wm = WebsiteManager() coreResult = wm.submitAliasCreation(userID, json.loads(request.body)) result = pluginManager.postSubmitAliasCreation(request, coreResult) if result != 200: return result return coreResult except KeyError: return redirect(loadLoginPage) def issueAliasSSL(request): try: userID = request.session['userID'] wm = WebsiteManager() return wm.issueAliasSSL(userID, json.loads(request.body)) except KeyError: return redirect(loadLoginPage) def delateAlias(request): try: userID = request.session['userID'] result = pluginManager.preDelateAlias(request) if result != 200: return result wm = WebsiteManager() coreResult = wm.delateAlias(userID, json.loads(request.body)) result = pluginManager.postDelateAlias(request, coreResult) if result != 200: return result return coreResult except KeyError: return redirect(loadLoginPage) def changeOpenBasedir(request): try: userID = request.session['userID'] result = pluginManager.preChangeOpenBasedir(request) if result != 200: return result wm = WebsiteManager() coreResult = wm.changeOpenBasedir(userID, json.loads(request.body)) result = pluginManager.postChangeOpenBasedir(request, coreResult) if result != 200: return result return coreResult except KeyError: return redirect(loadLoginPage) def wordpressInstall(request, domain): try: userID = request.session['userID'] wm = WebsiteManager(domain) return wm.wordpressInstall(request, userID) except KeyError: return redirect(loadLoginPage) def installWordpress(request): try: userID = request.session['userID'] wm = WebsiteManager() return wm.installWordpress(userID, json.loads(request.body)) except KeyError: return redirect(loadLoginPage) def installWordpressStatus(request): try: userID = request.session['userID'] wm = WebsiteManager() return wm.installWordpressStatus(userID, json.loads(request.body)) except KeyError: return redirect(loadLoginPage) def joomlaInstall(request, domain): try: userID = request.session['userID'] wm = WebsiteManager(domain) return wm.joomlaInstall(request, userID) except KeyError: return redirect(loadLoginPage) def installJoomla(request): try: userID = request.session['userID'] wm = WebsiteManager() return wm.installJoomla(userID, json.loads(request.body)) except KeyError: return redirect(loadLoginPage) def setupGit(request, domain): try: userID = request.session['userID'] wm = WebsiteManager(domain) return wm.setupGit(request, userID) except KeyError: return redirect(loadLoginPage) def setupGitRepo(request): try: userID = request.session['userID'] wm = WebsiteManager() return wm.setupGitRepo(userID, json.loads(request.body)) except KeyError: return redirect(loadLoginPage) @csrf_exempt def gitNotify(request, domain): try: wm = WebsiteManager(domain) return wm.gitNotify() except KeyError: return redirect(loadLoginPage) def detachRepo(request): try: userID = request.session['userID'] wm = WebsiteManager() return wm.detachRepo(userID, json.loads(request.body)) except KeyError: return redirect(loadLoginPage) def changeBranch(request): try: userID = request.session['userID'] wm = WebsiteManager() return wm.changeBranch(userID, json.loads(request.body)) except KeyError: return redirect(loadLoginPage) def installPrestaShop(request, domain): try: userID = request.session['userID'] wm = WebsiteManager(domain) return wm.installPrestaShop(request, userID) except KeyError: return redirect(loadLoginPage) def installMagento(request, domain): try: userID = request.session['userID'] wm = WebsiteManager(domain) return wm.installMagento(request, userID) except KeyError: return redirect(loadLoginPage) def magentoInstall(request): try: userID = request.session['userID'] wm = WebsiteManager() return wm.magentoInstall(userID, json.loads(request.body)) except KeyError: return redirect(loadLoginPage) def installMautic(request, domain): try: userID = request.session['userID'] wm = WebsiteManager(domain) return wm.installMautic(request, userID) except KeyError: return redirect(loadLoginPage) def mauticInstall(request): try: userID = request.session['userID'] wm = WebsiteManager() return wm.mauticInstall(userID, json.loads(request.body)) except KeyError: return redirect(loadLoginPage) def prestaShopInstall(request): try: userID = request.session['userID'] wm = WebsiteManager() return wm.prestaShopInstall(userID, json.loads(request.body)) except KeyError: return redirect(loadLoginPage) def sshAccess(request, domain): try: # from plogical.CyberCPLogFileWriter import CyberCPLogFileWriter # # Ensure FastAPI SSH server systemd service file is in place # try: # service_path = '/etc/systemd/system/fastapi_ssh_server.service' # local_service_path = 'fastapi_ssh_server.service' # check_service = ProcessUtilities.outputExecutioner(f'test -f {service_path} && echo exists || echo missing') # if 'missing' in check_service: # ProcessUtilities.outputExecutioner(f'cp /usr/local/CyberCP/fastapi_ssh_server.service {service_path}') # ProcessUtilities.outputExecutioner('systemctl daemon-reload') # except Exception as e: # CyberCPLogFileWriter.writeLog(f"Failed to copy or reload fastapi_ssh_server.service: {e}") # # Ensure FastAPI SSH server is running using ProcessUtilities # try: # ProcessUtilities.outputExecutioner('systemctl is-active --quiet fastapi_ssh_server') # ProcessUtilities.outputExecutioner('systemctl enable --now fastapi_ssh_server') # ProcessUtilities.outputExecutioner('systemctl start fastapi_ssh_server') # except Exception as e: # CyberCPLogFileWriter.writeLog(f"Failed to ensure fastapi_ssh_server is running: {e}") # # Add-on check logic # url = "https://platform.cyberpersons.com/CyberpanelAdOns/Adonpermission" # data = { # "name": "all", # "IP": ACLManager.GetServerIP() # } # import requests # import json # try: # response = requests.post(url, data=json.dumps(data)) # Status = response.json().get('status', 0) # except Exception: # Status = 0 # has_addons = (Status == 1) or ProcessUtilities.decideServer() == ProcessUtilities.ent # from plogical.CyberCPLogFileWriter import CyberCPLogFileWriter # CyberCPLogFileWriter.writeToFile(f"has_addons: {has_addons}") # userID = request.session['userID'] # wm = WebsiteManager(domain) # # SSL check # cert_path = '/usr/local/lscp/conf/cert.pem' # is_selfsigned = False # ssl_issue_link = '/manageSSL/sslForHostName' # try: # cert_content = ProcessUtilities.outputExecutioner(f'cat {cert_path}') # cert = OpenSSL.crypto.load_certificate(OpenSSL.crypto.FILETYPE_PEM, cert_content) # is_selfsigned = cert.get_issuer().der() == cert.get_subject().der() # except Exception: # is_selfsigned = True # If cert missing or unreadable, treat as self-signed userID = request.session['userID'] wm = WebsiteManager(domain) return wm.sshAccess(request, userID) except KeyError: return redirect(loadLoginPage) def saveSSHAccessChanges(request): try: userID = request.session['userID'] wm = WebsiteManager() return wm.saveSSHAccessChanges(userID, json.loads(request.body)) except KeyError: return redirect(loadLoginPage) def setupStaging(request, domain): try: userID = request.session['userID'] wm = WebsiteManager(domain) return wm.setupStaging(request, userID) except KeyError: return redirect(loadLoginPage) def startCloning(request): try: userID = request.session['userID'] wm = WebsiteManager() return wm.startCloning(userID, json.loads(request.body)) except KeyError: return redirect(loadLoginPage) def syncToMaster(request, domain, childDomain): try: userID = request.session['userID'] wm = WebsiteManager(domain) return wm.syncToMaster(request, userID, None, childDomain) except KeyError: return redirect(loadLoginPage) def startSync(request): try: userID = request.session['userID'] wm = WebsiteManager() return wm.startSync(userID, json.loads(request.body)) except KeyError: return redirect(loadLoginPage) ### Manage GIT def manageGIT(request, domain): try: if not request.GET._mutable: request.GET._mutable = True request.GET['domain'] = domain userID = request.session['userID'] wm = WebsiteManager(domain) return wm.manageGIT(request, userID) except KeyError: return redirect(loadLoginPage) def fetchFolderDetails(request): try: userID = request.session['userID'] wm = WebsiteManager() return wm.fetchFolderDetails(userID, json.loads(request.body)) except KeyError: return redirect(loadLoginPage) def initRepo(request): try: userID = request.session['userID'] wm = WebsiteManager() return wm.initRepo(userID, json.loads(request.body)) except KeyError: return redirect(loadLoginPage) def setupRemote(request): try: userID = request.session['userID'] wm = WebsiteManager() return wm.setupRemote(userID, json.loads(request.body)) except KeyError: return redirect(loadLoginPage) def changeGitBranch(request): try: userID = request.session['userID'] wm = WebsiteManager() return wm.changeGitBranch(userID, json.loads(request.body)) except KeyError: return redirect(loadLoginPage) def createNewBranch(request): try: userID = request.session['userID'] wm = WebsiteManager() return wm.createNewBranch(userID, json.loads(request.body)) except KeyError: return redirect(loadLoginPage) def commitChanges(request): try: userID = request.session['userID'] wm = WebsiteManager() return wm.commitChanges(userID, json.loads(request.body)) except KeyError: return redirect(loadLoginPage) def gitPull(request): try: userID = request.session['userID'] wm = WebsiteManager() return wm.gitPull(userID, json.loads(request.body)) except KeyError: return redirect(loadLoginPage) def gitPush(request): try: userID = request.session['userID'] wm = WebsiteManager() return wm.gitPush(userID, json.loads(request.body)) except KeyError: return redirect(loadLoginPage) def attachRepoGIT(request): try: userID = request.session['userID'] wm = WebsiteManager() return wm.attachRepoGIT(userID, json.loads(request.body)) except KeyError: return redirect(loadLoginPage) def removeTracking(request): try: userID = request.session['userID'] wm = WebsiteManager() return wm.removeTracking(userID, json.loads(request.body)) except KeyError: return redirect(loadLoginPage) def fetchGitignore(request): try: userID = request.session['userID'] wm = WebsiteManager() return wm.fetchGitignore(userID, json.loads(request.body)) except KeyError: return redirect(loadLoginPage) def saveGitIgnore(request): try: userID = request.session['userID'] wm = WebsiteManager() return wm.saveGitIgnore(userID, json.loads(request.body)) except KeyError: return redirect(loadLoginPage) def fetchCommits(request): try: userID = request.session['userID'] wm = WebsiteManager() return wm.fetchCommits(userID, json.loads(request.body)) except KeyError: return redirect(loadLoginPage) def fetchFiles(request): try: userID = request.session['userID'] wm = WebsiteManager() return wm.fetchFiles(userID, json.loads(request.body)) except KeyError: return redirect(loadLoginPage) def fetchChangesInFile(request): try: userID = request.session['userID'] wm = WebsiteManager() return wm.fetchChangesInFile(userID, json.loads(request.body)) except KeyError: return redirect(loadLoginPage) def saveGitConfigurations(request): try: userID = request.session['userID'] wm = WebsiteManager() return wm.saveGitConfigurations(userID, json.loads(request.body)) except KeyError: return redirect(loadLoginPage) def fetchGitLogs(request): try: userID = request.session['userID'] wm = WebsiteManager() return wm.fetchGitLogs(userID, json.loads(request.body)) except KeyError: return redirect(loadLoginPage) def getSSHConfigs(request): try: userID = request.session['userID'] wm = WebsiteManager() return wm.getSSHConfigs(userID, json.loads(request.body)) except KeyError: return redirect(loadLoginPage) def deleteSSHKey(request): try: userID = request.session['userID'] wm = WebsiteManager() return wm.deleteSSHKey(userID, json.loads(request.body)) except KeyError: return redirect(loadLoginPage) def addSSHKey(request): try: userID = request.session['userID'] wm = WebsiteManager() return wm.addSSHKey(userID, json.loads(request.body)) except KeyError: return redirect(loadLoginPage) @csrf_exempt def webhook(request, domain): try: wm = WebsiteManager() return wm.webhook(domain, json.loads(request.body)) except KeyError: return redirect(loadLoginPage) def ApacheManager(request, domain): try: userID = request.session['userID'] wm = WebsiteManager(domain) return wm.ApacheManager(request, userID) except KeyError: return redirect(loadLoginPage) def getSwitchStatus(request): try: userID = request.session['userID'] wm = WebsiteManager() return wm.getSwitchStatus(userID, json.loads(request.body)) except KeyError: return redirect(loadLoginPage) def switchServer(request): try: userID = request.session['userID'] wm = WebsiteManager() return wm.switchServer(userID, json.loads(request.body)) except KeyError: return redirect(loadLoginPage) def statusFunc(request): try: userID = request.session['userID'] data = json.loads(request.body) from cloudAPI.cloudManager import CloudManager admin = Administrator.objects.get(pk=userID) cm = CloudManager(data, admin) return cm.statusFunc() except KeyError: return redirect(loadLoginPage) def tuneSettings(request): try: userID = request.session['userID'] data = json.loads(request.body) wm = WebsiteManager() return wm.tuneSettings(userID, data) except KeyError: return redirect(loadLoginPage) def saveApacheConfigsToFile(request): try: userID = request.session['userID'] data = json.loads(request.body) wm = WebsiteManager() return wm.saveApacheConfigsToFile(userID, data) except KeyError: return redirect(loadLoginPage) def CreateDockerPackage(request): try: val = request.session['userID'] admin = Administrator.objects.get(pk=val) proc = httpProc(request, 'websiteFunctions/CreateDockerPackage.html', {"type": admin.type}) return proc.render() except BaseException as msg: return HttpResponse(msg) def CreateDockerPackage(request): try: userID = request.session['userID'] DeleteID = request.GET.get('DeleteID') wm = WebsiteManager() return wm.CreateDockerPackage(request, userID, None, DeleteID) except KeyError: return redirect(loadLoginPage) def AssignPackage(request): try: userID = request.session['userID'] DeleteID = request.GET.get('DeleteID') wm = WebsiteManager() return wm.AssignPackage(request, userID, None, DeleteID) except KeyError: return redirect(loadLoginPage) def CreateDockersite(request): try: userID = request.session['userID'] wm = WebsiteManager() return wm.CreateDockersite(request, userID) except KeyError: return redirect(loadLoginPage) def AddDockerpackage(request): try: userID = request.session['userID'] data = json.loads(request.body) wm = WebsiteManager() return wm.AddDockerpackage(userID, data) except KeyError: return redirect(loadLoginPage) def Getpackage(request): try: userID = request.session['userID'] data = json.loads(request.body) wm = WebsiteManager() return wm.Getpackage(userID, data) except KeyError: return redirect(loadLoginPage) def Updatepackage(request): try: userID = request.session['userID'] data = json.loads(request.body) wm = WebsiteManager() return wm.Updatepackage(userID, data) except KeyError: return redirect(loadLoginPage) def AddAssignment(request): try: userID = request.session['userID'] data = json.loads(request.body) wm = WebsiteManager() return wm.AddAssignment(userID, data) except KeyError: return redirect(loadLoginPage) def submitDockerSiteCreation(request): try: userID = request.session['userID'] data = json.loads(request.body) wm = WebsiteManager() return wm.submitDockerSiteCreation(userID, data) except KeyError: return redirect(loadLoginPage) def ListDockerSites(request): try: userID = request.session['userID'] DeleteID = request.GET.get('DeleteID') wm = WebsiteManager() return wm.ListDockerSites(request, userID, None, DeleteID) except KeyError: return redirect(loadLoginPage) def fetchDockersite(request): try: userID = request.session['userID'] data = json.loads(request.body) wm = WebsiteManager() return wm.fetchDockersite(userID, data) except KeyError: return redirect(loadLoginPage) def Dockersitehome(request, dockerapp): try: userID = request.session['userID'] wm = WebsiteManager(dockerapp) return wm.Dockersitehome(request, userID, None) except KeyError: return redirect(loadLoginPage) def fetchWPDetails(request): try: userID = request.session['userID'] data = { 'domain': request.POST.get('domain') } wm = WebsiteManager() return wm.fetchWPSitesForDomain(userID, data) except KeyError: return redirect(loadLoginPage) @csrf_exempt def startContainer(request): try: if request.method == 'POST': return docker_startContainer(request) return HttpResponse('Not allowed') except KeyError: return redirect(loadLoginPage) @csrf_exempt def stopContainer(request): try: if request.method == 'POST': return docker_stopContainer(request) return HttpResponse('Not allowed') except KeyError: return redirect(loadLoginPage) @csrf_exempt def restartContainer(request): try: if request.method == 'POST': return docker_restartContainer(request) return HttpResponse('Not allowed') except KeyError: return redirect(loadLoginPage) @csrf_exempt def get_website_resources(request): try: data = json.loads(request.body) domain = data['domain'] # Get userID from session try: userID = request.session['userID'] admin = Administrator.objects.get(pk=userID) except: return JsonResponse({'status': 0, 'error_message': 'Unauthorized access'}) # Verify domain ownership currentACL = ACLManager.loadedACL(userID) from websiteFunctions.models import Websites try: website = Websites.objects.get(domain=domain) except Websites.DoesNotExist: return JsonResponse({'status': 0, 'error_message': 'Website not found'}) if ACLManager.checkOwnership(domain, admin, currentACL) == 1: pass else: return ACLManager.loadError() # Get resource usage data using externalApp resource_data = get_website_resource_usage(website.externalApp) if resource_data['status'] == 0: return JsonResponse(resource_data) return JsonResponse(resource_data) except BaseException as msg: logging.CyberCPLogFileWriter.writeToFile(f'Error in get_website_resources: {str(msg)}') return JsonResponse({'status': 0, 'error_message': str(msg)}) @csrf_exempt def get_terminal_jwt(request): import logging logger = logging.getLogger("cyberpanel.ssh.jwt") try: logger.error("get_terminal_jwt called") logger.error(f"Request body: {request.body}") data = json.loads(request.body) domain = data.get('domain') logger.error(f"Domain: {domain}") if not domain: logger.error("No domain provided") return JsonResponse({'status': 0, 'error_message': 'Domain required'}) user_id = request.session.get('userID') logger.error(f"User ID from session: {user_id}") if not user_id: logger.error("User not authenticated") return JsonResponse({'status': 0, 'error_message': 'Not authenticated'}) from websiteFunctions.models import Websites from plogical.acl import ACLManager from loginSystem.models import Administrator admin = Administrator.objects.get(pk=user_id) currentACL = ACLManager.loadedACL(user_id) if ACLManager.checkOwnership(domain, admin, currentACL) != 1: logger.error("User not authorized for domain") return JsonResponse({'status': 0, 'error_message': 'Not authorized'}) try: website = Websites.objects.get(domain=domain) except Websites.DoesNotExist: logger.error("Website not found") return JsonResponse({'status': 0, 'error_message': 'Website not found'}) ssh_user = website.externalApp logger.error(f"SSH user: {ssh_user}") if not ssh_user: logger.error("SSH user is empty or not set for this website.") return JsonResponse({'status': 0, 'error_message': 'SSH user not configured for this website.'}) from datetime import datetime, timedelta import jwt as pyjwt # Read JWT_SECRET from fastapi_ssh_server.py using ProcessUtilities jwt_secret = None try: content = ProcessUtilities.outputExecutioner('cat /usr/local/CyberCP/fastapi_ssh_server.py') for line in content.splitlines(): m = re.match(r'\s*JWT_SECRET\s*=\s*[\'"](.+)[\'"]', line) if m and m.group(1) != 'REPLACE_ME_WITH_INSTALLER': jwt_secret = m.group(1) if os.path.exists(ProcessUtilities.debugPath): from plogical.CyberCPLogFileWriter import CyberCPLogFileWriter CyberCPLogFileWriter.writeLog(f"JWT_SECRET: {jwt_secret}") break except Exception as e: logger.error(f"Could not read JWT_SECRET: {e}") if not jwt_secret: jwt_secret = 'YOUR_SECRET_KEY' # fallback, should not be used in production payload = { 'user_id': user_id, 'ssh_user': ssh_user, 'exp': datetime.utcnow() + timedelta(minutes=10) } token = pyjwt.encode(payload, jwt_secret, algorithm='HS256') logger.error(f"JWT generated: {token}") return JsonResponse({'status': 1, 'token': token, 'ssh_user': ssh_user}) except Exception as e: logger.error(f"Exception in get_terminal_jwt: {str(e)}") return JsonResponse({'status': 0, 'error_message': str(e)})