You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
haproxy-wi/inc/script.js

1548 lines
44 KiB

var url = "/inc/script.js";
var cur_url = window.location.href.split('/').pop();
cur_url = cur_url.split('?');
var intervalId;
jQuery.expr[':'].regex = function(elem, index, match) {
var matchParams = match[3].split(','),
validLabels = /^(data|css):/,
attr = {
method: matchParams[0].match(validLabels) ?
matchParams[0].split(':')[0] : 'attr',
property: matchParams.shift().replace(validLabels,'')
},
regexFlags = 'ig',
regex = new RegExp(matchParams.join('').replace(/^\s+|\s+$/g,''), regexFlags);
return regex.test(jQuery(elem)[attr.method](attr.property));
}
window.onblur= function() {
window.onfocus= function () {
if(Cookies.get('auto-refresh-pause') == "0" && Cookies.get('auto-refresh') > 5000) {
if (cur_url[0] == "logs.py") {
showLog();
} else if (cur_url[0] == "viewsttats.py") {
showStats()
} else if (cur_url[0] == "overview.py") {
showOverview();
} else if (cur_url[0] == "viewlogs.py") {
viewLogs();
6 years ago
} else if (cur_url[0] == "metrics.py") {
loadMetrics();
}
}
}
};
6 years ago
if(Cookies.get('restart')) {
var ip = Cookies.get('restart');
$.ajax( {
url: "options.py",
data: {
act: "checkrestart",
serv: ip,
token: $('#token').val()
},
type: "GET",
success: function( data ) {
if(data.indexOf('ok') != '-1') {
$("#apply").css('display', 'block');
$("#apply_div").css('width', '850px');
if (cur_url[0] == "overview.py") {
$("#apply_div").css('width', '650px');
$("#apply_div").html("You made changes to the server: "+ip+". Changes will take effect only after<a id='"+ip+"' class='restart' title='Restart HAproxy service'>restart</a><a href='#' title='close' id='apply_close' style='float: right'><b>X</b></a>");
} else {
$("#apply_div").html("You made changes to the server: "+ip+". Changes will take effect only after restart. <a href='overview.py' title='Overview'>Go to Overview page and restart</a><a href='#' title='close' id='apply_close' style='float: right'><b>X</b></a>");
}
$.getScript('/inc/overview.js');
6 years ago
}
}
} );
}
function autoRefreshStyle(autoRefresh) {
var margin;
6 years ago
if (cur_url[0] == "overview.py" || cur_url[0] == "waf.py" || cur_url[0] == "metrics.py") {
if(autoRefresh < 60000) {
autoRefresh = 60000;
}
}
autoRefresh = autoRefresh / 1000;
if ( autoRefresh == 60) {
timeRange = " minute"
autoRefresh = autoRefresh / 60;
} else if ( autoRefresh > 60 && autoRefresh < 3600 ) {
timeRange = " minutes"
autoRefresh = autoRefresh / 60;
} else if ( autoRefresh >= 3600 && autoRefresh < 86401 ) {
timeRange = " hours"
autoRefresh = autoRefresh / 3600;
} else {
timeRange = " seconds";
}
$('#1').text(autoRefresh + timeRange);
$('#0').text(autoRefresh + timeRange);
$('.auto-refresh-pause').css('display', 'inline');
7 years ago
$('.auto-refresh-resume').css('display', 'none');
$('.auto-refresh-pause').css('margin-left', "-25px");
$('.auto-refresh-resume').css('margin-left', "-25px");
$('.auto-refresh img').remove();
}
function setRefreshInterval(interval) {
if (interval == "0") {
6 years ago
Cookies.remove('auto-refresh');
pauseAutoRefresh();
$('.auto-refresh').prepend('<img src=/image/pic/update.png alt="restart" class="icon">');
$('.auto-refresh').css('margin-top', '-3px');
$('#1').text('Auto-refresh');
$('#0').text('Auto-refresh');
$('.auto-refresh-pause').css('display', 'none');
$('.auto-refresh-resume').css('display', 'none');
hideAutoRefreshDiv();
} else {
clearInterval(intervalId);
Cookies.set('auto-refresh', interval, { expires: 365 });
Cookies.set('auto-refresh-pause', "0", { expires: 365 });
startSetInterval(interval);
hideAutoRefreshDiv();
autoRefreshStyle(interval);
}
}
function startSetInterval(interval) {
if(Cookies.get('auto-refresh-pause') == "0") {
if (cur_url[0] == "logs.py") {
intervalId = setInterval('showLog()', interval);
showLog();
} else if (cur_url[0] == "viewsttats.py") {
intervalId = setInterval('showStats()', interval);
showStats()
} else if (cur_url[0] == "overview.py") {
if(interval < 60000) {
interval = 60000;
}
intervalId = setInterval('showOverview()', interval);
showOverview();
} else if (cur_url[0] == "viewlogs.py") {
intervalId = setInterval('viewLogs()', interval);
viewLogs();
} else if (cur_url[0] == "metrics.py") {
6 years ago
if(interval < 60000) {
interval = 60000;
}
intervalId = setInterval('loadMetrics()', interval);
loadMetrics();
}
6 years ago
else if (cur_url[0] == "waf.py") {
6 years ago
if(interval < 60000) {
interval = 60000;
}
6 years ago
intervalId = setInterval('loadMetrics()', interval);
showOverviewWaf();
loadMetrics();
}
} else {
pauseAutoRefresh();
}
}
function pauseAutoRefresh() {
clearInterval(intervalId);
$(function() {
$('.auto-refresh-pause').css('display', 'none');
$('.auto-refresh-resume').css('display', 'inline');
Cookies.set('auto-refresh-pause', "1", { expires: 365 });
});
}
function pauseAutoResume(){
var autoRefresh = Cookies.get('auto-refresh');
setRefreshInterval(autoRefresh);
Cookies.set('auto-refresh-pause', "0", { expires: 365 });
}
function hideAutoRefreshDiv() {
$(function() {
$('.auto-refresh-div').hide("blind", "fast");
$('#1').css("display", "none");
$('#0').css("display", "inline");
});
}
$( document ).ajaxSend(function( event, request, settings ) {
$('#cover').fadeIn('fast');
NProgress.start();
});
$( document ).ajaxComplete(function( event, request, settings ) {
$('#cover').fadeOut('fast');
NProgress.done();
});
function showOverview() {
showOverviewServers();
showOverviewWaf()
$.ajax( {
url: "options.py",
data: {
act: "overview",
token: $('#token').val()
},
type: "GET",
success: function( data ) {
$("#ajaxstatus").empty();
$("#ajaxstatus").html(data);
6 years ago
$.getScript('/inc/overview.js');
}
} );
}
function showOverviewWaf() {
$.ajax( {
url: "options.py",
data: {
act: "overviewwaf",
6 years ago
page: cur_url[0],
token: $('#token').val()
},
type: "GET",
success: function( data ) {
$("#ajaxwafstatus").empty();
$("#ajaxwafstatus").html(data);
$.getScript('/inc/overview.js');
if (cur_url[0] == "waf.py") {
$.getScript('/inc/waf.js');
$( "input[type=submit], button" ).button();
$( "input[type=checkbox]" ).checkboxradio();
}
}
} );
}
function showOverviewServers() {
$.ajax( {
url: "options.py",
data: {
act: "overviewServers",
token: $('#token').val()
},
type: "GET",
success: function( data ) {
$("#ajaxservers").html(data);
}
} );
}
function showStats() {
$.ajax( {
url: "options.py",
data: {
act: "stats",
serv: $("#serv").val(),
token: $('#token').val()
},
type: "GET",
success: function( data ) {
7 years ago
$("#ajax").html(data);
window.history.pushState("Stats", "Stats", cur_url[0]+"?serv="+$("#serv").val());
wait();
}
} );
5 years ago
}
function openStats() {
var serv = $("#serv").val();
var url = "viewsttats.py?serv="+serv
var win = window.open(url, '_blank');
win.focus();
}
function showLog() {
var waf = 0;
if ($('#waf').is(':checked')) {
waf = '1';
}
$.ajax( {
url: "options.py",
data: {
rows: $('#rows').val(),
serv: $("#serv").val(),
waf: waf,
grep: $("#grep").val(),
hour: $('#time_range_out_hour').val(),
minut: $('#time_range_out_minut').val(),
hour1: $('#time_range_out_hour1').val(),
minut1: $('#time_range_out_minut1').val(),
token: $('#token').val()
},
type: "GET",
success: function( data ) {
$("#ajax").html(data);
window.history.pushState("Logs", "Logs", cur_url[0]+"?serv="+$("#serv").val()+"&rows="+$('#rows').val()+"&grep="+$("#grep").val());
}
} );
}
function showMap() {
6 years ago
$("#ajax").empty();
$("#ajax-compare").empty();
$("#config").empty();
$(".alert-info").empty();
var unique = $.now();
$.ajax( {
url: "options.py",
data: {
serv: $("#serv").val(),
act: "showMap",
token: $('#token').val()
},
type: "GET",
success: function( data ) {
$("#ajax").html(data);
6 years ago
window.history.pushState("Show map", "Show map", cur_url[0]);
}
} );
}
function showRuntime() {
if($('#save').prop('checked')) {
saveCheck = "on";
} else {
saveCheck = "";
}
$.ajax( {
url: "options.py",
data: {
servaction: $('#servaction').val(),
serv: $("#serv").val(),
servbackend: $("#servbackend").val(),
save: saveCheck,
token: $('#token').val()
},
type: "GET",
success: function( data ) {
$("#ajax").html(data);
}
} );
}
function showCompare() {
$.ajax( {
url: "options.py",
data: {
serv: $("#serv").val(),
left: $('#left').val(),
right: $("#right").val(),
token: $('#token').val()
},
type: "GET",
success: function( data ) {
$("#ajax").html(data);
7 years ago
}
} );
}
function showCompareConfigs() {
$("#ajax").empty();
$("#config").empty();
$(".alert-info").empty();
7 years ago
$.ajax( {
url: "options.py",
data: {
serv: $("#serv").val(),
act: "showCompareConfigs",
open: "open",
token: $('#token').val()
7 years ago
},
type: "GET",
success: function( data ) {
$("#ajax-compare").html(data);
$( "input[type=submit], button" ).button();
$( "select" ).selectmenu();
window.history.pushState("Compare configs", "Compare configs", cur_url[0]);
}
} );
}
function showConfig() {
$("#ajax").empty();
$("#ajax-compare").empty();
$("#config").empty();
$(".alert-info").empty();
$.ajax( {
url: "options.py",
data: {
serv: $("#serv").val(),
act: "configShow",
token: $('#token').val()
},
type: "GET",
success: function( data ) {
$("#ajax").html(data);
$.getScript('/inc/configshow.js');
window.history.pushState("Show config", "Show config", cur_url[0]);
}
} );
}
function showUploadConfig() {
var view = $('#view').val();
if(view != "1") {
view = ""
}
$.ajax( {
url: "options.py",
data: {
serv: $("#serv").val(),
act: "configShow",
configver: $('#configver').val(),
token: $('#token').val(),
view: view
},
type: "GET",
success: function( data ) {
$("#ajax").html(data);
if(view == "1") {
window.history.pushState("Show config", "Show config", cur_url[0]+"?serv="+$("#serv").val()+"&open=open&configver="+$('#configver').val()+"&view="+$('#view').val());
} else {
window.history.pushState("Show config", "Show config", cur_url[0]+"?serv="+$("#serv").val()+"&open=open&configver="+$('#configver').val());
}
$.getScript('/inc/configshow.js');
}
} );
}
function viewLogs() {
if($('#viewlogs').val() == 'haproxy-wi.error.log' || $('#viewlogs').val() == 'haproxy-wi.access.log') {
showApacheLog($('#viewlogs').val());
} else {
$.ajax( {
url: "options.py",
data: {
viewlogs: $('#viewlogs').val(),
rows2: $('#rows').val(),
grep: $("#grep").val(),
hour: $('#time_range_out_hour').val(),
minut: $('#time_range_out_minut').val(),
hour1: $('#time_range_out_hour1').val(),
minut1: $('#time_range_out_minut1').val(),
token: $('#token').val(),
},
type: "GET",
success: function( data ) {
$("#ajax").html(data);
window.history.pushState("View logs", "View logs", cur_url[0]+"?viewlogs="+$("#viewlogs").val());
}
} );
}
}
$( function() {
$( "#serv" ).on('selectmenuchange',function() {
$("#show").css("pointer-events", "inherit");
$("#show").css("cursor", "pointer");
});
if ($( "#serv option:selected" ).val() == "Choose server") {
$("#show").css("pointer-events", "none");
$("#show").css("cursor", "not-allowed");
}
var pause = '<a onclick="pauseAutoRefresh()" title="Pause auto-refresh" class="auto-refresh-pause"></a>'
var autoRefresh = Cookies.get('auto-refresh');
if ($('.auto-refresh')) {
if(autoRefresh) {
startSetInterval(autoRefresh);
autoRefreshStyle(autoRefresh);
}
}
5 years ago
/* $("body").mCustomScrollbar({
theme:"minimal-dark",
scrollInertia:30
});
$(".diff").mCustomScrollbar({
theme:"minimal-dark",
scrollInertia:30
5 years ago
}); */
$( "#tabs" ).tabs();
$( "#redirectBackend" ).on( "click", function() {
$( "#tabs" ).tabs( "option", "active", 2 );
} );
$( "select" ).selectmenu();
7 years ago
//var tooltips = $( "[title]" ).tooltip();
$( "input[type=submit], button" ).button();
7 years ago
$( "input[type=checkbox]" ).checkboxradio();
$( ".controlgroup" ).controlgroup();
7 years ago
var location = window.location.href;
var cur_url = '/app/' + location.split('/').pop();
cur_url = cur_url.split('?');
// $('.menu li').each(function () {
// var link = $(this).find('a').attr('href');
// if (cur_url[0] == link) {
// $(this).addClass('current');
// }
// });
var now = new Date(Date.now());
var date1 = now.getHours() * 60 - 1 * 60;
var date2 = now.getHours() * 60 + now.getMinutes();
$("#time-range").slider({
range: true,
min: 0,
max: 1440,
step: 15,
values: [ date1, date2 ],
slide: function(e, ui) {
var hours = Math.floor(ui.values[0] / 60);
var minutes = ui.values[0] - (hours * 60);
if(hours.toString().length == 1) hours = '0' + hours;
if(minutes.toString().length == 1) minutes = '0' + minutes;
var hours1 = Math.floor(ui.values[1] / 60);
var minutes1 = ui.values[1] - (hours1 * 60);
if(hours1.toString().length == 1) hours1 = '0' + hours1;
if(minutes1.toString().length == 1) minutes1 = '0' + minutes1;
$('#time_range_out_hour').val(hours);
$('#time_range_out_minut').val(minutes);
$('#time_range_out_hour1').val(hours1);
$('#time_range_out_minut1').val(minutes1);
}
});
7 years ago
var date1_hours = Math.floor(date1/60);
var date2_hours = date1_hours + 1;
var date2_minute = now.getMinutes()
7 years ago
if(date1_hours <= 9) date1_hours = '0' + date1_hours;
if(date2_hours <= 9) date2_hours = '0' + date2_hours;
if(date2_minute <= 9) date2_minute = '0' + date2_minute;
7 years ago
$('#time_range_out_hour').val(date1_hours);
$('#time_range_out_minut').val('00');
7 years ago
$('#time_range_out_hour1').val(date2_hours);
$('#time_range_out_minut1').val(date2_minute);
$('#0').click(function() {
$('.auto-refresh-div').show("blind", "fast");
$('#0').css("display", "none");
$('#1').css("display", "inline");
});
$('#1').click(function() {
$('.auto-refresh-div').hide("blind", "fast");
$('#1').css("display", "none");
$('#0').css("display", "inline");
});
7 years ago
$('#select_all').click(function(){
var checkboxes = $(this).closest('form').find(':checkbox');
if($(this).prop('checked')) {
$("form input[type='checkbox']").attr("checked",true).change();
$("#label_select_all").text("Unselect all");
} else {
$("form input[type='checkbox']").attr("checked",false).change();
$("#label_select_all").text("Select all");
}
});
7 years ago
$( "#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" );
}
});
$( "#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" );
}
});
7 years ago
$( "#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);
7 years ago
$( "#inter-listen" ).attr('disable',false);
}
} else {
7 years ago
$( "#controlgroup-listen" ).hide( "fast" );
}
7 years ago
$( "#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);
7 years ago
$( "#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);
7 years ago
$( "#inter-listen" ).selectmenu( "option", "disabled", true );
$( "#fall-listen" ).selectmenu( "option", "disabled", true );
$( "#rise-listen" ).selectmenu( "option", "disabled", true );
}
});
});
7 years ago
$( "#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" );
}
});
$( "#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);
7 years ago
$( "#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);
7 years ago
$( "#inter-backend" ).selectmenu( "option", "disabled", true );
$( "#fall-backend" ).selectmenu( "option", "disabled", true );
$( "#rise-backend" ).selectmenu( "option", "disabled", true );
}
});
$( "#hide_menu" ).click(function() {
$(".top-menu").hide( "drop", "fast" );
$(".container").css("max-width", "98%");
$(".container").css("margin-left", "1%");
$(".show_menu").show();
Cookies.set('hide_menu', 'hide', { expires: 365 });
});
$( "#show_menu" ).click(function() {
$(".top-menu").show( "drop", "fast" );
$(".container").css("max-width", "91%");
$(".container").css("margin-left", "207px");
$(".show_menu").hide();
Cookies.set('hide_menu', 'show', { expires: 365 });
});
var hideMenu = Cookies.get('hide_menu');
if (hideMenu == "show") {
$(".top-menu").show( "drop", "fast" );
$(".container").css("max-width", "91%");
$(".container").css("margin-left", "207px");
}
if (hideMenu == "hide") {
$(".top-menu").hide();
$(".container").css("max-width", "98%");
$(".container").css("margin-left", "1%");
$(".show_menu").show();
}
var availableTags = [
"acl", "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 ( request.term == "" ) {
request.term = 1
}
$.ajax( {
url: "options.py",
data: {
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 ( request.term == "" ) {
request.term = 1
}
$.ajax( {
url: "options.py",
data: {
ip: request.term,
serv: $("#serv2").val(),
token: $('#token').val()
},
success: function( data ) {
data = data.replace(/\s+/g,' ');
response(data.split(" "));
}
} );
},
autoFocus: true,
minLength: -1
});
$( "#backends" ).autocomplete({
source: function( request, response ) {
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('<br>'));
}
} );
},
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
});
$( "#options" ).autocomplete({
source: availableTags,
autoFocus: true,
minLength: -1,
select: function( event, ui ) {
$("#optionsInput").append(ui.item.value + " ");
$("#options").empty();
}
});
$( "#options1" ).autocomplete({
source: availableTags,
autoFocus: true,
minLength: -1,
select: function( event, ui ) {
$("#optionsInput1").append(ui.item.value + " ");
}
});
$( "#options2" ).autocomplete({
source: availableTags,
autoFocus: true,
minLength: -1,
select: function( event, ui ) {
$("#optionsInput2").append(ui.item.value + " ")
}
});
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"
$('#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);
}
});
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);
}
});
6 years ago
$("#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() {
6 years ago
if($('#name').val() == "") {
$("#optionsInput").append(ddos_var)
6 years ago
}
var ddos_var = "#Start config for DDOS atack protecte\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";
6 years ago
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() {
6 years ago
if($('#new_frontend').val() == "") {
$("#optionsInput1").append(ddos_var)
6 years ago
}
var ddos_var = "#Start config for DDOS atack protecte\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";
6 years ago
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);
}
});
$( "#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);
6 years ago
}
});
$( "#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);
}
});
6 years ago
6 years ago
cur_url = cur_url[0].split('#');
if (cur_url[0] == "/app/add.py") {
$("#cache").checkboxradio( "disable" );
$("#waf").checkboxradio( "disable" );
6 years ago
$( "#serv" ).on('selectmenuchange',function() {
change_select_acceleration("");
change_select_waf("");
6 years ago
});
$("#cache2").checkboxradio( "disable" );
$("#waf2").checkboxradio( "disable" );
6 years ago
$( "#serv2" ).on('selectmenuchange',function() {
change_select_acceleration("2");
change_select_waf("2");
6 years ago
});
$("#cache3").checkboxradio( "disable" );
6 years ago
$( "#serv3" ).on('selectmenuchange',function() {
change_select_acceleration("3");
});
6 years ago
$( "#add1" ).on( "click", function() {
$('.menu li').each(function () {
$(this).removeClass('current');
});
$(this).parent().addClass('current');
$( "#tabs" ).tabs( "option", "active", 0 );
} );
$( "#add2" ).on( "click", function() {
$('.menu li').each(function () {
$(this).removeClass('current');
});
$(this).parent().addClass('current');
$( "#tabs" ).tabs( "option", "active", 1 );
} );
$( "#add3" ).on( "click", function() {
$('.menu li').each(function () {
$(this).removeClass('current');
});
$(this).parent().addClass('current');
$( "#tabs" ).tabs( "option", "active", 2 );
} );
$( "#add4" ).on( "click", function() {
$('.menu li').each(function () {
$(this).removeClass('current');
});
$(this).parent().addClass('current');
$( "#tabs" ).tabs( "option", "active", 3 );
} );
6 years ago
}
if (cur_url[0] == "/app/users.py" || cur_url[0] == "/app/servers.py") {
$( ".users" ).on( "click", function() {
6 years ago
$('.menu li').each(function () {
$(this).removeClass('current');
});
$(this).parent().addClass('current');
$( "#tabs" ).tabs( "option", "active", 0 );
} );
if (cur_url[0] == "/app/users.py") {
$( ".group" ).on( "click", function() {
6 years ago
$('.menu li').each(function () {
$(this).removeClass('current');
});
$(this).parent().addClass('current');
$( "#tabs" ).tabs( "option", "active", 1 );
} );
} else {
$( ".runtime" ).on( "click", function() {
6 years ago
$('.menu li').each(function () {
$(this).removeClass('current');
});
$(this).parent().addClass('current');
$( "#tabs" ).tabs( "option", "active", 1 );
} );
}
if (cur_url[0] == "/app/servers.py") {
$( ".admin" ).on( "click", function() {
6 years ago
$('.menu li').each(function () {
$(this).removeClass('current');
});
$(this).parent().addClass('current');
$( "#tabs" ).tabs( "option", "active", 2 );
} );
}
if (cur_url[0] == "/app/users.py") {
$( ".runtime" ).on( "click", function() {
6 years ago
$('.menu li').each(function () {
$(this).removeClass('current');
});
$(this).parent().addClass('current');
$( "#tabs" ).tabs( "option", "active", 2 );
} );
}
$( ".role" ).on( "click", function() {
6 years ago
$('.menu li').each(function () {
$(this).removeClass('current');
});
$(this).parent().addClass('current');
$( "#tabs" ).tabs( "option", "active", 3 );
} );
$( ".admin" ).on( "click", function() {
6 years ago
$('.menu li').each(function () {
$(this).removeClass('current');
});
$(this).parent().addClass('current');
$( "#tabs" ).tabs( "option", "active", 4 );
} );
}
$( "#path-cert-listen" ).autocomplete({
source: function( request, response ) {
$.ajax( {
url: "options.py",
data: {
getcerts:1,
serv: $("#serv").val(),
token: $('#token').val()
},
success: function( data ) {
data = data.replace(/\s+/g,' ');
response(data.split(" "));
}
} );
},
autoFocus: true,
minLength: -1
});
$( "#path-cert-frontend" ).autocomplete({
source: function( request, response ) {
$.ajax( {
url: "options.py",
data: {
getcerts:1,
serv: $("#serv2").val(),
token: $('#token').val()
},
success: function( data ) {
data = data.replace(/\s+/g,' ');
response(data.split(" "));
}
} );
},
autoFocus: true,
minLength: -1
});
$( "#interface" ).autocomplete({
source: function( request, response ) {
$.ajax( {
url: "options.py",
data: {
showif:1,
serv: $("#master").val(),
token: $('#token').val()
},
success: function( data ) {
data = data.replace(/\s+/g,' ');
response(data.split(" "));
}
} );
},
autoFocus: true,
minLength: -1
});
$( "#interface-add" ).autocomplete({
source: function( request, response ) {
$.ajax( {
url: "options.py",
data: {
showif:1,
serv: $("#master-add").val(),
token: $('#token').val()
},
success: function( data ) {
data = data.replace(/\s+/g,' ');
response(data.split(" "));
}
} );
},
autoFocus: true,
minLength: -1
});
$( "#ssl_key_upload" ).click(function() {
$('.alert-danger').remove();
$.ajax( {
url: "options.py",
data: {
serv: $('#serv4').val(),
ssl_cert: $('#ssl_cert').val(),
ssl_name: $('#ssl_name').val(),
token: $('#token').val()
},
type: "GET",
success: function( data ) {
data = data.replace(/\s+/g,' ');
if (data.indexOf('danger') != '-1') {
$("#ajax-ssl").html(data);
} else if (data.indexOf('success') != '-1') {
$('.alert-danger').remove();
7 years ago
$( "#ajax-ssl").html(data);
setTimeout(function() {
7 years ago
$( "#ajax-ssl").html("");
}, 2500 );
} else {
$("#ajax-ssl").html('<div class="alert alert-danger">Something wrong, check and try again</div>');
}
}
} );
});
$('#ssl_key_view').click(function() {
$.ajax( {
url: "options.py",
data: {
serv: $('#serv5').val(),
getcerts: "viewcert",
token: $('#token').val()
},
type: "GET",
success: function( data ) {
if (data.indexOf('danger') != '-1') {
$("#ajax-show-ssl").html(data);
} else {
$('.alert-danger').remove();
var i;
var new_data = "";
data = data.split("\n");
for (i = 0; i < data.length; i++) {
new_data += ' <a onclick="view_ssl(\''+data[i]+'\')" style="cursor: pointer;" title="View this cert">'+data[i]+'</a> '
}
$("#ajax-show-ssl").html("<b>"+new_data+"</b>");
}
}
} );
});
var add_server_var = '<br /><input name="servers" title="Backend port" size=14 placeholder="xxx.xxx.xxx.xxx" class="form-control">: <input name="server_port" title="Backend port" size=1 placeholder="yyy" class="form-control">'
6 years ago
$('#add-server-input').click(function() {
$('#servers').append(add_server_var);
});
6 years ago
$('#add-server-input2').click(function() {
$('#servers2').append(add_server_var);
});
$('.advance-show').click(function() {
$('.advance-show').fadeOut();
$('.advance').fadeIn();
});
$('#auth').submit(function() {
let searchParams = new URLSearchParams(window.location.search)
if(searchParams.has('ref')) {
var ref = searchParams.get('ref');
} else {
var ref = "overview.py";
}
$.ajax( {
url: "login.py",
data: {
login: $('#login').val(),
pass: $('#pass').val()
},
type: "GET",
success: function( data ) {
if (data.indexOf('ok') != '-1') {
window.location.replace(ref);
} else if (data.indexOf('ban') != '-1') {
ban();
}
}
} );
return false;
});
});
function sleep(ms) {
return new Promise(resolve => setTimeout(resolve, ms));
}
async function ban() {
$( '#login').attr('disabled', 'disabled');
$( '#pass').attr('disabled', 'disabled');
$( "input[type=submit], button" ).button('disable');
$('.alert').show();
$('#ban_10').show();
$( '#ban_timer').text(10);
let i = 10;
while (i > 0) {
i--;
await sleep(1000);
$( '#ban_timer').text(i);
}
$( '#login').removeAttr('disabled');
$( '#pass').removeAttr('disabled');
$( "input[type=submit], button" ).button('enable');
$('#ban_10').hide();
}
function change_select_acceleration(id) {
$.ajax( {
url: "options.py",
data: {
get_hap_v: 1,
serv: $('#serv'+id+' option:selected').val(),
token: $('#token').val()
},
type: "GET",
success: function( data ) {
console.log(data)
if(parseFloat(data) < parseFloat('1.8')) {
$("#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: "GET",
success: function( data ) {
console.log(data)
if(parseFloat(data) < parseFloat('1.8')) {
$("#waf"+id).checkboxradio( "disable" );
} else {
$("#waf"+id).checkboxradio( "enable" );
}
}
} );
}
function replace_text(id_textarea, text_var) {
var str = $(id_textarea).val();
var len = str.length;
var len_var = text_var.length;
var beg = str.indexOf(text_var);
var end = beg + len_var
var text_val = str.substring(0, beg) + str.substring(end, len);
$(id_textarea).text(text_val);
7 years ago
}
function view_ssl(id) {
$.ajax( {
url: "options.py",
data: {
serv: $('#serv5').val(),
getcert: id,
token: $('#token').val()
},
type: "GET",
success: function( data ) {
if (data.indexOf('danger') != '-1') {
$("#ajax-show-ssl").html(data);
} else {
$('.alert-danger').remove();
$('#dialog-confirm-body').text(data);
$( "#dialog-confirm" ).dialog({
resizable: false,
height: "auto",
width: 650,
modal: true,
title: "Certificate from "+$('#serv5').val()+", name: "+id,
buttons: {
Ok: function() {
$( this ).dialog( "close" );
}
}
});
}
}
} );
}
function createList(color) {
if(color == 'white') {
list = $('#new_whitelist_name').val()
} else {
list = $('#new_blacklist_name').val()
}
$.ajax( {
url: "options.py",
data: {
bwlists_create: list,
color: color,
group: $('#group').val(),
token: $('#token').val()
},
type: "GET",
success: function( data ) {
$("#ajax").html(data);
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: "GET",
success: function( data ) {
if (data.indexOf('danger') != '-1') {
$("#ajax").html(data);
} else {
$('.alert-danger').remove();
$('#edit_lists').text(data);
$( "#dialog-confirm" ).dialog({
resizable: false,
height: "auto",
width: 650,
modal: true,
title: "Edit "+color+" list "+list,
buttons: {
"Just save": function() {
$( this ).dialog( "close" );
saveList('save', list, color);
},
"Save and restart": function() {
$( this ).dialog( "close" );
saveList('restart', list, color);
},
Cancel: function() {
$( this ).dialog( "close" );
}
}
});
}
}
} );
}
function saveList(action, list, color) {
$.ajax( {
url: "options.py",
data: {
bwlists_save: list,
bwlists_content: $('#edit_lists').val(),
color: color,
group: $('#group').val(),
bwlists_restart: action,
token: $('#token').val()
},
type: "GET",
success: function( data ) {
$("#ajax").html(data);
}
} );
}
function changeWafMode(id) {
var waf_mode = $('#'+id+' option:selected').val();
var server_hostname = id.split('_')[0];
$.ajax( {
url: "options.py",
data: {
change_waf_mode: waf_mode,
server_hostname: server_hostname,
token: $('#token').val()
},
type: "GET",
success: function( data ) {
alert('Do not forget restart WAF server: '+server_hostname)
$( '#'+server_hostname+'-select-line' ).addClass( "update", 1000 );
setTimeout(function() {
$( '#'+server_hostname+'-select-line' ).removeClass( "update" );
}, 2500 );
}
} );
}