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
/*
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) 2010 Ermal Luçi
Copyright (C) 2010 Seth Mos
......@@ -33,60 +33,62 @@ require_once("guiconfig.inc");
require_once("interfaces.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();
else
} 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);
}
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 */
if ($_POST['enable']) {
$reqdfields = explode(" ", "server 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']) {
$checksrv = explode(",", $_POST['server']);
if (!empty($pconfig['server'])) {
$checksrv = explode(",", $pconfig['server']);
foreach ($checksrv as $srv) {
if (!is_ipaddrv6($srv))
if (!is_ipaddrv6($srv)) {
$input_errors[] = gettext("A valid Destination Server IPv6 address must be specified.");
}
}
}
if (!$input_errors) {
$config['dhcrelay6']['enable'] = $_POST['enable'] ? true : false;
$config['dhcrelay6']['interface'] = implode(",", $_POST['interface']);
$config['dhcrelay6']['agentoption'] = $_POST['agentoption'] ? true : false;
$config['dhcrelay6']['server'] = $_POST['server'];
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();
// reconfigure
services_dhcrelay6_configure();
header("Location: services_dhcpv6_relay.php");
exit;
}
}
$retval = 0;
$retval = services_dhcrelay6_configure();
$savemsg = get_std_save_message();
/* 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;
}
}
}
......@@ -98,111 +100,87 @@ include("head.inc");
<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"); ?>
<section class="page-content-main">
<div class="container-fluid">
<div class="row">
<?php if (isset($input_errors) && count($input_errors) > 0) print_input_errors($input_errors); ?>
<?php if (isset($savemsg)) print_info_box($savemsg); ?>
<section class="col-xs-12">
<div class="content-box">
<form action="services_dhcpv6_relay.php" method="post" name="iform" id="iform">
<form method="post" name="iform" id="iform">
<?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>
<?php else: ?>
<header class="content-box-head container-fluid">
<h3><?=gettext("DHCPv6 Relay configuration"); ?></h3>
</header>
<div class="content-box-main ">
<div class="table-responsive">
<table class="table table-striped table-sort">
<table class="table table-striped">
<tr>
<td width="22%" valign="top" class="vncellreq"><?= gettext('Enable') ?></td>
<td width="78%" class="vtable">
<input name="enable" type="checkbox" value="yes" <?php if ($pconfig['enable']) echo "checked=\"checked\""; ?> onclick="enable_change(false)" />
<strong><?php printf(gettext("Enable DHCPv6 relay on interface"));?></strong>
<td width="22%"><i class="fa fa-info-circle text-muted"></i> <?= gettext('Enable') ?></td>
<td width="78%">
<input name="enable" type="checkbox" value="yes" <?=!empty($pconfig['enable']) ? "checked=\"checked\"" : ""; ?>/>
<strong><?=gettext("Enable DHCPv6 relay on interface");?></strong>
</td>
</tr>
<tr>
<td width="22%" valign="top" class="vncellreq"><?= gettext('Interface(s)') ?></td>
<td width="78%" class="vtable">
<select id="interface" name="interface[]" multiple="multiple" class="formselect" size="3">
<?php
foreach ($iflist as $ifent => $ifdesc) {
if (!is_ipaddrv6(get_interface_ipv6($ifent)))
<td><a id="help_for_interface" href="#" class="showhelp"><i class="fa fa-info-circle"></i></a> <?= gettext('Interface(s)') ?></td>
<td>
<select name="interface[]" multiple="multiple" class="selectpicker">
<?php
$iflist = get_configured_interface_with_descr();
foreach ($iflist as $ifent => $ifdesc):
if (!is_ipaddrv6(get_interface_ipv6($ifent))) {
continue;
echo "<option value=\"{$ifent}\"";
if (!empty($pconfig['interface']) && in_array($ifent, $pconfig['interface']))
echo " selected=\"selected\"";
echo ">{$ifdesc}</option>\n";
}
?>
}?>
<option value="<?=$ifent;?>" <?=!empty($pconfig['interface']) && in_array($ifent, $pconfig['interface']) ? " selected=\"selected\"" : "";?> >
<?=$ifdesc;?>
</option>
<?php
endforeach;?>
</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>
</tr>
<tr>
<td width="22%" valign="top" class="vtable">&nbsp;</td>
<td width="78%" class="vtable">
<input name="agentoption" type="checkbox" value="yes" <?php if ($pconfig['agentoption']) echo "checked=\"checked\""; ?> />
<strong><?=gettext("Append circuit ID and agent ID to requests"); ?></strong><br />
<?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>
<td><a id="help_for_agentoption" href="#" class="showhelp"><i class="fa fa-info-circle"></i></a> <?=gettext("Append circuit ID");?></td>
<td>
<input name="agentoption" type="checkbox" value="yes" <?=!empty($pconfig['agentoption']) ? "checked=\"checked\"" : ""; ?> />
<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']); ?>
</div>
</td>
</tr>
<tr>
<td width="22%" valign="top" class="vncell"><?=gettext("Destination server");?></td>
<td width="78%" class="vtable">
<input name="server" type="text" class="formfld unknown" id="server" size="20" value="<?=htmlspecialchars($pconfig['server']);?>" />
<br />
<td><a id="help_for_server" href="#" class="showhelp"><i class="fa fa-info-circle"></i></a> <?=gettext("Destination server");?></td>
<td>
<input name="server" type="text" value="<?=!empty($pconfig['server']) ? htmlspecialchars($pconfig['server']):"";?>" />
<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. ");?>
</div>
</td>
</tr>
<tr>
<td width="22%" valign="top">&nbsp;</td>
<td width="78%">
<input name="Submit" type="submit" class="btn btn-primary" value="<?=gettext("Save");?>" onclick="enable_change(true)" />
<td></td>
<td>
<input name="Submit" type="submit" class="btn btn-primary" value="<?=gettext("Save");?>" />
</td>
</tr>
</table>
</div>
</div>
<?php endif; ?>
<?php
endif; ?>
</form>
</div>
</section>
</div>
</div>
</section>
<script type="text/javascript">
//<![CDATA[
enable_change(false);
//]]>
</script>
<?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