var ssl_offloading_var = "http-request set-header X-Forwarded-Port %[dst_port] \n"+
"http-request add-header X-Forwarded-Proto https if { ssl_fc } \n"+
"redirect scheme https if !{ ssl_fc } \n"
$( function() {
$( "#listen-mode-select" ).on('selectmenuchange',function() {
if ($( "#listen-mode-select option:selected" ).val() == "tcp") {
$( "#https-listen-span" ).hide("fast");
$( "#https-hide-listen" ).hide("fast");
$("#compression").checkboxradio( "disable" );
$("#cache").checkboxradio( "disable" );
$("#ssl_offloading").checkboxradio( "disable" );
$("#cookie").checkboxradio( "disable" );
$("#slow_atack").checkboxradio( "disable" );
$( "#https-listen" ).prop("checked", false);
} else {
$( "#https-listen-span" ).show("fast");
$("#compression").checkboxradio( "enable" );
$("#cache").checkboxradio( "enable" );
$("#ssl_offloading").checkboxradio( "enable" );
$("#cookie").checkboxradio( "enable" );
$("#slow_atack").checkboxradio( "enable" );
}
});
$( "#frontend-mode-select" ).on('selectmenuchange',function() {
if ($( "#frontend-mode-select option:selected" ).val() == "tcp") {
$( "#https-frontend-span" ).hide("fast");
$( "#https-hide-frontend" ).hide("fast");
$("#compression2").checkboxradio( "disable" );
$("#cache2").checkboxradio( "disable" );
$("#ssl_offloading2").checkboxradio( "disable" );
$("#cookie2").checkboxradio( "disable" );
$("#slow_atack1").checkboxradio( "disable" );
} else {
$( "#https-frontend-span" ).show("fast");
$("#compression2").checkboxradio( "enable" );
$("#cache2").checkboxradio( "enable" );
$("#ssl_offloading2").checkboxradio( "enable" );
$("#cookie2").checkboxradio( "enable" );
$("#slow_atack1").checkboxradio( "enable" );
}
});
$( "#backend-mode-select" ).on('selectmenuchange',function() {
if ($( "#backend-mode-select option:selected" ).val() == "tcp") {
$( "#https-backend-span" ).hide("fast");
$( "#https-hide-backend" ).hide("fast");
$("#compression3").checkboxradio( "disable" );
$("#cache3").checkboxradio( "disable" );
$("#ssl_offloading3").checkboxradio( "disable" );
$("#cookie3").checkboxradio( "disable" );
$("#slow_atack2").checkboxradio( "disable" );
} else {
$( "#https-backend-span" ).show("fast");
$("#compression3").checkboxradio( "enable" );
$("#cache3").checkboxradio( "enable" );
$("#ssl_offloading3").checkboxradio( "enable" );
$("#cookie3").checkboxradio( "enable" );
$("#slow_atack2").checkboxradio( "enable" );
}
});
$( "#https-listen" ).click( function(){
if ($('#https-listen').is(':checked')) {
$( "#https-hide-listen" ).show( "fast" );
$( "#path-cert-listen" ).attr('required',true);
} else {
$( "#https-hide-listen" ).hide( "fast" );
$( "#path-cert-listen" ).prop('required',false);
}
});
$( "#https-frontend" ).click( function(){
if ($('#https-frontend').is(':checked')) {
$( "#https-hide-frontend" ).show( "fast" );
$( "#path-cert-frontend" ).attr('required',true);
} else {
$( "#https-hide-frontend" ).hide( "fast" );
$( "#path-cert-frontend" ).prop('required',false);
}
});
$( "#https-backend" ).click( function(){
if ($('#https-backend').is(':checked')) {
$( "#https-hide-backend" ).show( "fast" );
} else {
$( "#https-hide-backend" ).hide( "fast" );
}
});
$( "#ssl-dis-check-listen" ).click( function(){
if ($('#ssl-dis-check-listen').is(':checked')) {
$( "#ssl-check-listen" ).checkboxradio( "disable" );
$( "#ssl-check-listen" ).prop( "checked", false );
$( "#ssl-check-listen" ).checkboxradio("refresh");
} else {
$( "#ssl-check-listen" ).checkboxradio( "enable" );
$( "#ssl-check-listen" ).prop( "checked", true );
$( "#ssl-check-listen" ).checkboxradio("refresh");
}
});
$( "#ssl-dis-check-backend" ).click( function(){
if ($('#ssl-dis-check-backend').is(':checked')) {
$( "#ssl-check-backend" ).checkboxradio( "disable" );
$( "#ssl-check-backend" ).prop( "checked", false );
$( "#ssl-check-backend" ).checkboxradio("refresh");
} else {
$( "#ssl-check-backend" ).checkboxradio( "enable" );
$( "#ssl-check-backend" ).prop( "checked", true );
$( "#ssl-check-backend" ).checkboxradio("refresh");
}
});
$( "#options-listen-show" ).click( function(){
if ($('#options-listen-show').is(':checked')) {
$( "#options-listen-show-div" ).show( "fast" );
} else {
$( "#options-listen-show-div" ).hide( "fast" );
}
});
$( "#options-frontend-show" ).click( function(){
if ($('#options-frontend-show').is(':checked')) {
$( "#options-frontend-show-div" ).show( "fast" );
} else {
$( "#options-frontend-show-div" ).hide( "fast" );
}
});
$( "#options-backend-show" ).click( function(){
if ($('#options-backend-show').is(':checked')) {
$( "#options-backend-show-div" ).show( "fast" );
} else {
$( "#options-backend-show-div" ).hide( "fast" );
}
});
$( "#controlgroup-listen-show" ).click( function(){
if ($('#controlgroup-listen-show').is(':checked')) {
$( "#controlgroup-listen" ).show( "fast" );
if ($('#check-servers-listen').is(':checked')) {
$( "#rise-listen" ).attr('required',true);
$( "#fall-listen" ).attr('required',true);
$( "#inter-listen" ).attr('required',true);
$( "#inter-listen" ).attr('disable',false);
}
} 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 );
}
});
});
$( "#controlgroup-backend-show" ).click( function(){
if ($('#controlgroup-backend-show').is(':checked')) {
$( "#controlgroup-backend" ).show( "fast" );
if ($('#check-servers-backend').is(':checked')) {
$( "#rise-backend" ).attr('required',true);
$( "#fall-backend" ).attr('required',true);
$( "#inter-backend" ).attr('required',true);
}
} else {
$( "#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);
$("#cookie_div").show( "fast" );
} else {
$("#cookie_name" ).attr('required',false);
$("#cookie_div").hide( "fast" );
$("#dynamic-cookie-key" ).attr('required',false);
}
});
$( "#cookie2" ).click( function(){
if ($('#cookie2').is(':checked')) {
$("#cookie_name2" ).attr('required',true);
$("#cookie_div2").show( "fast" );
} else {
$("#cookie_name2" ).attr('required',false);
$("#cookie_div2").hide( "fast" );
$("#dynamic-cookie-key2" ).attr('required',false);
}
});
$( "#rewrite" ).on('selectmenuchange',function() {
if ($( "#rewrite option:selected" ).val() == "insert" || $( "#rewrite option:selected" ).val() == "rewrite") {
$( "#prefix" ).checkboxradio( "disable" );
} else {
$( "#prefix" ).checkboxradio( "enable" );
}
});
$( "#rewrite2" ).on('selectmenuchange',function() {
if ($( "#rewrite2 option:selected" ).val() == "insert" || $( "#rewrite2 option:selected" ).val() == "rewrite") {
$( "#prefix2" ).checkboxradio( "disable" );
} else {
$( "#prefix2" ).checkboxradio( "enable" );
}
});
$( "#dynamic" ).click( function(){
if ($('#dynamic').is(':checked')) {
$("#dynamic-cookie-key" ).attr('required',true);
$("#dynamic_div").show("slide", "fast" );
} else {
$("#dynamic-cookie-key" ).attr('required',false);
$("#dynamic_div").hide("slide", "fast" );
}
});
$( "#dynamic2" ).click( function(){
if ($('#dynamic2').is(':checked')) {
$("#dynamic-cookie-key2" ).attr('required',true);
$("#dynamic_div2").show("slide", "fast" );
} else {
$("#dynamic-cookie-key2" ).attr('required',false);
$("#dynamic_div2").hide("slide", "fast" );
}
});
$( "#check-servers-backend" ).click( function(){
if ($('#check-servers-backend').is(':checked')) {
$( "#rise-backend" ).attr('required',true);
$( "#fall-backend" ).attr('required',true);
$( "#inter-backend" ).attr('required',true);
$( "#inter-backend" ).selectmenu( "option", "disabled", false );
$( "#fall-backend" ).selectmenu( "option", "disabled", false );
$( "#rise-backend" ).selectmenu( "option", "disabled", false );
} else {
$( "#rise-backend" ).attr('required',false);
$( "#fall-backend" ).attr('required',false);
$( "#inter-backend" ).attr('required',false);
$( "#inter-backend" ).selectmenu( "option", "disabled", true );
$( "#fall-backend" ).selectmenu( "option", "disabled", true );
$( "#rise-backend" ).selectmenu( "option", "disabled", true );
}
});
var availableTags = [
"acl", "hdr(host)", "hdr_beg(host)", "hdr_dom(host)", "http-request", "http-response", "set-uri", "set-url", "set-header", "add-header", "del-header", "replace-header", "path_beg", "url_beg()", "urlp_sub()", "set cookie", "dynamic-cookie-key", "mysql-check", "tcpka", "tcplog", "forwardfor", "option"
];
$( "#ip" ).autocomplete({
source: function( request, response ) {
if(!checkIsServerFiled('#serv')) return false;
if ( request.term == "" ) {
request.term = 1
}
$.ajax( {
url: "options.py",
data: {
show_ip: request.term,
serv: $("#serv").val(),
token: $('#token').val()
},
success: function( data ) {
data = data.replace(/\s+/g,' ');
response(data.split(" "));
}
} );
},
autoFocus: true,
minLength: -1,
select: function( event, ui ) {
$('#listen-port').focus();
}
});
$( "#ip1" ).autocomplete({
source: function( request, response ) {
if(!checkIsServerFiled('#serv2')) return false;
if ( request.term == "" ) {
request.term = 1
}
$.ajax( {
url: "options.py",
data: {
show_ip: request.term,
serv: $("#serv2").val(),
token: $('#token').val()
},
success: function( data ) {
data = data.replace(/\s+/g,' ');
response(data.split(" "));
}
} );
},
autoFocus: true,
minLength: -1,
select: function( event, ui ) {
$('#frontend-port').focus();
}
});
$( "#backends" ).autocomplete({
source: function( request, response ) {
if(!checkIsServerFiled('#serv2')) return false;
if ( request.term == "" ) {
request.term = 1
}
$.ajax( {
url: "options.py",
data: {
backend: request.term,
serv: $("#serv2").val(),
token: $('#token').val()
},
success: function( data ) {
response(data.split('
'));
}
} );
},
autoFocus: true,
minLength: -1
});
$( "#blacklist-hide-input" ).autocomplete({
source: function( request, response ) {
if ( request.term == "" ) {
request.term = 1
}
$.ajax( {
url: "options.py",
data: {
get_lists: request.term,
color: "black",
group: $("#group").val(),
token: $('#token').val()
},
success: function( data ) {
data = data.replace(/\s+/g,' ');
response(data.split(" "));
}
} );
},
autoFocus: true,
minLength: -1
});
$( "#blacklist-hide-input1" ).autocomplete({
source: function( request, response ) {
if ( request.term == "" ) {
request.term = 1
}
$.ajax( {
url: "options.py",
data: {
get_lists: request.term,
color: "black",
group: $("#group").val(),
token: $('#token').val()
},
success: function( data ) {
data = data.replace(/\s+/g,' ');
response(data.split(" "));
}
} );
},
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,
minLength: -1,
select: function( event, ui ) {
$("#new-option").append(ui.item.value + " ")
}
});
$( "#option_table input" ).change(function() {
var id = $(this).attr('id').split('-');
updateOptions(id[2])
});
$( "#options" ).autocomplete({
source: availableTags,
autoFocus: true,
minLength: -1,
select: function( event, ui ) {
$("#optionsInput").append(ui.item.value + " ");
$(this).val('');
return false;
}
});
$( "#saved-options" ).autocomplete({
dataType: "json",
source: "options.py?getoption="+$('#group').val()+'&token='+$('#token').val(),
autoFocus: true,
minLength: 1,
select: function( event, ui ) {
$("#optionsInput").append(ui.item.value + " \n");
$(this).val('');
return false;
}
});
$( "#options1" ).autocomplete({
source: availableTags,
autoFocus: true,
minLength: -1,
select: function( event, ui ) {
$("#optionsInput1").append(ui.item.value + " ");
$(this).val('');
return false;
}
});
$( "#saved-options1" ).autocomplete({
dataType: "json",
source: "options.py?getoption="+$('#group').val()+'&token='+$('#token').val(),
autoFocus: true,
minLength: 1,
select: function( event, ui ) {
$("#optionsInput1").append(ui.item.value + " \n");
$(this).val('');
return false;
}
});
$( "#options2" ).autocomplete({
source: availableTags,
autoFocus: true,
minLength: -1,
select: function( event, ui ) {
$("#optionsInput2").append(ui.item.value + " ");
$(this).val('');
return false;
}
});
$( "#saved-options2" ).autocomplete({
dataType: "json",
source: "options.py?getoption="+$('#group').val()+'&token='+$('#token').val(),
autoFocus: true,
minLength: 1,
select: function( event, ui ) {
$("#optionsInput2").append(ui.item.value + " \n");
$(this).val('');
return false;
}
});
$('#add-option-button').click(function() {
if ($('#option-add-table').css('display', 'none')) {
$('#option-add-table').show("blind", "fast");
}
});
$('#add-option-new').click(function() {
$.ajax( {
url: "options.py",
data: {
newtoption: $('#new-option').val(),
newoptiongroup: $('#group').val(),
token: $('#token').val()
},
type: "POST",
success: function( data ) {
if (data.indexOf('error:') != '-1') {
toastr.error(data);
} else {
$("#option_table").append(data);
setTimeout(function() {
$( ".newoption" ).removeClass( "update" );
}, 2500 );
$.getScript("/inc/fontawesome.min.js");
}
}
} );
});
$( "#servers_table input" ).change(function() {
var id = $(this).attr('id').split('-');
updateSavedServer(id[2])
});
$( '[name=servers]' ).autocomplete({
source: "options.py?getsavedserver="+$('#group').val()+'&token='+$('#token').val(),
autoFocus: true,
minLength: 1,
select: function( event, ui ) {
$(this).append(ui.item.value + " ");
$(this).next().focus();
}
})
.autocomplete( "instance" )._renderItem = function( ul, item ) {
return $( "
You must configure the LDAP servers according to this check to allow anonymous binding. ' + 'You can do this with an IP alias on the server side that allows only HAProxy IP addresses to bind to it.
' var mysql_note = 'The check is valid if the server response contains a successful Authentication request' var pgsql_note = 'The check is valid if the server response contains a successful Authentication request' var redis_note = 'The check is valid if the server response contains the string +PONG' var smtpchk_note = 'The check is valid if the server response code starts with \'2\'' $( "#listener_checks" ).on('selectmenuchange',function() { if ($( "#listener_checks option:selected" ).val() == "option tcp-check") { $("#listener_checks_note").html(tcp_note) } if ($( "#listener_checks option:selected" ).val() == "option ssl-hello-chk") { $("#listener_checks_note").html(ssl_note) } if ($( "#listener_checks option:selected" ).val() == "option httpchk") { $("#listener_checks_note").html(httpchk_note) } if ($( "#listener_checks option:selected" ).val() == "option ldap-check") { $("#listener_checks_note").html(ldap_note) } if ($( "#listener_checks option:selected" ).val() == "option mysql-check") { $("#listener_checks_note").html(mysql_note) } if ($( "#listener_checks option:selected" ).val() == "option pgsql-check") { $("#listener_checks_note").html(pgsql_note) } if ($( "#listener_checks option:selected" ).val() == "option redis-check") { $("#listener_checks_note").html(redis_note) } if ($( "#listener_checks option:selected" ).val() == "option smtpchk") { $("#listener_checks_note").html(smtpchk_note) } if ($( "#listener_checks option:selected" ).val() == "") { $("#listener_checks_note").html('') } }); $( "#backend_checks" ).on('selectmenuchange',function() { if ($( "#backend_checks option:selected" ).val() == "") { $("#backend_checks_note").html('') } if ($( "#backend_checks option:selected" ).val() == "option tcp-check") { $("#backend_checks_note").html(tcp_note) } if ($( "#backend_checks option:selected" ).val() == "option ssl-hello-chk") { $("#backend_checks_note").html(ssl_note) } if ($( "#backend_checks option:selected" ).val() == "option httpchk") { $("#backend_checks_note").html(httpchk_note) } if ($( "#backend_checks option:selected" ).val() == "option ldap-check") { $("#backend_checks_note").html(ldap_note) } if ($( "#backend_checks option:selected" ).val() == "option mysql-check") { $("#backend_checks_note").html(mysql_note) } if ($( "#backend_checks option:selected" ).val() == "option pgsql-check") { $("#backend_checks_note").html(pgsql_note) } if ($( "#backend_checks option:selected" ).val() == "option redis-check") { $("#backend_checks_note").html(redis_note) } if ($( "#backend_checks option:selected" ).val() == "option smtpchk") { $("#backend_checks_note").html(smtpchk_note) } if ($( "#backend_checks option:selected" ).val() == "") { $("#backend_checks_note").html('') } }); $( "#listener_checks" ).on('selectmenuchange',function() { if ($("#listener_checks").val() == 'option httpchk') { $("#listener_checks_http").show(); $("#listener_checks_http_path").attr('required', 'true'); } else { $("#listener_checks_http").hide(); $("#listener_checks_http_path").removeAttr('required'); $("#listener_checks_http_domain").removeAttr('required'); } }); $( "#backend_checks" ).on('selectmenuchange',function() { if ($("#backend_checks").val() == 'option httpchk') { $("#backend_checks_http").show(); $("#backend_checks_http_path").attr('required', 'true'); } else { $("#backend_checks_http").hide(); $("#backend_checks_http_path").removeAttr('required'); $("#backend_checks_http_domain").removeAttr('required'); } }); $( "#add_listener_acl" ).on( "click", function() { $( "#listener_acl" ).show(); $( "#listener_add_acl" ).show(); $( "#add_listener_acl" ).hide(); } ); $( "#add_frontend_acl" ).on( "click", function() { $( "#frontend_acl" ).show(); $( "#frontend_add_acl" ).show(); $( "#add_frontend_acl" ).hide(); } ); $( "#add_backend_acl" ).on( "click", function() { $( "#backend_acl" ).show(); $( "#backend_add_acl" ).show(); $( "#add_backend_acl" ).hide(); } ); $("#listener_add_acl").click(function(){ make_actions_for_adding_acl_rule('#listener_acl'); $("#listener_acl").find('option[value=5]').remove(); }); $("#frontend_add_acl").click(function(){ make_actions_for_adding_acl_rule('#frontend_acl'); }); $("#backend_add_acl").click(function(){ make_actions_for_adding_acl_rule('#backend_acl'); }); $("#add_bind_listener").click(function(){ make_actions_for_adding_bind('#listener_bind'); $( "#listener_bind" ).show(); }); $("#add_bind_frontend").click(function(){ make_actions_for_adding_bind('#frontend_bind'); $( "#frontend_bind" ).show(); }); $( "#serv" ).on('selectmenuchange',function() { $('#name').focus(); }); $( "#serv2" ).on('selectmenuchange',function() { $('#new_frontend').focus(); }); $( "#serv3" ).on('selectmenuchange',function() { $('#new_backend').focus(); }); $( "#userlist_serv" ).on('selectmenuchange',function() { $('#new_userlist').focus(); }); }); function resetProxySettings() { $('[name=ip]').val(''); $('[name=port]').val(''); $('[name=server_port]').val(''); $('input:checkbox').prop( "checked", false ); $('[name=ssl-check]').prop( "checked", true ); $('[name=ssl-dis-check]').prop( "checked", false ); $('[name=check-servers]').prop( "checked", true ); $('input:checkbox').checkboxradio("refresh"); $('.advance-show').fadeIn(); $('.advance').fadeOut(); $('[id^=https-hide]').hide(); $('[name=mode').val('http'); $('select').selectmenu('refresh'); $("#path-cert-listen" ).attr('required',false); $("#path-cert-frontend" ).attr('required',false); replace_text("#optionsInput", ssl_offloading_var); replace_text("#optionsInput1", ssl_offloading_var); replace_text("#optionsInput2", ssl_offloading_var); } function createHttp(TabId, proxy) { $('[name=port]').val('80'); $('[name=server_port]').val('80'); $( "#tabs" ).tabs( "option", "active", TabId ); if (TabId == 1) { TabId = ''; } $( "#serv"+TabId ).selectmenu( "open" ); history.pushState('Add '+proxy, 'Add '+proxy, 'add.py#'+proxy) } function createSsl(TabId, proxy) { $('[name=port]').val('443'); $('[name=server_port]').val('80'); $('.advance-show').fadeOut(); $('.advance').fadeIn() $( "#tabs" ).tabs( "option", "active", TabId ); $( "#https-hide-"+proxy).show("fast"); $('#https-'+proxy).prop( "checked", true ); $('#ssl-dis-check-'+proxy).prop( "checked", true ); $('#ssl-check-'+proxy).prop( "checked", false ); $('#ssl-check-'+proxy).checkboxradio('disable'); $('input:checkbox').checkboxradio("refresh"); $("#path-cert-"+proxy ).attr('required',true); if (TabId == 1) { TabId = ''; } $( "#serv"+TabId ).selectmenu( "open" ); history.pushState('Add'+proxy, 'Add'+proxy, 'add.py#'+proxy) } function createHttps(TabId, proxy) { $('[name=port]').val('443'); $('[name=server_port]').val('443'); $('.advance-show').fadeOut(); $('.advance').fadeIn(); $( "#tabs" ).tabs( "option", "active", TabId ); $('#'+proxy+'-mode-select').val('tcp'); $('#'+proxy+'-mode-select').selectmenu('refresh'); if (TabId == 1) { TabId = ''; } $( "#serv"+TabId ).selectmenu( "open" ); history.pushState('Add'+proxy, 'Add'+proxy, 'add.py#'+proxy) } function confirmDeleteOption(id) { $( "#dialog-confirm" ).dialog({ resizable: false, height: "auto", width: 400, modal: true, title: "Are you sure you want to delete " +$('#option-'+id).val() + "?", buttons: { "Delete": function() { $( this ).dialog( "close" ); removeOption(id); }, Cancel: function() { $( this ).dialog( "close" ); } } }); } function removeOption(id) { $("#option-"+id).css("background-color", "#f2dede"); $.ajax( { url: "options.py", data: { optiondel: id, token: $('#token').val() }, type: "POST", success: function( data ) { data = data.replace(/\s+/g,' '); if(data == "Ok ") { $("#option-"+id).remove(); } } } ); } function updateOptions(id) { toastr.clear(); $.ajax( { url: "options.py", data: { updateoption: $('#option-body-'+id).val(), id: id, token: $('#token').val() }, type: "POST", success: function( data ) { data = data.replace(/\s+/g,' '); if (data.indexOf('error:') != '-1') { toastr.error(data); } else { $("#option-"+id).addClass( "update", 1000 ); setTimeout(function() { $( "#option-"+id ).removeClass( "update" ); }, 2500 ); } } } ); } function confirmDeleteSavedServer(id) { $( "#dialog-confirm" ).dialog({ resizable: false, height: "auto", width: 400, modal: true, title: "Are you sure you want to delete " +$('#servers-saved-'+id).val() + "?", buttons: { "Delete": function() { $( this ).dialog( "close" ); removeSavedServer(id); }, Cancel: function() { $( this ).dialog( "close" ); } } }); } function removeSavedServer(id) { $("#servers-saved-"+id).css("background-color", "#f2dede"); $.ajax( { url: "options.py", data: { savedserverdel: id, token: $('#token').val() }, type: "POST", success: function( data ) { data = data.replace(/\s+/g,' '); if(data.indexOf('Ok') != '-1') { $("#servers-saved-"+id).remove(); } } } ); } function updateSavedServer(id) { toastr.clear(); $.ajax( { url: "options.py", data: { updatesavedserver: $('#servers-ip-'+id).val(), description: $('#servers-desc-'+id).val(), id: id, token: $('#token').val() }, type: "POST", success: function( data ) { data = data.replace(/\s+/g,' '); if (data.indexOf('error:') != '-1') { toastr.error(data); } else { $("#option-"+id).addClass( "update", 1000 ); setTimeout(function() { $( "#option-"+id ).removeClass( "update" ); }, 2500 ); } } } ); } function view_ssl(id) { if(!checkIsServerFiled('#serv5')) return false; $.ajax( { url: "options.py", data: { serv: $('#serv5').val(), getcert: id, token: $('#token').val() }, type: "POST", success: function( data ) { if (data.indexOf('error: ') != '-1') { toastr.error(data); } else { $('#dialog-confirm-body').text(data); $( "#dialog-confirm-cert" ).dialog({ resizable: false, height: "auto", width: 670, modal: true, title: "Certificate from "+$('#serv5').val()+", name: "+id, buttons: { Close: function() { $( this ).dialog( "close" ); }, Delete: function () { $( this ).dialog( "close" ); confirmDeleting("SSL cert", id, $( this ), ""); } } }); } } } ); } function deleteSsl(id) { if(!checkIsServerFiled('#serv5')) return false;; $.ajax( { url: "options.py", data: { serv: $('#serv5').val(), delcert: id, token: $('#token').val() }, type: "POST", success: function( data ) { if (data.indexOf('error: ') != '-1') { toastr.error(data); } else { toastr.clear(); toastr.success('SSL cert ' + id + ' has been deleted'); $("#ssl_key_view").trigger( "click" ); } } } ); } function change_select_acceleration(id) { $.ajax( { url: "options.py", data: { get_hap_v: 1, serv: $('#serv'+id+' option:selected').val(), token: $('#token').val() }, type: "POST", success: function( data ) { data = data.replace(/\s+/g,' '); if(parseFloat(data) < parseFloat('1.8') || data == ' ') { $("#cache"+id).checkboxradio( "disable" ); } else { $("#cache"+id).checkboxradio( "enable" ); } } } ); } function change_select_waf(id) { $.ajax( { url: "options.py", data: { get_hap_v: 1, serv: $('#serv'+id+' option:selected').val(), token: $('#token').val() }, type: "POST", success: function( data ) { if(parseFloat(data) < parseFloat('1.8')) { $("#waf"+id).checkboxradio( "disable" ); } else { $("#waf"+id).checkboxradio( "enable" ); } } } ); } function createList(color) { if(color == 'white') { list = $('#new_whitelist_name').val() } else { list = $('#new_blacklist_name').val() } list = escapeHtml(list); $.ajax( { url: "options.py", data: { bwlists_create: list, color: color, group: $('#group').val(), token: $('#token').val() }, type: "POST", success: function( data ) { if (data.indexOf('error:') != '-1' || data.indexOf('Failed') != '-1' || data.indexOf('Errno') != '-1') { toastr.error(data); } else if (data.indexOf('Info') != '-1' ){ toastr.clear(); toastr.info(data); } else if (data.indexOf('success') != '-1' ) { toastr.clear(); toastr.success('List has been created'); setTimeout(function () { location.reload(); }, 2500); } } } ); } function editList(list, color) { $.ajax( { url: "options.py", data: { bwlists: list, color: color, group: $('#group').val(), token: $('#token').val() }, type: "POST", success: function( data ) { if (data.indexOf('error:') != '-1') { toastr.error(data); } else { $('#edit_lists').text(data); $( "#dialog-confirm-cert-edit" ).dialog({ resizable: false, height: "auto", width: 650, modal: true, title: "Edit "+color+" list "+list, buttons: { "Delete": function() { $( this ).dialog( "close" ); confirmDeleting('list', list, $( this ), color); }, "Just save": function() { $( this ).dialog( "close" ); saveList('save', list, color); }, "Save and reload": function() { $( this ).dialog( "close" ); saveList('reload', list, color); }, "Save and restart": function() { $( this ).dialog( "close" ); saveList('restart', list, color); }, Cancel: function() { $( this ).dialog( "close" ); } } }); } } } ); } function saveList(action, list, color) { var serv = $( "#serv-"+color+"-list option:selected" ).val(); if (serv == '------') { toastr.warning('Select a server before updating'); } else { $.ajax({ url: "options.py", data: { bwlists_save: list, serv: serv, bwlists_content: $('#edit_lists').val(), color: color, group: $('#group').val(), bwlists_restart: action, token: $('#token').val() }, type: "POST", success: function (data) { data = data.split(" , "); for (i = 0; i < data.length; i++) { if (data[i]) { if (data[i].indexOf('error: ') != '-1' || data[i].indexOf('Errno') != '-1') { toastr.error(data[i]); } else { toastr.success(data[i]); } } } } }); } } function deleteList(list, color) { var serv = $( "#serv-"+color+"-list option:selected" ).val(); if (serv == '------') { toastr.warning('Choose a server before deleting'); } else { $.ajax({ url: "options.py", data: { bwlists_delete: list, serv: serv, color: color, group: $('#group').val(), token: $('#token').val() }, type: "POST", success: function (data) { if (data.indexOf('error:') != '-1' || data.indexOf('Failed') != '-1' || data.indexOf('Errno') != '-1') { toastr.error(data); } else if (data.indexOf('Info') != '-1' ){ toastr.clear(); toastr.info(data); } else if (data.indexOf('success') != '-1' ) { toastr.clear(); toastr.success('List has been deleted'); setTimeout(function () { location.reload(); }, 2500); } } }); } } function generateConfig(form_name) { var frm = $('#'+form_name); if (form_name == 'add-listener') { serv = '#serv' name_id = '#name' } else if (form_name == 'add-frontend') { serv = '#serv2' name_id = '#new_frontend' } else if (form_name == 'add-backend') { serv = '#serv3' name_id = '#new_backend' } else if (form_name == 'add-userlist') { serv = '#userlist_serv' name_id = '#new_userlist' } else { serv = '#peers_serv' name_id = '#peers-name' } if(!checkIsServerFiled(serv)) return false; if(!checkIsServerFiled(name_id, 'The name cannot be empty')) return false; var input = $("") .attr("name", "generateconfig").val("1").attr("type", "hidden").attr("id", "generateconfig"); $('#'+form_name +' input[name=acl_then_value]').each(function(){ if (!$(this).val()){ $(this).val('IsEmptY') } }); $('#'+form_name +' input[name=ip]').each(function(){ if (!$(this).val()){ $(this).val('IsEmptY') } }); $('#'+form_name +' input[name=port]').each(function(){ if (!$(this).val()){ $(this).val('IsEmptY') } }); frm.append(input); $.ajax({ url: frm.attr('action'), data: frm.serialize(), type: frm.attr('method'), success: function (data) { if (data.indexOf('error: ') != '-1' || data.indexOf('Fatal') != '-1') { toastr.clear(); toastr.error(data); } else { $('#dialog-confirm-body').text(data); $("#dialog-confirm-cert").dialog({ resizable: false, height: "auto", width: 650, modal: true, title: "Generated config", buttons: { Ok: function () { $(this).dialog("close"); } } }); } } }); $("#generateconfig").remove(); $('#'+form_name +' input[name=acl_then_value]').each(function(){ if ($(this).val() == 'IsEmptY'){ $(this).val('') } }); $('#'+form_name +' input[name=ip]').each(function(){ if ($(this).val() == 'IsEmptY'){ $(this).val('') } }); $('#'+form_name +' input[name=port]').each(function(){ if ($(this).val() == 'IsEmptY'){ $(this).val('') } }); } function addProxy(form_name) { var frm = $('#'+form_name); if (form_name == 'add-listener') { serv = '#serv' name_id = '#name' } else if (form_name == 'add-frontend') { serv = '#serv2' name_id = '#new_frontend' } else if (form_name == 'add-backend') { serv = '#serv3' name_id = '#new_backend' } else if (form_name == 'add-userlist') { serv = '#userlist_serv' name_id = '#new_userlist' } else { serv = '#peers_serv' name_id = '#peers-name' } if(!checkIsServerFiled(serv)) return false; if(!checkIsServerFiled(name_id, 'The name cannot be empty')) return false; $('#'+form_name +' input[name=acl_then_value]').each(function(){ if ($(this).val().length === 0){ $(this).val('IsEmptY') } }); $('#'+form_name +' input[name=ip]').each(function(){ if ($(this).val().length === 0){ $(this).val('IsEmptY') } }); $('#'+form_name +' input[name=port]').each(function(){ if ($(this).val().length === 0){ $(this).val('IsEmptY') } }); $.ajax({ url: frm.attr('action'), data: frm.serialize(), type: frm.attr('method'), success: function( data ) { if (data.indexOf('error: ') != '-1' || data.indexOf('Fatal') != '-1') { returnNiceCheckingConfig(data); } else if (data == '') { toastr.clear(); toastr.error('error: Proxy cannot be empty'); } else { toastr.clear(); returnNiceCheckingConfig(data); toastr.info('Section has been added. Do not forget to restart the server'); var ip = frm.find('select[name=serv]').val(); localStorage.setItem('restart', ip); resetProxySettings(); } } }); $('#'+form_name +' input[name=acl_then_value]').each(function(){ if ($(this).val() == 'IsEmptY'){ $(this).val('') } }); $('#'+form_name +' input[name=ip]').each(function(){ if ($(this).val() == 'IsEmptY'){ $(this).val('') } }); $('#'+form_name +' input[name=port]').each(function(){ if ($(this).val() == 'IsEmptY'){ $(this).val('') } }); } function confirmDeleting(deleting_thing, id, dialog_id, color) { $( "#dialog-confirm" ).dialog({ resizable: false, height: "auto", width: 400, modal: true, title: "Are you sure you want to delete this " + deleting_thing + " " +id + "?", buttons: { "Delete": function() { if (deleting_thing == "SSL cert") { deleteSsl(id); $(dialog_id).dialog( "close" ); } else if (deleting_thing == "list") { deleteList(id, color); $(dialog_id).dialog( "close" ); } $( this ).dialog( "close" ); }, Cancel: function() { $( this ).dialog( "close" ); $(dialog_id).dialog( "open" ); } } }); } function deleteId(id) { $('#'+id).remove(); if ($('#listener_bind > p').length == 0) { $('#listener_bind').hide(); } if ($('#frontend_bind > p').length == 0) { $('#frontend_bind').hide(); } } var acl_option = '\n' + 'if\n' + ' ' + 'value\n' + '\n' + 'then\n' + '\n' + 'value\n' + '\n' + '' + '
' function make_actions_for_adding_acl_rule(section_id) { var random_id = makeid(3); $(section_id).append(acl_option); $('#new_acl_rule_minus').attr('onclick', 'deleteId(\''+random_id+'\')'); $('#new_acl_rule_minus').attr('id', ''); $('#new_acl_p').attr('id', random_id); $('#new_acl_rule_minus').attr('id', ''); $.getScript("/inc/fontawesome.min.js"); $( "select" ).selectmenu(); $('[name=acl_if]').selectmenu({width: 180}); $('[name=acl_then]').selectmenu({width: 180}); } var bind_option = '' + ': ' + ' ' + '' function make_actions_for_adding_bind(section_id) { var random_id = makeid(3); $(section_id).append(bind_option); $('#new_bind_minus').attr('onclick', 'deleteId(\''+random_id+'\')'); $('#new_bind_minus').attr('id', ''); $('#new_bind_p').attr('id', random_id); $('#new_bind_minus').attr('id', ''); $.getScript("/inc/fontawesome.min.js"); $( "select" ).selectmenu(); var serv = 'serv2' if(section_id == '#listener_bind') { serv = 'serv' } $( "#"+random_id + " > input[name=ip]").autocomplete({ source: function( request, response ) { if ( request.term == "" ) { request.term = 1 } $.ajax( { url: "options.py", data: { show_ip: request.term, serv: $("#"+serv).val(), token: $('#token').val() }, success: function( data ) { data = data.replace(/\s+/g,' '); response(data.split(" ")); } } ); }, autoFocus: true, minLength: -1, select: function( event, ui ) { $( "#"+random_id + " > input[name=port]").focus(); } }); } function makeid(length) { var result = ''; var characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'; var charactersLength = characters.length; for ( var i = 0; i < length; i++ ) { result += characters.charAt(Math.floor(Math.random() * charactersLength)); } return result; } function showUserlists() { var serv = $( "#existing_userlist_serv option:selected" ).val(); if (serv == 'Choose server') { toastr.warning('Choose a server before'); } else { $.ajax({ url: "options.py", data: { show_userlists: 1, serv: serv, token: $('#token').val() }, type: "POST", success: function (data) { if (data.indexOf('error:') != '-1' || data.indexOf('Failed') != '-1') { toastr.error(data); } else { $('#existing_userlist_tr').show(); $('#existing_userlist_ajax').text(''); data = data.split(","); for (i = 0; i < data.length; i++) { $('#existing_userlist_ajax').append(''+data[i]+' '); } } } }); } } function changePortCheckFromServerPort() { $('[name=server_port]').on('input', function (){ var iNum = parseInt($($(this)).val()); $($(this)).next().val(iNum); }); } function checkIsServerFiled(select_id, message = 'Select a server first') { if ($(select_id).val() == null || $(select_id).val() == '') { toastr.warning(message); return false; } return true; }