2024-10-02 08:51:26 +00:00
function openSection ( section ) {
let section _type = section . split ( ' ' ) [ 0 ] ;
let section _name = section . split ( ' ' ) [ 1 ] ;
let url = '/add/haproxy/' + $ ( '#serv' ) . val ( ) + '/section/' + section _type + '/' + section _name ;
clearEditSection ( ) ;
if ( section === 'global' || section === 'defaults' ) {
url = '/add/haproxy/' + $ ( '#serv' ) . val ( ) + '/section/' + section _type ;
section _type = section ;
section _name = section ;
}
$ . ajax ( {
url : url ,
contentType : "application/json; charset=utf-8" ,
statusCode : {
404 : function ( xhr ) {
window . open ( '/config/section/haproxy/' + $ ( '#serv' ) . val ( ) + '/' + section , '_blank' ) . focus ( ) ;
}
} ,
async : false ,
success : function ( data ) {
$ ( '.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 ;
} ) ;
let section _id = '#add-' + section _type ;
$ . getScript ( awesome ) ;
$ ( '#edit-' + section _type ) . show ( ) ;
$ ( '#edit-' + section _type + ' caption' ) . hide ( ) ;
$ ( '#' + section _type + '-add-buttons' ) . hide ( ) ;
let i = 0 ;
Object . keys ( data . config ) . forEach ( function ( key ) {
if ( $ ( section _id + ' *[name="' + key + '"]' ) . prop ( "tagName" ) === 'SELECT' ) {
$ ( section _id + ' select[name="' + key + '"]' ) . val ( data . config [ key ] ) . change ( ) ;
} else if ( $ ( section _id + ' *[name="' + key + '"]' ) . prop ( "tagName" ) === 'TEXTAREA' ) {
$ ( section _id + ' select[name="' + key + '"]' ) . val ( data . config [ 'option' ] ) . change ( ) ;
} else {
if ( $ ( section _id + ' *[name="' + key + '"]' ) . prop ( 'type' ) === 'checkbox' ) {
if ( data . config [ key ] ) {
$ ( section _id + ' input[name="' + key + '"]' ) . prop ( "checked" , true ) ;
}
} else {
$ ( section _id + ' input[name="' + key + '"]' ) . val ( data . config [ key ] ) ;
}
}
} ) ;
if ( data . config . option ) {
$ ( section _id + ' textarea[name="option"]' ) . val ( data . config . option ) ;
}
if ( section _type === 'global' ) {
if ( data . config . daemon > 0 ) {
$ ( '#global-daemon' ) . prop ( "checked" , true ) ;
} else {
$ ( '#global-daemon' ) . prop ( "checked" , false ) ;
}
if ( data . config . log ) {
let logs = '' ;
for ( let log of data . config . log ) {
logs += log + '\n' ;
}
$ ( section _id + ' textarea[name="log"]' ) . val ( logs ) ;
}
if ( data . config . socket ) {
let sockets = '' ;
for ( let socket of data . config . socket ) {
sockets += socket + '\n' ;
}
$ ( section _id + ' textarea[name="socket"]' ) . val ( sockets ) ;
}
}
if ( section _type === 'defaults' ) {
if ( data . config . timeout ) {
Object . keys ( data . config . timeout ) . forEach ( function ( key ) {
$ ( section _id + ' input[name="' + key + '"]' ) . val ( data . config . timeout [ key ] ) ;
} ) ;
}
}
if ( section _type === 'listen' || section _type === 'frontend' ) {
if ( data . config . binds . length > 0 ) {
for ( let i = 1 ; i < data . config . binds . length ; i ++ ) {
make _actions _for _adding _bind ( '#' + section _type + '_bind' ) ;
}
}
for ( let bind of data . config . binds ) {
$ ( section _id + ' input[name="ip"]' ) . get ( i ) . value = bind . ip ;
$ ( section _id + ' input[name="port"]' ) . get ( i ) . value = bind . port ;
i ++ ;
}
}
if ( section _type === 'listen' || section _type === 'backend' ) {
if ( data . config . backend _servers ) {
if ( data . config . backend _servers . length > 3 ) {
for ( let i = 2 ; i < data . config . backend _servers . length ; i ++ ) {
$ ( "[name=add_servers]" ) . append ( add _server _var ) ;
}
}
let serv _ports = $ ( '.send_proxy' ) ;
for ( let i = 0 ; i <= serv _ports . length ; i ++ ) {
var uniqId = makeid ( 3 ) ;
$ ( serv _ports [ i ] ) . append ( '<label for="' + uniqId + '" class="send_proxy_label" title="Set send-proxy for this server" data-help="The Send-proxy parameter enforces the use of the PROXY protocol over any connection established to this server. The PROXY protocol informs the other end about the layer 3/4 addresses of the incoming connection so that it can know the client\'s address or the public address it accessed to, whatever the upper-layer protocol.">send-proxy</label><input type="checkbox" name="send_proxy" value="1" id="' + uniqId + '">' ) ;
var uniqId = makeid ( 3 ) ;
$ ( serv _ports [ i ] ) . append ( '<label for="' + uniqId + '" class="send_proxy_label" title="Set this server as backup server" data-help="When all servers in a farm are down, we want to redirect traffic to a backup server which delivers either sorry pages or a degraded mode of the application.\n' +
'This can be done easily in HAProxy by adding the keyword backup on the server line. If multiple backup servers are configured, only the first active one is used.">backup</label><input type="checkbox" name="backup" value="1" id="' + uniqId + '">' ) ;
}
i = 0 ;
if ( data . config . backend _servers . length > 0 ) {
for ( let bind of data . config . backend _servers ) {
$ ( section _id + ' input[name="servers"]' ) . get ( i ) . value = bind . server ;
$ ( section _id + ' input[name="server_port"]' ) . get ( i ) . value = bind . port ;
$ ( section _id + ' input[name="port_check"]' ) . get ( i ) . value = bind . port _check ;
$ ( section _id + ' input[name="server_maxconn"]' ) . get ( i ) . value = bind . maxconn ;
if ( bind . send _proxy ) {
let check _id = $ ( section _id + ' input[name="send_proxy"]' ) . get ( i ) . id ;
$ ( '#' + check _id ) . prop ( "checked" , true ) ;
}
if ( bind . backup ) {
let backup _id = $ ( section _id + ' input[name="backup"]' ) . get ( i ) . id ;
$ ( '#' + backup _id ) . prop ( "checked" , true ) ;
}
i ++ ;
}
}
}
}
if ( section _type === 'listen' || section _type === 'frontend' || section _type === 'backend' ) {
$ ( "#options-" + section _type + "-show" ) . click ( function ( ) {
if ( $ ( "#options-" + section _type + "-show" ) . is ( ':checked' ) ) {
$ ( "#options-" + section _type + "-show-div" ) . show ( "fast" ) ;
} else {
$ ( "#options-" + section _type + "-show-div" ) . hide ( "fast" ) ;
}
} ) ;
if ( data . config . headers ) {
if ( data . config . headers . length > 0 ) {
i = 0 ;
$ ( "#add_" + section _type + "_header" ) . on ( "click" , function ( ) {
$ ( "#" + section _type + "_header_div" ) . show ( ) ;
$ ( "#" + section _type + "_add_header" ) . show ( ) ;
$ ( "#add_" + section _type + "_header" ) . hide ( ) ;
} ) ;
$ ( '#add_' + section _type + '_header' ) . trigger ( 'click' ) ;
for ( let header of data . config . headers ) {
make _actions _for _adding _header ( '#' + section _type + '_header_div' )
let headers _res _id = $ ( section _id + ' select[name="headers_res"]' ) . get ( i ) . id ;
$ ( '#' + headers _res _id ) . val ( header . path ) . change ( ) ;
let headers _method _id = $ ( section _id + ' select[name="headers_method"]' ) . get ( i ) . id ;
$ ( '#' + headers _method _id ) . val ( header . method ) . change ( ) ;
$ ( section _id + ' input[name="header_name"]' ) . get ( i ) . value = header . name ;
$ ( section _id + ' input[name="header_value"]' ) . get ( i ) . value = header . value ;
i ++ ;
}
}
}
if ( data . config . option ) {
$ ( "#options-" + section _type + "-show" ) . trigger ( 'click' ) ;
}
if ( data . config . acls ) {
if ( data . config . acls . length > 0 ) {
i = 0 ;
$ ( "#add_" + section _type + "_acl" ) . on ( "click" , function ( ) {
$ ( "#" + section _type + "_acl" ) . show ( ) ;
$ ( "#" + section _type + "_add_acl" ) . show ( ) ;
$ ( "#add_" + section _type + "_acl" ) . hide ( ) ;
} ) ;
$ ( "#add_" + section _type + "_acl" ) . trigger ( 'click' ) ;
for ( let acl of data . config . acls ) {
make _actions _for _adding _acl _rule ( '#' + section _type + '_acl' ) ;
let acl _if _id = $ ( section _id + ' select[name="acl_if"]' ) . get ( i ) . id ;
$ ( '#' + acl _if _id ) . val ( acl . acl _if ) . change ( ) ;
let acl _then _id = $ ( section _id + ' select[name="acl_then"]' ) . get ( i ) . id ;
$ ( '#' + acl _then _id ) . val ( acl . acl _then ) . change ( ) ;
$ ( section _id + ' input[name="acl_value"]' ) . get ( i ) . value = acl . acl _value ;
$ ( section _id + ' input[name="acl_then_value"]' ) . get ( i ) . value = acl . acl _then _value ;
i ++ ;
}
}
}
}
if ( section _type === 'userlist' ) {
if ( data . config . userlist _groups . length > 0 ) {
i = 0 ;
for ( let c of data . config . userlist _groups ) {
$ ( section _id + ' input[name="userlist-group"]' ) . get ( i ) . value = c ;
$ ( '#userlist-groups' ) . append ( add _userlist _group _var ) ;
i ++ ;
}
}
if ( data . config . userlist _users . length > 0 ) {
i = 0 ;
for ( let c of data . config . userlist _users ) {
$ ( section _id + ' input[name="userlist-user"]' ) . get ( i ) . value = c . user ;
$ ( section _id + ' input[name="userlist-password"]' ) . get ( i ) . value = c . password ;
$ ( section _id + ' input[name="userlist-user-group"]' ) . get ( i ) . value = c . group ;
$ ( '#userlist-users' ) . append ( add _userlist _var ) ;
i ++ ;
}
}
}
if ( section _type === 'peers' ) {
$ ( '[name=add-peer-input]' ) . click ( function ( ) {
$ ( "[name=add_peers]" ) . append ( add _peer _var ) ;
} ) ;
if ( data . config . peers . length > 0 ) {
i = 0 ;
for ( let c of data . config . peers ) {
$ ( section _id + ' input[name="servers_name"]' ) . get ( i ) . value = c . name ;
$ ( section _id + ' input[name="servers"]' ) . get ( i ) . value = c . ip ;
$ ( section _id + ' input[name="server_port"]' ) . get ( i ) . value = c . port ;
i ++ ;
if ( i > 1 ) {
$ ( "[name=add_peers]" ) . append ( add _peer _var ) ;
}
}
}
}
$ ( "select" ) . selectmenu ( ) ;
$ ( "select" ) . selectmenu ( 'refresh' ) ;
$ ( "input[type=checkbox]" ) . checkboxradio ( ) ;
$ ( "input[type=checkbox]" ) . checkboxradio ( 'refresh' ) ;
$ ( section _id + ' select[name="server"]' ) . val ( data . server _id ) . change ( ) ;
$ ( section _id + ' select[name="server"]' ) . selectmenu ( 'disable' ) . parent ( ) . parent ( ) . hide ( ) ;
$ ( section _id + ' input[name="name"]' ) . prop ( "readonly" , true ) . parent ( ) . parent ( ) . hide ( ) ;
2024-10-03 11:37:04 +00:00
let buttons = [ {
2024-10-02 08:51:26 +00:00
text : edit _word ,
click : function ( ) {
editProxy ( 'add-' + section _type , $ ( this ) ) ;
}
} , {
text : delete _word ,
click : function ( ) {
2024-10-03 11:37:04 +00:00
confirmDeleteSection ( section _type , section _name , $ ( '#serv' ) . val ( ) , $ ( this ) ) ;
}
} , {
text : cancel _word ,
click : function ( ) {
2024-10-02 08:51:26 +00:00
$ ( this ) . dialog ( "close" ) ;
$ ( '#edit-' + section _type ) . hide ( ) ;
}
2024-10-03 11:37:04 +00:00
} ]
if ( section _type === 'defaults' || section _type === 'global' ) {
buttons = [ {
text : edit _word ,
click : function ( ) {
editProxy ( 'add-' + section _type , $ ( this ) ) ;
}
2024-10-02 08:51:26 +00:00
} , {
text : cancel _word ,
click : function ( ) {
$ ( this ) . dialog ( "close" ) ;
$ ( '#edit-' + section _type ) . hide ( ) ;
}
} ]
2024-10-03 11:37:04 +00:00
}
$ ( "#edit-section" ) . dialog ( {
resizable : false ,
height : "auto" ,
width : 1100 ,
modal : true ,
title : edit _word ,
close : function ( ) {
$ ( '#edit-' + section _type ) . hide ( ) ;
} ,
buttons : buttons
2024-10-02 08:51:26 +00:00
} ) ;
}
} ) ;
}
function delete _section ( section _type , section _name , server _id ) {
$ . ajax ( {
url : '/add/haproxy/' + server _id + '/section/' + section _type + '/' + section _name ,
contentType : "application/json; charset=utf-8" ,
method : "DELETE" ,
statusCode : {
204 : function ( xhr ) {
showConfig ( ) ;
} ,
404 : function ( xhr ) {
showConfig ( ) ;
}
} ,
success : function ( data ) {
if ( data ) {
if ( data . status === "failed" ) {
toastr . error ( data . error ) ;
}
}
}
} )
}
function clearEditSection ( ) {
$ ( '#edit-section' ) . empty ( ) ;
$ . ajax ( {
url : "/add/haproxy/get_section_html" ,
method : "GET" ,
async : false ,
success : function ( data ) {
$ ( '#edit-section' ) . html ( data ) ;
$ . getScript ( '/static/js/add.js' ) ;
} ,
} )
}
function addProxy ( form _name , generate = false ) {
let frm = $ ( '#' + form _name ) ;
let serv = '' ;
let name _id = '' ;
if ( form _name === 'add-listen' ) {
serv = '#serv'
name _id = '#listener'
} 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 ;
let json _data = getFormData ( frm , form _name ) ;
let section _type = form _name . split ( '-' ) [ 1 ]
let q _generate = '' ;
if ( generate ) {
q _generate = '?generate=1' ;
}
$ . ajax ( {
url : '/add/haproxy/' + $ ( serv ) . val ( ) + '/section/' + section _type + q _generate ,
data : JSON . stringify ( json _data ) ,
type : frm . attr ( 'method' ) ,
contentType : "application/json; charset=utf-8" ,
success : function ( data ) {
if ( data . status === 'failed' ) {
toastr . error ( data . error )
} else if ( data === '' ) {
toastr . clear ( ) ;
toastr . error ( 'error: Something went wrong. Check configuration' ) ;
} else {
if ( generate ) {
$ ( '#dialog-confirm-body' ) . text ( data . data ) ;
let generated _title = translate _div . attr ( 'data-generated_config' ) ;
$ ( "#dialog-confirm-cert" ) . dialog ( {
resizable : false ,
height : "auto" ,
width : 650 ,
modal : true ,
title : generated _title ,
buttons : {
Ok : function ( ) {
$ ( this ) . dialog ( "close" ) ;
}
}
} ) ;
} else {
toastr . clear ( ) ;
data . data = data . data . replace ( /\n/g , "<br>" ) ;
if ( returnNiceCheckingConfig ( data . data ) === 0 ) {
toastr . info ( 'Section has been added. Do not forget to restart the server' ) ;
let ip = frm . find ( 'select[name=serv]' ) . val ( ) ;
localStorage . setItem ( 'restart' , ip ) ;
resetProxySettings ( ) ;
}
}
}
}
} ) ;
}
function editProxy ( form _name , dialog _id , generate = false ) {
let frm = $ ( '#' + form _name ) ;
let name _id = '#' + form _name + ' input[name="name"]' ;
if ( ! checkIsServerFiled ( name _id , 'The name cannot be empty' ) ) return false ;
let json _data = getFormData ( frm , form _name ) ;
let section _type = form _name . split ( '-' ) [ 1 ]
let url = '/add/haproxy/' + $ ( '#serv' ) . val ( ) + '/section/' + section _type + '/' + $ ( name _id ) . val ( ) ;
if ( section _type === 'defaults' || section _type === 'global' ) {
url = '/add/haproxy/' + $ ( '#serv' ) . val ( ) + '/section/' + section _type ;
}
$ . ajax ( {
url : url ,
data : JSON . stringify ( json _data ) ,
type : 'PUT' ,
contentType : "application/json; charset=utf-8" ,
success : function ( data ) {
if ( data . status === 'failed' ) {
toastr . error ( data . error )
} else if ( data === '' ) {
toastr . clear ( ) ;
toastr . error ( 'error: Something went wrong. Check configuration' ) ;
} else {
toastr . clear ( ) ;
data . data = data . data . replace ( /\n/g , "<br>" ) ;
if ( returnNiceCheckingConfig ( data . data ) === 0 ) {
toastr . info ( 'Section has been updated. Do not forget to restart the server' ) ;
let ip = frm . find ( 'select[name=serv]' ) . val ( ) ;
localStorage . setItem ( 'restart' , ip ) ;
showConfig ( ) ;
$ ( dialog _id ) . dialog ( "close" ) ;
}
}
}
} ) ;
}
function getFormData ( $form , form _name ) {
let section _type = form _name . split ( '-' ) [ 1 ]
let unindexed _array = $form . serializeArray ( ) ;
let indexed _array = { } ;
indexed _array [ 'acls' ] = [ ] ;
indexed _array [ 'binds' ] = [ ] ;
indexed _array [ 'headers' ] = [ ] ;
indexed _array [ 'backend_servers' ] = [ ] ;
indexed _array [ 'type' ] = section _type ;
indexed _array [ 'userlist_users' ] = [ ] ;
indexed _array [ 'userlist_groups' ] = [ ] ;
indexed _array [ 'peers' ] = [ ] ;
indexed _array [ 'daemon' ] = 0 ;
$ . map ( unindexed _array , function ( n , i ) {
if ( n [ 'name' ] === 'cookie' ) {
if ( $ ( 'input[name="cookie"]' ) . is ( ':checked' ) ) {
let name = $ ( 'input[name="cookie_name"]' ) . val ( ) ;
let domain = $ ( 'input[name="cookie_domain"]' ) . val ( ) ;
let dynamic = $ ( 'input[name="dynamic"]' ) . val ( ) ;
2024-10-20 09:13:37 +00:00
let dynamic _key = $ ( 'input[name="dynamic-cookie-key"]' ) . val ( ) ;
2024-10-02 08:51:26 +00:00
let nocache = $ ( 'input[name="nocache"]' ) . val ( ) ;
let postonly = $ ( 'input[name="postonly"]' ) . val ( ) ;
let rewrite = $ ( 'select[name="rewrite"] option:selected' ) . val ( ) ;
let prefix = $ ( 'input[name="prefix"]' ) . val ( ) ;
2024-10-20 09:13:37 +00:00
indexed _array [ 'cookie' ] = { name , domain , dynamic , dynamic _key , nocache , postonly , rewrite , prefix }
2024-10-02 08:51:26 +00:00
}
} else if ( n [ 'name' ] === 'whitelist_checkbox' ) {
if ( $ ( 'input[name="whitelist_checkbox"]' ) . is ( ':checked' ) ) {
indexed _array [ 'whitelist' ] = $ ( 'input[name="whitelist"]' ) . val ( ) ;
}
} else if ( n [ 'name' ] === 'ssl' ) {
if ( $ ( 'input[name="ssl"]' ) . is ( ':checked' ) ) {
let cert = $ ( 'input[name="cert"]' ) . val ( ) ;
2024-10-20 09:13:37 +00:00
let ssl _check _backend = true ;
2024-10-02 08:51:26 +00:00
if ( $ ( 'input[name="ssl-check"]' ) . is ( ':checked' ) ) {
ssl _check _backend = 0 ;
} else {
2024-10-20 09:13:37 +00:00
ssl _check _backend = true ;
2024-10-02 08:51:26 +00:00
}
indexed _array [ 'ssl' ] = { cert , ssl _check _backend } ;
}
} else if ( n [ 'name' ] === 'health_check' ) {
let check = n [ 'value' ] ;
if ( check === undefined || check === '' || check === '-------' ) {
return ;
}
let path = $ ( 'input[name="checks_http_path"]' ) . val ( ) ;
let domain = $ ( 'input[name="checks_http_domain"]' ) . val ( ) ;
indexed _array [ 'health_check' ] = { check , path , domain }
} else if ( n [ 'name' ] === 'blacklist_checkbox' ) {
if ( $ ( 'input[name="blacklist_checkbox"]' ) . is ( ':checked' ) ) {
indexed _array [ 'blacklist' ] = $ ( 'input[name="blacklist"]' ) . val ( ) ;
}
} else if ( n [ 'name' ] === 'ssl_offloading' ) {
if ( $ ( 'input[name="ssl_offloading"]' ) . is ( ':checked' ) ) {
2024-10-20 09:13:37 +00:00
indexed _array [ 'ssl_offloading' ] = true ;
2024-10-02 08:51:26 +00:00
}
} else if ( n [ 'name' ] === 'forward_for' ) {
if ( $ ( 'input[name="forward_for"]' ) . is ( ':checked' ) ) {
2024-10-20 09:13:37 +00:00
indexed _array [ 'forward_for' ] = true ;
2024-10-02 08:51:26 +00:00
}
} else if ( n [ 'name' ] === 'redispatch' ) {
if ( $ ( 'input[name="redispatch"]' ) . is ( ':checked' ) ) {
2024-10-20 09:13:37 +00:00
indexed _array [ 'redispatch' ] = true ;
2024-10-02 08:51:26 +00:00
}
} else if ( n [ 'name' ] === 'slow_attack' ) {
if ( $ ( 'input[name="slow_attack"]' ) . is ( ':checked' ) ) {
2024-10-20 09:13:37 +00:00
indexed _array [ 'slow_attack' ] = true ;
2024-10-02 08:51:26 +00:00
}
} else if ( n [ 'name' ] === 'ddos' ) {
if ( $ ( 'input[name="ddos"]' ) . is ( ':checked' ) ) {
2024-10-20 09:13:37 +00:00
indexed _array [ 'ddos' ] = true ;
2024-10-02 08:51:26 +00:00
}
} else if ( n [ 'name' ] === 'antibot' ) {
if ( $ ( 'input[name="antibot"]' ) . is ( ':checked' ) ) {
2024-10-20 09:13:37 +00:00
indexed _array [ 'antibot' ] = true ;
2024-10-02 08:51:26 +00:00
}
} else if ( n [ 'name' ] === 'cache' ) {
if ( $ ( 'input[name="cache"]' ) . is ( ':checked' ) ) {
2024-10-20 09:13:37 +00:00
indexed _array [ 'cache' ] = true ;
2024-10-02 08:51:26 +00:00
}
} else if ( n [ 'name' ] === 'circuit_breaking' ) {
if ( $ ( 'input[name="circuit_breaking"]' ) . is ( ':checked' ) ) {
let observe = $ ( 'select[name="circuit_breaking_observe"] option:selected' ) . val ( ) ;
let error _limit = $ ( 'input[name="circuit_breaking_error_limit"]' ) . val ( ) ;
let on _error = $ ( 'select[name="circuit_breaking_on_error"] option:selected' ) . val ( ) ;
indexed _array [ 'circuit_breaking' ] = { observe , error _limit , on _error } ;
}
} else if ( n [ 'name' ] === 'check-servers' ) {
if ( $ ( 'input[name="check-servers"]' ) . is ( ':checked' ) ) {
2024-10-20 09:13:37 +00:00
let check _enabled = true ;
2024-10-02 08:51:26 +00:00
let inter = $ ( 'select[name="inter"] option:selected' ) . val ( ) ;
let rise = $ ( 'select[name="rise"] option:selected' ) . val ( ) ;
let fall = $ ( 'select[name="fall"] option:selected' ) . val ( ) ;
indexed _array [ 'servers_check' ] = { check _enabled , inter , rise , fall } ;
} else {
let check _enabled = 0 ;
indexed _array [ 'servers_check' ] = { check _enabled }
}
} else if ( n [ 'name' ] === 'template' ) {
if ( $ ( 'input[name="template"]' ) . is ( ':checked' ) ) {
let prefix = $ ( 'input[name="template-prefix"]' ) . val ( ) ;
let count = $ ( 'input[name="template-number"]' ) . val ( ) ;
let servers = $ ( 'input[name="servers"]' ) . val ( ) ;
let port = $ ( 'input[name="server_port"]' ) . val ( ) ;
indexed _array [ 'servers_template' ] = { prefix , count , servers , port } ;
}
} else if ( n [ 'name' ] === 'log' && section _type === 'global' ) {
indexed _array [ 'log' ] = [ ] ;
for ( let l of n [ 'value' ] . split ( '\r\n' ) ) {
if ( l != '' ) {
indexed _array [ 'log' ] . push ( l ) ;
}
}
} else if ( n [ 'name' ] === 'socket' ) {
indexed _array [ 'socket' ] = [ ] ;
for ( let l of n [ 'value' ] . split ( '\r\n' ) ) {
if ( l != '' ) {
indexed _array [ 'socket' ] . push ( l ) ;
}
}
} else if ( n [ 'name' ] === 'daemon' ) {
if ( $ ( 'input[name="daemon"]' ) . is ( ':checked' ) ) {
2024-10-20 09:13:37 +00:00
indexed _array [ 'daemon' ] = true ;
2024-10-02 08:51:26 +00:00
}
} else {
indexed _array [ n [ 'name' ] ] = n [ 'value' ] ;
}
} ) ;
$ ( '#' + section _type + '_acl p' ) . each ( function ( ) {
let acl _if = $ ( this ) . children ( ) . children ( "select[name='acl_if'] option:selected" ) . val ( ) ;
if ( acl _if === undefined || acl _if === '' || acl _if === "Select if" ) {
return ;
}
let acl _value = $ ( this ) . children ( "input[name='acl_value']" ) . val ( ) ;
let acl _then = $ ( this ) . children ( ) . children ( "select[name='acl_then'] option:selected" ) . val ( ) ;
let acl _then _value = $ ( this ) . children ( "input[name='acl_then_value']" ) . val ( ) ;
indexed _array [ 'acls' ] . push ( { acl _if , acl _value , acl _then , acl _then _value } ) ;
} ) ;
$ ( '#' + section _type + '_bind p' ) . each ( function ( ) {
let ip = $ ( this ) . children ( "input[name='ip']" ) . val ( ) ;
let port = $ ( this ) . children ( "input[name='port']" ) . val ( ) ;
if ( port === undefined || port === '' ) {
return ;
}
indexed _array [ 'binds' ] . push ( { ip , port } ) ;
} ) ;
$ ( '#' + section _type + '_header_div p' ) . each ( function ( ) {
let path = $ ( this ) . children ( ) . children ( "select[name='headers_res'] option:selected" ) . val ( ) ;
let method = $ ( this ) . children ( ) . children ( "select[name='headers_method'] option:selected" ) . val ( ) ;
let name = $ ( this ) . children ( "input[name='header_name']" ) . val ( ) ;
let value = $ ( this ) . children ( "input[name='header_value']" ) . val ( ) ;
if ( path === undefined || path === '' || path === '------' ) {
return ;
}
if ( name === undefined || name === '' ) {
return ;
}
indexed _array [ 'headers' ] . push ( { path , method , name , value } ) ;
} ) ;
$ ( '#userlist-groups p' ) . each ( function ( ) {
let group = $ ( this ) . children ( "input[name='userlist-group']" ) . val ( ) ;
if ( group === undefined || group === '' ) {
return ;
}
indexed _array [ 'userlist_groups' ] . push ( group ) ;
} ) ;
$ ( '#userlist-users p' ) . each ( function ( ) {
let user = $ ( this ) . children ( "input[name='userlist-user']" ) . val ( ) ;
let password = $ ( this ) . children ( "input[name='userlist-password']" ) . val ( ) ;
let group = $ ( this ) . children ( "input[name='userlist-user-group']" ) . val ( ) ;
if ( user === undefined || user === '' || password === undefined || password === '' ) {
return ;
}
indexed _array [ 'userlist_users' ] . push ( { user , password , group } ) ;
} ) ;
$ ( '#add_peers p' ) . each ( function ( ) {
let name = $ ( this ) . children ( "input[name='servers_name']" ) . val ( ) ;
let ip = $ ( this ) . children ( "input[name='servers']" ) . val ( ) ;
let port = $ ( this ) . children ( "input[name='server_port']" ) . val ( ) ;
if ( name === undefined || name === '' || ip === undefined || ip === '' || port === undefined || port === '' ) {
return ;
}
indexed _array [ 'peers' ] . push ( { name , ip , port } ) ;
} ) ;
$ ( '#' + form _name + ' span[name="add_servers"] p' ) . each ( function ( ) {
let server = $ ( this ) . children ( "input[name='servers']" ) . val ( ) ;
if ( server === undefined || server === '' ) {
return ;
}
let port = $ ( this ) . children ( "input[name='server_port']" ) . val ( ) ;
let port _check = $ ( this ) . children ( "input[name='port_check']" ) . val ( ) ;
let maxconn = $ ( this ) . children ( "input[name='server_maxconn']" ) . val ( ) ;
let send _proxy = 0 ;
let backup = 0 ;
if ( $ ( this ) . children ( ) . children ( 'input[name="send_proxy"]' ) . is ( ':checked' ) ) {
2024-10-20 09:13:37 +00:00
send _proxy = true ;
2024-10-02 08:51:26 +00:00
}
if ( $ ( this ) . children ( ) . children ( 'input[name="backup"]' ) . is ( ':checked' ) ) {
2024-10-20 09:13:37 +00:00
backup = true ;
2024-10-02 08:51:26 +00:00
}
let test _var = { server , port , port _check , maxconn , send _proxy , backup } ;
indexed _array [ 'backend_servers' ] . push ( test _var ) ;
} ) ;
if ( section _type === 'defaults' ) {
indexed _array [ 'timeout' ] = { } ;
$ ( "input[id^='defaults-timeout']" ) . each ( function ( i , el ) {
indexed _array [ 'timeout' ] [ el . name ] = el . value ;
} )
}
let elementsForDelete = [ 'acl_if' , 'acl_value' , 'acl_then' , 'acl_then_value' , 'servers' , 'port' , 'port_check' ,
'backup' , 'send_proxy' , 'server_port' , 'ip' , 'headers_method' , 'headers_res' , 'header_name' , 'header_value' , 'server_maxconn' ,
'options' , 'options1' , 'options2' , 'cookie_domain' , 'cookie_name' , 'dynamic' , 'dynamic-cookie-key' , 'nocache' , 'postonly' ,
'rewrite' , 'prefix' , 'saved-options' , 'blacklist_checkbox' , 'whitelist_checkbox' , 'circuit_breaking_error_limit' ,
'circuit_breaking_observe' , 'circuit_breaking_on_error' , 'check-servers' , 'checks_http_domain' , 'checks_http_path' ,
'options-listen-show' , 'cert' , 'ssl-check' , 'template' , 'template-number' , 'fall' , 'inner' , 'rise' , 'template-prefix' ,
'saved-options1' , 'userlist-group' , 'userlist-password' , 'userlist-user' , 'userlist-user-group' , 'servers_name' ,
'servers' , 'server_port' , 'serv' , 'check' , 'client' , 'connect' , 'queue' , 'server' , 'http_keep_alive' , 'http_request' ]
for ( let element of elementsForDelete ) {
delete indexed _array [ element ]
}
return indexed _array ;
}
2024-10-03 11:37:04 +00:00
function confirmDeleteSection ( section _type , section _name , serv _val , dialog _id ) {
$ ( "#dialog-confirm" ) . dialog ( {
resizable : false ,
height : "auto" ,
width : 400 ,
modal : true ,
title : delete _word + " " + section _name + "?" ,
buttons : [ {
text : delete _word ,
click : function ( ) {
$ ( this ) . dialog ( "close" ) ;
delete _section ( section _type , section _name , serv _val ) ;
dialog _id . dialog ( "close" ) ;
}
} , {
text : cancel _word ,
click : function ( ) {
$ ( this ) . dialog ( "close" ) ;
}
} ]
} ) ;
}