You've already forked haproxy-wi
mirror of
https://github.com/roxy-wi/roxy-wi.git
synced 2025-12-18 12:04:07 +08:00
This commit applies exception handling for the network operations methods and removes unused/commented-out code. The added exception handling checks for incorrect input to nettools methods and raises explicit exceptions with descriptive messages. This dramatically simplifies the debugging process, providing better visibility into runtime errors.
2139 lines
66 KiB
JavaScript
2139 lines
66 KiB
JavaScript
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"
|
|
var delete_word = $('#translate').attr('data-delete');
|
|
var cancel_word = $('#translate').attr('data-cancel');
|
|
$( 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: "/app/add/show/ip/" + $("#serv").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: "/app/add/show/ip/" + $("#serv2").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: "/app/runtimeapi/backends/" + $("#serv2").val(),
|
|
success: function (data) {
|
|
response(data.split('<br>'));
|
|
}
|
|
});
|
|
},
|
|
autoFocus: true,
|
|
minLength: -1
|
|
});
|
|
$("#blacklist-hide-input").autocomplete({
|
|
source: function (request, response) {
|
|
if (request.term == "") {
|
|
request.term = 1
|
|
}
|
|
$.ajax({
|
|
url: "/app/add/haproxy/bwlists/black/" + $("#group_id").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: "/app/add/haproxy/bwlists/black/" + $("#group_id").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: "/app/add/haproxy/bwlists/white/" + $("#group_id").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: "/app/add/haproxy/bwlists/white/" + $("#group_id").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: "/app/add/option/get/" + $('#group_id').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: "/app/add/option/get/" + $('#group_id').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: "/app/add/option/get/" + $('#group_id').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: "/app/add/option/save",
|
|
data: {
|
|
option: $('#new-option').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("/app/static/js/overview.js");
|
|
}
|
|
}
|
|
});
|
|
});
|
|
$("#servers_table input").change(function () {
|
|
var id = $(this).attr('id').split('-');
|
|
updateSavedServer(id[2])
|
|
|
|
});
|
|
$('[name=servers]').autocomplete({
|
|
source: "/app/add/server/get/" + $('#group_id').val(),
|
|
autoFocus: true,
|
|
minLength: 1,
|
|
select: function (event, ui) {
|
|
$(this).append(ui.item.value + " ");
|
|
$(this).next().focus();
|
|
}
|
|
})
|
|
.autocomplete("instance")._renderItem = function (ul, item) {
|
|
return $("<li>")
|
|
.append("<div>" + item.value + "<br>" + item.desc + "</div>")
|
|
.appendTo(ul);
|
|
};
|
|
$('#add-saved-server-button').click(function () {
|
|
if ($('#saved-server-add-table').css('display', 'none')) {
|
|
$('#saved-server-add-table').show("blind", "fast");
|
|
}
|
|
});
|
|
$('#add-saved-server-new').click(function () {
|
|
$.ajax({
|
|
url: "/app/add/server/save",
|
|
data: {
|
|
server: $('#new-saved-servers').val(),
|
|
desc: $('#new-saved-servers-description').val()
|
|
},
|
|
type: "POST",
|
|
success: function (data) {
|
|
if (data.indexOf('error:') != '-1') {
|
|
toastr.error(data);
|
|
} else {
|
|
$("#servers_table").append(data);
|
|
setTimeout(function () {
|
|
$(".newsavedserver").removeClass("update");
|
|
}, 2500);
|
|
$.getScript("/app/static/js/overview.js");
|
|
}
|
|
}
|
|
});
|
|
});
|
|
var forward_for_var = "option forwardfor if-none\n";
|
|
$('#forward_for').click(function () {
|
|
if ($('#optionsInput').val().indexOf(forward_for_var) == '-1') {
|
|
$("#optionsInput").append(forward_for_var)
|
|
} else {
|
|
replace_text("#optionsInput", forward_for_var);
|
|
}
|
|
});
|
|
$('#forward_for1').click(function () {
|
|
if ($('#optionsInput1').val().indexOf(forward_for_var) == '-1') {
|
|
$("#optionsInput1").append(forward_for_var)
|
|
} else {
|
|
replace_text("#optionsInput1", forward_for_var);
|
|
}
|
|
});
|
|
$('#forward_for2').click(function () {
|
|
if ($('#optionsInput2').val().indexOf(forward_for_var) == '-1') {
|
|
$("#optionsInput2").append(forward_for_var)
|
|
} else {
|
|
replace_text("#optionsInput2", forward_for_var);
|
|
}
|
|
});
|
|
var redispatch_var = "option redispatch\n";
|
|
$('#redispatch').click(function () {
|
|
if ($('#optionsInput').val().indexOf(redispatch_var) == '-1') {
|
|
$("#optionsInput").append(redispatch_var)
|
|
} else {
|
|
replace_text("#optionsInput", redispatch_var);
|
|
}
|
|
});
|
|
$('#redispatch2').click(function () {
|
|
if ($('#optionsInput2').val().indexOf(redispatch_var) == '-1') {
|
|
$("#optionsInput2").append(redispatch_var)
|
|
} else {
|
|
replace_text("#optionsInput2", redispatch_var);
|
|
}
|
|
});
|
|
var slow_atack = "option http-buffer-request\ntimeout http-request 10s\n"
|
|
$('#slow_atack').click(function () {
|
|
if ($('#optionsInput').val().indexOf(slow_atack) == '-1') {
|
|
$("#optionsInput").append(slow_atack)
|
|
} else {
|
|
replace_text("#optionsInput", slow_atack);
|
|
}
|
|
});
|
|
$('#slow_atack1').click(function () {
|
|
if ($('#optionsInput1').val().indexOf(slow_atack) == '-1') {
|
|
$("#optionsInput1").append(slow_atack)
|
|
} else {
|
|
replace_text("#optionsInput1", slow_atack);
|
|
}
|
|
});
|
|
$("#ddos").checkboxradio("disable");
|
|
$("#ddos1").checkboxradio("disable");
|
|
$("#ddos2").checkboxradio("disable");
|
|
$("#name").change(function () {
|
|
table_name = $('#name').val();
|
|
table_name = $.trim(table_name)
|
|
if ($('#name').val() != "") {
|
|
$("#ddos").checkboxradio("enable");
|
|
} else {
|
|
$("#ddos").checkboxradio("disable");
|
|
}
|
|
});
|
|
$("#new_frontend").change(function () {
|
|
table_name = $('#new_frontend').val();
|
|
table_name = $.trim(table_name)
|
|
if ($('#new_frontend').val() != "") {
|
|
$("#ddos1").checkboxradio("enable");
|
|
} else {
|
|
$("#ddos1").checkboxradio("disable");
|
|
}
|
|
});
|
|
|
|
$('#ddos').click(function () {
|
|
if ($('#name').val() == "") {
|
|
$("#optionsInput").append(ddos_var)
|
|
}
|
|
var ddos_var = "#Start config for DDOS atack protect\n" +
|
|
"stick-table type ip size 1m expire 1m store gpc0,http_req_rate(10s),http_err_rate(10s)\n" +
|
|
"tcp-request connection track-sc1 src\n" +
|
|
"tcp-request connection reject if { sc1_get_gpc0 gt 0 }\n" +
|
|
"# Abuser means more than 100reqs/10s\n" +
|
|
"acl abuse sc1_http_req_rate(" + table_name + ") ge 100\n" +
|
|
"acl flag_abuser sc1_inc_gpc0(" + table_name + ")\n" +
|
|
"tcp-request content reject if abuse flag_abuser\n" +
|
|
"#End config for DDOS\n";
|
|
if ($('#optionsInput').val().indexOf(ddos_var) == '-1') {
|
|
if ($('#name').val() == "") {
|
|
alert("First set Listen name")
|
|
} else {
|
|
$("#optionsInput").append(ddos_var);
|
|
}
|
|
} else {
|
|
replace_text("#optionsInput", ddos_var);
|
|
}
|
|
});
|
|
$('#ddos1').click(function () {
|
|
ddos_var = escapeHtml(ddos_var);
|
|
table_name = escapeHtml(table_name);
|
|
if ($('#new_frontend').val() == "") {
|
|
$("#optionsInput1").append(ddos_var)
|
|
}
|
|
var ddos_var = "#Start config for DDOS atack protect\n" +
|
|
"stick-table type ip size 1m expire 1m store gpc0,http_req_rate(10s),http_err_rate(10s)\n" +
|
|
"tcp-request connection track-sc1 src\n" +
|
|
"tcp-request connection reject if { sc1_get_gpc0 gt 0 }\n" +
|
|
"# Abuser means more than 100reqs/10s\n" +
|
|
"acl abuse sc1_http_req_rate(" + table_name + ") ge 100\n" +
|
|
"acl flag_abuser sc1_inc_gpc0(" + table_name + ")\n" +
|
|
"tcp-request content reject if abuse flag_abuser\n" +
|
|
"#End config for DDOS\n";
|
|
if ($('#optionsInput1').val().indexOf(ddos_var) == '-1') {
|
|
if ($('#new_frontend').val() == "") {
|
|
alert("First set Frontend name")
|
|
} else {
|
|
$("#optionsInput1").append(ddos_var)
|
|
}
|
|
} else {
|
|
replace_text("#optionsInput1", ddos_var);
|
|
}
|
|
});
|
|
var antibot_var = "#Start config for Antibot protection\n" +
|
|
"http-request track-sc0 src table per_ip_rates\n" +
|
|
"http-request track-sc1 url32+src table per_ip_and_url_rates unless { path_end .css .js .png .jpeg .gif }\n" +
|
|
"acl exceeds_limit sc_gpc0_rate(0) gt 15 \n" +
|
|
"http-request sc-inc-gpc0(0) if { sc_http_req_rate(1) eq 1 } !exceeds_limit\n" +
|
|
"http-request deny if exceeds_limit\n" +
|
|
"#End config for Antibot\n";
|
|
$('#antibot').click(function () {
|
|
if ($('#optionsInput').val().indexOf(antibot_var) == '-1') {
|
|
$("#optionsInput").append(antibot_var)
|
|
} else {
|
|
replace_text("#optionsInput", antibot_var);
|
|
}
|
|
});
|
|
$('#antibot1').click(function () {
|
|
if ($('#optionsInput1').val().indexOf(antibot_var) == '-1') {
|
|
$("#optionsInput1").append(antibot_var)
|
|
} else {
|
|
replace_text("#optionsInput1", antibot_var);
|
|
}
|
|
});
|
|
$("#blacklist_checkbox").click(function () {
|
|
if ($('#blacklist_checkbox').is(':checked')) {
|
|
$("#blacklist-hide").show("fast");
|
|
$("#blacklist-hide-input").attr('required', true);
|
|
} else {
|
|
$("#blacklist-hide").hide("fast");
|
|
$("#blacklist-hide-input").prop('required', false);
|
|
}
|
|
});
|
|
$("#blacklist_checkbox1").click(function () {
|
|
if ($('#blacklist_checkbox1').is(':checked')) {
|
|
$("#blacklist-hide1").show("fast");
|
|
$("#blacklist-hide-input1").attr('required', true);
|
|
} else {
|
|
$("#blacklist-hide1").hide("fast");
|
|
$("#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");
|
|
$(".second-server").hide("fast");
|
|
$(".backend_server").hide("fast");
|
|
$(".send_proxy").hide("fast");
|
|
$("input[name=server_maxconn]").hide("fast");
|
|
$("input[name=port_check]").hide("fast");
|
|
$("[name=maxconn_name]").hide("fast");
|
|
$("[name=port_check_text]").hide("fast");
|
|
$(".prefix").attr('required', true);
|
|
} else {
|
|
$(".prefix").hide("fast");
|
|
$(".prefix").attr('required', false);
|
|
$(".second-server").show("fast");
|
|
$(".backend_server").show("fast")
|
|
$(".send_proxy").show("fast")
|
|
$("input[name=server_maxconn]").show("fast");
|
|
$("input[name=port_check]").show("fast");
|
|
$("[name=maxconn_name]").show("fast");
|
|
$("[name=port_check_text]").show("fast");
|
|
}
|
|
});
|
|
var cur_url = window.location.href.split('/app/').pop();
|
|
cur_url = cur_url.split('/');
|
|
if (cur_url[0] == "add") {
|
|
$("#cache").checkboxradio("disable");
|
|
$("#waf").checkboxradio("disable");
|
|
$("#serv").on('selectmenuchange', function () {
|
|
change_select_acceleration("");
|
|
change_select_waf("");
|
|
});
|
|
$("#cache2").checkboxradio("disable");
|
|
$("#waf2").checkboxradio("disable");
|
|
$("#serv2").on('selectmenuchange', function () {
|
|
change_select_acceleration("2");
|
|
change_select_waf("2");
|
|
});
|
|
$("#cache3").checkboxradio("disable");
|
|
$("#serv3").on('selectmenuchange', function () {
|
|
change_select_acceleration("3");
|
|
});
|
|
$('#compression').on("click", function () {
|
|
if ($('#compression').is(':checked')) {
|
|
$("#cache").checkboxradio("disable");
|
|
$("#cache").prop('checked', false);
|
|
} else {
|
|
change_select_acceleration("");
|
|
}
|
|
});
|
|
$('#compression2').on("click", function () {
|
|
if ($('#compression2').is(':checked')) {
|
|
$("#cache2").checkboxradio("disable");
|
|
$("#cache2").prop('checked', false);
|
|
} else {
|
|
change_select_acceleration('2');
|
|
}
|
|
});
|
|
$('#compression3').on("click", function () {
|
|
if ($('#compression3').is(':checked')) {
|
|
$("#cache3").checkboxradio("disable");
|
|
$("#cache3").prop('checked', false);
|
|
} else {
|
|
change_select_acceleration('3');
|
|
}
|
|
});
|
|
$('#cache').on("click", function () {
|
|
if ($('#cache').is(':checked')) {
|
|
$("#compression").checkboxradio("disable");
|
|
$("#compression").prop('checked', false);
|
|
} else {
|
|
$("#compression").checkboxradio("enable");
|
|
}
|
|
});
|
|
$('#cache2').on("click", function () {
|
|
if ($('#cache2').is(':checked')) {
|
|
$("#compression2").checkboxradio("disable");
|
|
$("#compression2").prop('checked', false);
|
|
} else {
|
|
$("#compression2").checkboxradio("enable");
|
|
}
|
|
});
|
|
$('#cache3').on("click", function () {
|
|
if ($('#cache3').is(':checked')) {
|
|
$("#compression3").checkboxradio("disable");
|
|
$("#compression3").prop('checked', false);
|
|
} else {
|
|
$("#compression3").checkboxradio("enable");
|
|
}
|
|
});
|
|
$("#add1").on("click", function () {
|
|
$('.menu li ul li').each(function () {
|
|
$(this).find('a').css('padding-left', '20px')
|
|
$(this).find('a').css('border-left', '0px solid #5D9CEB');
|
|
$(this).find('a').css('background-color', '#48505A');
|
|
$(this).children("#add1").css('padding-left', '30px');
|
|
$(this).children("#add1").css('border-left', '4px solid #5D9CEB');
|
|
$(this).children("#add1").css('background-color', 'var(--right-menu-blue-rolor)');
|
|
});
|
|
$("#tabs").tabs("option", "active", 0);
|
|
});
|
|
$("#add3").on("click", function () {
|
|
$('.menu li ul li').each(function () {
|
|
$(this).find('a').css('padding-left', '20px')
|
|
$(this).find('a').css('border-left', '0px solid #5D9CEB');
|
|
$(this).find('a').css('background-color', '#48505A');
|
|
$(this).children("#add3").css('padding-left', '30px');
|
|
$(this).children("#add3").css('border-left', '4px solid #5D9CEB');
|
|
$(this).children("#add3").css('background-color', 'var(--right-menu-blue-rolor)');
|
|
});
|
|
$("#tabs").tabs("option", "active", 4);
|
|
});
|
|
$("#add4").on("click", function () {
|
|
$("#tabs").tabs("option", "active", 5);
|
|
});
|
|
$("#add5").on("click", function () {
|
|
$("#tabs").tabs("option", "active", 6);
|
|
});
|
|
$("#add6").on("click", function () {
|
|
$("#tabs").tabs("option", "active", 7);
|
|
$("#userlist_serv").selectmenu("open");
|
|
});
|
|
$("#add7").on("click", function () {
|
|
$('.menu li ul li').each(function () {
|
|
$(this).find('a').css('padding-left', '20px')
|
|
$(this).find('a').css('border-left', '0px solid #5D9CEB');
|
|
$(this).find('a').css('background-color', '#48505A');
|
|
$(this).children("#add7").css('padding-left', '30px');
|
|
$(this).children("#add7").css('border-left', '4px solid #5D9CEB');
|
|
$(this).children("#add7").css('background-color', 'var(--right-menu-blue-rolor)');
|
|
});
|
|
$("#tabs").tabs("option", "active", 9);
|
|
});
|
|
}
|
|
|
|
$("#path-cert-listen").autocomplete({
|
|
source: function (request, response) {
|
|
if (!checkIsServerFiled('#serv')) return false;
|
|
$.ajax({
|
|
url: "/app/add/certs/" + $('#serv').val(),
|
|
success: function (data) {
|
|
data = data.replace(/\s+/g, ' ');
|
|
response(data.split(" "));
|
|
}
|
|
});
|
|
},
|
|
autoFocus: true,
|
|
minLength: -1
|
|
});
|
|
$("#path-cert-frontend").autocomplete({
|
|
source: function (request, response) {
|
|
if (!checkIsServerFiled('#serv2')) return false;
|
|
$.ajax({
|
|
url: "/app/add/certs/" + $('#serv2').val(),
|
|
success: function (data) {
|
|
data = data.replace(/\s+/g, ' ');
|
|
response(data.split(" "));
|
|
}
|
|
});
|
|
},
|
|
autoFocus: true,
|
|
minLength: -1
|
|
});
|
|
$("#ssl_key_upload").click(function () {
|
|
if (!checkIsServerFiled('#serv4')) return false;
|
|
if (!checkIsServerFiled('#ssl_name', 'Enter the Certificate name')) return false;
|
|
if (!checkIsServerFiled('#ssl_cert', 'Paste the contents of the certificate file')) return false;
|
|
$.ajax({
|
|
url: "/app/add/cert/add",
|
|
data: {
|
|
serv: $('#serv4').val(),
|
|
ssl_cert: $('#ssl_cert').val(),
|
|
ssl_name: $('#ssl_name').val()
|
|
},
|
|
type: "POST",
|
|
success: function (data) {
|
|
data = data.split("\n");
|
|
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 {
|
|
if (data[i] != '\n') {
|
|
toastr.success(data[i]);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
});
|
|
});
|
|
$('#ssl_key_view').click(function () {
|
|
if (!checkIsServerFiled('#serv5')) return false;
|
|
$.ajax({
|
|
url: "/app/add/certs/" + $('#serv5').val(),
|
|
success: function (data) {
|
|
if (data.indexOf('error:') != '-1') {
|
|
toastr.error(data);
|
|
} else {
|
|
var i;
|
|
var new_data = "";
|
|
data = data.split("\n");
|
|
var j = 1
|
|
for (i = 0; i < data.length; i++) {
|
|
data[i] = data[i].replace(/\s+/g, ' ');
|
|
if (data[i] != '') {
|
|
if (j % 2) {
|
|
if (j != 0) {
|
|
new_data += '</span>'
|
|
}
|
|
new_data += '<span class="list_of_lists">'
|
|
} else {
|
|
new_data += '</span><span class="list_of_lists">'
|
|
|
|
}
|
|
j += 1
|
|
new_data += ' <a onclick="view_ssl(\'' + data[i] + '\')" title="View ' + data[i] + ' cert">' + data[i] + '</a> '
|
|
}
|
|
}
|
|
$("#ajax-show-ssl").html(new_data);
|
|
}
|
|
}
|
|
});
|
|
});
|
|
$('#lets_button').click(function () {
|
|
var lets_domain = $('#lets_domain').val();
|
|
var lets_email = $('#lets_email').val();
|
|
if (lets_email == '' || lets_domain == '') {
|
|
toastr.error('Fields cannot be empty');
|
|
} else if (validateEmail(lets_email)) {
|
|
$("#ajax-ssl").html(wait_mess);
|
|
$.ajax({
|
|
url: "/app/add/lets",
|
|
data: {
|
|
serv: $('#serv_for_lets').val(),
|
|
lets_domain: lets_domain,
|
|
lets_email: lets_email
|
|
},
|
|
type: "POST",
|
|
success: function (data) {
|
|
if (data.indexOf('error:') != '-1' || data.indexOf('ERROR') != '-1' || data.indexOf('FAILED') != '-1') {
|
|
toastr.clear();
|
|
toastr.error(data);
|
|
} else if (data.indexOf('WARNING') != '-1') {
|
|
toastr.clear();
|
|
toastr.warning(data);
|
|
} else {
|
|
toastr.clear();
|
|
toastr.success(data);
|
|
}
|
|
$("#ajax-ssl").html('');
|
|
}
|
|
});
|
|
} else {
|
|
toastr.clear();
|
|
toastr.error('Wrong e-mail format');
|
|
}
|
|
});
|
|
var add_server_var = '<br /><input name="servers" title="Backend IP" size=14 placeholder="xxx.xxx.xxx.xxx" class="form-control second-server" style="margin: 2px 0 4px 0;">: ' +
|
|
'<input name="server_port" required title="Backend port" size=3 placeholder="yyy" class="form-control second-server add_server_number" type="number"> ' +
|
|
'port check: <input name="port_check" required title="Maxconn. Default 200" size=5 value="200" class="form-control add_server_number" type="number">' +
|
|
' maxconn: <input name="server_maxconn" required title="Maxconn. Default 200" size=5 value="200" class="form-control add_server_number" type="number">'
|
|
$('[name=add-server-input]').click(function () {
|
|
$("[name=add_servers]").append(add_server_var);
|
|
changePortCheckFromServerPort();
|
|
});
|
|
$('[name=port]').on('input', function () {
|
|
var iNum = parseInt($('[name=port]').val());
|
|
$('[name=port_check]').val(iNum);
|
|
$('[name=server_port]').val(iNum);
|
|
});
|
|
changePortCheckFromServerPort();
|
|
var add_userlist_var = '<br /><input name="userlist-user" title="User name" placeholder="user_name" class="form-control"> <input name="userlist-password" required title="User password. By default it insecure-password" placeholder="password" class="form-control"> <input name="userlist-user-group" title="User`s group" placeholder="user`s group" class="form-control">'
|
|
$('#add-userlist-user').click(function () {
|
|
$('#userlist-users').append(add_userlist_var);
|
|
});
|
|
var add_userlist_group_var = '<br /><input name="userlist-group" title="User`s group" placeholder="group_name" class="form-control">'
|
|
$('#add-userlist-group').click(function () {
|
|
$('#userlist-groups').append(add_userlist_group_var);
|
|
});
|
|
var add_peer_var = '<br /><input name="servers_name" required title="Peer name" size=14 placeholder="haproxyN" class="form-control">: ' +
|
|
'<input name="servers" title="Backend IP" size=14 placeholder="xxx.xxx.xxx.xxx" class="form-control second-server">: ' +
|
|
'<input name="server_port" required title="Backend port" size=3 placeholder="yyy" class="form-control second-server add_server_number" type="number">'
|
|
$('[name=add-peer-input]').click(function () {
|
|
$("[name=add_peers]").append(add_peer_var);
|
|
});
|
|
$('.advance-show-button').click(function () {
|
|
$('.advance').fadeIn();
|
|
$('.advance-show-button').css('display', 'none');
|
|
$('.advance-hide-button').css('display', 'block');
|
|
return false;
|
|
});
|
|
$('.advance-hide-button').click(function () {
|
|
$('.advance').fadeOut();
|
|
$('.advance-show-button').css('display', 'block');
|
|
$('.advance-hide-button').css('display', 'none');
|
|
return false;
|
|
});
|
|
$('#ssl_offloading').click(function () {
|
|
if ($('#optionsInput').val().indexOf('ssl_fc ') == '-1') {
|
|
$("#optionsInput").append(ssl_offloading_var)
|
|
} else {
|
|
replace_text("#optionsInput", ssl_offloading_var);
|
|
}
|
|
});
|
|
$('#ssl_offloading1').click(function () {
|
|
if ($('#optionsInput1').val().indexOf('ssl_fc ') == '-1') {
|
|
$("#optionsInput1").append(ssl_offloading_var)
|
|
} else {
|
|
replace_text("#optionsInput1", ssl_offloading_var);
|
|
}
|
|
});
|
|
$('#ssl_offloading2').click(function () {
|
|
if ($('#optionsInput2').val().indexOf('ssl_fc ') == '-1') {
|
|
$("#optionsInput2").append(ssl_offloading_var)
|
|
} else {
|
|
replace_text("#optionsInput2", ssl_offloading_var);
|
|
}
|
|
});
|
|
$(".redirectListen").on("click", function () {
|
|
resetProxySettings();
|
|
$("#tabs").tabs("option", "active", 1);
|
|
$("#serv").selectmenu("open");
|
|
});
|
|
$(".redirectFrontend").on("click", function () {
|
|
resetProxySettings();
|
|
var TabId = 2;
|
|
$("#tabs").tabs("option", "active", TabId);
|
|
$("#serv" + TabId).selectmenu("open");
|
|
});
|
|
$(".redirectBackend").on("click", function () {
|
|
resetProxySettings();
|
|
var TabId = 3;
|
|
$("#tabs").tabs("option", "active", TabId);
|
|
$("#serv" + TabId).selectmenu("open");
|
|
});
|
|
$(".redirectSsl").on("click", function () {
|
|
$("#tabs").tabs("option", "active", 4);
|
|
$("#serv5").selectmenu("open");
|
|
});
|
|
$("#create-http-listen").on("click", function () {
|
|
resetProxySettings();
|
|
createHttp(1, 'listen');
|
|
});
|
|
$("#create-http-frontend").on("click", function () {
|
|
resetProxySettings();
|
|
createHttp(2, 'frontend');
|
|
});
|
|
$("#create-http-backend").on("click", function () {
|
|
resetProxySettings();
|
|
createHttp(3, 'backend');
|
|
});
|
|
$("#create-ssl-listen").on("click", function () {
|
|
resetProxySettings();
|
|
createSsl(1, 'listen');
|
|
});
|
|
$("#create-ssl-frontend").on("click", function () {
|
|
resetProxySettings();
|
|
createSsl(2, 'frontend');
|
|
});
|
|
$("#create-ssl-backend").on("click", function () {
|
|
resetProxySettings();
|
|
createSsl(3, 'backend');
|
|
});
|
|
$("#create-https-listen").on("click", function () {
|
|
resetProxySettings();
|
|
createHttps(1, 'listen');
|
|
});
|
|
$("#create-https-frontend").on("click", function () {
|
|
resetProxySettings();
|
|
createHttps(2, 'frontend');
|
|
});
|
|
$("#create-https-backend").on("click", function () {
|
|
resetProxySettings();
|
|
createHttps(3, 'backend');
|
|
});
|
|
var tcp_note = 'The check is valid when the server answers with a <b>SYN/ACK</b> packet'
|
|
var ssl_note = 'The check is valid if the server answers with a valid SSL server <b>hello</b> message'
|
|
var httpchk_note = 'The check is valid if the server answers with a status code of <b>2xx</b> or <b>3xx</b>. You can ' +
|
|
'add a page for checking and Domain name'
|
|
var ldap_note = 'The check is valid if the server response contains a successful <b>resultCode</b>.\n' +
|
|
'<p>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.</p>'
|
|
var mysql_note = 'The check is valid if the server response contains a successful <b>Authentication</b> request'
|
|
var pgsql_note = 'The check is valid if the server response contains a successful <b>Authentication</b> request'
|
|
var redis_note = 'The check is valid if the server response contains the string <b>+PONG</b>'
|
|
var smtpchk_note = 'The check is valid if the server response code starts with <b>\'2\'</b>'
|
|
$("#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_header").on("click", function () {
|
|
$("#listener_header_div").show();
|
|
$("#listener_add_header").show();
|
|
$("#add_listener_header").hide();
|
|
});
|
|
$("#add_frontend_header").on("click", function () {
|
|
$("#frontend_header_div").show();
|
|
$("#frontend_add_header").show();
|
|
$("#add_frontend_header").hide();
|
|
});
|
|
$("#add_backend_header").on("click", function () {
|
|
$("#backend_header_div").show();
|
|
$("#backend_add_header").show();
|
|
$("#add_backend_header").hide();
|
|
});
|
|
$("#listener_add_header").click(function () {
|
|
make_actions_for_adding_header('#listener_header_div');
|
|
});
|
|
$("#frontend_add_header").click(function () {
|
|
make_actions_for_adding_header('#frontend_header_div');
|
|
});
|
|
$("#backend_add_header").click(function () {
|
|
make_actions_for_adding_header('#backend_header_div');
|
|
});
|
|
$("#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/haproxy#'+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/haproxy#'+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/haproxy#'+proxy)
|
|
}
|
|
function confirmDeleteOption(id) {
|
|
$("#dialog-confirm").dialog({
|
|
resizable: false,
|
|
height: "auto",
|
|
width: 400,
|
|
modal: true,
|
|
title: delete_word + " " + $('#option-body-' + id).val() + "?",
|
|
buttons: [{
|
|
text: delete_word,
|
|
click: function () {
|
|
$(this).dialog("close");
|
|
removeOption(id);
|
|
}
|
|
}, {
|
|
text: cancel_word,
|
|
click: function () {
|
|
$(this).dialog("close");
|
|
}
|
|
}]
|
|
});
|
|
}
|
|
function removeOption(id) {
|
|
$("#option-"+id).css("background-color", "#f2dede");
|
|
$.ajax( {
|
|
url: "/app/add/option/delete/" + id,
|
|
success: function( data ) {
|
|
data = data.replace(/\s+/g,' ');
|
|
if (data.indexOf('error:') != '-1') {
|
|
toastr.error(data);
|
|
} else {
|
|
$("#option-"+id).remove();
|
|
}
|
|
}
|
|
} );
|
|
}
|
|
function updateOptions(id) {
|
|
toastr.clear();
|
|
$.ajax({
|
|
url: "/app/add/option/update",
|
|
data: {
|
|
option: $('#option-body-' + id).val(),
|
|
id: id,
|
|
},
|
|
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: delete_word + " " + $('#servers-ip-' + id).val() + "?",
|
|
buttons: [{
|
|
text: delete_word,
|
|
click: function () {
|
|
$(this).dialog("close");
|
|
removeSavedServer(id);
|
|
}
|
|
}, {
|
|
text: cancel_word,
|
|
click: function () {
|
|
$(this).dialog("close");
|
|
}
|
|
}]
|
|
});
|
|
}
|
|
function removeSavedServer(id) {
|
|
$("#servers-saved-"+id).css("background-color", "#f2dede");
|
|
$.ajax( {
|
|
url: "/app/add/server/delete/"+id,
|
|
success: function( data ) {
|
|
data = data.replace(/\s+/g,' ');
|
|
if(data.indexOf('ok') != '-1') {
|
|
$("#servers-saved-"+id).remove();
|
|
}
|
|
}
|
|
} );
|
|
}
|
|
function updateSavedServer(id) {
|
|
toastr.clear();
|
|
$.ajax( {
|
|
url: "/app/add/server/update",
|
|
data: {
|
|
server: $('#servers-ip-'+id).val(),
|
|
desc: $('#servers-desc-'+id).val(),
|
|
id: id,
|
|
},
|
|
type: "POST",
|
|
success: function( data ) {
|
|
data = data.replace(/\s+/g,' ');
|
|
if (data.indexOf('error:') != '-1') {
|
|
toastr.error(data);
|
|
} else {
|
|
$("#servers-saved-"+id).addClass( "update", 1000 );
|
|
setTimeout(function() {
|
|
$( "#servers-saved-"+id ).removeClass( "update" );
|
|
}, 2500 );
|
|
}
|
|
}
|
|
} );
|
|
}
|
|
function view_ssl(id) {
|
|
var raw_word = $('#translate').attr('data-raw');
|
|
if(!checkIsServerFiled('#serv5')) return false;
|
|
$.ajax( {
|
|
url: "/app/add/cert/" + $('#serv5').val() + '/' + id,
|
|
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: [{
|
|
text: cancel_word,
|
|
click: function () {
|
|
$(this).dialog("close");
|
|
}
|
|
}, {
|
|
text: raw_word,
|
|
click: function () {
|
|
showRawSSL(id);
|
|
}
|
|
}, {
|
|
text: delete_word,
|
|
click: function () {
|
|
$(this).dialog("close");
|
|
confirmDeleting("SSL cert", id, $(this), "");
|
|
}
|
|
}]
|
|
});
|
|
}
|
|
}
|
|
} );
|
|
}
|
|
function showRawSSL(id) {
|
|
$.ajax({
|
|
url: "/app/add/cert/get/raw/" + $('#serv5').val() + "/" + id,
|
|
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: [{
|
|
text: cancel_word,
|
|
click: function () {
|
|
$(this).dialog("close");
|
|
}
|
|
}, {
|
|
text: "Human readable",
|
|
click: function () {
|
|
view_ssl(id);
|
|
}
|
|
}, {
|
|
text: delete_word,
|
|
click: function () {
|
|
$(this).dialog("close");
|
|
confirmDeleting("SSL cert", id, $(this), "");
|
|
}
|
|
}]
|
|
});
|
|
}
|
|
}
|
|
});
|
|
}
|
|
function deleteSsl(id) {
|
|
if (!checkIsServerFiled('#serv5')) return false;
|
|
$.ajax({
|
|
url: "/app/add/cert/" + $("#serv5").val() + "/" + id,
|
|
type: "DELETE",
|
|
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: "/app/service/haproxy/version/" + $('#serv' + id + ' option:selected').val(),
|
|
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: "/app/service/haproxy/version/" + $('#serv' + id + ' option:selected').val(),
|
|
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: "/app/add/haproxy/bwlist/create",
|
|
data: {
|
|
bwlists_create: list,
|
|
color: color
|
|
},
|
|
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: "/app/add/haproxy/bwlist/" + list + "/" + color + "/" + $('#group_id').val(),
|
|
success: function( data ) {
|
|
if (data.indexOf('error:') != '-1') {
|
|
toastr.error(data);
|
|
} else {
|
|
var save_word = $('#translate').attr('data-just_save');
|
|
var upload_and_reload = $('#translate').attr('data-upload_and_reload');
|
|
var upload_and_restart = $('#translate').attr('data-upload_and_restart');
|
|
var edit_word = $('#translate').attr('data-edit');
|
|
$('#edit_lists').text(data);
|
|
$( "#dialog-confirm-cert-edit" ).dialog({
|
|
resizable: false,
|
|
height: "auto",
|
|
width: 650,
|
|
modal: true,
|
|
title: edit_word + " "+list,
|
|
buttons: [{
|
|
text: delete_word,
|
|
click: function () {
|
|
$(this).dialog("close");
|
|
confirmDeleting('list', list, $(this), color);
|
|
}
|
|
}, {
|
|
text: save_word,
|
|
click: function () {
|
|
$(this).dialog("close");
|
|
saveList('save', list, color);
|
|
}
|
|
}, {
|
|
text: upload_and_reload,
|
|
click: function () {
|
|
$(this).dialog("close");
|
|
saveList('reload', list, color);
|
|
}
|
|
}, {
|
|
text: upload_and_restart,
|
|
click: function () {
|
|
$(this).dialog("close");
|
|
saveList('restart', list, color);
|
|
}
|
|
}, {
|
|
text: cancel_word,
|
|
click: function () {
|
|
$(this).dialog("close");
|
|
}
|
|
}]
|
|
});
|
|
}
|
|
}
|
|
} );
|
|
}
|
|
function saveList(action, list, color) {
|
|
var serv = $("#serv-" + color + "-list option:selected").val();
|
|
if (!checkIsServerFiled($("#serv-" + color + "-list"))) return false;
|
|
$.ajax({
|
|
url: "/app/add/haproxy/bwlist/save",
|
|
data: {
|
|
bwlists_save: list,
|
|
serv: serv,
|
|
bwlists_content: $('#edit_lists').val(),
|
|
color: color,
|
|
bwlists_restart: action
|
|
},
|
|
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 {
|
|
if (data[i] != '\n') {
|
|
toastr.success(data[i]);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
});
|
|
}
|
|
function deleteList(list, color) {
|
|
var serv = $( "#serv-"+color+"-list option:selected" ).val();
|
|
if(!checkIsServerFiled($("#serv-"+color+"-list"))) return false;
|
|
$.ajax({
|
|
url: "/app/add/haproxy/bwlist/delete/" + serv + "/" + color + "/" + list + "/" + $('#group_id').val(),
|
|
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 createMap() {
|
|
map_name = $('#new_map_name').val()
|
|
map_name = escapeHtml(map_name);
|
|
$.ajax( {
|
|
url: "/app/add/map",
|
|
data: {
|
|
map_name: map_name
|
|
},
|
|
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('A map has been created');
|
|
setTimeout(function () {
|
|
location.reload();
|
|
}, 2500);
|
|
}
|
|
}
|
|
} );
|
|
}
|
|
function editMap(map) {
|
|
$.ajax({
|
|
url: "/app/add/map",
|
|
data: {
|
|
map_name: map,
|
|
},
|
|
type: "GET",
|
|
success: function (data) {
|
|
if (data.indexOf('error:') != '-1') {
|
|
toastr.error(data);
|
|
} else {
|
|
var save_word = $('#translate').attr('data-just_save');
|
|
var upload_and_reload = $('#translate').attr('data-upload_and_reload');
|
|
var upload_and_restart = $('#translate').attr('data-upload_and_restart');
|
|
var edit_word = $('#translate').attr('data-edit');
|
|
$('#edit_map').text(data);
|
|
$("#dialog-confirm-map-edit").dialog({
|
|
resizable: false,
|
|
height: "auto",
|
|
width: 650,
|
|
modal: true,
|
|
title: edit_word + " " + map,
|
|
buttons: [{
|
|
text: delete_word,
|
|
click: function () {
|
|
$(this).dialog("close");
|
|
confirmDeleting('map', map, $(this));
|
|
}
|
|
}, {
|
|
text: save_word,
|
|
click: function () {
|
|
$(this).dialog("close");
|
|
saveMap('save', map);
|
|
}
|
|
}, {
|
|
text: upload_and_reload,
|
|
click: function () {
|
|
$(this).dialog("close");
|
|
saveMap('reload', map);
|
|
}
|
|
}, {
|
|
text: upload_and_restart,
|
|
click: function () {
|
|
$(this).dialog("close");
|
|
saveMap('restart', map);
|
|
}
|
|
}, {
|
|
text: cancel_word,
|
|
click: function () {
|
|
$(this).dialog("close");
|
|
}
|
|
}]
|
|
});
|
|
}
|
|
}
|
|
});
|
|
}
|
|
function saveMap(action, map) {
|
|
var serv = $( "#serv-map option:selected" ).val();
|
|
if(!checkIsServerFiled($("#serv-map"))) return false;
|
|
$.ajax({
|
|
url: "/app/add/map",
|
|
data: {
|
|
map_name: map,
|
|
serv: serv,
|
|
content: $('#edit_map').val(),
|
|
map_restart: action
|
|
},
|
|
type: "PUT",
|
|
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 {
|
|
if (data[i] != '\n') {
|
|
toastr.success(data[i]);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
});
|
|
}
|
|
function deleteMap(map) {
|
|
var serv = $( "#serv-map option:selected" ).val();
|
|
if(!checkIsServerFiled($("#serv-map"))) return false;
|
|
$.ajax({
|
|
url: "/app/add/map",
|
|
data: {
|
|
map_name: map,
|
|
serv: serv,
|
|
},
|
|
type: "DELETE",
|
|
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('The map 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;
|
|
var empty_name = $('#translate').attr('data-empty_name');
|
|
var generated_title = $('#translate').attr('data-generated_config');
|
|
if(!checkIsServerFiled(name_id, empty_name)) return false;
|
|
var input = $("<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_title,
|
|
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 ) {
|
|
data = data.replace(/\n/g, "<br>");
|
|
if (data.indexOf('error: ') != '-1' || data.indexOf('Error(s)') != '-1' || data.indexOf('Fatal') != '-1') {
|
|
returnNiceCheckingConfig(data);
|
|
} else if (data == '') {
|
|
toastr.clear();
|
|
toastr.error('error: Something went wrong. Check configuration');
|
|
} 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: delete_word + " " + deleting_thing + " " +id + "?",
|
|
buttons: [{
|
|
text: delete_word,
|
|
click: function () {
|
|
if (deleting_thing == "SSL cert") {
|
|
deleteSsl(id);
|
|
$(dialog_id).dialog("close");
|
|
} else if (deleting_thing == "list") {
|
|
deleteList(id, color);
|
|
$(dialog_id).dialog("close");
|
|
} else if (deleting_thing == "map") {
|
|
deleteMap(id);
|
|
$(dialog_id).dialog("close");
|
|
}
|
|
$(this).dialog("close");
|
|
}
|
|
}, {
|
|
text: cancel_word,
|
|
click: 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 if_word = $('#translate').attr('data-if-title');
|
|
var then_word = $('#translate').attr('data-then');
|
|
var value_word = $('#translate').attr('data-value');
|
|
var name_word = $('#translate').attr('data-name');
|
|
var acl_option = '<p id="new_acl_p" style="border-bottom: 1px solid #ddd; padding-bottom: 10px;">\n' +
|
|
'<b class="padding10">'+if_word+'</b>\n' +
|
|
'<select name="acl_if">\n' +
|
|
'\t<option selected>Select if</option>\n' +
|
|
'\t<option value="1">Host name starts with</option>\n' +
|
|
'\t<option value="2">Host name ends with</option>\n' +
|
|
'\t<option value="3">Path starts with</option>\n' +
|
|
'\t<option value="4">Path ends with</option>\n' +
|
|
'\t<option value="6">Src ip</option>\n' +
|
|
'</select> ' +
|
|
'<b class="padding10">'+value_word+'</b>\n' +
|
|
'<input type="text" name="acl_value" class="form-control">\n' +
|
|
'<b class="padding10">'+then_word+'</b>\n' +
|
|
'<select name="acl_then">\n' +
|
|
'\t<option selected>Select then</option>\n' +
|
|
'\t<option value="5">Use backend</option>\n' +
|
|
'\t<option value="2">Redirect to</option>\n' +
|
|
'\t<option value="3">Allow</option>\n' +
|
|
'\t<option value="4">Deny</option>\n' +
|
|
'\t<option value="6">Return</option>\n' +
|
|
'\t<option value="7">Set-header</option>\n' +
|
|
'</select>\n' +
|
|
'<b class="padding10">'+value_word+'</b>\n' +
|
|
'<input type="text" name="acl_then_value" class="form-control" value="" title="Required if\" then\" is \"Use backend\" or \"Redirect\"">\n' +
|
|
'<span class="minus minus-style" id="new_acl_rule_minus" title="Delete this ACL"></span>' +
|
|
'</p>'
|
|
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("/app/static/js/overview.js");
|
|
$( "select" ).selectmenu();
|
|
$('[name=acl_if]').selectmenu({width: 180});
|
|
$('[name=acl_then]').selectmenu({width: 180});
|
|
}
|
|
var value_word = $('#translate').attr('data-value');
|
|
var name_word = $('#translate').attr('data-name');
|
|
var header_option = '<p style="border-bottom: 1px solid #ddd; padding-bottom: 10px;" id="new_header_p">\n' +
|
|
'<select name="headers_res">' +
|
|
'<option value="http-response">response</option>' +
|
|
'<option value="http-request">request</option>' +
|
|
'</select>' +
|
|
'<select name="headers_method">' +
|
|
'<option value="add-header">add-header</option>' +
|
|
'<option value="set-header">set-header</option>' +
|
|
'<option value="del-header">del-header</option>' +
|
|
'</select>' +
|
|
'\t<b class="padding10">'+name_word+'</b>' +
|
|
'\t<input name="header_name" class="form-control">' +
|
|
'\t<b class="padding10">'+value_word+'</b>' +
|
|
'\t<input name="header_value" class="form-control" placeholder="Leave blank if using del-header">' +
|
|
'\t<span class="minus minus-style" id="new_header_minus" title="Delete this header"></span>' +
|
|
'</p>'
|
|
function make_actions_for_adding_header(section_id) {
|
|
var random_id = makeid(3);
|
|
$(section_id).append(header_option);
|
|
$('#new_header_minus').attr('onclick', 'deleteId(\''+random_id+'\')');
|
|
$('#new_header_minus').attr('id', '');
|
|
$('#new_header_p').attr('id', random_id);
|
|
$('#new_header_minus').attr('id', '');
|
|
$.getScript("/app/static/js/overview.js");
|
|
$( "select" ).selectmenu();
|
|
$('[name=headers_method]').selectmenu({width: 180});
|
|
// $('[name=acl_then]').selectmenu({width: 180});
|
|
}
|
|
var bind_option = '<p id="new_bind_p"><input type="text" name="ip" size="15" placeholder="Any" class="form-control ui-autocomplete-input" autocomplete="off">' +
|
|
'<b>:</b> ' +
|
|
'<input type="text" name="port" size="5" style="" required="" placeholder="8080" title="Port for bind listen" class="form-control" autocomplete="off"> ' +
|
|
'<span class="minus minus-style" id="new_bind_minus" title="Remove the IP-port pair"></span>'
|
|
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("/app/static/js/overview.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: "/app/add/show/ip/" + $("#" + serv).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();
|
|
var select_id = $("#existing_userlist_serv");
|
|
if (!checkIsServerFiled(select_id)) return false;
|
|
$.ajax({
|
|
url: "/app/add/haproxy/userlist/" + serv,
|
|
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++) {
|
|
var existing_userlist_ajax = $.find("#existing_userlist_ajax");
|
|
existing_userlist_ajax = existing_userlist_ajax[0].id;
|
|
data[i] = escapeHtml(data[i]);
|
|
$('#' + existing_userlist_ajax).append('<a href="/app/config/section/haproxy/' + serv + '/' + data[i] + '" title="Edit/Delete this userlist" target="_blank">' + data[i] + '</a> ');
|
|
}
|
|
}
|
|
}
|
|
});
|
|
}
|
|
function changePortCheckFromServerPort() {
|
|
$('[name=server_port]').on('input', function () {
|
|
var iNum = parseInt($($(this)).val());
|
|
$($(this)).next().val(iNum);
|
|
});
|
|
}
|