diff --git a/src/www/system_general.php b/src/www/system_general.php index 96c701de4..6f5397bed 100644 --- a/src/www/system_general.php +++ b/src/www/system_general.php @@ -1,30 +1,30 @@ . - All rights reserved. + Copyright (C) 2014-2015 Deciso B.V. + Copyright (C) 2003-2004 Manuel Kasper . + All rights reserved. - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: - 1. Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. + 1. Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. - 2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. - THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, - INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY - AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE - AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, - OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - POSSIBILITY OF SUCH DAMAGE. + THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY + AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, + OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. */ require_once("guiconfig.inc"); @@ -37,298 +37,259 @@ require_once("services.inc"); function get_locale_list() { - $locales = array(); + $locales = array(); - /* first one is the default */ - $locales['en_US'] = gettext('English'); - $locales['zh_CN'] = gettext('Chinese (Simplified)'); - $locales['fr_FR'] = gettext('French'); - $locales['de_DE'] = gettext('German'); - $locales['ja_JP'] = gettext('Japanese'); - $locales['mn_MN'] = gettext('Mongolian'); - $locales['es_CO'] = gettext('Spanish'); + /* first one is the default */ + $locales['en_US'] = gettext('English'); + $locales['zh_CN'] = gettext('Chinese (Simplified)'); + $locales['fr_FR'] = gettext('French'); + $locales['de_DE'] = gettext('German'); + $locales['ja_JP'] = gettext('Japanese'); + $locales['mn_MN'] = gettext('Mongolian'); + $locales['es_CO'] = gettext('Spanish'); - return $locales; + return $locales; } -$pconfig['hostname'] = $config['system']['hostname']; -$pconfig['domain'] = $config['system']['domain']; -if (isset($config['system']['dnsserver'])) { - list($pconfig['dns1'],$pconfig['dns2'],$pconfig['dns3'],$pconfig['dns4']) = $config['system']['dnsserver']; -} else { - list($pconfig['dns1'],$pconfig['dns2'],$pconfig['dns3'],$pconfig['dns4']) = null; +if ($_SERVER['REQUEST_METHOD'] === 'GET') { + $pconfig = array(); + $pconfig['dns1gw'] = null; + $pconfig['dns2gw'] = null; + $pconfig['dns3gw'] = null; + $pconfig['dns4gw'] = null ; + $pconfig['theme'] = null; + $pconfig['language'] = null; + $pconfig['timezone'] = "Etc/UTC"; + $pconfig['timeservers'] = "pool.ntp.org"; + $pconfig['mirror'] = 'default'; + $pconfig['flavour'] = 'default'; + + $pconfig['hostname'] = $config['system']['hostname']; + $pconfig['domain'] = $config['system']['domain']; + if (isset($config['system']['dnsserver'])) { + list($pconfig['dns1'],$pconfig['dns2'],$pconfig['dns3'],$pconfig['dns4']) = $config['system']['dnsserver']; + } else { + list($pconfig['dns1'],$pconfig['dns2'],$pconfig['dns3'],$pconfig['dns4']) = null; + } + foreach (array('dns1gw', 'dns2gw', 'dns3gw', 'dns4gw') as $dnsgwopt) { + if (!empty($config['system'][$dnsgwopt])) { + $pconfig[$dnsgwopt] = $config['system'][$dnsgwopt]; + } else { + $pconfig[$dnsgwopt] = "none"; + } + } + + $pconfig['dnsallowoverride'] = isset($config['system']['dnsallowoverride']); + $pconfig['timezone'] = $config['system']['timezone']; + $pconfig['timeservers'] = $config['system']['timeservers']; + if (isset($config['system']['theme'])) { + $pconfig['theme'] = $config['system']['theme']; + } + if (isset($config['system']['language'])) { + $pconfig['language'] = $config['system']['language']; + } + $pconfig['dnslocalhost'] = isset($config['system']['dnslocalhost']); + + if (isset($config['system']['firmware']['mirror'])) { + $pconfig['mirror'] = $config['system']['firmware']['mirror']; + } + + if (isset($config['system']['firmware']['flavour'])) { + $pconfig['flavour'] = $config['system']['firmware']['flavour']; + } +} elseif ($_SERVER['REQUEST_METHOD'] === 'POST') { + if (isset($_POST['timezone']) && $pconfig['timezone'] <> $_POST['timezone']) { + filter_pflog_start(); + } + $input_errors = array(); + $pconfig = $_POST; + + /* input validation */ + $reqdfields = explode(" ", "hostname domain"); + $reqdfieldsn = array(gettext("Hostname"),gettext("Domain")); + + do_input_validation($pconfig, $reqdfields, $reqdfieldsn, $input_errors); + + if (!empty($pconfig['hostname']) && !is_hostname($pconfig['hostname'])) { + $input_errors[] = gettext("The hostname may only contain the characters a-z, 0-9 and '-'."); + } + if (!empty($pconfig['domain']) && !is_domain($pconfig['domain'])) { + $input_errors[] = gettext("The domain may only contain the characters a-z, 0-9, '-' and '.'."); + } + + $ignore_posted_dnsgw = array(); + + for ($dnscounter=1; $dnscounter<5; $dnscounter++){ + $dnsname="dns{$dnscounter}"; + $dnsgwname="dns{$dnscounter}gw"; + if (!empty($pconfig[$dnsname]) && !is_ipaddr($pconfig[$dnsname])) { + $input_errors[] = gettext("A valid IP address must be specified for DNS server $dnscounter."); + } elseif(!empty($pconfig[$dnsgwname]) && $pconfig[$dnsgwname] <> "none") { + // A real gateway has been selected. + if (is_ipaddr($pconfig[$dnsname])) { + if ((is_ipaddrv4($pconfig[$dnsname])) && (validate_address_family($pconfig[$dnsname], $pconfig[$dnsgwname]) === false )) { + $input_errors[] = gettext("You can not specify IPv6 gateway '{$pconfig[$dnsgwname]}' for IPv4 DNS server '{$pconfig[$dnsname]}'"); + } + if ((is_ipaddrv6($pconfig[$dnsname])) && (validate_address_family($pconfig[$dnsname], $pconfig[$dnsgwname]) === false )) { + $input_errors[] = gettext("You can not specify IPv4 gateway '{$pconfig[$dnsgwname]}' for IPv6 DNS server '{$pconfig[$dnsname]}'"); + } + } else { + // The user selected a gateway but did not provide a DNS address. Be nice and set the gateway back to "none". + $ignore_posted_dnsgw[$dnsgwname] = true; + } + } + } + /* XXX cranky low-level call, please refactor */ + $direct_networks_list = explode(' ', filter_get_direct_networks_list(filter_generate_optcfg_array())); + for ($dnscounter=1; $dnscounter<5; $dnscounter++) { + $dnsitem = "dns{$dnscounter}"; + $dnsgwitem = "dns{$dnscounter}gw"; + if (!empty($pconfig[$dnsgwitem])) { + if(interface_has_gateway($pconfig[$dnsgwitem])) { + foreach($direct_networks_list as $direct_network) { + if(ip_in_subnet($_POST[$dnsitem], $direct_network)) { + $input_errors[] = sprintf(gettext("You can not assign a gateway to DNS '%s' server which is on a directly connected network."),$pconfig[$dnsitem]); + } + } + } + } + } + + # it's easy to have a little too much whitespace in the field, clean it up for the user before processing. + $pconfig['timeservers'] = preg_replace('/[[:blank:]]+/', ' ', $pconfig['timeservers']); + $pconfig['timeservers'] = trim($pconfig['timeservers']); + foreach (explode(' ', $pconfig['timeservers']) as $ts) { + if (!is_domain($ts)) { + $input_errors[] = gettext("A NTP Time Server name may only contain the characters a-z, 0-9, '-' and '.'."); + } + } + + if (count($input_errors) == 0) { + $config['system']['hostname'] = $pconfig['hostname']; + $config['system']['domain'] = $pconfig['domain']; + $config['system']['timezone'] = $pconfig['timezone']; + $config['system']['timeservers'] = strtolower($pconfig['timeservers']); + $config['theme'] = $pconfig['theme']; + + if (!empty($pconfig['language']) && $pconfig['language'] != $config['system']['language']) { + $config['system']['language'] = $pconfig['language']; + set_language($config['system']['language']); + } + + if (!isset($config['system']['firmware'])) { + $config['system']['firmware'] = array(); + } + if ($pconfig['mirror'] == 'default') { + if (isset($config['system']['firmware']['mirror'])) { + /* default does not set anything for backwards compat */ + unset($config['system']['firmware']['mirror']); + } + } else { + $config['system']['firmware']['mirror'] = $pconfig['mirror']; + } + if ($pconfig['flavour'] == 'default') { + if (isset($config['system']['firmware']['flavour'])) { + /* default does not set anything for backwards compat */ + unset($config['system']['firmware']['flavour']); + } + } else { + $config['system']['firmware']['flavour'] = $pconfig['flavour']; + } + + /* XXX - billm: these still need updating after figuring out how to check if they actually changed */ + $olddnsservers = $config['system']['dnsserver']; + $config['system']['dnsserver'] = array(); + foreach (array('dns1', 'dns2', 'dns3', 'dns4') as $dnsopt) { + if (!empty($pconfig[$dnsopt])) { + $config['system']['dnsserver'][] = $pconfig[$dnsopt]; + } + } + $olddnsallowoverride = !empty($config['system']['dnsallowoverride']); + + $config['system']['dnsallowoverride'] = !empty($pconfig['dnsallowoverride']); + + if($pconfig['dnslocalhost'] == "yes") { + $config['system']['dnslocalhost'] = true; + } elseif (isset($config['system']['dnslocalhost'])) { + unset($config['system']['dnslocalhost']); + } + + /* which interface should the dns servers resolve through? */ + $outdnscounter = 0; + for ($dnscounter=1; $dnscounter<5; $dnscounter++) { + $dnsname="dns{$dnscounter}"; + $dnsgwname="dns{$dnscounter}gw"; + $olddnsgwname = !empty($config['system'][$dnsgwname]) ? $config['system'][$dnsgwname] : "none" ; + + if ($ignore_posted_dnsgw[$dnsgwname]) { + $thisdnsgwname = "none"; + } else { + $thisdnsgwname = $pconfig[$dnsgwname]; + } + + // "Blank" out the settings for this index, then we set them below using the "outdnscounter" index. + $config['system'][$dnsgwname] = "none"; + $pconfig[$dnsgwname] = "none"; + $pconfig[$dnsname] = ""; + + if (!empty($_POST[$dnsname])) { + // Only the non-blank DNS servers were put into the config above. + // So we similarly only add the corresponding gateways sequentially to the config (and to pconfig), as we find non-blank DNS servers. + // This keeps the DNS server IP and corresponding gateway "lined up" when the user blanks out a DNS server IP in the middle of the list. + $outdnscounter++; + $outdnsname="dns{$outdnscounter}"; + $outdnsgwname="dns{$outdnscounter}gw"; + $pconfig[$outdnsname] = $_POST[$dnsname]; + if(!empty($_POST[$dnsgwname])) { + $config['system'][$outdnsgwname] = $thisdnsgwname; + $pconfig[$outdnsgwname] = $thisdnsgwname; + } else { + // Note: when no DNS GW name is chosen, the entry is set to "none", so actually this case never happens. + unset($config['system'][$outdnsgwname]); + $pconfig[$outdnsgwname] = ""; + } + } + if ($olddnsgwname != "none" && ($olddnsgwname != $thisdnsgwname || $olddnsservers[$dnscounter-1] != $_POST[$dnsname])) { + // A previous DNS GW name was specified. It has now gone or changed, or the DNS server address has changed. + // Remove the route. Later calls will add the correct new route if needed. + if (is_ipaddrv4($olddnsservers[$dnscounter-1])) { + mwexec("/sbin/route delete " . escapeshellarg($olddnsservers[$dnscounter-1])); + } else { + if (is_ipaddrv6($olddnsservers[$dnscounter-1])) { + mwexec("/sbin/route delete -inet6 " . escapeshellarg($olddnsservers[$dnscounter-1])); + } + } + } + } + write_config(); + + system_hostname_configure(); + system_hosts_generate(); + system_resolvconf_generate(); + if (isset($config['dnsmasq']['enable'])) { + services_dnsmasq_configure(); + } elseif (isset($config['unbound']['enable'])) { + services_unbound_configure(); + } + system_timezone_configure(); + system_firmware_configure(); + system_ntp_configure(); + + if ($olddnsallowoverride != $config['system']['dnsallowoverride']) { + configd_run("dns reload"); + } + + // Reload the filter - plugins might need to be run. + filter_configure(); + + $savemsg = get_std_save_message(); + } + + unset($ignore_posted_dnsgw); } -$arr_gateways = return_gateways_array(); - -if (isset($config['system']['dns1gw'])) { - $pconfig['dns1gw'] = $config['system']['dns1gw']; -} else { - $pconfig['dns1gw'] = null; -} -if (isset($config['system']['dns2gw'])) { - $pconfig['dns2gw'] = $config['system']['dns2gw']; -} else { - $pconfig['dns2gw'] = null; -} -if (isset($config['system']['dns3gw'])) { - $pconfig['dns3gw'] = $config['system']['dns3gw']; -} else { - $pconfig['dns3gw'] = null; -} -if (isset($config['system']['dns4gw'])) { - $pconfig['dns4gw'] = $config['system']['dns4gw']; -} else { - $pconfig['dns4gw'] = null ; -} - -$pconfig['dnsallowoverride'] = isset($config['system']['dnsallowoverride']); -$pconfig['timezone'] = $config['system']['timezone']; -$pconfig['timeupdateinterval'] = $config['system']['time-update-interval']; -$pconfig['timeservers'] = $config['system']['timeservers']; -if (isset($config['system']['theme'])) { - $pconfig['theme'] = $config['system']['theme']; -} else { - $pconfig['theme'] = null; -} -if (isset($config['system']['language'])) { - $pconfig['language'] = $config['system']['language']; -} else { - $pconfig['language'] = null; -} - -$pconfig['dnslocalhost'] = isset($config['system']['dnslocalhost']); - -if (!isset($pconfig['timeupdateinterval'])) - $pconfig['timeupdateinterval'] = 300; -if (empty($pconfig['timezone'])) - $pconfig['timezone'] = "Etc/UTC"; -if (empty($pconfig['timeservers'])) - $pconfig['timeservers'] = "pool.ntp.org"; - -$pconfig['mirror'] = 'default'; -if (isset($config['system']['firmware']['mirror'])) { - $pconfig['mirror'] = $config['system']['firmware']['mirror']; -} - -$pconfig['flavour'] = 'default'; -if (isset($config['system']['firmware']['flavour'])) { - $pconfig['flavour'] = $config['system']['firmware']['flavour']; -} - -if (isset($_POST['timezone']) && $pconfig['timezone'] <> $_POST['timezone']) { - filter_pflog_start(); -} - -$timezonelist = get_zoneinfo(); - -$multiwan = false; -$interfaces = get_configured_interface_list(); -foreach($interfaces as $interface) { - if(interface_has_gateway($interface)) { - $multiwan = true; - } -} - -if ($_POST) { - unset($input_errors); - $pconfig = $_POST; - - /* input validation */ - $reqdfields = explode(" ", "hostname domain"); - $reqdfieldsn = array(gettext("Hostname"),gettext("Domain")); - - do_input_validation($_POST, $reqdfields, $reqdfieldsn, $input_errors); - - if ($_POST['hostname'] && !is_hostname($_POST['hostname'])) { - $input_errors[] = gettext("The hostname may only contain the characters a-z, 0-9 and '-'."); - } - if ($_POST['domain'] && !is_domain($_POST['domain'])) { - $input_errors[] = gettext("The domain may only contain the characters a-z, 0-9, '-' and '.'."); - } - - $ignore_posted_dnsgw = array(); - - for ($dnscounter=1; $dnscounter<5; $dnscounter++){ - $dnsname="dns{$dnscounter}"; - $dnsgwname="dns{$dnscounter}gw"; - if (($_POST[$dnsname] && !is_ipaddr($_POST[$dnsname]))) { - $input_errors[] = gettext("A valid IP address must be specified for DNS server $dnscounter."); - } else { - if(($_POST[$dnsgwname] <> "") && ($_POST[$dnsgwname] <> "none")) { - // A real gateway has been selected. - if (is_ipaddr($_POST[$dnsname])) { - if ((is_ipaddrv4($_POST[$dnsname])) && (validate_address_family($_POST[$dnsname], $_POST[$dnsgwname]) === false )) { - $input_errors[] = gettext("You can not specify IPv6 gateway '{$_POST[$dnsgwname]}' for IPv4 DNS server '{$_POST[$dnsname]}'"); - } - if ((is_ipaddrv6($_POST[$dnsname])) && (validate_address_family($_POST[$dnsname], $_POST[$dnsgwname]) === false )) { - $input_errors[] = gettext("You can not specify IPv4 gateway '{$_POST[$dnsgwname]}' for IPv6 DNS server '{$_POST[$dnsname]}'"); - } - } else { - // The user selected a gateway but did not provide a DNS address. Be nice and set the gateway back to "none". - $ignore_posted_dnsgw[$dnsgwname] = true; - } - } - } - } - /* XXX cranky low-level call, please refactor */ - $direct_networks_list = explode(' ', filter_get_direct_networks_list(filter_generate_optcfg_array())); - for ($dnscounter=1; $dnscounter<5; $dnscounter++) { - $dnsitem = "dns{$dnscounter}"; - $dnsgwitem = "dns{$dnscounter}gw"; - if ($_POST[$dnsgwitem]) { - if(interface_has_gateway($_POST[$dnsgwitem])) { - foreach($direct_networks_list as $direct_network) { - if(ip_in_subnet($_POST[$dnsitem], $direct_network)) { - $input_errors[] = sprintf(gettext("You can not assign a gateway to DNS '%s' server which is on a directly connected network."),$_POST[$dnsitem]); - } - } - } - } - } - - $t = (int)$_POST['timeupdateinterval']; - if (($t < 0) || (($t > 0) && ($t < 6)) || ($t > 1440)) { - $input_errors[] = gettext("The time update interval must be either 0 (disabled) or between 6 and 1440."); - } - # it's easy to have a little too much whitespace in the field, clean it up for the user before processing. - $_POST['timeservers'] = preg_replace('/[[:blank:]]+/', ' ', $_POST['timeservers']); - $_POST['timeservers'] = trim($_POST['timeservers']); - foreach (explode(' ', $_POST['timeservers']) as $ts) { - if (!is_domain($ts)) { - $input_errors[] = gettext("A NTP Time Server name may only contain the characters a-z, 0-9, '-' and '.'."); - } - } - - if (!$input_errors) { - update_if_changed("hostname", $config['system']['hostname'], $_POST['hostname']); - update_if_changed("domain", $config['system']['domain'], $_POST['domain']); - - update_if_changed("timezone", $config['system']['timezone'], $_POST['timezone']); - update_if_changed("NTP servers", $config['system']['timeservers'], strtolower($_POST['timeservers'])); - update_if_changed("NTP update interval", $config['system']['time-update-interval'], $_POST['timeupdateinterval']); - - if ($_POST['language'] && $_POST['language'] != $config['system']['language']) { - $config['system']['language'] = $_POST['language']; - set_language($config['system']['language']); - } - - if (!isset($config['system']['firmware'])) { - $config['system']['firmware'] = array(); - } - if ($_POST['mirror'] == 'default') { - if (isset($config['system']['firmware']['mirror'])) { - /* default does not set anything for backwards compat */ - unset($config['system']['firmware']['mirror']); - } - } else { - $config['system']['firmware']['mirror'] = $_POST['mirror']; - } - if ($_POST['flavour'] == 'default') { - if (isset($config['system']['firmware']['flavour'])) { - /* default does not set anything for backwards compat */ - unset($config['system']['firmware']['flavour']); - } - } else { - $config['system']['firmware']['flavour'] = $_POST['flavour']; - } - - update_if_changed("System Theme", $config['theme'], $_POST['theme']); - - /* XXX - billm: these still need updating after figuring out how to check if they actually changed */ - $olddnsservers = $config['system']['dnsserver']; - unset($config['system']['dnsserver']); - if ($_POST['dns1']) - $config['system']['dnsserver'][] = $_POST['dns1']; - if ($_POST['dns2']) - $config['system']['dnsserver'][] = $_POST['dns2']; - if ($_POST['dns3']) - $config['system']['dnsserver'][] = $_POST['dns3']; - if ($_POST['dns4']) - $config['system']['dnsserver'][] = $_POST['dns4']; - - $olddnsallowoverride = $config['system']['dnsallowoverride']; - - unset($config['system']['dnsallowoverride']); - $config['system']['dnsallowoverride'] = $_POST['dnsallowoverride'] ? true : false; - - if($_POST['dnslocalhost'] == "yes") - $config['system']['dnslocalhost'] = true; - else - unset($config['system']['dnslocalhost']); - - /* which interface should the dns servers resolve through? */ - $outdnscounter = 0; - for ($dnscounter=1; $dnscounter<5; $dnscounter++) { - $dnsname="dns{$dnscounter}"; - $dnsgwname="dns{$dnscounter}gw"; - $olddnsgwname = $config['system'][$dnsgwname]; - - if ($ignore_posted_dnsgw[$dnsgwname]) - $thisdnsgwname = "none"; - else - $thisdnsgwname = $pconfig[$dnsgwname]; - - // "Blank" out the settings for this index, then we set them below using the "outdnscounter" index. - $config['system'][$dnsgwname] = "none"; - $pconfig[$dnsgwname] = "none"; - $pconfig[$dnsname] = ""; - - if ($_POST[$dnsname]) { - // Only the non-blank DNS servers were put into the config above. - // So we similarly only add the corresponding gateways sequentially to the config (and to pconfig), as we find non-blank DNS servers. - // This keeps the DNS server IP and corresponding gateway "lined up" when the user blanks out a DNS server IP in the middle of the list. - $outdnscounter++; - $outdnsname="dns{$outdnscounter}"; - $outdnsgwname="dns{$outdnscounter}gw"; - $pconfig[$outdnsname] = $_POST[$dnsname]; - if($_POST[$dnsgwname]) { - $config['system'][$outdnsgwname] = $thisdnsgwname; - $pconfig[$outdnsgwname] = $thisdnsgwname; - } else { - // Note: when no DNS GW name is chosen, the entry is set to "none", so actually this case never happens. - unset($config['system'][$outdnsgwname]); - $pconfig[$outdnsgwname] = ""; - } - } - if (($olddnsgwname != "") && ($olddnsgwname != "none") && (($olddnsgwname != $thisdnsgwname) || ($olddnsservers[$dnscounter-1] != $_POST[$dnsname]))) { - // A previous DNS GW name was specified. It has now gone or changed, or the DNS server address has changed. - // Remove the route. Later calls will add the correct new route if needed. - if (is_ipaddrv4($olddnsservers[$dnscounter-1])) - mwexec("/sbin/route delete " . escapeshellarg($olddnsservers[$dnscounter-1])); - else - if (is_ipaddrv6($olddnsservers[$dnscounter-1])) - mwexec("/sbin/route delete -inet6 " . escapeshellarg($olddnsservers[$dnscounter-1])); - } - } - - write_config(); - - $retval = 0; - $retval = system_hostname_configure(); - $retval |= system_hosts_generate(); - $retval |= system_resolvconf_generate(); - if (isset($config['dnsmasq']['enable'])) - $retval |= services_dnsmasq_configure(); - elseif (isset($config['unbound']['enable'])) - $retval |= services_unbound_configure(); - $retval |= system_timezone_configure(); - $retval |= system_firmware_configure(); - $retval |= system_ntp_configure(); - - if ($olddnsallowoverride != $config['system']['dnsallowoverride']) { - configd_run("dns reload"); - } - - // Reload the filter - plugins might need to be run. - $retval |= filter_configure(); - - $savemsg = get_std_save_message(); - } - - unset($ignore_posted_dnsgw); -} +legacy_html_escape_form_data($pconfig); $pgtitle = array(gettext("System"),gettext("Settings"),gettext("General")); include("head.inc"); @@ -339,275 +300,248 @@ include("head.inc");
-
- -
- 0) print_input_errors($input_errors); - if (isset($savemsg)) print_info_box($savemsg); - ?> -
-
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- - -
- firewall -
-
-
- - -
- -
-
- - - - - - - - - - - - - - - - - - -
- - - - - -
- - - -
- -
- -
- -
- /> - - - -
- -
-
- /> - - - -
- -
- -
- -
- - - -
- -
- - - -
- - - - -
- - - - . - -
- - - - -
- - - - -
  - " /> -
-
- +
+
+ 0) { + print_input_errors($input_errors); + } + if (isset($savemsg)) { + print_info_box($savemsg); + } +?> +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ + - +
+ + +
+ + + + + + + + + + + + + + + +
+ + + +
+ +
+ /> + + + + +
+ /> + + + + +
+ + +
+ + +
+ + +
+ + +
+ + +
+ + +
+ " /> +
+
+
+
+
+
-