Pavel Loginov 2021-04-06 15:36:43 +06:00
parent 4d0d94fca9
commit a27913d0c6
3 changed files with 145 additions and 23 deletions

View File

@ -133,10 +133,15 @@ elif form.getvalue('mode') is not None:
options_split += " option forceclose\n" options_split += " option forceclose\n"
elif force_close == "3": elif force_close == "3":
options_split += " option http-pretend-keepalive\n" 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: 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'): if form.getvalue('cookie'):
cookie = " cookie "+form.getvalue('cookie_name') cookie = " cookie "+form.getvalue('cookie_name')
if form.getvalue('cookie_domain'): if form.getvalue('cookie_domain'):
@ -220,6 +225,13 @@ elif form.getvalue('mode') is not None:
i += 1 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: if form.getvalue('servers') is not None:
servers = form.getlist('servers') servers = form.getlist('servers')
server_port = form.getlist('server_port') server_port = form.getlist('server_port')

View File

@ -11,6 +11,9 @@
'option ldap-check':'Check a LDAP service', 'option mysql-check':'Check a MySql Service', '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 pgsql-check':'Check a PgSQL Service', 'option redis-check': 'Check a Redis Service',
'option smtpchk':'Check a SMTP 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 = 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'} %} {% 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 @@
<span class="controlgroup"> <span class="controlgroup">
{{ checkbox('slow_atack', title='Slow attack protect', desc='Slow attack') }} {{ checkbox('slow_atack', title='Slow attack protect', desc='Slow attack') }}
{{ checkbox('ddos', title='DDOS attack protect', desc='DDOS') }} {{ 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('waf', title='Web application firewall', desc='WAF', value='1') }}
{{ checkbox('antibot', title='Antibot Protection', desc='Antibot', value='1') }} {{ checkbox('antibot', title='Antibot Protection', desc='Antibot', value='1') }}
</span> </span>
@ -164,6 +168,10 @@
<br /><span class="tooltip tooltipTop">Enter a blacklist name, or press the "down" button:</span><br /> <br /><span class="tooltip tooltipTop">Enter a blacklist name, or press the "down" button:</span><br />
{{ input('blacklist-hide-input', size='39', name="blacklist", placeholder="blacklist.lst") }} {{ input('blacklist-hide-input', size='39', name="blacklist", placeholder="blacklist.lst") }}
</div> </div>
<div id="whitelist-hide" style="display: none;">
<br /><span class="tooltip tooltipTop">Enter a whitelist name, or press the "down" button::</span><br />
{{ input('whitelist-hide-input', size='39', name="whitelist", placeholder="whitelist.lst") }}
</div>
</td> </td>
</tr> </tr>
<tr class="advance"> <tr class="advance">
@ -241,6 +249,17 @@
{% set values = {'4':'4','5':'5','6':'6'} %} {% set values = {'4':'4','5':'5','6':'6'} %}
{{ select('fall-listen', name='fall', values=values, first='fall', class='force_close') }} {{ select('fall-listen', name='fall', values=values, first='fall', class='force_close') }}
</div> </div>
<div style="display: block">
{{ checkbox('circuit_breaking_listen', name="circuit_breaking", desc='Circuit Breaking', title='Enable Circuit Breaking', value='1') }}
</div>
<div id="circuit_breaking_listen_div" style="display: none">
Observe:
{{ select('circuit_breaking_observe', values=observe, class='force_close') }}
error-limit: {{ input('circuit_breaking_error_limit', type='number', value='50', style='width: 50px;') }}
on-error:
{{ select('circuit_breaking_on_error', values=on_error, class='force_close') }}
<div class="tooltip tooltipTop">Read more about Circuit Breaking <a href="https://haproxy-wi.org/description.py?description=circuit_breaking" title="Circuit Breaking" target="_blank">here</a></div>
</div>
</td> </td>
</tr> </tr>
<tr class="advance-show"> <tr class="advance-show">
@ -369,7 +388,8 @@
<span class="controlgroup"> <span class="controlgroup">
{{ checkbox('slow_atack1', title='Slow attack protect', desc='Slow attack') }} {{ checkbox('slow_atack1', title='Slow attack protect', desc='Slow attack') }}
{{ checkbox('ddos1', title='DDOS attack protect', desc='DDOS') }} {{ 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('waf2', name='waf', title='Web application firewall', desc='WAF', value='1') }}
{{ checkbox('antibot1', title='Antibot Protection', desc='Antibot', value='1') }} {{ checkbox('antibot1', title='Antibot Protection', desc='Antibot', value='1') }}
</span> </span>
@ -377,6 +397,10 @@
<br /><span class="tooltip tooltipTop">Enter a blacklist name, or press the "down" button::</span><br /> <br /><span class="tooltip tooltipTop">Enter a blacklist name, or press the "down" button::</span><br />
{{ input('blacklist-hide-input1', size='39', name="blacklist", placeholder="blacklist.lst") }} {{ input('blacklist-hide-input1', size='39', name="blacklist", placeholder="blacklist.lst") }}
</div> </div>
<div id="whitelist-hide1" style="display: none;">
<br /><span class="tooltip tooltipTop">Enter a whitelist name, or press the "down" button::</span><br />
{{ input('whitelist-hide-input1', size='39', name="whitelist", placeholder="whitelist.lst") }}
</div>
</td> </td>
</tr> </tr>
<tr class="advance"> <tr class="advance">
@ -607,6 +631,17 @@
{% set values = {'4':'4','5':'5','6':'6'} %} {% set values = {'4':'4','5':'5','6':'6'} %}
{{ select('fall-backend', name='fall', values=values, first='fall', class='force_close') }} {{ select('fall-backend', name='fall', values=values, first='fall', class='force_close') }}
</div> </div>
<div style="display: block">
{{ checkbox('circuit_breaking_backend', name="circuit_breaking", desc='Circuit Breaking', title='Enable Circuit Breaking', value='1') }}
</div>
<div id="circuit_breaking_backend_div" style="display: none">
Observe:
{{ select('circuit_breaking_observe', values=observe, class='force_close') }}
error-limit: {{ input('circuit_breaking_error_limit', type='number', value='50', style='width: 50px;') }}
on-error:
{{ select('circuit_breaking_on_error', values=on_error, class='force_close') }}
<div class="tooltip tooltipTop">Read more about Circuit Breaking <a href="https://haproxy-wi.org/description.py?description=circuit_breaking" title="Circuit Breaking" target="_blank">here</a></div>
</div>
</td> </td>
</tr> </tr>
<tr class="advance-show"> <tr class="advance-show">

View File

@ -116,24 +116,23 @@ $( function() {
} else { } else {
$( "#controlgroup-listen" ).hide( "fast" ); $( "#controlgroup-listen" ).hide( "fast" );
} }
$( "#check-servers-listen" ).click( function(){ $( "#check-servers-listen" ).click( function(){
if ($('#check-servers-listen').is(':checked')) { if ($('#check-servers-listen').is(':checked')) {
$( "#rise-listen" ).attr('required',true); $( "#rise-listen" ).attr('required',true);
$( "#fall-listen" ).attr('required',true); $( "#fall-listen" ).attr('required',true);
$( "#inter-listen" ).attr('required',true); $( "#inter-listen" ).attr('required',true);
$( "#inter-listen" ).selectmenu( "option", "disabled", false ); $( "#inter-listen" ).selectmenu( "option", "disabled", false );
$( "#fall-listen" ).selectmenu( "option", "disabled", false ); $( "#fall-listen" ).selectmenu( "option", "disabled", false );
$( "#rise-listen" ).selectmenu( "option", "disabled", false ); $( "#rise-listen" ).selectmenu( "option", "disabled", false );
} else { } else {
$( "#rise-listen" ).attr('required',false); $( "#rise-listen" ).attr('required',false);
$( "#fall-listen" ).attr('required',false); $( "#fall-listen" ).attr('required',false);
$( "#inter-listen" ).attr('required',false); $( "#inter-listen" ).attr('required',false);
$( "#inter-listen" ).selectmenu( "option", "disabled", true ); $( "#inter-listen" ).selectmenu( "option", "disabled", true );
$( "#fall-listen" ).selectmenu( "option", "disabled", true ); $( "#fall-listen" ).selectmenu( "option", "disabled", true );
$( "#rise-listen" ).selectmenu( "option", "disabled", true ); $( "#rise-listen" ).selectmenu( "option", "disabled", true );
} }
}); });
}); });
$( "#controlgroup-backend-show" ).click( function(){ $( "#controlgroup-backend-show" ).click( function(){
if ($('#controlgroup-backend-show').is(':checked')) { if ($('#controlgroup-backend-show').is(':checked')) {
@ -147,6 +146,20 @@ $( function() {
$( "#controlgroup-backend" ).hide( "fast" ); $( "#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(){ $( "#cookie" ).click( function(){
if ($('#cookie').is(':checked')) { if ($('#cookie').is(':checked')) {
$("#cookie_name" ).attr('required',true); $("#cookie_name" ).attr('required',true);
@ -334,6 +347,50 @@ $( function() {
autoFocus: true, autoFocus: true,
minLength: -1 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({ $( "#new-option" ).autocomplete({
source: availableTags, source: availableTags,
autoFocus: true, autoFocus: true,
@ -645,6 +702,24 @@ $( function() {
$( "#blacklist-hide-input1" ).prop('required',false); $( "#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(){ $( ":regex(id, template)" ).click( function(){
if ($(':regex(id, template)').is(':checked')) { if ($(':regex(id, template)').is(':checked')) {
$( ".prefix" ).show( "fast" ); $( ".prefix" ).show( "fast" );