diff --git a/app/add.py b/app/add.py index d8c58085..58ee6e52 100644 --- a/app/add.py +++ b/app/add.py @@ -133,10 +133,15 @@ elif form.getvalue('mode') is not None: options_split += " option forceclose\n" elif force_close == "3": options_split += " option http-pretend-keepalive\n" - + + if form.getvalue('whitelist') is not None: + options_split += " tcp-request connection accept if { src -f " + haproxy_dir + "/white/" + form.getvalue( + 'whitelist') + " }\n" + if form.getvalue('blacklist') is not None: - options_split += " tcp-request connection reject if { src -f "+haproxy_dir+"/black/"+form.getvalue('blacklist')+" }\n" - + options_split += " tcp-request connection reject if { src -f " + haproxy_dir + "/black/" + form.getvalue( + 'blacklist') + " }\n" + if form.getvalue('cookie'): cookie = " cookie "+form.getvalue('cookie_name') if form.getvalue('cookie_domain'): @@ -220,6 +225,13 @@ elif form.getvalue('mode') is not None: i += 1 + if form.getvalue('circuit_breaking') == "1": + observe = 'observe ' + form.getvalue('circuit_breaking_observe') + error_limit = ' error-limit ' + form.getvalue('circuit_breaking_error_limit') + circuit_breaking_on_error = ' on-error ' + form.getvalue('circuit_breaking_on_error') + default_server = ' default-server ' + observe + error_limit + circuit_breaking_on_error + '\n' + servers_split += default_server + if form.getvalue('servers') is not None: servers = form.getlist('servers') server_port = form.getlist('server_port') diff --git a/app/templates/add.html b/app/templates/add.html index 0a9790df..a967c360 100644 --- a/app/templates/add.html +++ b/app/templates/add.html @@ -11,6 +11,9 @@ 'option ldap-check':'Check a LDAP service', 'option mysql-check':'Check a MySql Service', 'option pgsql-check':'Check a PgSQL Service', 'option redis-check': 'Check a Redis Service', 'option smtpchk':'Check a SMTP service'} %} +{% set observe = {'layer7':'layer7', 'layer4': 'layer4'} %} +{% set on_error = {'mark-down':'mark-down', 'fastinter': 'fastinter', 'fail-check':'fail-check', +'sudden-death':'sudden-death'} %} {% set if_values = dict() %} {% set if_values = {'1':'Host name starts with','2':'Host name ends with','3':'Path starts with','4':'Path ends with', '6': 'Src ip'} %} @@ -156,7 +159,8 @@ {{ checkbox('slow_atack', title='Slow attack protect', desc='Slow attack') }} {{ checkbox('ddos', title='DDOS attack protect', desc='DDOS') }} - {{ checkbox('blacklist_checkbox', title='Use blacklist', desc='Blacklist') }} + {{ checkbox('whitelist_checkbox', title='Add whitelist', desc='Whitelist') }} + {{ checkbox('blacklist_checkbox', title='Add blacklist', desc='Blacklist') }} {{ checkbox('waf', title='Web application firewall', desc='WAF', value='1') }} {{ checkbox('antibot', title='Antibot Protection', desc='Antibot', value='1') }} @@ -164,6 +168,10 @@
Enter a blacklist name, or press the "down" button:
{{ input('blacklist-hide-input', size='39', name="blacklist", placeholder="blacklist.lst") }} + @@ -241,6 +249,17 @@ {% set values = {'4':'4','5':'5','6':'6'} %} {{ select('fall-listen', name='fall', values=values, first='fall', class='force_close') }} +
+ {{ checkbox('circuit_breaking_listen', name="circuit_breaking", desc='Circuit Breaking', title='Enable Circuit Breaking', value='1') }} +
+ @@ -369,7 +388,8 @@ {{ checkbox('slow_atack1', title='Slow attack protect', desc='Slow attack') }} {{ checkbox('ddos1', title='DDOS attack protect', desc='DDOS') }} - {{ checkbox('blacklist_checkbox1', title='Use blacklist', desc='Blacklist') }} + {{ checkbox('whitelist_checkbox1', title='Add whitelist', desc='Whitelist') }} + {{ checkbox('blacklist_checkbox1', title='Add blacklist', desc='Blacklist') }} {{ checkbox('waf2', name='waf', title='Web application firewall', desc='WAF', value='1') }} {{ checkbox('antibot1', title='Antibot Protection', desc='Antibot', value='1') }} @@ -377,6 +397,10 @@
Enter a blacklist name, or press the "down" button::
{{ input('blacklist-hide-input1', size='39', name="blacklist", placeholder="blacklist.lst") }} + @@ -607,6 +631,17 @@ {% set values = {'4':'4','5':'5','6':'6'} %} {{ select('fall-backend', name='fall', values=values, first='fall', class='force_close') }} +
+ {{ checkbox('circuit_breaking_backend', name="circuit_breaking", desc='Circuit Breaking', title='Enable Circuit Breaking', value='1') }} +
+ diff --git a/inc/add.js b/inc/add.js index a08d4ff0..5f8f58f0 100644 --- a/inc/add.js +++ b/inc/add.js @@ -116,24 +116,23 @@ $( function() { } else { $( "#controlgroup-listen" ).hide( "fast" ); } - $( "#check-servers-listen" ).click( function(){ - if ($('#check-servers-listen').is(':checked')) { - $( "#rise-listen" ).attr('required',true); - $( "#fall-listen" ).attr('required',true); - $( "#inter-listen" ).attr('required',true); - $( "#inter-listen" ).selectmenu( "option", "disabled", false ); - $( "#fall-listen" ).selectmenu( "option", "disabled", false ); - $( "#rise-listen" ).selectmenu( "option", "disabled", false ); - } else { - $( "#rise-listen" ).attr('required',false); - $( "#fall-listen" ).attr('required',false); - $( "#inter-listen" ).attr('required',false); - $( "#inter-listen" ).selectmenu( "option", "disabled", true ); - $( "#fall-listen" ).selectmenu( "option", "disabled", true ); - $( "#rise-listen" ).selectmenu( "option", "disabled", true ); - } - }); - + $( "#check-servers-listen" ).click( function(){ + if ($('#check-servers-listen').is(':checked')) { + $( "#rise-listen" ).attr('required',true); + $( "#fall-listen" ).attr('required',true); + $( "#inter-listen" ).attr('required',true); + $( "#inter-listen" ).selectmenu( "option", "disabled", false ); + $( "#fall-listen" ).selectmenu( "option", "disabled", false ); + $( "#rise-listen" ).selectmenu( "option", "disabled", false ); + } else { + $( "#rise-listen" ).attr('required',false); + $( "#fall-listen" ).attr('required',false); + $( "#inter-listen" ).attr('required',false); + $( "#inter-listen" ).selectmenu( "option", "disabled", true ); + $( "#fall-listen" ).selectmenu( "option", "disabled", true ); + $( "#rise-listen" ).selectmenu( "option", "disabled", true ); + } + }); }); $( "#controlgroup-backend-show" ).click( function(){ if ($('#controlgroup-backend-show').is(':checked')) { @@ -147,6 +146,20 @@ $( function() { $( "#controlgroup-backend" ).hide( "fast" ); } }); + $( "#circuit_breaking_listen" ).click( function(){ + if ($('#circuit_breaking_listen').is(':checked')) { + $( "#circuit_breaking_listen_div" ).show( "fast" ); + } else { + $( "#circuit_breaking_listen_div" ).hide( "fast" ); + } + }); + $( "#circuit_breaking_backend" ).click( function(){ + if ($('#circuit_breaking_backend').is(':checked')) { + $( "#circuit_breaking_backend_div" ).show( "fast" ); + } else { + $( "#circuit_breaking_backend_div" ).hide( "fast" ); + } + }); $( "#cookie" ).click( function(){ if ($('#cookie').is(':checked')) { $("#cookie_name" ).attr('required',true); @@ -334,6 +347,50 @@ $( function() { autoFocus: true, minLength: -1 }); + $( "#whitelist-hide-input" ).autocomplete({ + source: function( request, response ) { + if ( request.term == "" ) { + request.term = 1 + } + $.ajax( { + url: "options.py", + data: { + get_lists: request.term, + color: "white", + group: $("#group").val(), + token: $('#token').val() + }, + success: function( data ) { + data = data.replace(/\s+/g,' '); + response(data.split(" ")); + } + } ); + }, + autoFocus: true, + minLength: -1 + }); + $( "#whitelist-hide-input1" ).autocomplete({ + source: function( request, response ) { + if ( request.term == "" ) { + request.term = 1 + } + $.ajax( { + url: "options.py", + data: { + get_lists: request.term, + color: "white", + group: $("#group").val(), + token: $('#token').val() + }, + success: function( data ) { + data = data.replace(/\s+/g,' '); + response(data.split(" ")); + } + } ); + }, + autoFocus: true, + minLength: -1 + }); $( "#new-option" ).autocomplete({ source: availableTags, autoFocus: true, @@ -645,6 +702,24 @@ $( function() { $( "#blacklist-hide-input1" ).prop('required',false); } }); + $( "#whitelist_checkbox" ).click( function(){ + if ($('#whitelist_checkbox').is(':checked')) { + $( "#whitelist-hide" ).show( "fast" ); + $( "#whitelist-hide-input" ).attr('required',true); + } else { + $( "#whitelist-hide" ).hide( "fast" ); + $( "#whitelist-hide-input" ).prop('required',false); + } + }); + $( "#whitelist_checkbox1" ).click( function(){ + if ($('#whitelist_checkbox1').is(':checked')) { + $( "#whitelist-hide1" ).show( "fast" ); + $( "#whitelist-hide-input1" ).attr('required',true); + } else { + $( "#whitelist-hide1" ).hide( "fast" ); + $( "#whitelist-hide-input1" ).prop('required',false); + } + }); $( ":regex(id, template)" ).click( function(){ if ($(':regex(id, template)').is(':checked')) { $( ".prefix" ).show( "fast" );