From 1eca1a2fe86653b13ff3e57eb752d08633056ced Mon Sep 17 00:00:00 2001 From: Seth Mos Date: Mon, 29 Aug 2011 10:33:34 +0200 Subject: Add DHCPv6 relay pages for the DHCPv6 relay. Ticket #1663 --- usr/local/www/services_dhcpv6_relay.php | 206 ++++++++++++++++++++++++++++++++ 1 file changed, 206 insertions(+) create mode 100644 usr/local/www/services_dhcpv6_relay.php (limited to 'usr/local/www/services_dhcpv6_relay.php') diff --git a/usr/local/www/services_dhcpv6_relay.php b/usr/local/www/services_dhcpv6_relay.php new file mode 100644 index 0000000..753ff96 --- /dev/null +++ b/usr/local/www/services_dhcpv6_relay.php @@ -0,0 +1,206 @@ +. + 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. +*/ +/* + pfSense_MODULE: dhcpv6relay +*/ + +##|+PRIV +##|*IDENT=page-services-dhcpv6relay +##|*NAME=Services: DHCPv6 Relay page +##|*DESCR=Allow access to the 'Services: DHCPv6 Relay' page. +##|*MATCH=services_dhcpv6_relay.php* +##|-PRIV + +require("guiconfig.inc"); + +$pconfig['enable'] = isset($config['dhcrelay6']['enable']); +if (empty($config['dhcrelay6']['interface'])) + $pconfig['interface'] = array(); +else + $pconfig['interface'] = explode(",", $config['dhcrelay6']['interface']); +$pconfig['server'] = $config['dhcrelay6']['server']; +$pconfig['agentoption'] = isset($config['dhcrelay6']['agentoption']); + +$iflist = get_configured_interface_with_descr(); + +/* 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 $dhcp) + if (isset($dhcp['enable'])) + $dhcpd_enabled = true; +} + +if ($_POST) { + + unset($input_errors); + $pconfig = $_POST; + + /* input validation */ + if ($_POST['enable']) { + $reqdfields = explode(" ", "server interface"); + $reqdfieldsn = array(gettext("Destination Server"), gettext("Interface")); + + do_input_validation($_POST, $reqdfields, $reqdfieldsn, &$input_errors); + + if ($_POST['server']) { + $checksrv = explode(",", $_POST['server']); + foreach ($checksrv as $srv) { + if (!is_ipaddrv6($srv)) + $input_errors[] = gettext("A valid Destination Server IPv6 address must be specified."); + } + } + } + + if (!$input_errors) { + $config['dhcrelay']['enable'] = $_POST['enable'] ? true : false; + $config['dhcrelay']['interface'] = implode(",", $_POST['interface']); + $config['dhcrelay']['agentoption'] = $_POST['agentoption'] ? true : false; + $config['dhcrelay']['server'] = $_POST['server']; + + write_config(); + + $retval = 0; + $retval = services_dhcrelay6_configure(); + $savemsg = get_std_save_message($retval); + + } +} + +$pgtitle = array(gettext("Services"),gettext("DHCPv6 Relay")); +include("head.inc"); + +?> + + + + + + +
+ + + + + +
+
+ + +DHCPv6 Server is currently enabled. Cannot enable the DHCPv6 Relay service while the DHCPv6 Server is enabled on any interface."; + echo "
"; + echo ""; + include("fend.inc"); + exit; + } +?> + + + + + Enable + + onClick="enable_change(false)"> + + + + + Interface(s) + + +
+ + + +   + +> +
+ + + + + + +
+ + + + +   + + " onclick="enable_change(true)"> + + + + + + + +
+ + + + -- cgit v1.1