Files
CyberPanel/firewall/views.py
master3395 4c24de7453 Sync with live: baseTemplate, firewall, manageSSL, plogical/acl, ftp, websiteFunctions, wsgi
Only files that match current live server; excludes settings.py (deployment-specific), pluginHolder/pluginInstaller (repo ahead), install/cyberpanel scripts (diff), and deleted static files (still on server).
2026-02-03 19:50:17 +01:00

826 lines
23 KiB
Python

from django.shortcuts import redirect
import json
from loginSystem.views import loadLoginPage
from plogical.processUtilities import ProcessUtilities
from .firewallManager import FirewallManager
from .pluginManager import pluginManager
# Create your views here.
def securityHome(request):
try:
userID = request.session['userID']
fm = FirewallManager()
return fm.securityHome(request, userID)
except KeyError:
return redirect(loadLoginPage)
def firewallHome(request):
try:
userID = request.session['userID']
result = pluginManager.preFirewallHome(request)
if result != 200:
return result
fm = FirewallManager()
coreResult = fm.firewallHome(request, userID)
result = pluginManager.postFirewallHome(request, coreResult)
if result != 200:
return result
return coreResult
except KeyError:
return redirect(loadLoginPage)
def getCurrentRules(request):
try:
userID = request.session['userID']
fm = FirewallManager()
return fm.getCurrentRules(userID)
except KeyError:
return redirect(loadLoginPage)
def addRule(request):
try:
userID = request.session['userID']
result = pluginManager.preAddRule(request)
if result != 200:
return result
fm = FirewallManager()
coreResult = fm.addRule(userID, json.loads(request.body))
result = pluginManager.postAddRule(request, coreResult)
if result != 200:
return result
return coreResult
except KeyError:
return redirect(loadLoginPage)
def modifyRule(request):
try:
userID = request.session['userID']
fm = FirewallManager()
return fm.modifyRule(userID, json.loads(request.body))
except KeyError:
return redirect(loadLoginPage)
def deleteRule(request):
try:
userID = request.session['userID']
result = pluginManager.preDeleteRule(request)
if result != 200:
return result
fm = FirewallManager()
coreResult = fm.deleteRule(userID, json.loads(request.body))
result = pluginManager.postDeleteRule(request, coreResult)
if result != 200:
return result
return coreResult
except KeyError:
return redirect(loadLoginPage)
def reloadFirewall(request):
try:
userID = request.session['userID']
result = pluginManager.preReloadFirewall(request)
if result != 200:
return result
fm = FirewallManager()
coreResult = fm.reloadFirewall(userID)
result = pluginManager.postReloadFirewall(request, coreResult)
if result != 200:
return result
return coreResult
except KeyError:
return redirect(loadLoginPage)
def startFirewall(request):
try:
userID = request.session['userID']
result = pluginManager.preStartFirewall(request)
if result != 200:
return result
fm = FirewallManager()
coreResult = fm.startFirewall(userID)
result = pluginManager.postStartFirewall(request, coreResult)
if result != 200:
return result
return coreResult
except KeyError:
return redirect(loadLoginPage)
def stopFirewall(request):
try:
userID = request.session['userID']
result = pluginManager.preStopFirewall(request)
if result != 200:
return result
fm = FirewallManager()
coreResult = fm.stopFirewall(userID)
result = pluginManager.postStopFirewall(request, coreResult)
if result != 200:
return result
return coreResult
except KeyError:
return redirect(loadLoginPage)
def firewallStatus(request):
try:
userID = request.session['userID']
result = pluginManager.preFirewallStatus(request)
if result != 200:
return result
fm = FirewallManager()
coreResult = fm.firewallStatus(userID)
result = pluginManager.postFirewallStatus(request, coreResult)
if result != 200:
return result
return coreResult
except KeyError:
return redirect(loadLoginPage)
def secureSSH(request):
try:
userID = request.session['userID']
result = pluginManager.preSecureSSH(request)
if result != 200:
return result
fm = FirewallManager()
coreResult = fm.secureSSH(request, userID)
result = pluginManager.postSecureSSH(request, coreResult)
if result != 200:
return result
return coreResult
except KeyError:
return redirect(loadLoginPage)
def getSSHConfigs(request):
try:
userID = request.session['userID']
fm = FirewallManager()
return fm.getSSHConfigs(userID, json.loads(request.body))
except KeyError:
return redirect(loadLoginPage)
def saveSSHConfigs(request):
try:
userID = request.session['userID']
result = pluginManager.preSaveSSHConfigs(request)
if result != 200:
return result
fm = FirewallManager(request)
coreResult = fm.saveSSHConfigs(userID, json.loads(request.body))
result = pluginManager.postSaveSSHConfigs(request, coreResult)
if result != 200:
return result
return coreResult
except KeyError:
return redirect(loadLoginPage)
def deleteSSHKey(request):
try:
userID = request.session['userID']
result = pluginManager.preDeleteSSHKey(request)
if result != 200:
return result
fm = FirewallManager()
coreResult = fm.deleteSSHKey(userID, json.loads(request.body))
result = pluginManager.postDeleteSSHKey(request, coreResult)
if result != 200:
return result
return coreResult
except KeyError:
return redirect(loadLoginPage)
def addSSHKey(request):
try:
userID = request.session['userID']
result = pluginManager.preAddSSHKey(request)
if result != 200:
return result
fm = FirewallManager()
coreResult = fm.addSSHKey(userID, json.loads(request.body))
result = pluginManager.postAddSSHKey(request, coreResult)
if result != 200:
return result
return coreResult
except KeyError:
return redirect(loadLoginPage)
def loadModSecurityHome(request):
try:
userID = request.session['userID']
result = pluginManager.preLoadModSecurityHome(request)
if result != 200:
return result
fm = FirewallManager()
coreResult = fm.loadModSecurityHome(request, userID)
result = pluginManager.postLoadModSecurityHome(request, coreResult)
if result != 200:
return result
return coreResult
except KeyError:
return redirect(loadLoginPage)
def installModSec(request):
try:
userID = request.session['userID']
fm = FirewallManager()
return fm.installModSec(userID, json.loads(request.body))
except KeyError:
return redirect(loadLoginPage)
def installStatusModSec(request):
try:
userID = request.session['userID']
fm = FirewallManager()
return fm.installStatusModSec(userID)
except KeyError:
return redirect(loadLoginPage)
def fetchModSecSettings(request):
try:
userID = request.session['userID']
fm = FirewallManager()
return fm.fetchModSecSettings(userID, json.loads(request.body))
except KeyError:
return redirect(loadLoginPage)
def saveModSecConfigurations(request):
try:
userID = request.session['userID']
result = pluginManager.preSaveModSecConfigurations(request)
if result != 200:
return result
fm = FirewallManager()
coreResult = fm.saveModSecConfigurations(userID, json.loads(request.body))
result = pluginManager.postSaveModSecConfigurations(request, coreResult)
if result != 200:
return result
return coreResult
except KeyError:
return redirect(loadLoginPage)
def modSecRules(request):
try:
userID = request.session['userID']
result = pluginManager.preModSecRules(request)
if result != 200:
return result
fm = FirewallManager()
coreResult = fm.modSecRules(request, userID)
result = pluginManager.postModSecRules(request, coreResult)
if result != 200:
return result
return coreResult
except KeyError:
return redirect(loadLoginPage)
def fetchModSecRules(request):
try:
userID = request.session['userID']
fm = FirewallManager()
return fm.fetchModSecRules(userID, json.loads(request.body))
except KeyError:
return redirect(loadLoginPage)
def saveModSecRules(request):
try:
userID = request.session['userID']
result = pluginManager.preSaveModSecRules(request)
if result != 200:
return result
fm = FirewallManager()
coreResult = fm.saveModSecRules(userID, json.loads(request.body))
result = pluginManager.postSaveModSecRules(request, coreResult)
if result != 200:
return result
return coreResult
except KeyError:
return redirect(loadLoginPage)
def modSecRulesPacks(request):
try:
userID = request.session['userID']
result = pluginManager.preModSecRulesPacks(request)
if result != 200:
return result
fm = FirewallManager()
coreResult = fm.modSecRulesPacks(request, userID)
result = pluginManager.postModSecRulesPacks(request, coreResult)
if result != 200:
return result
return coreResult
except KeyError:
return redirect(loadLoginPage)
def getOWASPAndComodoStatus(request):
try:
userID = request.session['userID']
result = pluginManager.preGetOWASPAndComodoStatus(request)
if result != 200:
return result
fm = FirewallManager()
coreResult = fm.getOWASPAndComodoStatus(userID, json.loads(request.body))
result = pluginManager.postGetOWASPAndComodoStatus(request, coreResult)
if result != 200:
return result
return coreResult
except KeyError:
return redirect(loadLoginPage)
def installModSecRulesPack(request):
try:
userID = request.session['userID']
result = pluginManager.preInstallModSecRulesPack(request)
if result != 200:
return result
fm = FirewallManager()
coreResult = fm.installModSecRulesPack(userID, json.loads(request.body))
result = pluginManager.postInstallModSecRulesPack(request, coreResult)
if result != 200:
return result
return coreResult
except KeyError:
return redirect(loadLoginPage)
def getRulesFiles(request):
try:
userID = request.session['userID']
result = pluginManager.preGetRulesFiles(request)
if result != 200:
return result
fm = FirewallManager()
coreResult = fm.getRulesFiles(userID, json.loads(request.body))
result = pluginManager.postGetRulesFiles(request, coreResult)
if result != 200:
return result
return coreResult
except KeyError:
return redirect(loadLoginPage)
def enableDisableRuleFile(request):
try:
userID = request.session['userID']
result = pluginManager.preEnableDisableRuleFile(request)
if result != 200:
return result
fm = FirewallManager()
coreResult = fm.enableDisableRuleFile(userID, json.loads(request.body))
result = pluginManager.postEnableDisableRuleFile(request, coreResult)
if result != 200:
return result
return coreResult
except KeyError:
return redirect(loadLoginPage)
def csf(request):
try:
result = pluginManager.preCSF(request)
if result != 200:
return result
fm = FirewallManager(request)
coreResult = fm.csf()
result = pluginManager.postCSF(request, coreResult)
if result != 200:
return result
return coreResult
except KeyError:
return redirect(loadLoginPage)
def installCSF(request):
try:
fm = FirewallManager(request)
return fm.installCSF()
except KeyError:
return redirect(loadLoginPage)
def installStatusCSF(request):
try:
fm = FirewallManager(request)
return fm.installStatusCSF()
except KeyError:
return redirect(loadLoginPage)
def removeCSF(request):
try:
fm = FirewallManager(request)
return fm.removeCSF()
except KeyError:
return redirect(loadLoginPage)
def fetchCSFSettings(request):
try:
fm = FirewallManager(request)
return fm.fetchCSFSettings()
except KeyError:
return redirect(loadLoginPage)
def changeStatus(request):
try:
result = pluginManager.preChangeStatus(request)
if result != 200:
return result
fm = FirewallManager(request)
coreResult = fm.changeStatus()
result = pluginManager.postChangeStatus(request, coreResult)
if result != 200:
return result
return coreResult
except KeyError:
return redirect(loadLoginPage)
def modifyPorts(request):
try:
result = pluginManager.preModifyPorts(request)
if result != 200:
return result
fm = FirewallManager(request)
coreResult = fm.modifyPorts(json.loads(request.body))
result = pluginManager.postModifyPorts(request, coreResult)
if result != 200:
return result
return coreResult
except KeyError:
return redirect(loadLoginPage)
def modifyIPs(request):
try:
result = pluginManager.preModifyIPs(request)
if result != 200:
return result
fm = FirewallManager(request)
coreResult = fm.modifyIPs()
result = pluginManager.postModifyIPs(request, coreResult)
if result != 200:
return result
return coreResult
except KeyError:
return redirect(loadLoginPage)
## Imunify
def imunify(request):
try:
fm = FirewallManager(request)
return fm.imunify()
except KeyError:
return redirect(loadLoginPage)
def submitinstallImunify(request):
try:
fm = FirewallManager(request)
return fm.submitinstallImunify()
except KeyError:
return redirect(loadLoginPage)
## ImunifyAV
def imunifyAV(request):
try:
fm = FirewallManager(request)
return fm.imunifyAV()
except KeyError:
return redirect(loadLoginPage)
def submitinstallImunifyAV(request):
try:
fm = FirewallManager(request)
return fm.submitinstallImunifyAV()
except KeyError:
return redirect(loadLoginPage)
def litespeed_ent_conf(request):
try:
if ProcessUtilities.decideServer() == ProcessUtilities.ent:
userID = request.session['userID']
fm = FirewallManager()
return fm.litespeed_ent_conf(request, userID)
else:
return redirect(loadLoginPage)
except KeyError:
return redirect(loadLoginPage)
def fetchlitespeed_conf(request):
try:
userID = request.session['userID']
fm = FirewallManager()
return fm.fetchlitespeed_Conf(userID, json.loads(request.body))
except KeyError:
return redirect(loadLoginPage)
def saveLitespeed_conf(request):
try:
userID = request.session['userID']
fm = FirewallManager()
return fm.saveLitespeed_conf(userID, json.loads(request.body))
except KeyError:
return redirect(loadLoginPage)
# Banned IPs Views
def getBannedIPs(request):
try:
userID = request.session['userID']
fm = FirewallManager()
return fm.getBannedIPs(userID)
except KeyError:
return redirect(loadLoginPage)
def addBannedIP(request):
try:
userID = request.session['userID']
fm = FirewallManager()
try:
body = request.body
if isinstance(body, bytes):
body = body.decode('utf-8')
request_data = json.loads(body) if body and body.strip() else {}
except json.JSONDecodeError as e:
final_dic = {'status': 0, 'error_message': 'Invalid JSON in request: %s' % str(e)}
return HttpResponse(json.dumps(final_dic), content_type='application/json', status=400)
except Exception as e:
final_dic = {'status': 0, 'error_message': 'Error parsing request: %s' % str(e)}
return HttpResponse(json.dumps(final_dic), content_type='application/json', status=400)
result = fm.addBannedIP(userID, request_data)
return result
except KeyError:
final_dic = {'status': 0, 'error_message': 'Session expired. Please refresh the page and try again.'}
return HttpResponse(json.dumps(final_dic), content_type='application/json', status=403)
except Exception as e:
import traceback
from plogical.CyberCPLogFileWriter import CyberCPLogFileWriter as _log
error_trace = traceback.format_exc()
_log.writeToFile('Error in addBannedIP view: %s\n%s' % (str(e), error_trace))
final_dic = {'status': 0, 'error_message': 'Server error: %s' % str(e)}
return HttpResponse(json.dumps(final_dic), content_type='application/json', status=500)
def modifyBannedIP(request):
try:
userID = request.session['userID']
fm = FirewallManager()
try:
body = request.body
if isinstance(body, bytes):
body = body.decode('utf-8')
request_data = json.loads(body) if body and body.strip() else {}
except json.JSONDecodeError as e:
final_dic = {'status': 0, 'error_message': 'Invalid JSON in request: %s' % str(e)}
return HttpResponse(json.dumps(final_dic), content_type='application/json', status=400)
except Exception as e:
final_dic = {'status': 0, 'error_message': 'Error parsing request: %s' % str(e)}
return HttpResponse(json.dumps(final_dic), content_type='application/json', status=400)
return fm.modifyBannedIP(userID, request_data)
except KeyError:
final_dic = {'status': 0, 'error_message': 'Session expired. Please refresh the page and try again.'}
return HttpResponse(json.dumps(final_dic), content_type='application/json', status=403)
except Exception as e:
import traceback
from plogical.CyberCPLogFileWriter import CyberCPLogFileWriter as _log
error_trace = traceback.format_exc()
_log.writeToFile('Error in modifyBannedIP view: %s\n%s' % (str(e), error_trace))
final_dic = {'status': 0, 'error_message': 'Server error: %s' % str(e)}
return HttpResponse(json.dumps(final_dic), content_type='application/json', status=500)
def removeBannedIP(request):
try:
userID = request.session['userID']
fm = FirewallManager()
try:
body = request.body
if isinstance(body, bytes):
body = body.decode('utf-8')
request_data = json.loads(body) if body and body.strip() else {}
except json.JSONDecodeError as e:
final_dic = {'status': 0, 'error_message': 'Invalid JSON in request: %s' % str(e)}
return HttpResponse(json.dumps(final_dic), content_type='application/json', status=400)
except Exception as e:
final_dic = {'status': 0, 'error_message': 'Error parsing request: %s' % str(e)}
return HttpResponse(json.dumps(final_dic), content_type='application/json', status=400)
return fm.removeBannedIP(userID, request_data)
except KeyError:
final_dic = {'status': 0, 'error_message': 'Session expired. Please refresh the page and try again.'}
return HttpResponse(json.dumps(final_dic), content_type='application/json', status=403)
except Exception as e:
import traceback
from plogical.CyberCPLogFileWriter import CyberCPLogFileWriter as _log
error_trace = traceback.format_exc()
_log.writeToFile('Error in removeBannedIP view: %s\n%s' % (str(e), error_trace))
final_dic = {'status': 0, 'error_message': 'Server error: %s' % str(e)}
return HttpResponse(json.dumps(final_dic), content_type='application/json', status=500)
def deleteBannedIP(request):
try:
userID = request.session['userID']
fm = FirewallManager()
try:
body = request.body
if isinstance(body, bytes):
body = body.decode('utf-8')
request_data = json.loads(body) if body and body.strip() else {}
except json.JSONDecodeError as e:
final_dic = {'status': 0, 'error_message': 'Invalid JSON in request: %s' % str(e)}
return HttpResponse(json.dumps(final_dic), content_type='application/json', status=400)
except Exception as e:
final_dic = {'status': 0, 'error_message': 'Error parsing request: %s' % str(e)}
return HttpResponse(json.dumps(final_dic), content_type='application/json', status=400)
return fm.deleteBannedIP(userID, request_data)
except KeyError:
final_dic = {'status': 0, 'error_message': 'Session expired. Please refresh the page and try again.'}
return HttpResponse(json.dumps(final_dic), content_type='application/json', status=403)
except Exception as e:
import traceback
from plogical.CyberCPLogFileWriter import CyberCPLogFileWriter as _log
error_trace = traceback.format_exc()
_log.writeToFile('Error in deleteBannedIP view: %s\n%s' % (str(e), error_trace))
final_dic = {'status': 0, 'error_message': 'Server error: %s' % str(e)}
return HttpResponse(json.dumps(final_dic), content_type='application/json', status=500)
def exportFirewallRules(request):
try:
userID = request.session['userID']
fm = FirewallManager()
return fm.exportFirewallRules(userID)
except KeyError:
return redirect(loadLoginPage)
def importFirewallRules(request):
try:
userID = request.session['userID']
fm = FirewallManager(request)
# Handle file upload
if request.method == 'POST' and 'import_file' in request.FILES:
return fm.importFirewallRules(userID, None)
else:
# Handle JSON data
return fm.importFirewallRules(userID, json.loads(request.body))
except KeyError:
return redirect(loadLoginPage)
def exportBannedIPs(request):
try:
userID = request.session['userID']
fm = FirewallManager()
return fm.exportBannedIPs(userID)
except KeyError:
return redirect(loadLoginPage)
def importBannedIPs(request):
try:
userID = request.session['userID']
fm = FirewallManager()
fm.request = request # Set request for file upload handling
# Handle file upload
if request.method == 'POST' and 'import_file' in request.FILES:
return fm.importBannedIPs(userID, None)
else:
# Handle JSON data
return fm.importBannedIPs(userID, json.loads(request.body))
except KeyError:
return redirect(loadLoginPage)