summaryrefslogtreecommitdiffstats
path: root/src/usr/local/www
diff options
context:
space:
mode:
authorskrude61 <github@krude.de>2016-09-20 10:26:26 +0200
committerskrude61 <github@krude.de>2016-09-20 10:26:26 +0200
commitdf8ebedc4b0efd944e4be810abaf3e7e919e7904 (patch)
treec989770715ef4b3229953cc96318fdabd5c0a797 /src/usr/local/www
parentefae02fccd6d8bddd8c4b3034b5fa472fb009ad6 (diff)
downloadpfsense-df8ebedc4b0efd944e4be810abaf3e7e919e7904.zip
pfsense-df8ebedc4b0efd944e4be810abaf3e7e919e7904.tar.gz
Allow snmpd to bind to multiple interfaces.
Diffstat (limited to 'src/usr/local/www')
-rw-r--r--src/usr/local/www/services_snmp.php46
1 files changed, 33 insertions, 13 deletions
diff --git a/src/usr/local/www/services_snmp.php b/src/usr/local/www/services_snmp.php
index 6c4f0b2..66caf4f 100644
--- a/src/usr/local/www/services_snmp.php
+++ b/src/usr/local/www/services_snmp.php
@@ -71,7 +71,11 @@ $pconfig['hostres'] = isset($config['snmpd']['modules']['hostres']);
$pconfig['bridge'] = isset($config['snmpd']['modules']['bridge']);
$pconfig['ucd'] = isset($config['snmpd']['modules']['ucd']);
$pconfig['regex'] = isset($config['snmpd']['modules']['regex']);
-$pconfig['bindip'] = $config['snmpd']['bindip'];
+if (empty($config['snmpd']['bindip'])) {
+ $pconfig['bindip'] = array();
+} else {
+ $pconfig['bindip'] = explode(",", $config['snmpd']['bindip']);
+}
if ($_POST) {
@@ -151,7 +155,9 @@ if ($_POST) {
$config['snmpd']['modules']['bridge'] = $_POST['bridge'] ? true : false;
$config['snmpd']['modules']['ucd'] = $_POST['ucd'] ? true : false;
$config['snmpd']['modules']['regex'] = $_POST['regex'] ? true : false;
- $config['snmpd']['bindip'] = $_POST['bindip'];
+ if (is_array($_POST['bindip']) && !empty($_POST['bindip'])) {
+ $config['snmpd']['bindip'] = implode(",", $_POST['bindip']);
+ }
write_config();
@@ -161,17 +167,28 @@ if ($_POST) {
}
}
-function build_iplist() {
- $listenips = get_possible_listen_ips();
- $iplist = array();
- $iplist[''] = 'All';
+function build_if_list($selectedifs) {
+ $interface_addresses = get_possible_listen_ips(true);
+ $iflist = array('options' => array(), 'selected' => array());
+
+ $iflist['options']['all'] = gettext("All");
+ if (empty($selectedifs) || empty($selectedifs[0]) || in_array("all", $selectedifs)) {
+ array_push($iflist['selected'], "all");
+ }
+
+ foreach ($interface_addresses as $laddr => $ldescr) {
+ if (is_ipaddr(get_interface_ip($laddr))) {
+ $iflist['options'][$laddr] = htmlspecialchars($ldescr);
+ }
- foreach ($listenips as $lip => $ldescr) {
- $iplist[$lip] = $ldescr;
+ if ($selectedifs && in_array($laddr, $selectedifs)) {
+ array_push($iflist['selected'], $laddr);
+ }
}
- unset($listenips);
- return($iplist);
+ unset($interface_addresses);
+
+ return($iflist);
}
$pgtitle = array(gettext("Services"), gettext("SNMP"));
@@ -325,11 +342,14 @@ $form->add($section);
$section = new Form_Section('Interface Binding');
+$iflist = build_if_list($pconfig['bindip']);
+
$section->addInput(new Form_Select(
'bindip',
- 'Bind Interface',
- $pconfig['bindip'],
- build_iplist()
+ 'Bind Interfaces',
+ $iflist['selected'],
+ $iflist['options'],
+ true
));
$form->add($section);
OpenPOWER on IntegriCloud