Commit b9f42f82 authored by Ad Schellevis's avatar Ad Schellevis Committed by Franco Fichtner

(legacy) refactor services_dhcpv6_relay.php

(cherry picked from commit 719c1e92)
parent 1d6e6a93
<?php <?php
/* /*
Copyright (C) 2014-2015 Deciso B.V. Copyright (C) 2014-2016 Deciso B.V.
Copyright (C) 2003-2004 Justin Ellison <justin@techadvise.com>. Copyright (C) 2003-2004 Justin Ellison <justin@techadvise.com>.
Copyright (C) 2010 Ermal Luçi Copyright (C) 2010 Ermal Luçi
Copyright (C) 2010 Seth Mos Copyright (C) 2010 Seth Mos
...@@ -33,60 +33,62 @@ require_once("guiconfig.inc"); ...@@ -33,60 +33,62 @@ require_once("guiconfig.inc");
require_once("interfaces.inc"); require_once("interfaces.inc");
require_once("services.inc"); require_once("services.inc");
$pconfig['enable'] = isset($config['dhcrelay6']['enable']);
if (empty($config['dhcrelay6']['interface'])) if ($_SERVER['REQUEST_METHOD'] === 'GET') {
$pconfig['enable'] = isset($config['dhcrelay6']['enable']);
if (empty($config['dhcrelay6']['interface'])) {
$pconfig['interface'] = array(); $pconfig['interface'] = array();
else } else {
$pconfig['interface'] = explode(",", $config['dhcrelay6']['interface']); $pconfig['interface'] = explode(",", $config['dhcrelay6']['interface']);
$pconfig['server'] = $config['dhcrelay6']['server']; }
$pconfig['agentoption'] = isset($config['dhcrelay6']['agentoption']); if (empty($config['dhcrelay6']['server'])) {
$pconfig['server'] = "";
$iflist = get_configured_interface_with_descr(); } else {
$pconfig['server'] = $config['dhcrelay6']['server'];
/* 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 $pconfig['agentoption'] = isset($config['dhcrelay6']['agentoption']);
* the two are not compatible with each other. } elseif ($_SERVER['REQUEST_METHOD'] === 'POST') {
*/ $input_errors = array();
$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; $pconfig = $_POST;
/* input validation */ /* input validation */
if ($_POST['enable']) {
$reqdfields = explode(" ", "server interface"); $reqdfields = explode(" ", "server interface");
$reqdfieldsn = array(gettext("Destination Server"), gettext("Interface")); $reqdfieldsn = array(gettext("Destination Server"), gettext("Interface"));
do_input_validation($_POST, $reqdfields, $reqdfieldsn, $input_errors); do_input_validation($pconfig, $reqdfields, $reqdfieldsn, $input_errors);
if ($_POST['server']) { if (!empty($pconfig['server'])) {
$checksrv = explode(",", $_POST['server']); $checksrv = explode(",", $pconfig['server']);
foreach ($checksrv as $srv) { foreach ($checksrv as $srv) {
if (!is_ipaddrv6($srv)) if (!is_ipaddrv6($srv)) {
$input_errors[] = gettext("A valid Destination Server IPv6 address must be specified."); $input_errors[] = gettext("A valid Destination Server IPv6 address must be specified.");
} }
} }
} }
if (!$input_errors) { if (count($input_errors) == 0) {
$config['dhcrelay6']['enable'] = $_POST['enable'] ? true : false; $config['dhcrelay6']['enable'] = !empty($pconfig['enable']);
$config['dhcrelay6']['interface'] = implode(",", $_POST['interface']); $config['dhcrelay6']['interface'] = implode(",", $pconfig['interface']);
$config['dhcrelay6']['agentoption'] = $_POST['agentoption'] ? true : false; $config['dhcrelay6']['agentoption'] = !empty($pconfig['agentoption']);
$config['dhcrelay6']['server'] = $_POST['server']; $config['dhcrelay6']['server'] = $pconfig['server'];
write_config(); write_config();
// reconfigure
services_dhcrelay6_configure();
header("Location: services_dhcpv6_relay.php");
exit;
}
}
$retval = 0; /* set the enabled flag which will tell us if DHCP server is enabled
$retval = services_dhcrelay6_configure(); * on any interface. We will use this to disable dhcp-relay since
$savemsg = get_std_save_message(); * 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;
}
} }
} }
...@@ -98,111 +100,87 @@ include("head.inc"); ...@@ -98,111 +100,87 @@ include("head.inc");
<body> <body>
<script type="text/javascript">
//<![CDATA[
function enable_change(enable_over) {
if (document.iform.enable.checked || enable_over) {
document.iform.server.disabled = 0;
document.iform.interface.disabled = 0;
document.iform.agentoption.disabled = 0;
} else {
document.iform.server.disabled = 1;
document.iform.interface.disabled = 1;
document.iform.agentoption.disabled = 1;
}
}
//]]>
</script>
<?php include("fbegin.inc"); ?> <?php include("fbegin.inc"); ?>
<section class="page-content-main"> <section class="page-content-main">
<div class="container-fluid"> <div class="container-fluid">
<div class="row"> <div class="row">
<?php if (isset($input_errors) && count($input_errors) > 0) print_input_errors($input_errors); ?> <?php if (isset($input_errors) && count($input_errors) > 0) print_input_errors($input_errors); ?>
<?php if (isset($savemsg)) print_info_box($savemsg); ?> <?php if (isset($savemsg)) print_info_box($savemsg); ?>
<section class="col-xs-12"> <section class="col-xs-12">
<div class="content-box"> <div class="content-box">
<form method="post" name="iform" id="iform">
<form action="services_dhcpv6_relay.php" method="post" name="iform" id="iform">
<?php if ($dhcpd_enabled): ?> <?php if ($dhcpd_enabled): ?>
<p><?= gettext('DHCPv6 Server is currently enabled. Cannot enable the DHCPv6 Relay service while the DHCPv6 Server is enabled on any interface.') ?></p> <p><?= gettext('DHCPv6 Server is currently enabled. Cannot enable the DHCPv6 Relay service while the DHCPv6 Server is enabled on any interface.') ?></p>
<?php else: ?> <?php else: ?>
<header class="content-box-head container-fluid"> <header class="content-box-head container-fluid">
<h3><?=gettext("DHCPv6 Relay configuration"); ?></h3> <h3><?=gettext("DHCPv6 Relay configuration"); ?></h3>
</header> </header>
<div class="content-box-main "> <div class="content-box-main ">
<div class="table-responsive"> <div class="table-responsive">
<table class="table table-striped table-sort"> <table class="table table-striped">
<tr> <tr>
<td width="22%" valign="top" class="vncellreq"><?= gettext('Enable') ?></td> <td width="22%"><i class="fa fa-info-circle text-muted"></i> <?= gettext('Enable') ?></td>
<td width="78%" class="vtable"> <td width="78%">
<input name="enable" type="checkbox" value="yes" <?php if ($pconfig['enable']) echo "checked=\"checked\""; ?> onclick="enable_change(false)" /> <input name="enable" type="checkbox" value="yes" <?=!empty($pconfig['enable']) ? "checked=\"checked\"" : ""; ?>/>
<strong><?php printf(gettext("Enable DHCPv6 relay on interface"));?></strong> <strong><?=gettext("Enable DHCPv6 relay on interface");?></strong>
</td> </td>
</tr> </tr>
<tr> <tr>
<td width="22%" valign="top" class="vncellreq"><?= gettext('Interface(s)') ?></td> <td><a id="help_for_interface" href="#" class="showhelp"><i class="fa fa-info-circle"></i></a> <?= gettext('Interface(s)') ?></td>
<td width="78%" class="vtable"> <td>
<select id="interface" name="interface[]" multiple="multiple" class="formselect" size="3"> <select name="interface[]" multiple="multiple" class="selectpicker">
<?php <?php
foreach ($iflist as $ifent => $ifdesc) { $iflist = get_configured_interface_with_descr();
if (!is_ipaddrv6(get_interface_ipv6($ifent))) foreach ($iflist as $ifent => $ifdesc):
if (!is_ipaddrv6(get_interface_ipv6($ifent))) {
continue; continue;
echo "<option value=\"{$ifent}\""; }?>
if (!empty($pconfig['interface']) && in_array($ifent, $pconfig['interface']))
echo " selected=\"selected\""; <option value="<?=$ifent;?>" <?=!empty($pconfig['interface']) && in_array($ifent, $pconfig['interface']) ? " selected=\"selected\"" : "";?> >
echo ">{$ifdesc}</option>\n"; <?=$ifdesc;?>
} </option>
?> <?php
endforeach;?>
</select> </select>
<br /><?=gettext("Interfaces without an IPv6 address will not be shown."); ?> <div class="hidden" for="help_for_interface">
<?=gettext("Interfaces without an IPv6 address will not be shown."); ?>
</div>
</td> </td>
</tr> </tr>
<tr> <tr>
<td width="22%" valign="top" class="vtable">&nbsp;</td> <td><a id="help_for_agentoption" href="#" class="showhelp"><i class="fa fa-info-circle"></i></a> <?=gettext("Append circuit ID");?></td>
<td width="78%" class="vtable"> <td>
<input name="agentoption" type="checkbox" value="yes" <?php if ($pconfig['agentoption']) echo "checked=\"checked\""; ?> /> <input name="agentoption" type="checkbox" value="yes" <?=!empty($pconfig['agentoption']) ? "checked=\"checked\"" : ""; ?> />
<strong><?=gettext("Append circuit ID and agent ID to requests"); ?></strong><br /> <div class="hidden" for="help_for_agentoption">
<?php printf(gettext("If this is checked, the DHCPv6 relay will append the circuit ID (%s interface number) and the agent ID to the DHCPv6 request."), $g['product_name']); ?></td> <?php printf(gettext("If this is checked, the DHCPv6 relay will append the circuit ID (%s interface number) and the agent ID to the DHCPv6 request."), $g['product_name']); ?>
</div>
</td>
</tr> </tr>
<tr> <tr>
<td width="22%" valign="top" class="vncell"><?=gettext("Destination server");?></td> <td><a id="help_for_server" href="#" class="showhelp"><i class="fa fa-info-circle"></i></a> <?=gettext("Destination server");?></td>
<td width="78%" class="vtable"> <td>
<input name="server" type="text" class="formfld unknown" id="server" size="20" value="<?=htmlspecialchars($pconfig['server']);?>" /> <input name="server" type="text" value="<?=!empty($pconfig['server']) ? htmlspecialchars($pconfig['server']):"";?>" />
<br /> <div class="hidden" for="help_for_server">
<?=gettext("This is the IPv6 address of the server to which DHCPv6 requests are relayed. You can enter multiple server IPv6 addresses, separated by commas. ");?> <?=gettext("This is the IPv6 address of the server to which DHCPv6 requests are relayed. You can enter multiple server IPv6 addresses, separated by commas. ");?>
</div>
</td> </td>
</tr> </tr>
<tr> <tr>
<td width="22%" valign="top">&nbsp;</td> <td></td>
<td width="78%"> <td>
<input name="Submit" type="submit" class="btn btn-primary" value="<?=gettext("Save");?>" onclick="enable_change(true)" /> <input name="Submit" type="submit" class="btn btn-primary" value="<?=gettext("Save");?>" />
</td> </td>
</tr> </tr>
</table> </table>
</div> </div>
</div> </div>
<?php endif; ?> <?php
endif; ?>
</form> </form>
</div> </div>
</section> </section>
</div> </div>
</div> </div>
</section> </section>
<script type="text/javascript">
//<![CDATA[
enable_change(false);
//]]>
</script>
<?php include("foot.inc"); ?> <?php include("foot.inc"); ?>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment