Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
O
OpnSense
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Kulya
OpnSense
Commits
7786843f
Commit
7786843f
authored
Mar 04, 2016
by
Ad Schellevis
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
(legacy) refactor load_balancer_pool_edit.php
parent
eeab940d
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
338 additions
and
294 deletions
+338
-294
load_balancer_pool_edit.php
src/www/load_balancer_pool_edit.php
+338
-294
No files found.
src/www/load_balancer_pool_edit.php
View file @
7786843f
<?php
/*
Copyright (C) 2014-2015
Deciso B.V.
Copyright (C) 2014-2016
Deciso B.V.
Copyright (C) 2005-2008 Bill Marquette <bill.marquette@gmail.com>.
All rights reserved.
...
...
@@ -31,311 +31,355 @@ require_once("guiconfig.inc");
require_once
(
"services.inc"
);
require_once
(
"interfaces.inc"
);
$referer
=
(
isset
(
$_SERVER
[
'HTTP_REFERER'
])
?
$_SERVER
[
'HTTP_REFERER'
]
:
'/load_balancer_pool.php'
);
if
(
!
is_array
(
$config
[
'load_balancer'
][
'lbpool'
]))
{
$config
[
'load_balancer'
][
'lbpool'
]
=
array
();
if
(
empty
(
$config
[
'load_balancer'
][
'lbpool'
])
||
!
is_array
(
$config
[
'load_balancer'
][
'lbpool'
]))
{
$config
[
'load_balancer'
][
'lbpool'
]
=
array
();
}
$a_pool
=
&
$config
[
'load_balancer'
][
'lbpool'
];
if
(
is_numericint
(
$_GET
[
'id'
]))
$id
=
$_GET
[
'id'
];
if
(
isset
(
$_POST
[
'id'
])
&&
is_numericint
(
$_POST
[
'id'
]))
$id
=
$_POST
[
'id'
];
if
(
isset
(
$id
)
&&
$a_pool
[
$id
])
{
$pconfig
[
'name'
]
=
$a_pool
[
$id
][
'name'
];
$pconfig
[
'mode'
]
=
$a_pool
[
$id
][
'mode'
];
$pconfig
[
'descr'
]
=
$a_pool
[
$id
][
'descr'
];
$pconfig
[
'port'
]
=
$a_pool
[
$id
][
'port'
];
$pconfig
[
'retry'
]
=
$a_pool
[
$id
][
'retry'
];
$pconfig
[
'servers'
]
=
&
$a_pool
[
$id
][
'servers'
];
$pconfig
[
'serversdisabled'
]
=
&
$a_pool
[
$id
][
'serversdisabled'
];
$pconfig
[
'monitor'
]
=
$a_pool
[
$id
][
'monitor'
];
}
if
(
$_POST
)
{
unset
(
$input_errors
);
$pconfig
=
$_POST
;
/* input validation */
$reqdfields
=
explode
(
" "
,
"name mode port monitor servers"
);
$reqdfieldsn
=
array
(
gettext
(
"Name"
),
gettext
(
"Mode"
),
gettext
(
"Port"
),
gettext
(
"Monitor"
),
gettext
(
"Server List"
));
do_input_validation
(
$_POST
,
$reqdfields
,
$reqdfieldsn
,
$input_errors
);
/* Ensure that our pool names are unique */
for
(
$i
=
0
;
isset
(
$config
[
'load_balancer'
][
'lbpool'
][
$i
]);
$i
++
)
if
((
$_POST
[
'name'
]
==
$config
[
'load_balancer'
][
'lbpool'
][
$i
][
'name'
])
&&
(
$i
!=
$id
))
$input_errors
[]
=
gettext
(
"This pool name has already been used. Pool names must be unique."
);
if
(
strpos
(
$_POST
[
'name'
],
" "
)
!==
false
)
$input_errors
[]
=
gettext
(
"You cannot use spaces in the 'name' field."
);
if
(
in_array
(
$_POST
[
'name'
],
$reserved_table_names
))
$input_errors
[]
=
sprintf
(
gettext
(
"The name '%s' is a reserved word and cannot be used."
),
$_POST
[
'name'
]);
if
(
is_alias
(
$_POST
[
'name'
]))
$input_errors
[]
=
sprintf
(
gettext
(
"Sorry, an alias is already named %s."
),
$_POST
[
'name'
]);
if
(
!
is_portoralias
(
$_POST
[
'port'
]))
$input_errors
[]
=
gettext
(
"The port must be an integer between 1 and 65535, or a port alias."
);
// May as well use is_port as we want a positive integer and such.
if
(
!
empty
(
$_POST
[
'retry'
])
&&
!
is_port
(
$_POST
[
'retry'
]))
$input_errors
[]
=
gettext
(
"The retry value must be an integer between 1 and 65535."
);
if
(
is_array
(
$_POST
[
'servers'
]))
{
foreach
(
$pconfig
[
'servers'
]
as
$svrent
)
{
if
(
!
is_ipaddr
(
$svrent
)
&&
!
is_subnetv4
(
$svrent
))
{
$input_errors
[]
=
sprintf
(
gettext
(
"%s is not a valid IP address or IPv4 subnet (in
\"
enabled
\"
list)."
),
$svrent
);
}
else
if
(
is_subnetv4
(
$svrent
)
&&
subnet_size
(
$svrent
)
>
64
)
{
$input_errors
[]
=
sprintf
(
gettext
(
"%s is a subnet containing more than 64 IP addresses (in
\"
enabled
\"
list)."
),
$svrent
);
}
}
}
if
(
is_array
(
$_POST
[
'serversdisabled'
]))
{
foreach
(
$pconfig
[
'serversdisabled'
]
as
$svrent
)
{
if
(
!
is_ipaddr
(
$svrent
)
&&
!
is_subnetv4
(
$svrent
))
{
$input_errors
[]
=
sprintf
(
gettext
(
"%s is not a valid IP address or IPv4 subnet (in
\"
disabled
\"
list)."
),
$svrent
);
}
else
if
(
is_subnetv4
(
$svrent
)
&&
subnet_size
(
$svrent
)
>
64
)
{
$input_errors
[]
=
sprintf
(
gettext
(
"%s is a subnet containing more than 64 IP addresses (in
\"
disabled
\"
list)."
),
$svrent
);
}
}
}
$m
=
array
();
for
(
$i
=
0
;
isset
(
$config
[
'load_balancer'
][
'monitor_type'
][
$i
]);
$i
++
)
$m
[
$config
[
'load_balancer'
][
'monitor_type'
][
$i
][
'name'
]]
=
$config
[
'load_balancer'
][
'monitor_type'
][
$i
];
if
(
!
isset
(
$m
[
$_POST
[
'monitor'
]]))
$input_errors
[]
=
gettext
(
"Invalid monitor chosen."
);
if
(
!
$input_errors
)
{
$poolent
=
array
();
if
(
isset
(
$id
)
&&
$a_pool
[
$id
])
{
$poolent
=
$a_pool
[
$id
];
}
$poolent
[
'name'
]
=
$_POST
[
'name'
];
$poolent
[
'mode'
]
=
$_POST
[
'mode'
];
$poolent
[
'descr'
]
=
$_POST
[
'descr'
];
$poolent
[
'port'
]
=
$_POST
[
'port'
];
$poolent
[
'retry'
]
=
$_POST
[
'retry'
];
$poolent
[
'servers'
]
=
$_POST
[
'servers'
];
$poolent
[
'serversdisabled'
]
=
$_POST
[
'serversdisabled'
];
$poolent
[
'monitor'
]
=
$_POST
[
'monitor'
];
if
(
isset
(
$id
)
&&
$a_pool
[
$id
])
{
/* modify all virtual servers with this name */
for
(
$i
=
0
;
isset
(
$config
[
'load_balancer'
][
'virtual_server'
][
$i
]);
$i
++
)
{
if
(
$config
[
'load_balancer'
][
'virtual_server'
][
$i
][
'lbpool'
]
==
$a_pool
[
$id
][
'name'
])
$config
[
'load_balancer'
][
'virtual_server'
][
$i
][
'lbpool'
]
=
$poolent
[
'name'
];
}
$a_pool
[
$id
]
=
$poolent
;
}
else
{
$a_pool
[]
=
$poolent
;
}
mark_subsystem_dirty
(
'loadbalancer'
);
write_config
();
header
(
"Location: load_balancer_pool.php"
);
exit
;
}
$copy_fields
=
array
(
'name'
,
'mode'
,
'descr'
,
'port'
,
'retry'
,
'monitor'
,
'servers'
,
'serversdisabled'
);
if
(
$_SERVER
[
'REQUEST_METHOD'
]
===
'GET'
)
{
if
(
isset
(
$_GET
[
'id'
])
&&
!
empty
(
$a_pool
[
$_GET
[
'id'
]]))
{
$id
=
$_GET
[
'id'
];
}
$pconfig
=
array
();
// copy fields
foreach
(
$copy_fields
as
$fieldname
)
{
if
(
isset
(
$id
)
&&
isset
(
$a_pool
[
$id
][
$fieldname
]))
{
$pconfig
[
$fieldname
]
=
$a_pool
[
$id
][
$fieldname
];
}
else
{
$pconfig
[
$fieldname
]
=
null
;
}
}
// init arrays
$pconfig
[
'servers'
]
=
is_array
(
$pconfig
[
'servers'
])
?
$pconfig
[
'servers'
]
:
array
();
$pconfig
[
'serversdisabled'
]
=
is_array
(
$pconfig
[
'serversdisabled'
])
?
$pconfig
[
'serversdisabled'
]
:
array
();
}
elseif
(
$_SERVER
[
'REQUEST_METHOD'
]
===
'POST'
)
{
if
(
isset
(
$_POST
[
'id'
])
&&
!
empty
(
$a_pool
[
$_POST
[
'id'
]]))
{
$id
=
$_POST
[
'id'
];
}
$pconfig
=
$_POST
;
$input_errors
=
array
();
/* input validation */
$reqdfields
=
explode
(
" "
,
"name mode port monitor servers"
);
$reqdfieldsn
=
array
(
gettext
(
"Name"
),
gettext
(
"Mode"
),
gettext
(
"Port"
),
gettext
(
"Monitor"
),
gettext
(
"Server List"
));
do_input_validation
(
$pconfig
,
$reqdfields
,
$reqdfieldsn
,
$input_errors
);
/* Ensure that our pool names are unique */
for
(
$i
=
0
;
isset
(
$config
[
'load_balancer'
][
'lbpool'
][
$i
]);
$i
++
)
{
if
(
$pconfig
[
'name'
]
==
$config
[
'load_balancer'
][
'lbpool'
][
$i
][
'name'
]
&&
$i
!=
$id
)
{
$input_errors
[]
=
gettext
(
"This pool name has already been used. Pool names must be unique."
);
}
}
if
(
strpos
(
$pconfig
[
'name'
],
" "
)
!==
false
)
{
$input_errors
[]
=
gettext
(
"You cannot use spaces in the 'name' field."
);
}
if
(
in_array
(
$pconfig
[
'name'
],
$reserved_table_names
))
{
$input_errors
[]
=
sprintf
(
gettext
(
"The name '%s' is a reserved word and cannot be used."
),
$_POST
[
'name'
]);
}
if
(
is_alias
(
$pconfig
[
'name'
]))
{
$input_errors
[]
=
sprintf
(
gettext
(
"Sorry, an alias is already named %s."
),
$_POST
[
'name'
]);
}
if
(
!
is_portoralias
(
$pconfig
[
'port'
]))
{
$input_errors
[]
=
gettext
(
"The port must be an integer between 1 and 65535, or a port alias."
);
}
// May as well use is_port as we want a positive integer and such.
if
(
!
empty
(
$pconfig
[
'retry'
])
&&
!
is_port
(
$pconfig
[
'retry'
]))
{
$input_errors
[]
=
gettext
(
"The retry value must be an integer between 1 and 65535."
);
}
if
(
is_array
(
$pconfig
[
'servers'
]))
{
foreach
(
$pconfig
[
'servers'
]
as
$svrent
)
{
if
(
!
is_ipaddr
(
$svrent
)
&&
!
is_subnetv4
(
$svrent
))
{
$input_errors
[]
=
sprintf
(
gettext
(
"%s is not a valid IP address or IPv4 subnet (in
\"
enabled
\"
list)."
),
$svrent
);
}
elseif
(
is_subnetv4
(
$svrent
)
&&
subnet_size
(
$svrent
)
>
64
)
{
$input_errors
[]
=
sprintf
(
gettext
(
"%s is a subnet containing more than 64 IP addresses (in
\"
enabled
\"
list)."
),
$svrent
);
}
}
}
if
(
is_array
(
$pconfig
[
'serversdisabled'
]))
{
foreach
(
$pconfig
[
'serversdisabled'
]
as
$svrent
)
{
if
(
!
is_ipaddr
(
$svrent
)
&&
!
is_subnetv4
(
$svrent
))
{
$input_errors
[]
=
sprintf
(
gettext
(
"%s is not a valid IP address or IPv4 subnet (in
\"
disabled
\"
list)."
),
$svrent
);
}
elseif
(
is_subnetv4
(
$svrent
)
&&
subnet_size
(
$svrent
)
>
64
)
{
$input_errors
[]
=
sprintf
(
gettext
(
"%s is a subnet containing more than 64 IP addresses (in
\"
disabled
\"
list)."
),
$svrent
);
}
}
}
$m
=
array
();
for
(
$i
=
0
;
isset
(
$config
[
'load_balancer'
][
'monitor_type'
][
$i
]);
$i
++
)
{
$m
[
$config
[
'load_balancer'
][
'monitor_type'
][
$i
][
'name'
]]
=
$config
[
'load_balancer'
][
'monitor_type'
][
$i
];
}
if
(
!
isset
(
$m
[
$pconfig
[
'monitor'
]]))
{
$input_errors
[]
=
gettext
(
"Invalid monitor chosen."
);
}
if
(
count
(
$input_errors
)
==
0
)
{
$poolent
=
array
();
foreach
(
$copy_fields
as
$fieldname
)
{
$poolent
[
$fieldname
]
=
$pconfig
[
$fieldname
];
}
if
(
isset
(
$id
))
{
/* modify all virtual servers with this name */
for
(
$i
=
0
;
isset
(
$config
[
'load_balancer'
][
'virtual_server'
][
$i
]);
$i
++
)
{
if
(
$config
[
'load_balancer'
][
'virtual_server'
][
$i
][
'lbpool'
]
==
$a_pool
[
$id
][
'name'
])
{
$config
[
'load_balancer'
][
'virtual_server'
][
$i
][
'lbpool'
]
=
$poolent
[
'name'
];
}
}
$a_pool
[
$id
]
=
$poolent
;
}
else
{
$a_pool
[]
=
$poolent
;
}
mark_subsystem_dirty
(
'loadbalancer'
);
write_config
();
header
(
"Location: load_balancer_pool.php"
);
exit
;
}
}
$service_hook
=
'relayd'
;
include
(
"head.inc"
);
$service_hook
=
'relayd'
;
legacy_html_escape_form_data
(
$pconfig
);
include
(
"head.inc"
);
?>
<body>
<!-- push all available (nestable) aliases in a hidden select box -->
<select
class=
"hidden"
id=
"aliases"
>
<?php
if
(
!
empty
(
$config
[
'aliases'
][
'alias'
]))
:
foreach
(
$config
[
'aliases'
][
'alias'
]
as
$alias
)
:
if
(
$alias
[
'type'
]
==
'port'
)
:?>
<
option
data
-
type
=
"<?=
$alias['type']
;?>"
value
=
"<?=
$alias['name'];?>"><?=$alias['name']
;?></option>
<?php
endif;
endforeach;
endif;
?>
</select>
<?php include("
fbegin
.
inc
"); ?>
<script
type=
"text/javascript"
>
//
<!
[
CDATA
[
function
clearcombo
(){
for
(
var
i
=
document
.
iform
.
serversSelect
.
options
.
length
-
1
;
i
>=
0
;
i
--
){
document
.
iform
.
serversSelect
.
options
[
i
]
=
null
;
}
document
.
iform
.
serversSelect
.
selectedIndex
=
-
1
;
}
//]]>
</script>
<script
type=
"text/javascript"
src=
"/javascript/autosuggest.js"
></script>
<script
type=
"text/javascript"
src=
"/javascript/suggestions.js"
></script>
<section
class=
"page-content-main"
>
<div
class=
"container-fluid"
>
<div
class=
"row"
>
<?php
if
(
isset
(
$input_errors
)
&&
count
(
$input_errors
)
>
0
)
print_input_errors
(
$input_errors
);
?>
<section
class=
"col-xs-12"
>
<div
class=
"content-box"
>
<form
action=
"load_balancer_pool_edit.php"
method=
"post"
name=
"iform"
id=
"iform"
>
<div
class=
"table-responsive"
>
<table
class=
"table table-striped table-sort"
>
<tr>
<td
colspan=
"2"
valign=
"top"
class=
"listtopic"
>
<?=
gettext
(
"Add/edit Load Balancer - Pool entry"
);
?>
</td>
</tr>
<tr
align=
"left"
>
<td
width=
"22%"
valign=
"top"
class=
"vncellreq"
>
<?=
gettext
(
"Name"
);
?>
</td>
<td
width=
"78%"
class=
"vtable"
colspan=
"2"
>
<input
name=
"name"
type=
"text"
<?php
if
(
isset
(
$pconfig
[
'name'
]))
echo
"value=
\"
{
$pconfig
[
'name'
]
}
\"
"
;
?>
size=
"16"
maxlength=
"16"
/>
</td>
</tr>
<tr
align=
"left"
>
<td
width=
"22%"
valign=
"top"
class=
"vncellreq"
>
<?=
gettext
(
"Mode"
);
?>
</td>
<td
width=
"78%"
class=
"vtable"
colspan=
"2"
>
<select
id=
"mode"
name=
"mode"
onchange=
"enforceFailover(); checkPoolControls();"
>
<option
value=
"loadbalance"
<?php
if
(
!
isset
(
$pconfig
[
'mode'
])
||
(
$pconfig
[
'mode'
]
==
"loadbalance"
))
echo
"selected=
\"
selected
\"
"
;
?>
>
<?=
gettext
(
"Load Balance"
);
?>
</option>
<option
value=
"failover"
<?php
if
(
$pconfig
[
'mode'
]
==
"failover"
)
echo
"selected=
\"
selected
\"
"
;
?>
>
<?=
gettext
(
"Manual Failover"
);
?>
</option>
</select>
</td>
</tr>
<tr
align=
"left"
>
<td
width=
"22%"
valign=
"top"
class=
"vncell"
>
<?=
gettext
(
"Description"
);
?>
</td>
<td
width=
"78%"
class=
"vtable"
colspan=
"2"
>
<input
name=
"descr"
type=
"text"
<?php
if
(
isset
(
$pconfig
[
'descr'
]))
echo
"value=
\"
{
$pconfig
[
'descr'
]
}
\"
"
;
?>
size=
"64"
/>
</td>
</tr>
<tr
align=
"left"
>
<td
width=
"22%"
valign=
"top"
id=
"monitorport_text"
class=
"vncellreq"
>
<?=
gettext
(
"Port"
);
?>
</td>
<td
width=
"78%"
class=
"vtable"
colspan=
"2"
>
<input
class=
"formfldalias"
id=
"port"
name=
"port"
type=
"text"
<?php
if
(
isset
(
$pconfig
[
'port'
]))
echo
"value=
\"
{
$pconfig
[
'port'
]
}
\"
"
;
?>
size=
"16"
maxlength=
"16"
/><br
/>
<div
id=
"monitorport_desc"
>
<?=
gettext
(
"This is the port your servers are listening on."
);
?>
<br
/>
<?=
gettext
(
"You may also specify a port alias listed in Firewall -> Aliases here."
);
?>
</div>
<script
type=
"text/javascript"
>
//
<!
[
CDATA
[
var
addressarray
=
<?=
json_encode
(
get_alias_list
(
array
(
"port"
,
"url_ports"
,
"urltable_ports"
)))
?>
;
var
oTextbox1
=
new
AutoSuggestControl
(
document
.
getElementById
(
"
port
"
),
new
StateSuggestions
(
addressarray
));
//]]>
</script>
</td>
</tr>
<tr
align=
"left"
>
<td
width=
"22%"
valign=
"top"
id=
"retry_text"
class=
"vncell"
>
<?=
gettext
(
"Retry"
);
?>
</td>
<td
width=
"78%"
class=
"vtable"
colspan=
"2"
>
<input
name=
"retry"
type=
"text"
<?php
if
(
isset
(
$pconfig
[
'retry'
]))
echo
"value=
\"
{
$pconfig
[
'retry'
]
}
\"
"
;
?>
size=
"16"
maxlength=
"16"
/><br
/>
<div
id=
"retry_desc"
>
<?=
gettext
(
"Optionally specify how many times to retry checking a server before declaring it down."
);
?>
</div>
</td>
</tr>
<tr>
<td
colspan=
"2"
>
</td>
</tr>
<tr>
<td
colspan=
"2"
valign=
"top"
class=
"listtopic"
>
<?=
gettext
(
"Add item to pool"
);
?>
</td>
</tr>
<tr
align=
"left"
>
<td
width=
"22%"
valign=
"top"
class=
"vncellreq"
>
<?=
gettext
(
"Monitor"
);
?>
</td>
<td
width=
"78%"
class=
"vtable"
colspan=
"2"
>
<?php
if
(
count
(
$config
[
'load_balancer'
][
'monitor_type'
]))
:
?>
<select
id=
"monitor"
name=
"monitor"
>
<?php
foreach
(
$config
[
'load_balancer'
][
'monitor_type'
]
as
$monitor
)
{
if
(
$monitor
[
'name'
]
==
$pconfig
[
'monitor'
])
{
$selected
=
" selected=
\"
selected
\"
"
;
}
else
{
$selected
=
""
;
}
echo
"<option value=
\"
{
$monitor
[
'name'
]
}
\"
{
$selected
}
>
{
$monitor
[
'name'
]
}
</option>"
;
}
?>
<?php
else
:
?>
<b>
<?=
gettext
(
"NOTE"
);
?>
:
</b>
<?=
gettext
(
"Please add a monitor IP address on the monitors tab if you wish to use this feature."
);
?>
<?php
endif
;
?>
</select>
</td>
</tr>
<tr
align=
"left"
>
<td
width=
"22%"
valign=
"top"
class=
"vncellreq"
>
<?=
gettext
(
"Server IP Address"
);
?>
</td>
<td
width=
"78%"
class=
"vtable"
colspan=
"2"
>
<input
name=
"ipaddr"
type=
"text"
size=
"16"
style=
"float: left;"
/>
<input
class=
"btn btn-default"
type=
"button"
name=
"button1"
value=
"
<?=
gettext
(
"Add to pool"
);
?>
"
onclick=
"AddServerToPool(document.iform); enforceFailover(); checkPoolControls();"
/><br
/>
</td>
</tr>
<tr>
<td
colspan=
"2"
>
</td>
</tr>
<tr>
<td
colspan=
"2"
valign=
"top"
class=
"listtopic"
>
<?=
gettext
(
"Current Pool Members"
);
?>
</td>
</tr>
<tr>
<td
width=
"22%"
valign=
"top"
class=
"vncellreq"
>
<?=
gettext
(
"Members"
);
?>
</td>
<td
width=
"78%"
class=
"vtable"
colspan=
"2"
valign=
"top"
>
<table
summary=
"members"
>
<tbody>
<tr>
<td
align=
"center"
>
<b>
<?=
gettext
(
"Pool Disabled"
);
?>
</b>
<br/>
<select
id=
"serversDisabledSelect"
name=
"serversdisabled[]"
multiple=
"multiple"
size=
"5"
>
<?php
if
(
is_array
(
$pconfig
[
'serversdisabled'
]))
{
foreach
(
$pconfig
[
'serversdisabled'
]
as
$svrent
)
{
if
(
$svrent
!=
''
)
echo
" <option value=
\"
{
$svrent
}
\"
>
{
$svrent
}
</option>
\n
"
;
}
}
?>
</select>
<input
class=
"btn btn-default"
type=
"button"
name=
"removeDisabled"
value=
"
<?=
gettext
(
"Remove"
);
?>
"
onclick=
"RemoveServerFromPool(document.iform, 'serversdisabled[]');"
/>
</td>
<td
valign=
"middle"
align=
"center"
>
<button
class=
"btn btn-default btn-xs"
id=
"moveToEnabled"
name=
"moveToEnabled"
onclick=
"moveOptions(document.iform.serversDisabledSelect, document.iform.serversSelect); checkPoolControls();"
><span
class=
"glyphicon glyphicon-arrow-left"
></span></button><br
/>
<button
class=
"btn btn-default btn-xs"
id=
"moveToDisabled"
name=
"moveToDisabled"
onclick=
"moveOptions(document.iform.serversSelect, document.iform.serversDisabledSelect); checkPoolControls();"
><span
class=
"glyphicon glyphicon-arrow-right"
></span></button>
</td>
<td
align=
"center"
>
<b>
<?=
gettext
(
"Enabled (default)"
);
?>
</b>
<br/>
<select
id=
"serversSelect"
name=
"servers[]"
multiple=
"multiple"
size=
"5"
>
<?php
if
(
is_array
(
$pconfig
[
'servers'
]))
{
foreach
(
$pconfig
[
'servers'
]
as
$svrent
)
{
echo
" <option value=
\"
{
$svrent
}
\"
>
{
$svrent
}
</option>
\n
"
;
}
}
?>
</select>
<input
class=
"btn btn-default"
type=
"button"
name=
"removeEnabled"
value=
"
<?=
gettext
(
"Remove"
);
?>
"
onclick=
"RemoveServerFromPool(document.iform, 'servers[]');"
/>
</td>
</tr>
</tbody>
</table>
</td>
</tr>
<tr
align=
"left"
>
<td
width=
"22%"
valign=
"top"
>
</td>
<td
width=
"78%"
>
<br
/>
<input
name=
"Submit"
type=
"submit"
class=
"btn btn-primary"
value=
"
<?=
gettext
(
"Save"
);
?>
"
onclick=
"AllServers('serversSelect', true); AllServers('serversDisabledSelect', true);"
/>
<input
type=
"button"
class=
"btn btn-default"
value=
"
<?=
gettext
(
"Cancel"
);
?>
"
onclick=
"window.location.href='
<?=
$referer
;
?>
'"
/>
<?php
if
(
isset
(
$id
)
&&
$a_pool
[
$id
]
&&
$_GET
[
'act'
]
!=
'dup'
)
:
?>
<input
name=
"id"
type=
"hidden"
value=
"
<?=
htmlspecialchars
(
$id
);
?>
"
/>
<?php
endif
;
?>
</td>
</tr>
</table>
</div>
</form>
</div>
</section>
</div>
</div>
</section>
<script type="
text
/
javascript
">
$( document ).ready(function() {
// init port type ahead
var all_aliases = [];
$("
#aliases > option").each(function(){
all_aliases
.
push
(
$
(
this
)
.
val
())
});
$
(
"#port"
)
.
typeahead
({
source
:
all_aliases
});
$
(
"#mode"
)
.
change
(
function
(
event
){
event
.
preventDefault
();
if
(
$
(
'#mode'
)
.
val
()
==
'failover'
&&
$
(
'#servers option'
)
.
length
>
1
){
$
(
'#servers option:not(:first)'
)
.
remove
()
.
appendTo
(
'#serversdisabled'
);
}
});
$
(
"#btn_add_to_pool"
)
.
click
(
function
(
event
){
event
.
preventDefault
();
if
(
$
(
'#mode'
)
.
val
()
!=
'failover'
||
$
(
'#servers option'
)
.
length
==
0
){
$
(
'#servers'
)
.
append
(
$
(
'<option>'
,
{
value
:
$
(
"#ipaddr"
)
.
val
()
})
.
text
(
$
(
"#ipaddr"
)
.
val
()));
}
else
{
$
(
'#serversdisabled'
)
.
append
(
$
(
'<option>'
,
{
value
:
$
(
"#ipaddr"
)
.
val
()
})
.
text
(
$
(
"#ipaddr"
)
.
val
()));
}
});
$
(
"#moveToEnabled"
)
.
click
(
function
(
event
){
event
.
preventDefault
();
if
(
$
(
'#mode'
)
.
val
()
!=
'failover'
||
(
$
(
'#servers option'
)
.
length
==
0
&&
$
(
'#serversdisabled option:selected'
)
.
length
==
1
))
{
$
(
'#serversdisabled option:selected'
)
.
remove
()
.
appendTo
(
'#servers'
);
}
});
$
(
"#moveToDisabled"
)
.
click
(
function
(
event
){
event
.
preventDefault
();
$
(
'#servers option:selected'
)
.
remove
()
.
appendTo
(
'#serversdisabled'
);
});
$
(
"#btn_del_serversdisabled"
)
.
click
(
function
(
event
){
event
.
preventDefault
();
$
(
'#serversdisabled option:selected'
)
.
remove
();
});
$
(
"#btn_del_servers"
)
.
click
(
function
(
event
){
event
.
preventDefault
();
$
(
'#servers option:selected'
)
.
remove
();
});
$
(
"#save"
)
.
click
(
function
(){
$
(
'#servers option'
)
.
prop
(
'selected'
,
true
);
$
(
'#serversdisabled option'
)
.
prop
(
'selected'
,
true
);
});
});
</
script
>
<
section
class
="
page
-
content
-
main
">
<div class="
container
-
fluid
">
<div class="
row
">
<?php if (isset(
$input_errors
) && count(
$input_errors
) > 0) print_input_errors(
$input_errors
); ?>
<section class="
col
-
xs
-
12
">
<div class="
content
-
box
">
<form method="
post
" name="
iform
" id="
iform
">
<div class="
table
-
responsive
">
<table class="
table
table
-
striped
">
<tr>
<td>
<strong><?=gettext("
Add
/
edit
-
Pool
entry
"); ?></strong>
</td>
<td align="
right
">
<small><?=gettext("
full
help
"); ?> </small>
<i class="
fa
fa
-
toggle
-
off
text
-
danger
" style="
cursor
:
pointer
;
" id="
show_all_help_page
" type="
button
"></i>
</td>
</tr>
<tr>
<td><i class="
fa
fa
-
info
-
circle
text
-
muted
"></i> <?=gettext("
Name
"); ?></td>
<td>
<input name="
name
" type="
text
" value="
<?=
$pconfig
[
'name'
];
?>
" />
</td>
</tr>
<tr>
<td><i
class=
"fa fa-info-circle text-muted"
></i>
<?=
gettext
(
"Mode"
);
?>
</td>
<td>
<select
id=
"mode"
name=
"mode"
>
<option
value=
"loadbalance"
<?=
$pconfig
[
'mode'
]
==
"loadbalance"
?
"selected=
\"
selected
\"
"
:
""
;
?>
>
<?=
gettext
(
"Load Balance"
);
?>
</option>
<option
value=
"failover"
<?=
$pconfig
[
'mode'
]
==
"failover"
?
"selected=
\"
selected
\"
"
:
""
;
?>
>
<?=
gettext
(
"Manual Failover"
);
?>
</option>
</select>
</td>
</tr>
<tr>
<td><i
class=
"fa fa-info-circle text-muted"
></i>
<?=
gettext
(
"Description"
);
?>
</td>
<td>
<input
name=
"descr"
type=
"text"
<?php
if
(
isset
(
$pconfig
[
'descr'
]))
echo
"value=
\"
{
$pconfig
[
'descr'
]
}
\"
"
;
?>
size=
"64"
/>
</td>
</tr>
<tr>
<td><a
id=
"help_for_port"
href=
"#"
class=
"showhelp"
><i
class=
"fa fa-info-circle"
></i></a>
<?=
gettext
(
"Port"
);
?>
</td>
<td>
<input
type=
"text"
id=
"port"
name=
"port"
value=
"
<?=
$pconfig
[
'port'
];
?>
"
/>
<div
class=
"hidden"
for=
"help_for_port"
>
<?=
gettext
(
"This is the port your servers are listening on."
);
?>
<br
/>
<?=
gettext
(
"You may also specify a port alias listed in Firewall -> Aliases here."
);
?>
</div>
</td>
</tr>
<tr>
<td><a
id=
"help_for_retry"
href=
"#"
class=
"showhelp"
><i
class=
"fa fa-info-circle"
></i></a>
<?=
gettext
(
"Retry"
);
?>
</td>
<td>
<input
name=
"retry"
type=
"text"
value=
"
<?=
$pconfig
[
'retry'
];
?>
"
/>
<div
for=
"help_for_retry"
class=
"hidden"
>
<?=
gettext
(
"Optionally specify how many times to retry checking a server before declaring it down."
);
?>
</div>
</td>
</tr>
<tr>
<td
colspan=
"2"
><strong>
<?=
gettext
(
"Add item to pool"
);
?>
</strong></td>
</tr>
<tr>
<td><i
class=
"fa fa-info-circle text-muted"
></i>
<?=
gettext
(
"Monitor"
);
?>
</td>
<td>
<select
id=
"monitor"
name=
"monitor"
>
<?php
if
(
!
empty
(
$config
[
'load_balancer'
][
'monitor_type'
]))
:
foreach
(
$config
[
'load_balancer'
][
'monitor_type'
]
as
$monitor
)
:?>
<
option
value
=
"<?=
$monitor['name']
;?>"
<?=
$monitor
[
'name'
]
==
$pconfig
[
'monitor'
]
?
"selected=
\"
selected
\"
"
:
""
;
?>
>
<?=
$monitor
[
'name'
];
?>
</option>
<?php
endforeach
;
endif
;
?>
</select>
</td>
</tr>
<tr>
<td><i
class=
"fa fa-info-circle text-muted"
></i>
<?=
gettext
(
"Server IP Address"
);
?>
</td>
<td>
<div
class=
"input-group"
>
<span
class=
"input-group-btn"
>
<button
class=
"btn btn-default"
id=
"btn_add_to_pool"
type=
"button"
>
<?=
gettext
(
"Add to pool"
);
?>
</button>
</span>
<input
class=
"form-control"
id=
"ipaddr"
type=
"text"
>
</div>
</td>
</tr>
<tr>
<td
colspan=
"2"
><strong>
<?=
gettext
(
"Current Pool Members"
);
?>
</strong></td>
</tr>
<tr>
<td><i
class=
"fa fa-info-circle text-muted"
></i>
<?=
gettext
(
"Members"
);
?>
</td>
<td>
<table
class=
"table table-condensed"
>
<thead>
<tr>
<th>
<?=
gettext
(
"Pool Disabled"
);
?>
</th>
<th></th>
<th>
<?=
gettext
(
"Enabled (default)"
);
?>
</th>
</tr>
</thead>
<tbody>
<tr>
<td>
<select
id=
"serversdisabled"
name=
"serversdisabled[]"
multiple=
"multiple"
>
<?php
foreach
(
$pconfig
[
'serversdisabled'
]
as
$svrent
)
:?>
<
option
value
=
"<?=
$svrent
;?>"
><?=
$svrent
;
?>
</option>
<?php
endforeach
;
?>
</select>
<hr/>
<button
id=
"btn_del_serversdisabled"
class=
"btn btn-default btn-xs"
data-toggle=
"tooltip"
><span
class=
"fa fa-trash text-muted"
></span></button>
</td>
<td>
<button
class=
"btn btn-default btn-xs"
id=
"moveToDisabled"
><span
class=
"glyphicon glyphicon-arrow-left"
></span></button><br
/>
<button
class=
"btn btn-default btn-xs"
id=
"moveToEnabled"
><span
class=
"glyphicon glyphicon-arrow-right"
></span></button>
</td>
<td>
<select
id=
"servers"
name=
"servers[]"
multiple=
"multiple"
>
<?php
foreach
(
$pconfig
[
'servers'
]
as
$svrent
)
:?>
<
option
value
=
"<?=
$svrent
;?>"
><?=
$svrent
;
?>
</option>
<?php
endforeach
;
?>
</select>
<hr/>
<button
id=
"btn_del_servers"
class=
"btn btn-default btn-xs"
data-toggle=
"tooltip"
><span
class=
"fa fa-trash text-muted"
></span></button>
</td>
</tr>
</tbody>
</table>
</td>
</tr>
<tr>
<td>
</td>
<td
width=
"78%"
>
<br
/>
<input
id=
"save"
name=
"save"
type=
"submit"
class=
"btn btn-primary"
value=
"
<?=
gettext
(
"Save"
);
?>
"
/>
<input
type=
"button"
class=
"btn btn-default"
value=
"
<?=
gettext
(
"Cancel"
);
?>
"
onclick=
"window.location.href='
<?=
(
isset
(
$_SERVER
[
'HTTP_REFERER'
])
?
$_SERVER
[
'HTTP_REFERER'
]
:
'/load_balancer_pool.php'
);
?>
'"
/>
<?php
if
(
isset
(
$id
)
&&
(
empty
(
$_GET
[
'act'
])
||
$_GET
[
'act'
]
!=
'dup'
))
:
?>
<input
name=
"id"
type=
"hidden"
value=
"
<?=
htmlspecialchars
(
$id
);
?>
"
/>
<?php
endif
;
?>
</td>
</tr>
</table>
</div>
</form>
</div>
</section>
</div>
</div>
</section>
<?php
include
(
"foot.inc"
);
?>
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment