mirror of
https://github.com/usmannasir/cyberpanel.git
synced 2025-12-30 20:29:41 +01:00
ModSecurity OWASP and Comodo Rules Integrated.
This commit is contained in:
@@ -548,6 +548,7 @@
|
||||
<li><a href="{% url 'secureSSH' %}" title="{% trans 'Secure SSH' %}"><span>{% trans "Secure SSH" %}</span></a></li>
|
||||
<li><a href="{% url 'modSecurity' %}" title="{% trans 'ModSecurity Configurations' %}"><span>{% trans "ModSecurity Conf" %}</span></a></li>
|
||||
<li><a href="{% url 'modSecRules' %}" title="{% trans 'ModSecurity Rules' %}"><span>{% trans "ModSecurity Rules" %}</span></a></li>
|
||||
<li><a href="{% url 'modSecRulesPacks' %}" title="{% trans 'ModSecurity Rules Packs' %}"><span>{% trans "ModSecurity Rules Packs" %}</span></a></li>
|
||||
</ul>
|
||||
|
||||
</div><!-- .sidebar-submenu -->
|
||||
|
||||
@@ -1252,8 +1252,9 @@ app.controller('modSecRulesPack', function($scope, $http, $timeout, $window) {
|
||||
$scope.couldNotConnect = true;
|
||||
$scope.installationFailed = true;
|
||||
$scope.installationSuccess = true;
|
||||
$scope.ruleFiles = true;
|
||||
|
||||
///// ModSec configs
|
||||
/////
|
||||
|
||||
var owaspInstalled = false;
|
||||
var comodoInstalled = false;
|
||||
@@ -1262,25 +1263,27 @@ app.controller('modSecRulesPack', function($scope, $http, $timeout, $window) {
|
||||
|
||||
|
||||
$('#owaspInstalled').change(function() {
|
||||
counterOWASP = counterOWASP + 1;
|
||||
|
||||
owaspInstalled = $(this).prop('checked');
|
||||
$scope.ruleFiles = true;
|
||||
|
||||
|
||||
if(counterOWASP > 2) {
|
||||
if(counterOWASP !== 0) {
|
||||
if (owaspInstalled === true) {
|
||||
installModSecRulesPack('installOWASP');
|
||||
} else {
|
||||
installModSecRulesPack('disableOWASP')
|
||||
}
|
||||
}
|
||||
|
||||
counterOWASP = counterOWASP + 1;
|
||||
});
|
||||
|
||||
$('#comodoInstalled').change(function() {
|
||||
|
||||
counterComodo = counterComodo + 1;
|
||||
$scope.ruleFiles = true;
|
||||
comodoInstalled = $(this).prop('checked');
|
||||
|
||||
if(counterComodo > 2) {
|
||||
if(counterComodo !== 0) {
|
||||
|
||||
if (comodoInstalled === true) {
|
||||
installModSecRulesPack('installComodo');
|
||||
@@ -1289,16 +1292,16 @@ app.controller('modSecRulesPack', function($scope, $http, $timeout, $window) {
|
||||
}
|
||||
}
|
||||
|
||||
counterComodo = counterComodo + 1;
|
||||
|
||||
});
|
||||
|
||||
|
||||
getOWASPAndComodoStatus();
|
||||
function getOWASPAndComodoStatus(){
|
||||
getOWASPAndComodoStatus(true);
|
||||
function getOWASPAndComodoStatus(updateToggle){
|
||||
|
||||
$scope.modsecLoading = false;
|
||||
|
||||
$('#owaspInstalled').bootstrapToggle('off');
|
||||
$('#comodoInstalled').bootstrapToggle('off');
|
||||
|
||||
url = "/firewall/getOWASPAndComodoStatus";
|
||||
|
||||
@@ -1321,20 +1324,35 @@ app.controller('modSecRulesPack', function($scope, $http, $timeout, $window) {
|
||||
|
||||
if(response.data.modSecInstalled === 1){
|
||||
|
||||
if (updateToggle === true){
|
||||
|
||||
if (response.data.owaspInstalled === 1) {
|
||||
$('#owaspInstalled').bootstrapToggle('on');
|
||||
$scope.owaspDisable = false;
|
||||
}else{
|
||||
} else {
|
||||
$('#owaspInstalled').bootstrapToggle('off');
|
||||
$scope.owaspDisable = true;
|
||||
}
|
||||
if (response.data.comodoInstalled === 1) {
|
||||
$('#comodoInstalled').bootstrapToggle('on');
|
||||
$scope.comodoDisable = false;
|
||||
}else{
|
||||
} else {
|
||||
$('#comodoInstalled').bootstrapToggle('off');
|
||||
$scope.comodoDisable = true;
|
||||
}
|
||||
}else{
|
||||
|
||||
if (response.data.owaspInstalled === 1) {
|
||||
$scope.owaspDisable = false;
|
||||
} else {
|
||||
$scope.owaspDisable = true;
|
||||
}
|
||||
if (response.data.comodoInstalled === 1) {
|
||||
$scope.comodoDisable = false;
|
||||
} else {
|
||||
$scope.comodoDisable = true;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1351,8 +1369,6 @@ app.controller('modSecRulesPack', function($scope, $http, $timeout, $window) {
|
||||
|
||||
$scope.modsecLoading = false;
|
||||
|
||||
|
||||
|
||||
url = "/firewall/installModSecRulesPack";
|
||||
|
||||
var data = {
|
||||
@@ -1384,7 +1400,7 @@ app.controller('modSecRulesPack', function($scope, $http, $timeout, $window) {
|
||||
$scope.installationFailed = true;
|
||||
$scope.installationSuccess = false;
|
||||
|
||||
$timeout(function() { $window.location.reload(); }, 3000);
|
||||
getOWASPAndComodoStatus(false);
|
||||
|
||||
}else{
|
||||
$scope.modsecLoading = true;
|
||||
@@ -1414,6 +1430,136 @@ app.controller('modSecRulesPack', function($scope, $http, $timeout, $window) {
|
||||
|
||||
}
|
||||
|
||||
/////
|
||||
|
||||
$scope.fetchRulesFile = function (packName) {
|
||||
|
||||
$scope.modsecLoading = false;
|
||||
$scope.ruleFiles = false;
|
||||
$scope.installationQuote = true;
|
||||
$scope.couldNotConnect = true;
|
||||
$scope.installationFailed = true;
|
||||
$scope.installationSuccess = true;
|
||||
|
||||
url = "/firewall/getRulesFiles";
|
||||
|
||||
var data = {
|
||||
packName:packName
|
||||
};
|
||||
|
||||
var config = {
|
||||
headers : {
|
||||
'X-CSRFToken': getCookie('csrftoken')
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
|
||||
$http.post(url, data,config).then(ListInitialDatas, cantLoadInitialDatas);
|
||||
|
||||
|
||||
function ListInitialDatas(response) {
|
||||
|
||||
$scope.modsecLoading = true;
|
||||
|
||||
if(response.data.fetchStatus === 1){
|
||||
$scope.records = JSON.parse(response.data.data);
|
||||
$scope.installationQuote = true;
|
||||
$scope.couldNotConnect = true;
|
||||
$scope.installationFailed = true;
|
||||
$scope.installationSuccess = false;
|
||||
|
||||
}
|
||||
else{
|
||||
$scope.installationQuote = true;
|
||||
$scope.couldNotConnect = true;
|
||||
$scope.installationFailed = false;
|
||||
$scope.installationSuccess = true;
|
||||
$scope.errorMessage = response.data.error_message;
|
||||
}
|
||||
|
||||
}
|
||||
function cantLoadInitialDatas(response) {
|
||||
$scope.modsecLoading = true;
|
||||
$scope.installationQuote = true;
|
||||
$scope.couldNotConnect = false;
|
||||
$scope.installationFailed = true;
|
||||
$scope.installationSuccess = true;
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
|
||||
$scope.removeRuleFile = function (fileName, packName, status) {
|
||||
|
||||
$scope.modsecLoading = false;
|
||||
|
||||
|
||||
|
||||
url = "/firewall/enableDisableRuleFile";
|
||||
|
||||
var data = {
|
||||
packName:packName,
|
||||
fileName:fileName,
|
||||
status:status
|
||||
};
|
||||
|
||||
var config = {
|
||||
headers : {
|
||||
'X-CSRFToken': getCookie('csrftoken')
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
$http.post(url, data,config).then(ListInitialDatas, cantLoadInitialDatas);
|
||||
|
||||
|
||||
function ListInitialDatas(response) {
|
||||
|
||||
$scope.modsecLoading = true;
|
||||
|
||||
if(response.data.saveStatus === 1){
|
||||
|
||||
$scope.modsecLoading = true;
|
||||
|
||||
//
|
||||
|
||||
$scope.installationQuote = true;
|
||||
$scope.couldNotConnect = true;
|
||||
$scope.installationFailed = true;
|
||||
$scope.installationSuccess = false;
|
||||
|
||||
$scope.fetchRulesFile(packName);
|
||||
|
||||
}else{
|
||||
$scope.modsecLoading = true;
|
||||
|
||||
//
|
||||
|
||||
$scope.installationQuote = true;
|
||||
$scope.couldNotConnect = true;
|
||||
$scope.installationFailed = false;
|
||||
$scope.installationSuccess = true;
|
||||
|
||||
$scope.errorMessage = response.data.error_message;
|
||||
}
|
||||
|
||||
}
|
||||
function cantLoadInitialDatas(response) {
|
||||
$scope.modsecLoading = true;
|
||||
|
||||
//
|
||||
|
||||
$scope.installationQuote = true;
|
||||
$scope.couldNotConnect = false;
|
||||
$scope.installationFailed = true;
|
||||
$scope.installationSuccess = true;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
});
|
||||
|
||||
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
|
||||
{% if modSecInstalled == 0 %}
|
||||
<div class="content-box-wrapper">
|
||||
<div class="row">
|
||||
<div class="row">
|
||||
|
||||
<div class="col-md-12 text-center" style="margin-bottom: 2%;">
|
||||
<h3>{% trans "ModSecurity is not installed " %}
|
||||
@@ -39,63 +39,92 @@
|
||||
<!----- ModeSec Install Log box ----------------->
|
||||
{% else %}
|
||||
|
||||
<div class="content-box-wrapper">
|
||||
<div class="content-box-wrapper">
|
||||
<div class="row">
|
||||
|
||||
<table cellpadding="0" cellspacing="0" border="0" class="table text-center" id="datatable-example">
|
||||
<thead>
|
||||
<tr>
|
||||
<th style="width: 33%" >Package</th>
|
||||
<th style="width: 33%">Status</th>
|
||||
<th style="width: 33%"></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<table cellpadding="0" cellspacing="0" border="0" class="table text-center" id="datatable-example">
|
||||
<thead>
|
||||
<tr>
|
||||
<th style="width: 33%" >Package</th>
|
||||
<th style="width: 33%">Status</th>
|
||||
<th style="width: 33%"></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
|
||||
<tr>
|
||||
<td>OWASP ModSecurity Core Rules</td>
|
||||
<td><input type="checkbox" id="owaspInstalled" data-toggle="toggle"></td>
|
||||
<td>
|
||||
<button ng-disabled="owaspDisable" ng-click="installModSec()" class="btn btn-alt btn-hover btn-blue-alt">
|
||||
<span >{% trans "Configure" %}</span>
|
||||
<i class="glyph-icon icon-arrow-right"></i>
|
||||
</button>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>OWASP ModSecurity Core Rules</td>
|
||||
<td><input type="checkbox" id="owaspInstalled" data-toggle="toggle"></td>
|
||||
<td>
|
||||
<button ng-disabled="owaspDisable" ng-click="fetchRulesFile('owasp')" class="btn btn-alt btn-hover btn-blue-alt">
|
||||
<span >{% trans "Configure" %}</span>
|
||||
<i class="glyph-icon icon-arrow-right"></i>
|
||||
</button>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td>COMODO ModSecurity 3.0</td>
|
||||
<td><input type="checkbox" id="comodoInstalled" data-toggle="toggle"></td>
|
||||
<td>
|
||||
<button ng-disabled="comodoDisable" ng-click="installModSec()" class="btn btn-alt btn-hover btn-blue-alt">
|
||||
<span>{% trans "Configure" %}</span>
|
||||
<i class="glyph-icon icon-arrow-right"></i>
|
||||
</button>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<tr>
|
||||
<td>COMODO ModSecurity 3.0</td>
|
||||
<td><input type="checkbox" id="comodoInstalled" data-toggle="toggle"></td>
|
||||
<td>
|
||||
<button ng-disabled="comodoDisable" ng-click="fetchRulesFile('comodo')" class="btn btn-alt btn-hover btn-blue-alt">
|
||||
<span>{% trans "Configure" %}</span>
|
||||
<i class="glyph-icon icon-arrow-right"></i>
|
||||
</button>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<div class="col-sm-3"></div>
|
||||
<div class="col-sm-3"></div>
|
||||
|
||||
<div class="col-sm-6">
|
||||
<div class="col-sm-6">
|
||||
|
||||
<div ng-hide="installationQuote" class="alert alert-success">
|
||||
<p>{% trans "Operation successful." %}</p>
|
||||
</div>
|
||||
<div ng-hide="installationQuote" class="alert alert-success">
|
||||
<p>{% trans "Operation successful." %}</p>
|
||||
</div>
|
||||
|
||||
<div ng-hide="couldNotConnect" class="alert alert-danger">
|
||||
<p>{% trans "Could not connect. Please refresh this page." %} </p>
|
||||
</div>
|
||||
<div ng-hide="couldNotConnect" class="alert alert-danger">
|
||||
<p>{% trans "Could not connect. Please refresh this page." %} </p>
|
||||
</div>
|
||||
|
||||
<div ng-hide="installationFailed" class="alert alert-danger">
|
||||
<p>{% trans "Installation failed." %} {$ errorMessage $}</p>
|
||||
</div>
|
||||
<div ng-hide="installationFailed" class="alert alert-danger">
|
||||
<p>{% trans "Operation failed, Error message: " %} {$ errorMessage $}</p>
|
||||
</div>
|
||||
|
||||
<div ng-hide="installationSuccess" class="alert alert-success">
|
||||
<p>{% trans "Operation successful, refreshing page in 3 seconds.." %}</p>
|
||||
</div>
|
||||
</div>
|
||||
<div ng-hide="installationSuccess" class="alert alert-success">
|
||||
<p>{% trans "Operation successful." %}</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!------ List of rule files --------------->
|
||||
|
||||
<div ng-hide="ruleFiles" class="form-group">
|
||||
|
||||
<div class="col-sm-12">
|
||||
|
||||
<table class="table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>{% trans "ID" %}</th>
|
||||
<th>{% trans "Supplier" %}</th>
|
||||
<th>{% trans "Filename" %}</th>
|
||||
<th>{% trans "Status" %}</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr ng-repeat="record in records track by $index">
|
||||
<td ng-bind="record.id"></td>
|
||||
<td ng-bind="record.packName"></td>
|
||||
<td ng-bind="record.fileName"></td>
|
||||
<td ><input ng-click="removeRuleFile(record.fileName,record.packName,record.status)" ng-checked="record.status" type="checkbox" ></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!------ List of rule files --------------->
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -36,6 +36,8 @@ urlpatterns = [
|
||||
url(r'^modSecRulesPacks', views.modSecRulesPacks, name='modSecRulesPacks'),
|
||||
url(r'^getOWASPAndComodoStatus', views.getOWASPAndComodoStatus, name='getOWASPAndComodoStatus'),
|
||||
url(r'^installModSecRulesPack', views.installModSecRulesPack, name='installModSecRulesPack'),
|
||||
url(r'^getRulesFiles', views.getRulesFiles, name='getRulesFiles'),
|
||||
url(r'^enableDisableRuleFile', views.enableDisableRuleFile, name='enableDisableRuleFile'),
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1121,3 +1121,107 @@ def installModSecRulesPack(request):
|
||||
json_data = json.dumps(data_ret)
|
||||
return HttpResponse(json_data)
|
||||
|
||||
def getRulesFiles(request):
|
||||
try:
|
||||
val = request.session['userID']
|
||||
try:
|
||||
if request.method == 'POST':
|
||||
|
||||
|
||||
data = json.loads(request.body)
|
||||
packName = data['packName']
|
||||
|
||||
confPath = os.path.join(virtualHostUtilities.Server_root, 'conf/httpd_config.conf')
|
||||
|
||||
command = "sudo cat " + confPath
|
||||
httpdConfig = subprocess.check_output(shlex.split(command)).splitlines()
|
||||
|
||||
json_data = "["
|
||||
checker = 0
|
||||
counter = 0
|
||||
|
||||
for items in httpdConfig:
|
||||
|
||||
if items.find('modsec/'+packName) > -1:
|
||||
counter = counter + 1
|
||||
if items[0] == '#':
|
||||
status = False
|
||||
else:
|
||||
status = True
|
||||
|
||||
fileName = items.lstrip('#')
|
||||
fileName = fileName.split('/')[-1]
|
||||
|
||||
dic = {
|
||||
'id': counter,
|
||||
'fileName': fileName,
|
||||
'packName':packName,
|
||||
'status': status,
|
||||
|
||||
}
|
||||
|
||||
if checker == 0:
|
||||
json_data = json_data + json.dumps(dic)
|
||||
checker = 1
|
||||
else:
|
||||
json_data = json_data + ',' + json.dumps(dic)
|
||||
|
||||
|
||||
json_data = json_data + ']'
|
||||
final_json = json.dumps({'fetchStatus': 1, 'error_message': "None","data":json_data})
|
||||
return HttpResponse(final_json)
|
||||
|
||||
except BaseException,msg:
|
||||
final_dic = {'fetchStatus': 0, 'error_message': str(msg)}
|
||||
final_json = json.dumps(final_dic)
|
||||
|
||||
return HttpResponse(final_json)
|
||||
except KeyError:
|
||||
final_dic = {'fetchStatus': 0, 'error_message': "Not Logged In, please refresh the page or login again."}
|
||||
final_json = json.dumps(final_dic)
|
||||
return HttpResponse(final_json)
|
||||
|
||||
def enableDisableRuleFile(request):
|
||||
try:
|
||||
val = request.session['userID']
|
||||
try:
|
||||
if request.method == 'POST':
|
||||
|
||||
data = json.loads(request.body)
|
||||
|
||||
packName = data['packName']
|
||||
fileName = data['fileName']
|
||||
currentStatus = data['status']
|
||||
|
||||
if currentStatus == True:
|
||||
functionName = 'disableRuleFile'
|
||||
else:
|
||||
functionName = 'enableRuleFile'
|
||||
|
||||
|
||||
execPath = "sudo python " + virtualHostUtilities.cyberPanel + "/plogical/modSec.py"
|
||||
|
||||
execPath = execPath + " " + functionName + ' --packName ' + packName + ' --fileName ' + fileName
|
||||
|
||||
output = subprocess.check_output(shlex.split(execPath))
|
||||
|
||||
if output.find("1,None") > -1:
|
||||
installUtilities.reStartLiteSpeed()
|
||||
data_ret = {'saveStatus': 1, 'error_message': "None"}
|
||||
json_data = json.dumps(data_ret)
|
||||
return HttpResponse(json_data)
|
||||
else:
|
||||
data_ret = {'saveStatus': 0, 'error_message': output}
|
||||
json_data = json.dumps(data_ret)
|
||||
return HttpResponse(json_data)
|
||||
|
||||
|
||||
except BaseException,msg:
|
||||
data_ret = {'saveStatus': 0, 'error_message': str(msg)}
|
||||
json_data = json.dumps(data_ret)
|
||||
return HttpResponse(json_data)
|
||||
except BaseException, msg:
|
||||
data_ret = {'saveStatus': 0, 'error_message': str(msg)}
|
||||
json_data = json.dumps(data_ret)
|
||||
return HttpResponse(json_data)
|
||||
|
||||
|
||||
@@ -389,6 +389,53 @@ modsecurity_rules_file /usr/local/lsws/conf/modsec/owasp/rules/RESPONSE-999-EXCL
|
||||
str(msg) + " [disableOWASP]")
|
||||
print "0," + str(msg)
|
||||
|
||||
@staticmethod
|
||||
def disableRuleFile(fileName, packName):
|
||||
try:
|
||||
|
||||
confFile = os.path.join(virtualHostUtilities.Server_root, "conf/httpd_config.conf")
|
||||
confData = open(confFile).readlines()
|
||||
conf = open(confFile, 'w')
|
||||
|
||||
for items in confData:
|
||||
if items.find('modsec/'+packName) > -1 and items.find(fileName) > -1:
|
||||
conf.write("#" + items)
|
||||
else:
|
||||
conf.writelines(items)
|
||||
|
||||
conf.close()
|
||||
|
||||
print "1,None"
|
||||
|
||||
except BaseException, msg:
|
||||
logging.CyberCPLogFileWriter.writeToFile(
|
||||
str(msg) + " [disableRuleFile]")
|
||||
print "0," + str(msg)
|
||||
|
||||
@staticmethod
|
||||
def enableRuleFile(fileName, packName):
|
||||
try:
|
||||
|
||||
confFile = os.path.join(virtualHostUtilities.Server_root, "conf/httpd_config.conf")
|
||||
confData = open(confFile).readlines()
|
||||
conf = open(confFile, 'w')
|
||||
|
||||
for items in confData:
|
||||
if items.find('modsec/' + packName) > -1 and items.find(fileName) > -1:
|
||||
conf.write(items.lstrip('#'))
|
||||
else:
|
||||
conf.writelines(items)
|
||||
|
||||
conf.close()
|
||||
|
||||
print "1,None"
|
||||
|
||||
except BaseException, msg:
|
||||
logging.CyberCPLogFileWriter.writeToFile(
|
||||
str(msg) + " [enableRuleFile]")
|
||||
print "0," + str(msg)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -399,6 +446,8 @@ def main():
|
||||
parser.add_argument('function', help='Specific a function to call!')
|
||||
|
||||
parser.add_argument('--tempConfigPath', help='Temporary path to configurations data!')
|
||||
parser.add_argument('--packName', help='ModSecurity supplier name!')
|
||||
parser.add_argument('--fileName', help='Filename to enable or disable!')
|
||||
|
||||
args = parser.parse_args()
|
||||
|
||||
@@ -420,6 +469,10 @@ def main():
|
||||
modSec.installComodo()
|
||||
elif args.function == "disableComodo":
|
||||
modSec.disableComodo()
|
||||
elif args.function == "disableRuleFile":
|
||||
modSec.disableRuleFile(args.fileName, args.packName)
|
||||
elif args.function == "enableRuleFile":
|
||||
modSec.enableRuleFile(args.fileName, args.packName)
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
@@ -1252,8 +1252,9 @@ app.controller('modSecRulesPack', function($scope, $http, $timeout, $window) {
|
||||
$scope.couldNotConnect = true;
|
||||
$scope.installationFailed = true;
|
||||
$scope.installationSuccess = true;
|
||||
$scope.ruleFiles = true;
|
||||
|
||||
///// ModSec configs
|
||||
/////
|
||||
|
||||
var owaspInstalled = false;
|
||||
var comodoInstalled = false;
|
||||
@@ -1262,25 +1263,27 @@ app.controller('modSecRulesPack', function($scope, $http, $timeout, $window) {
|
||||
|
||||
|
||||
$('#owaspInstalled').change(function() {
|
||||
counterOWASP = counterOWASP + 1;
|
||||
|
||||
owaspInstalled = $(this).prop('checked');
|
||||
$scope.ruleFiles = true;
|
||||
|
||||
|
||||
if(counterOWASP > 2) {
|
||||
if(counterOWASP !== 0) {
|
||||
if (owaspInstalled === true) {
|
||||
installModSecRulesPack('installOWASP');
|
||||
} else {
|
||||
installModSecRulesPack('disableOWASP')
|
||||
}
|
||||
}
|
||||
|
||||
counterOWASP = counterOWASP + 1;
|
||||
});
|
||||
|
||||
$('#comodoInstalled').change(function() {
|
||||
|
||||
counterComodo = counterComodo + 1;
|
||||
$scope.ruleFiles = true;
|
||||
comodoInstalled = $(this).prop('checked');
|
||||
|
||||
if(counterComodo > 2) {
|
||||
if(counterComodo !== 0) {
|
||||
|
||||
if (comodoInstalled === true) {
|
||||
installModSecRulesPack('installComodo');
|
||||
@@ -1289,16 +1292,16 @@ app.controller('modSecRulesPack', function($scope, $http, $timeout, $window) {
|
||||
}
|
||||
}
|
||||
|
||||
counterComodo = counterComodo + 1;
|
||||
|
||||
});
|
||||
|
||||
|
||||
getOWASPAndComodoStatus();
|
||||
function getOWASPAndComodoStatus(){
|
||||
getOWASPAndComodoStatus(true);
|
||||
function getOWASPAndComodoStatus(updateToggle){
|
||||
|
||||
$scope.modsecLoading = false;
|
||||
|
||||
$('#owaspInstalled').bootstrapToggle('off');
|
||||
$('#comodoInstalled').bootstrapToggle('off');
|
||||
|
||||
url = "/firewall/getOWASPAndComodoStatus";
|
||||
|
||||
@@ -1321,20 +1324,35 @@ app.controller('modSecRulesPack', function($scope, $http, $timeout, $window) {
|
||||
|
||||
if(response.data.modSecInstalled === 1){
|
||||
|
||||
if (updateToggle === true){
|
||||
|
||||
if (response.data.owaspInstalled === 1) {
|
||||
$('#owaspInstalled').bootstrapToggle('on');
|
||||
$scope.owaspDisable = false;
|
||||
}else{
|
||||
} else {
|
||||
$('#owaspInstalled').bootstrapToggle('off');
|
||||
$scope.owaspDisable = true;
|
||||
}
|
||||
if (response.data.comodoInstalled === 1) {
|
||||
$('#comodoInstalled').bootstrapToggle('on');
|
||||
$scope.comodoDisable = false;
|
||||
}else{
|
||||
} else {
|
||||
$('#comodoInstalled').bootstrapToggle('off');
|
||||
$scope.comodoDisable = true;
|
||||
}
|
||||
}else{
|
||||
|
||||
if (response.data.owaspInstalled === 1) {
|
||||
$scope.owaspDisable = false;
|
||||
} else {
|
||||
$scope.owaspDisable = true;
|
||||
}
|
||||
if (response.data.comodoInstalled === 1) {
|
||||
$scope.comodoDisable = false;
|
||||
} else {
|
||||
$scope.comodoDisable = true;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1351,8 +1369,6 @@ app.controller('modSecRulesPack', function($scope, $http, $timeout, $window) {
|
||||
|
||||
$scope.modsecLoading = false;
|
||||
|
||||
|
||||
|
||||
url = "/firewall/installModSecRulesPack";
|
||||
|
||||
var data = {
|
||||
@@ -1384,7 +1400,7 @@ app.controller('modSecRulesPack', function($scope, $http, $timeout, $window) {
|
||||
$scope.installationFailed = true;
|
||||
$scope.installationSuccess = false;
|
||||
|
||||
$timeout(function() { $window.location.reload(); }, 3000);
|
||||
getOWASPAndComodoStatus(false);
|
||||
|
||||
}else{
|
||||
$scope.modsecLoading = true;
|
||||
@@ -1414,6 +1430,136 @@ app.controller('modSecRulesPack', function($scope, $http, $timeout, $window) {
|
||||
|
||||
}
|
||||
|
||||
/////
|
||||
|
||||
$scope.fetchRulesFile = function (packName) {
|
||||
|
||||
$scope.modsecLoading = false;
|
||||
$scope.ruleFiles = false;
|
||||
$scope.installationQuote = true;
|
||||
$scope.couldNotConnect = true;
|
||||
$scope.installationFailed = true;
|
||||
$scope.installationSuccess = true;
|
||||
|
||||
url = "/firewall/getRulesFiles";
|
||||
|
||||
var data = {
|
||||
packName:packName
|
||||
};
|
||||
|
||||
var config = {
|
||||
headers : {
|
||||
'X-CSRFToken': getCookie('csrftoken')
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
|
||||
$http.post(url, data,config).then(ListInitialDatas, cantLoadInitialDatas);
|
||||
|
||||
|
||||
function ListInitialDatas(response) {
|
||||
|
||||
$scope.modsecLoading = true;
|
||||
|
||||
if(response.data.fetchStatus === 1){
|
||||
$scope.records = JSON.parse(response.data.data);
|
||||
$scope.installationQuote = true;
|
||||
$scope.couldNotConnect = true;
|
||||
$scope.installationFailed = true;
|
||||
$scope.installationSuccess = false;
|
||||
|
||||
}
|
||||
else{
|
||||
$scope.installationQuote = true;
|
||||
$scope.couldNotConnect = true;
|
||||
$scope.installationFailed = false;
|
||||
$scope.installationSuccess = true;
|
||||
$scope.errorMessage = response.data.error_message;
|
||||
}
|
||||
|
||||
}
|
||||
function cantLoadInitialDatas(response) {
|
||||
$scope.modsecLoading = true;
|
||||
$scope.installationQuote = true;
|
||||
$scope.couldNotConnect = false;
|
||||
$scope.installationFailed = true;
|
||||
$scope.installationSuccess = true;
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
|
||||
$scope.removeRuleFile = function (fileName, packName, status) {
|
||||
|
||||
$scope.modsecLoading = false;
|
||||
|
||||
|
||||
|
||||
url = "/firewall/enableDisableRuleFile";
|
||||
|
||||
var data = {
|
||||
packName:packName,
|
||||
fileName:fileName,
|
||||
status:status
|
||||
};
|
||||
|
||||
var config = {
|
||||
headers : {
|
||||
'X-CSRFToken': getCookie('csrftoken')
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
$http.post(url, data,config).then(ListInitialDatas, cantLoadInitialDatas);
|
||||
|
||||
|
||||
function ListInitialDatas(response) {
|
||||
|
||||
$scope.modsecLoading = true;
|
||||
|
||||
if(response.data.saveStatus === 1){
|
||||
|
||||
$scope.modsecLoading = true;
|
||||
|
||||
//
|
||||
|
||||
$scope.installationQuote = true;
|
||||
$scope.couldNotConnect = true;
|
||||
$scope.installationFailed = true;
|
||||
$scope.installationSuccess = false;
|
||||
|
||||
$scope.fetchRulesFile(packName);
|
||||
|
||||
}else{
|
||||
$scope.modsecLoading = true;
|
||||
|
||||
//
|
||||
|
||||
$scope.installationQuote = true;
|
||||
$scope.couldNotConnect = true;
|
||||
$scope.installationFailed = false;
|
||||
$scope.installationSuccess = true;
|
||||
|
||||
$scope.errorMessage = response.data.error_message;
|
||||
}
|
||||
|
||||
}
|
||||
function cantLoadInitialDatas(response) {
|
||||
$scope.modsecLoading = true;
|
||||
|
||||
//
|
||||
|
||||
$scope.installationQuote = true;
|
||||
$scope.couldNotConnect = false;
|
||||
$scope.installationFailed = true;
|
||||
$scope.installationSuccess = true;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
});
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user