From 44a2e03b882eaa69afc72eeea5e259d7df23389b Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 30 Aug 2023 15:01:46 +0500 Subject: [PATCH] litespeed conf --- .../templates/baseTemplate/index.html | 5 + firewall/firewallManager.py | 91 +++++++++++++++ firewall/static/firewall/firewall.js | 109 ++++++++++++++++++ .../firewall/litespeed_ent_conf.html | 80 +++++++++++++ firewall/urls.py | 5 + firewall/views.py | 70 ++++++++++- plogical/httpProc.py | 6 + 7 files changed, 365 insertions(+), 1 deletion(-) create mode 100644 firewall/templates/firewall/litespeed_ent_conf.html diff --git a/baseTemplate/templates/baseTemplate/index.html b/baseTemplate/templates/baseTemplate/index.html index cb5181209..df9330ecc 100755 --- a/baseTemplate/templates/baseTemplate/index.html +++ b/baseTemplate/templates/baseTemplate/index.html @@ -1044,6 +1044,11 @@
  • {% trans "ModSecurity Rules Packs" %}
  • + {% if serverCheck == 1 %} +
  • {% trans "Litespeed ent conf" %} +
  • + {% endif %}
  • {% trans "CSF" %}
  • diff --git a/firewall/firewallManager.py b/firewall/firewallManager.py index d4197bf5d..7881c65c9 100755 --- a/firewall/firewallManager.py +++ b/firewall/firewallManager.py @@ -4,6 +4,7 @@ import os.path import sys import django +from loginSystem.models import Administrator from plogical.httpProc import httpProc sys.path.append('/usr/local/CyberCP') @@ -1641,3 +1642,93 @@ class FirewallManager: except BaseException as msg: logging.CyberCPLogFileWriter.statusWriter(ServerStatusUtil.lswsInstallStatusPath, str(msg) + ' [404].', 1) + + + + def litespeed_ent_conf(self, request = None, userID = None): + proc = httpProc(request, 'firewall/litespeed_ent_conf.html', + None, 'admin') + return proc.render() + + def fetchlitespeed_Conf(self, userID = None, data = None): + try: + currentACL = ACLManager.loadedACL(userID) + + if currentACL['admin'] == 1: + pass + else: + return ACLManager.loadErrorJson('modSecInstalled', 0) + + file_path = "/usr/local/lsws/conf/pre_main_global.conf" + + if not os.path.exists(file_path): + command = "touch /usr/local/lsws/conf/pre_main_global.conf" + ProcessUtilities.executioner(command) + + + command = f'cat {file_path}' + + currentModSecRules = ProcessUtilities.outputExecutioner(command) + final_dic = {'status': 1, + 'currentLitespeed_conf': currentModSecRules} + + final_json = json.dumps(final_dic) + return HttpResponse(final_json) + else: + command = f'cat {file_path}' + + currentModSecRules = ProcessUtilities.outputExecutioner(command) + final_dic = {'status': 1, + 'currentLitespeed_conf': currentModSecRules} + + final_json = json.dumps(final_dic) + return HttpResponse(final_json) + except BaseException as msg: + final_dic = {'status': 0, 'error_message': str(msg)} + final_json = json.dumps(final_dic) + return HttpResponse(final_json) + + + def saveLitespeed_conf(self, userID = None, data = None): + from urllib.parse import unquote + try: + currentACL = ACLManager.loadedACL(userID) + + if currentACL['admin'] == 1: + pass + else: + return ACLManager.loadErrorJson('modSecInstalled', 0) + + file_path = "/usr/local/lsws/conf/pre_main_global.conf" + + currentLitespeed_conf = data['modSecRules'] + + + + # Use sed to replace content in the file + command = f"echo '{currentLitespeed_conf}' > '{file_path}'" + logging.CyberCPLogFileWriter.writeToFile(str(command)) + ProcessUtilities.executioner(command) + + + command = f'cat {file_path}' + + currentModSecRules = ProcessUtilities.outputExecutioner(command) + final_dic = {'status': 1, + 'currentLitespeed_conf': currentModSecRules} + + final_json = json.dumps(final_dic) + return HttpResponse(final_json) + + except BaseException as msg: + final_dic = {'status': 0, 'error_message': str(msg)} + final_json = json.dumps(final_dic) + return HttpResponse(final_json) + + + + + + + + diff --git a/firewall/static/firewall/firewall.js b/firewall/static/firewall/firewall.js index eddd74ea7..8e44be981 100755 --- a/firewall/static/firewall/firewall.js +++ b/firewall/static/firewall/firewall.js @@ -2272,4 +2272,113 @@ app.controller('installImunifyAV', function ($scope, $http, $timeout, $window) { } } +}); + + +app.controller('litespeed_ent_conf', function ($scope, $http, $timeout, $window){ + $scope.modsecLoading = true; + $scope.rulesSaved = true; + $scope.couldNotConnect = true; + $scope.couldNotSave = true; + fetchlitespeed_conf(); + function fetchlitespeed_conf() { + + $scope.modsecLoading = false; + $scope.modsecLoading = true; + $scope.rulesSaved = true; + $scope.couldNotConnect = true; + + + url = "/firewall/fetchlitespeed_conf"; + + var data = {}; + + var config = { + headers: { + 'X-CSRFToken': getCookie('csrftoken') + } + }; + + $http.post(url, data, config).then(ListInitialDatas, cantLoadInitialDatas); + + + function ListInitialDatas(response) { + + $scope.modsecLoading = true; + + if (response.data.status === 1) { + + $scope.currentLitespeed_conf = response.data.currentLitespeed_conf; + + } + else + { + $scope.errorMessage = response.data.error_message; + } + + } + + function cantLoadInitialDatas(response) { + $scope.modsecLoading = true; + } + + } + + + + $scope.saveLitespeed_conf = function () { + // alert('test-----------------') + + $scope.modsecLoading = false; + $scope.rulesSaved = true; + $scope.couldNotConnect = true; + $scope.couldNotSave = true; + + + url = "/firewall/saveLitespeed_conf"; + + var data = { + modSecRules: $scope.currentLitespeed_conf + + }; + + var config = { + headers: { + 'X-CSRFToken': getCookie('csrftoken') + } + }; + + $http.post(url, data, config).then(ListInitialDatas, cantLoadInitialDatas); + + + function ListInitialDatas(response) { + + $scope.modsecLoading = true; + + if (response.data.status === 1) { + + $scope.rulesSaved = false; + $scope.couldNotConnect = true; + $scope.couldNotSave = true; + + $scope.currentLitespeed_conf = response.data.currentLitespeed_conf; + + } else { + $scope.rulesSaved = true; + $scope.couldNotConnect = false; + $scope.couldNotSave = false; + + $scope.errorMessage = response.data.error_message; + } + + } + + function cantLoadInitialDatas(response) { + $scope.modsecLoading = true; + $scope.rulesSaved = true; + $scope.couldNotConnect = false; + $scope.couldNotSave = true; + } + } + }); \ No newline at end of file diff --git a/firewall/templates/firewall/litespeed_ent_conf.html b/firewall/templates/firewall/litespeed_ent_conf.html new file mode 100644 index 000000000..e8b15c575 --- /dev/null +++ b/firewall/templates/firewall/litespeed_ent_conf.html @@ -0,0 +1,80 @@ +{% extends "baseTemplate/index.html" %} +{% load i18n %} +{% block title %}{% trans "LiteSpeed Ent Conf - CyberPanel" %}{% endblock %} +{% block content %} + +{% load static %} +{% get_current_language as LANGUAGE_CODE %} + + + +
    +
    +

    {% trans "litespeed Ent Conf!" %} - {% trans "litespeed Ent Conf Docs" %}

    +

    {% trans "On this page you can add/delete litespeed Ent Conf." %}

    +
    + +
    +
    +

    + {% trans "litespeed Ent Conf" %} +

    + +
    +
    + + +
    + +
    + +
    +
    + +
    +
    + + + +
    + +
    + + +
    +
    + + +
    +

    {% trans "Litespeed Conf Saved" %}

    +
    + +
    +

    {% trans "Could not connect. Please refresh this page." %}

    +
    + + +
    +

    {% trans "Could not save rules, Error message: " %} {$ errorMessage $}

    +
    + + + +
    + +
    + + + + + +
    +
    +
    +
    + + +
    + + +{% endblock %} diff --git a/firewall/urls.py b/firewall/urls.py index ed912364a..6b96c589b 100755 --- a/firewall/urls.py +++ b/firewall/urls.py @@ -62,6 +62,11 @@ urlpatterns = [ url(r'^submitinstallImunifyAV$', views.submitinstallImunifyAV, name='submitinstallImunifyAV'), + url(r'^litespeed_ent_conf$', views.litespeed_ent_conf, name='litespeed_ent_conf'), + url(r'^fetchlitespeed_conf', views.fetchlitespeed_conf, name='fetchlitespeed_conf'), + url(r'^saveLitespeed_conf', views.saveLitespeed_conf, name='saveLitespeed_conf'), + + ] \ No newline at end of file diff --git a/firewall/views.py b/firewall/views.py index a1b342d62..d7f91dd93 100755 --- a/firewall/views.py +++ b/firewall/views.py @@ -1,8 +1,11 @@ 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. @@ -14,6 +17,7 @@ def securityHome(request): except KeyError: return redirect(loadLoginPage) + def firewallHome(request): try: userID = request.session['userID'] @@ -32,6 +36,7 @@ def firewallHome(request): except KeyError: return redirect(loadLoginPage) + def getCurrentRules(request): try: userID = request.session['userID'] @@ -40,6 +45,7 @@ def getCurrentRules(request): except KeyError: return redirect(loadLoginPage) + def addRule(request): try: userID = request.session['userID'] @@ -59,6 +65,7 @@ def addRule(request): except KeyError: return redirect(loadLoginPage) + def deleteRule(request): try: userID = request.session['userID'] @@ -78,6 +85,7 @@ def deleteRule(request): except KeyError: return redirect(loadLoginPage) + def reloadFirewall(request): try: userID = request.session['userID'] @@ -97,6 +105,7 @@ def reloadFirewall(request): except KeyError: return redirect(loadLoginPage) + def startFirewall(request): try: userID = request.session['userID'] @@ -116,6 +125,7 @@ def startFirewall(request): except KeyError: return redirect(loadLoginPage) + def stopFirewall(request): try: userID = request.session['userID'] @@ -124,7 +134,6 @@ def stopFirewall(request): if result != 200: return result - fm = FirewallManager() coreResult = fm.stopFirewall(userID) @@ -136,6 +145,7 @@ def stopFirewall(request): except KeyError: return redirect(loadLoginPage) + def firewallStatus(request): try: userID = request.session['userID'] @@ -155,6 +165,7 @@ def firewallStatus(request): except KeyError: return redirect(loadLoginPage) + def secureSSH(request): try: userID = request.session['userID'] @@ -174,6 +185,7 @@ def secureSSH(request): except KeyError: return redirect(loadLoginPage) + def getSSHConfigs(request): try: userID = request.session['userID'] @@ -182,6 +194,7 @@ def getSSHConfigs(request): except KeyError: return redirect(loadLoginPage) + def saveSSHConfigs(request): try: userID = request.session['userID'] @@ -201,6 +214,7 @@ def saveSSHConfigs(request): except KeyError: return redirect(loadLoginPage) + def deleteSSHKey(request): try: userID = request.session['userID'] @@ -219,6 +233,7 @@ def deleteSSHKey(request): except KeyError: return redirect(loadLoginPage) + def addSSHKey(request): try: userID = request.session['userID'] @@ -238,6 +253,7 @@ def addSSHKey(request): except KeyError: return redirect(loadLoginPage) + def loadModSecurityHome(request): try: userID = request.session['userID'] @@ -257,6 +273,7 @@ def loadModSecurityHome(request): except KeyError: return redirect(loadLoginPage) + def installModSec(request): try: userID = request.session['userID'] @@ -265,6 +282,7 @@ def installModSec(request): except KeyError: return redirect(loadLoginPage) + def installStatusModSec(request): try: userID = request.session['userID'] @@ -273,6 +291,7 @@ def installStatusModSec(request): except KeyError: return redirect(loadLoginPage) + def fetchModSecSettings(request): try: userID = request.session['userID'] @@ -281,6 +300,7 @@ def fetchModSecSettings(request): except KeyError: return redirect(loadLoginPage) + def saveModSecConfigurations(request): try: userID = request.session['userID'] @@ -300,6 +320,7 @@ def saveModSecConfigurations(request): except KeyError: return redirect(loadLoginPage) + def modSecRules(request): try: userID = request.session['userID'] @@ -319,6 +340,7 @@ def modSecRules(request): except KeyError: return redirect(loadLoginPage) + def fetchModSecRules(request): try: userID = request.session['userID'] @@ -327,6 +349,7 @@ def fetchModSecRules(request): except KeyError: return redirect(loadLoginPage) + def saveModSecRules(request): try: userID = request.session['userID'] @@ -346,6 +369,7 @@ def saveModSecRules(request): except KeyError: return redirect(loadLoginPage) + def modSecRulesPacks(request): try: userID = request.session['userID'] @@ -365,6 +389,7 @@ def modSecRulesPacks(request): except KeyError: return redirect(loadLoginPage) + def getOWASPAndComodoStatus(request): try: userID = request.session['userID'] @@ -384,6 +409,7 @@ def getOWASPAndComodoStatus(request): except KeyError: return redirect(loadLoginPage) + def installModSecRulesPack(request): try: userID = request.session['userID'] @@ -403,6 +429,7 @@ def installModSecRulesPack(request): except KeyError: return redirect(loadLoginPage) + def getRulesFiles(request): try: userID = request.session['userID'] @@ -422,6 +449,7 @@ def getRulesFiles(request): except KeyError: return redirect(loadLoginPage) + def enableDisableRuleFile(request): try: userID = request.session['userID'] @@ -441,6 +469,7 @@ def enableDisableRuleFile(request): except KeyError: return redirect(loadLoginPage) + def csf(request): try: @@ -459,6 +488,7 @@ def csf(request): except KeyError: return redirect(loadLoginPage) + def installCSF(request): try: fm = FirewallManager(request) @@ -466,6 +496,7 @@ def installCSF(request): except KeyError: return redirect(loadLoginPage) + def installStatusCSF(request): try: fm = FirewallManager(request) @@ -473,6 +504,7 @@ def installStatusCSF(request): except KeyError: return redirect(loadLoginPage) + def removeCSF(request): try: fm = FirewallManager(request) @@ -480,6 +512,7 @@ def removeCSF(request): except KeyError: return redirect(loadLoginPage) + def fetchCSFSettings(request): try: fm = FirewallManager(request) @@ -487,6 +520,7 @@ def fetchCSFSettings(request): except KeyError: return redirect(loadLoginPage) + def changeStatus(request): try: @@ -505,6 +539,7 @@ def changeStatus(request): except KeyError: return redirect(loadLoginPage) + def modifyPorts(request): try: @@ -523,6 +558,7 @@ def modifyPorts(request): except KeyError: return redirect(loadLoginPage) + def modifyIPs(request): try: @@ -541,6 +577,7 @@ def modifyIPs(request): except KeyError: return redirect(loadLoginPage) + ## Imunify def imunify(request): @@ -552,6 +589,7 @@ def imunify(request): except KeyError: return redirect(loadLoginPage) + def submitinstallImunify(request): try: @@ -561,6 +599,7 @@ def submitinstallImunify(request): except KeyError: return redirect(loadLoginPage) + ## ImunifyAV def imunifyAV(request): @@ -572,6 +611,7 @@ def imunifyAV(request): except KeyError: return redirect(loadLoginPage) + def submitinstallImunifyAV(request): try: @@ -580,3 +620,31 @@ def submitinstallImunifyAV(request): 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) diff --git a/plogical/httpProc.py b/plogical/httpProc.py index bce70891f..a246ed1a6 100755 --- a/plogical/httpProc.py +++ b/plogical/httpProc.py @@ -2,6 +2,8 @@ from django.shortcuts import render, HttpResponse import json +from plogical.processUtilities import ProcessUtilities + class httpProc: def __init__(self, request, templateName, data = None, function = None): @@ -40,6 +42,10 @@ class httpProc: ipAddress = ipData.split('\n', 1)[0] self.data['ipAddress'] = ipAddress self.data['fullName'] = '%s %s' % (admin.firstName, admin.lastName) + # self.data['serverCheck'] = 1 + + if ProcessUtilities.decideServer() == ProcessUtilities.ent: + self.data['serverCheck'] = 1 ### Load Custom CSS try: