mirror of https://github.com/Aidaho12/haproxy-wi
parent
4d0d94fca9
commit
a27913d0c6
18
app/add.py
18
app/add.py
|
@ -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')
|
||||||
|
|
|
@ -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">
|
||||||
|
|
111
inc/add.js
111
inc/add.js
|
@ -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" );
|
||||||
|
|
Loading…
Reference in New Issue