diff --git a/LICENSE b/LICENSE index 564a641d186..cdf689954ae 100644 --- a/LICENSE +++ b/LICENSE @@ -30,7 +30,6 @@ Copyright (c) 2009-2012 Jim Pingle Copyright (c) 2012 Jonas von Andrian Copyright (c) 2004-2005 Jonathan Watt Copyright (c) 2015 Jos Schellevis -Copyright (c) 2003-2004 Justin Ellison Copyright (c) 2021 Kyle Evans Copyright (c) 2015 Manuel Faux Copyright (c) 2003-2006 Manuel Kasper diff --git a/plist b/plist index 107f820e9ed..ea87598f15c 100644 --- a/plist +++ b/plist @@ -605,6 +605,7 @@ /usr/local/opnsense/mvc/app/models/OPNsense/DHCRelay/DHCRelay.xml /usr/local/opnsense/mvc/app/models/OPNsense/DHCRelay/Menu/Menu.xml /usr/local/opnsense/mvc/app/models/OPNsense/DHCRelay/Migrations/M1_0_0.php +/usr/local/opnsense/mvc/app/models/OPNsense/DHCRelay/Migrations/M1_0_1.php /usr/local/opnsense/mvc/app/models/OPNsense/Diagnostics/ACL/ACL.xml /usr/local/opnsense/mvc/app/models/OPNsense/Diagnostics/DnsDiagnostics.php /usr/local/opnsense/mvc/app/models/OPNsense/Diagnostics/DnsDiagnostics.xml @@ -2080,7 +2081,6 @@ /usr/local/www/services_dhcp_edit.php /usr/local/www/services_dhcpv6.php /usr/local/www/services_dhcpv6_edit.php -/usr/local/www/services_dhcpv6_relay.php /usr/local/www/services_dnsmasq.php /usr/local/www/services_dnsmasq_domainoverride_edit.php /usr/local/www/services_dnsmasq_edit.php diff --git a/src/etc/inc/plugins.inc.d/core.inc b/src/etc/inc/plugins.inc.d/core.inc index fca2fe87c52..173abff737e 100644 --- a/src/etc/inc/plugins.inc.d/core.inc +++ b/src/etc/inc/plugins.inc.d/core.inc @@ -405,12 +405,6 @@ function core_xmlrpc_sync() 'id' => 'dhcpdv6', 'services' => ["dhcpdv6", "radvd"], ); - $result[] = array( - 'description' => gettext('DHCPv6: Relay'), - 'section' => 'dhcrelay6', - 'id' => 'dhcrelay6', - 'services' => ["dhcrelay6"], - ); $result[] = array( 'description' => gettext('Virtual IPs'), 'help' => gettext('Synchronize the CARP Virtual IPs to the other HA host.'), diff --git a/src/etc/inc/plugins.inc.d/dhcpd.inc b/src/etc/inc/plugins.inc.d/dhcpd.inc index 83c315e12e6..dd2c08b183c 100644 --- a/src/etc/inc/plugins.inc.d/dhcpd.inc +++ b/src/etc/inc/plugins.inc.d/dhcpd.inc @@ -115,16 +115,6 @@ function dhcpd_services() $services[] = $pconfig; } - if (isset($config['dhcrelay6']['enable'])) { - $pconfig = array(); - $pconfig['name'] = "dhcrelay6"; - $pconfig['description'] = gettext("DHCPv6 Relay"); - $pconfig['php']['restart'] = array('dhcpd_dhcrelay6_configure'); - $pconfig['php']['start'] = array('dhcpd_dhcrelay6_configure'); - $pconfig['pidfile'] = '/var/run/dhcrelay6.pid'; - $services[] = $pconfig; - } - if (dhcpd_dhcpv4_enabled()) { $pconfig = array(); $pconfig['name'] = 'dhcpd'; @@ -1599,13 +1589,6 @@ EOD; service_log("done.\n", $verbose); } -function dhcpd_dhcrelay_configure($verbose = false, $family = null, $id = null) -{ - if ($family == null || $family == 'inet6') { - dhcpd_dhcrelay6_configure($verbose); - } -} - function dhcpd_dhcrelay6_configure($verbose = false) { global $config; diff --git a/src/etc/inc/plugins.inc.d/dhcrelay.inc b/src/etc/inc/plugins.inc.d/dhcrelay.inc index a59a92b315a..032f73232a7 100644 --- a/src/etc/inc/plugins.inc.d/dhcrelay.inc +++ b/src/etc/inc/plugins.inc.d/dhcrelay.inc @@ -60,8 +60,8 @@ function dhcrelay_xmlrpc_sync() $result = []; $result[] = [ - 'description' => gettext('DHCPv4: Relay'), - 'section' => 'dhcrelay,OPNsense.DHCRelay', + 'description' => gettext('DHCRelay'), + 'section' => 'dhcrelay,dhcrelay6,OPNsense.DHCRelay', 'services' => ['dhcrelay'], 'id' => 'dhcrelay', ]; diff --git a/src/opnsense/mvc/app/models/OPNsense/Core/ACL/ACL.xml b/src/opnsense/mvc/app/models/OPNsense/Core/ACL/ACL.xml index bc881b9dd32..51582e6a006 100644 --- a/src/opnsense/mvc/app/models/OPNsense/Core/ACL/ACL.xml +++ b/src/opnsense/mvc/app/models/OPNsense/Core/ACL/ACL.xml @@ -420,12 +420,6 @@ services_dhcp.php* - - Services: DHCPv6 Relay - - services_dhcpv6_relay.php* - - Services: DHCPv6 Server: Edit static mapping diff --git a/src/opnsense/mvc/app/models/OPNsense/Core/Menu/Menu.xml b/src/opnsense/mvc/app/models/OPNsense/Core/Menu/Menu.xml index ae262222daa..026484127c6 100644 --- a/src/opnsense/mvc/app/models/OPNsense/Core/Menu/Menu.xml +++ b/src/opnsense/mvc/app/models/OPNsense/Core/Menu/Menu.xml @@ -174,7 +174,6 @@ - diff --git a/src/opnsense/mvc/app/models/OPNsense/DHCRelay/DHCRelay.xml b/src/opnsense/mvc/app/models/OPNsense/DHCRelay/DHCRelay.xml index 66fe05641f6..311b5baef57 100644 --- a/src/opnsense/mvc/app/models/OPNsense/DHCRelay/DHCRelay.xml +++ b/src/opnsense/mvc/app/models/OPNsense/DHCRelay/DHCRelay.xml @@ -1,6 +1,6 @@ //OPNsense/DHCRelay - 1.0.0 + 1.0.1 DHCRelay configuration diff --git a/src/opnsense/mvc/app/models/OPNsense/DHCRelay/Migrations/M1_0_0.php b/src/opnsense/mvc/app/models/OPNsense/DHCRelay/Migrations/M1_0_0.php index f3a49b695b7..dc57f99f0a1 100644 --- a/src/opnsense/mvc/app/models/OPNsense/DHCRelay/Migrations/M1_0_0.php +++ b/src/opnsense/mvc/app/models/OPNsense/DHCRelay/Migrations/M1_0_0.php @@ -60,8 +60,8 @@ public function run($model) foreach (explode(',', (string)$legacy->interface) as $interface) { $node = $model->relays->add(); $node->setNodes([ - 'agent_info' => !empty($legacy->agentoption), - 'enabled' => !empty($legacy->enable), + 'agent_info' => !empty($legacy->agentoption) ? '1' : '0', + 'enabled' => !empty($legacy->enable) ? '1' : '0', 'interface' => (string)$interface, 'destination' => $dest_uuid, ]); diff --git a/src/opnsense/mvc/app/models/OPNsense/DHCRelay/Migrations/M1_0_1.php b/src/opnsense/mvc/app/models/OPNsense/DHCRelay/Migrations/M1_0_1.php new file mode 100644 index 00000000000..eacd663fcb4 --- /dev/null +++ b/src/opnsense/mvc/app/models/OPNsense/DHCRelay/Migrations/M1_0_1.php @@ -0,0 +1,80 @@ +object(); + + $legacy = $config->dhcrelay6; + if (empty($legacy->interface) || empty($legacy->server)) { + /* no value in partial migration so skip all */ + return; + } + + $node = $model->destinations->add(); + $node->setNodes([ + 'name' => 'Migrated IPv6 server entry', + 'server' => (string)$legacy->server, + ]); + $dest_uuid = $node->getAttribute('uuid'); + + foreach (explode(',', (string)$legacy->interface) as $interface) { + $node = $model->relays->add(); + $node->setNodes([ + 'agent_info' => !empty($legacy->agentoption) ? '1' : '0', + 'enabled' => !empty($legacy->enable) ? '1' : '0', + 'interface' => (string)$interface, + 'destination' => $dest_uuid, + ]); + $node->interface->normalizeValue(); + if (empty((string)$node->interface)) { + $model->relays->del($node->getAttribute('uuid')); + } + } + } + + public function post($model) + { + $config = Config::getInstance()->object(); + unset($config->dhcrelay6); + } +} diff --git a/src/opnsense/service/templates/OPNsense/Syslog/local/dhcpd.conf b/src/opnsense/service/templates/OPNsense/Syslog/local/dhcpd.conf index 759ff46de0a..1a6a37b0d85 100644 --- a/src/opnsense/service/templates/OPNsense/Syslog/local/dhcpd.conf +++ b/src/opnsense/service/templates/OPNsense/Syslog/local/dhcpd.conf @@ -2,5 +2,5 @@ # Local syslog-ng configuration filter definition [dhcpd]. ################################################################### filter f_local_dhcpd { - facility(local7) or program("dhcpd") or program("dhcrelay"); + facility(local7) or program("dhcpd"); }; diff --git a/src/www/services_dhcpv6.php b/src/www/services_dhcpv6.php index 96527c440ab..9496c5943a6 100644 --- a/src/www/services_dhcpv6.php +++ b/src/www/services_dhcpv6.php @@ -244,12 +244,6 @@ function reconfigure_dhcpd() } } } - - /* make sure that the DHCP Relay isn't enabled on this interface */ - if (isset($config['dhcrelay'][$if]['enable'])) { - $input_errors[] = sprintf(gettext("You must disable the DHCP relay on the %s interface before enabling the DHCP server."), - !empty($config['interfaces'][$if]['descr']) ? htmlspecialchars($config['interfaces'][$if]['descr']) : strtoupper($if)); - } } if (count($input_errors) == 0) { @@ -424,9 +418,6 @@ function show_netboot_config() {
- - - 0) print_input_errors($input_errors); ?>

@@ -798,7 +789,6 @@ function show_netboot_config() {

-
diff --git a/src/www/services_dhcpv6_relay.php b/src/www/services_dhcpv6_relay.php deleted file mode 100644 index 95793bad1a0..00000000000 --- a/src/www/services_dhcpv6_relay.php +++ /dev/null @@ -1,186 +0,0 @@ - - * Copyright (C) 2010 Ermal Luçi - * Copyright (C) 2010 Seth Mos - * All rights reserved. - * - * 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. - * - * 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. - */ - -require_once("guiconfig.inc"); -require_once("interfaces.inc"); - -if ($_SERVER['REQUEST_METHOD'] === 'GET') { - $pconfig['enable'] = isset($config['dhcrelay6']['enable']); - if (empty($config['dhcrelay6']['interface'])) { - $pconfig['interface'] = array(); - } else { - $pconfig['interface'] = explode(",", $config['dhcrelay6']['interface']); - } - if (empty($config['dhcrelay6']['server'])) { - $pconfig['server'] = ""; - } else { - $pconfig['server'] = $config['dhcrelay6']['server']; - } - $pconfig['agentoption'] = isset($config['dhcrelay6']['agentoption']); -} elseif ($_SERVER['REQUEST_METHOD'] === 'POST') { - $input_errors = array(); - $pconfig = $_POST; - - /* input validation */ - $reqdfields = explode(" ", "server interface"); - $reqdfieldsn = array(gettext("Destination Server"), gettext("Interface")); - - do_input_validation($pconfig, $reqdfields, $reqdfieldsn, $input_errors); - - if (!empty($pconfig['server'])) { - $checksrv = explode(",", $pconfig['server']); - foreach ($checksrv as $srv) { - if (!is_ipaddrv6($srv)) { - $input_errors[] = gettext("A valid Destination Server IPv6 address must be specified."); - } - } - } - - if (count($input_errors) == 0) { - $config['dhcrelay6']['enable'] = !empty($pconfig['enable']); - $config['dhcrelay6']['interface'] = implode(",", $pconfig['interface']); - $config['dhcrelay6']['agentoption'] = !empty($pconfig['agentoption']); - $config['dhcrelay6']['server'] = $pconfig['server']; - write_config(); - plugins_configure('dhcrelay', false, array('inet6')); - header(url_safe('Location: /services_dhcpv6_relay.php')); - exit; - } -} - -/* set the enabled flag which will tell us if DHCP server is enabled - * on any interface. We will use this to disable dhcp-relay since - * the two are not compatible with each other. - */ -$dhcpd_enabled = false; -if (is_array($config['dhcpdv6'])) { - foreach($config['dhcpdv6'] as $intf => $dhcp) { - if (isset($dhcp['enable']) && !empty($config['interfaces'][$intf]['enable'])) { - $dhcpd_enabled = true; - } - } -} - -$service_hook = 'dhcrelay6'; - -include("head.inc"); - -?> - - - - - -
-
-
- - 0) print_input_errors($input_errors); ?> - -
-
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - -
- - -
- /> - -
- - -
- /> - -
- " /> - -
- -
-
-
-
-
-
- -
-
-
-