Commit 6047a107 authored by Ad Schellevis's avatar Ad Schellevis Committed by Franco Fichtner

(legacy) refactor services_rfc2136_edit.php

(cherry picked from commit 5bc1fdfa)
parent 2cb1c4bd
<?php
/*
Copyright (C) 2014-2015 Deciso B.V.
Copyright (C) 2014-2016 Deciso B.V.
Copyright (C) 2008 Ermal Luçi
All rights reserved.
......@@ -35,210 +35,217 @@ require_once("pfsense-utils.inc");
if (!isset($config['dnsupdates']['dnsupdate'])) {
$config['dnsupdates']['dnsupdate'] = array();
}
$a_rfc2136 = &$config['dnsupdates']['dnsupdate'];
if (is_numericint($_GET['id']))
if ($_SERVER['REQUEST_METHOD'] === 'GET') {
if (isset($_GET['id']) && !empty($a_rfc2136[$_GET['id']])) {
$id = $_GET['id'];
if (isset($_POST['id']) && is_numericint($_POST['id']))
$id = $_POST['id'];
}
if (isset($id) && isset($a_rfc2136[$id])) {
if (isset($id)) {
$pconfig['enable'] = isset($a_rfc2136[$id]['enable']);
$pconfig['host'] = $a_rfc2136[$id]['host'];
$pconfig['ttl'] = $a_rfc2136[$id]['ttl'];
if (!$pconfig['ttl'])
$pconfig['ttl'] = 60;
$pconfig['keydata'] = $a_rfc2136[$id]['keydata'];
$pconfig['keyname'] = $a_rfc2136[$id]['keyname'];
$pconfig['keytype'] = $a_rfc2136[$id]['keytype'];
if (!$pconfig['keytype'])
$pconfig['keytype'] = "zone";
$pconfig['server'] = $a_rfc2136[$id]['server'];
$pconfig['interface'] = $a_rfc2136[$id]['interface'];
} else {
$pconfig['enable'] = true;
}
$pconfig['host'] = isset($id) && !empty($a_rfc2136[$id]['host']) ? $a_rfc2136[$id]['host'] : null;
$pconfig['ttl'] = isset($id) &&!empty($a_rfc2136[$id]['ttl']) ? $a_rfc2136[$id]['ttl'] : 60;
$pconfig['keydata'] = isset($id) &&!empty($a_rfc2136[$id]['keydata']) ? $a_rfc2136[$id]['keydata'] : null;
$pconfig['keyname'] = isset($id) &&!empty($a_rfc2136[$id]['keyname']) ? $a_rfc2136[$id]['keyname'] : null;
$pconfig['keytype'] = isset($id) &&!empty($a_rfc2136[$id]['keytype']) ? $a_rfc2136[$id]['keytype'] : "zone";
$pconfig['server'] = isset($id) &&!empty($a_rfc2136[$id]['server']) ? $a_rfc2136[$id]['server'] : null;
$pconfig['interface'] = isset($id) &&!empty($a_rfc2136[$id]['interface']) ? $a_rfc2136[$id]['interface'] : null;
$pconfig['descr'] = isset($id) &&!empty($a_rfc2136[$id]['descr']) ? $a_rfc2136[$id]['descr'] : null;
$pconfig['usetcp'] = isset($a_rfc2136[$id]['usetcp']);
$pconfig['usepublicip'] = isset($a_rfc2136[$id]['usepublicip']);
$pconfig['descr'] = $a_rfc2136[$id]['descr'];
}
if ($_POST) {
unset($input_errors);
} elseif ($_SERVER['REQUEST_METHOD'] === 'POST') {
if (isset($_POST['id']) && !empty($a_rfc2136[$_POST['id']])) {
$id = $_POST['id'];
}
$input_errors = array();
$pconfig = $_POST;
/* input validation */
$reqdfields = array();
$reqdfieldsn = array();
$reqdfields = array_merge($reqdfields, explode(" ", "host ttl keyname keydata"));
$reqdfieldsn = array_merge($reqdfieldsn, array(gettext("Hostname"), gettext("TTL"), gettext("Key name"), gettext("Key")));
do_input_validation($_POST, $reqdfields, $reqdfieldsn, $input_errors);
do_input_validation($pconfig, $reqdfields, $reqdfieldsn, $input_errors);
if (($_POST['host'] && !is_domain($_POST['host'])))
if (!empty($pconfig['host']) && !is_domain($pconfig['host'])) {
$input_errors[] = gettext("The DNS update host name contains invalid characters.");
if (($_POST['ttl'] && !is_numericint($_POST['ttl'])))
}
if (!empty($pconfig['ttl']) && !is_numericint($pconfig['ttl'])) {
$input_errors[] = gettext("The DNS update TTL must be an integer.");
if (($_POST['keyname'] && !is_domain($_POST['keyname'])))
}
if (!empty($pconfig['keyname']) && !is_domain($pconfig['keyname'])) {
$input_errors[] = gettext("The DNS update key name contains invalid characters.");
}
if (!$input_errors) {
if (count($input_errors) == 0) {
$rfc2136 = array();
$rfc2136['enable'] = $_POST['enable'] ? true : false;
$rfc2136['host'] = $_POST['host'];
$rfc2136['ttl'] = $_POST['ttl'];
$rfc2136['keyname'] = $_POST['keyname'];
$rfc2136['keytype'] = $_POST['keytype'];
$rfc2136['keydata'] = $_POST['keydata'];
$rfc2136['server'] = $_POST['server'];
$rfc2136['usetcp'] = $_POST['usetcp'] ? true : false;
$rfc2136['usepublicip'] = $_POST['usepublicip'] ? true : false;
$rfc2136['interface'] = $_POST['interface'];
$rfc2136['descr'] = $_POST['descr'];
if (isset($id) && $a_rfc2136[$id])
$rfc2136['enable'] = !empty($pconfig['enable']);
$rfc2136['host'] = $pconfig['host'];
$rfc2136['ttl'] = $pconfig['ttl'];
$rfc2136['keyname'] = $pconfig['keyname'];
$rfc2136['keytype'] = $pconfig['keytype'];
$rfc2136['keydata'] = $pconfig['keydata'];
$rfc2136['server'] = $pconfig['server'];
$rfc2136['usetcp'] = !empty($pconfig['usetcp']);
$rfc2136['usepublicip'] = !empty($pconfig['usepublicip']);
$rfc2136['interface'] = $pconfig['interface'];
$rfc2136['descr'] = $pconfig['descr'];
if (isset($id)) {
$a_rfc2136[$id] = $rfc2136;
else
} else {
$a_rfc2136[] = $rfc2136;
}
write_config(gettext("New/Edited RFC2136 dnsupdate entry was posted."));
if ($_POST['Submit'] == gettext("Save & Force Update"))
$retval = services_dnsupdate_process("", $rfc2136['host'], true);
else
$retval = services_dnsupdate_process();
if (!empty($pconfig['force'])) {
services_dnsupdate_process("", $rfc2136['host'], true);
} else {
services_dnsupdate_process();
}
header("Location: services_rfc2136.php");
exit;
}
}
include("head.inc");
?>
legacy_html_escape_form_data($pconfig);
include("head.inc");
?>
<body>
<?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_rfc2136_edit.php" method="post" name="iform" id="iform">
<form method="post" name="iform" id="iform">
<div class="table-responsive">
<table class="table table-striped table-sort">
<table class="table table-striped">
<tr>
<td colspan="2" valign="top" class="optsect_t">
<table border="0" cellspacing="0" cellpadding="0" width="100%" summary="title">
<tr><td class="optsect_s"><strong><?=gettext("RFC 2136 client");?></strong></td></tr>
</table>
<td width="22%"><strong><?=gettext("RFC 2136 client");?></strong></td>
<td width="78%" align="right">
<small><?=gettext("full help"); ?> </small>
<i class="fa fa-toggle-off text-danger" style="cursor: pointer;" id="show_all_help_page" type="button"></i></a>
</td>
</tr>
<tr>
<td width="22%" valign="top" class="vncellreq"><?=gettext("Enable");?></td>
<td width="78%" class="vtable">
<input name="enable" type="checkbox" id="enable" value="yes" <?php if ($pconfig['enable']) echo "checked=\"checked\""; ?> />
<td><i class="fa fa-info-circle text-muted"></i> <?=gettext("Enable");?></td>
<td>
<input name="enable" type="checkbox" id="enable" value="yes" <?=!empty($pconfig['enable']) ? "checked=\"checked\"" : ""; ?> />
</td>
</tr>
<tr>
<td width="22%" valign="top" class="vncellreq"><?=gettext("Interface to monitor");?></td>
<td width="78%" class="vtable">
<select name="interface" class="formselect" id="interface">
<?php $iflist = get_configured_interface_with_descr();
foreach ($iflist as $if => $ifdesc):?>
<option value="<?=$if;?>" <?php if ($pconfig['interface'] == $if) echo "selected=\"selected\"";?>><?=$ifdesc;?></option>
<?php endforeach; ?>
<td><i class="fa fa-info-circle text-muted"></i> <?=gettext("Interface to monitor");?></td>
<td>
<select name="interface" class="selectpicker" id="requestif">
<?php
foreach (get_configured_interface_with_descr() as $if => $ifdesc):?>
<option value="<?=$if;?>" <?=$pconfig['interface'] == $if ? "selected=\"selected\"" : "";?>>
<?=htmlspecialchars($ifdesc);?>
</option>
<?php
endforeach;?>
</select>
</td>
</tr>
<tr>
<td width="22%" valign="top" class="vncellreq"><?=gettext("Hostname");?></td>
<td width="78%" class="vtable">
<input name="host" type="text" class="formfld unknown" id="host" size="30" value="<?=htmlspecialchars($pconfig['host']);?>" />
<br /><span><?= gettext('Fully qualified hostname of the host to be updated.') ?></span>
<td><a id="help_for_host" href="#" class="showhelp"><i class="fa fa-info-circle"></i></a> <?=gettext("Hostname");?></td>
<td>
<input name="host" type="text" id="host" value="<?=$pconfig['host'];?>" />
<div class="hidden" for="help_for_host">
<?= gettext('Fully qualified hostname of the host to be updated.') ?>
</div>
</td>
</tr>
<tr>
<td valign="top" class="vncellreq"><?=gettext("TTL"); ?></td>
<td class="vtable">
<input name="ttl" type="text" class="formfld unknown" id="ttl" size="6" value="<?=htmlspecialchars($pconfig['ttl']);?>" />
<?=gettext("seconds");?></td>
<td><i class="fa fa-info-circle text-muted"></i> <?=gettext("TTL"); ?> (<?=gettext("seconds");?>)</td>
<td>
<input name="ttl" type="text" id="ttl" value="<?=$pconfig['ttl'];?>" />
</td>
</tr>
<tr>
<td valign="top" class="vncellreq"><?=gettext("Key name");?></td>
<td class="vtable">
<input name="keyname" type="text" class="formfld unknown" id="keyname" size="30" value="<?=htmlspecialchars($pconfig['keyname']);?>" />
<br />
<?=gettext("This must match the setting on the DNS server.");?></td>
<td><a id="help_for_keyname" href="#" class="showhelp"><i class="fa fa-info-circle"></i></a> <?=gettext("Key name");?></td>
<td>
<input name="keyname" type="text" id="keyname" value="<?=$pconfig['keyname'];?>" />
<div class="hidden" for="help_for_keyname">
<?=gettext("This must match the setting on the DNS server.");?>
</div>
</td>
</tr>
<tr>
<td valign="top" class="vncellreq"><?=gettext("Key type");?> </td>
<td class="vtable">
<input name="keytype" type="radio" value="zone" <?php if ($pconfig['keytype'] == "zone") echo "checked=\"checked\""; ?> /> <?=gettext("Zone");?> &nbsp;
<input name="keytype" type="radio" value="host" <?php if ($pconfig['keytype'] == "host") echo "checked=\"checked\""; ?> /> <?=gettext("Host");?> &nbsp;
<input name="keytype" type="radio" value="user" <?php if ($pconfig['keytype'] == "user") echo "checked=\"checked\""; ?> /><?=gettext(" User");?>
<td><i class="fa fa-info-circle text-muted"></i> <?=gettext("Key type");?> </td>
<td>
<input name="keytype" type="radio" value="zone" <?= $pconfig['keytype'] == "zone" ? "checked=\"checked\"" :""; ?> /> <?=gettext("Zone");?> &nbsp;
<input name="keytype" type="radio" value="host" <?= $pconfig['keytype'] == "host" ? "checked=\"checked\"" :""; ?> /> <?=gettext("Host");?> &nbsp;
<input name="keytype" type="radio" value="user" <?= $pconfig['keytype'] == "user" ? "checked=\"checked\"" :""; ?> /> <?=gettext(" User");?>
</td>
</tr>
<tr>
<td valign="top" class="vncellreq"><?=gettext("Key");?></td>
<td class="vtable">
<input name="keydata" type="text" class="formfld unknown" id="keydata" size="70" value="<?=htmlspecialchars($pconfig['keydata']);?>" />
<br />
<?=gettext("Paste an HMAC-MD5 key here.");?></td>
<td><a id="help_for_keydata" href="#" class="showhelp"><i class="fa fa-info-circle"></i></a> <?=gettext("Key");?></td>
<td>
<input name="keydata" type="text" id="keydata" size="70" value="<?=htmlspecialchars($pconfig['keydata']);?>" />
<div class="hidden" for="help_for_keydata">
<?=gettext("Paste an HMAC-MD5 key here.");?>
</div>
</td>
</tr>
<tr>
<td width="22%" valign="top" class="vncellreq"><?=gettext("Server");?></td>
<td width="78%" class="vtable">
<input name="server" type="text" class="formfld" id="server" size="30" value="<?=htmlspecialchars($pconfig['server'])?>" />
<td><i class="fa fa-info-circle text-muted"></i> <?=gettext("Server");?></td>
<td>
<input name="server" type="text" class="formfld" id="server" size="30" value="<?=$pconfig['server'];?>" />
</td>
</tr>
<tr>
<td width="22%" valign="top" class="vncellreq"><?=gettext("Protocol");?></td>
<td width="78%" class="vtable">
<input name="usetcp" type="checkbox" id="usetcp" value="<?=gettext("yes");?>" <?php if ($pconfig['usetcp']) echo "checked=\"checked\""; ?> />
<strong><?=gettext("Use TCP instead of UDP");?></strong></td>
<td><i class="fa fa-info-circle text-muted"></i> <?=gettext("Protocol");?></td>
<td>
<input name="usetcp" type="checkbox" id="usetcp" value="<?=gettext("yes");?>" <?=!empty($pconfig['usetcp']) ? "checked=\"checked\"" : ""; ?> />
<strong><?=gettext("Use TCP instead of UDP");?></strong>
</td>
</tr>
<tr>
<td width="22%" valign="top" class="vncellreq"><?=gettext("Use Public IP");?></td>
<td width="78%" class="vtable">
<input name="usepublicip" type="checkbox" id="usepublicip" value="<?=gettext("yes");?>" <?php if ($pconfig['usepublicip']) echo "checked=\"checked\""; ?> />
<td><i class="fa fa-info-circle text-muted"></i> <?=gettext("Use Public IP");?></td>
<td>
<input name="usepublicip" type="checkbox" id="usepublicip" value="<?=gettext("yes");?>" <?=!empty($pconfig['usepublicip']) ? "checked=\"checked\"" : ""; ?> />
<strong><?=gettext("If the interface IP is private, attempt to fetch and use the public IP instead.");?></strong>
</td>
</tr>
<tr>
<td width="22%" valign="top" class="vncellreq"><?=gettext("Description");?></td>
<td width="78%" class="vtable">
<input name="descr" type="text" class="formfld unknown" id="descr" size="60" value="<?=htmlspecialchars($pconfig['descr']);?>" />
<td><?=gettext("Description");?></td>
<td>
<input name="descr" type="text" id="descr" value="<?=$pconfig['descr'];?>" />
</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>&nbsp;</td>
<td>
<input name="save" type="submit" class="btn btn-primary" value="<?=gettext("Save");?>" onclick="enable_change(true)" />
<a href="services_rfc2136.php"><input name="Cancel" type="button" class="btn btn-default" value="<?=gettext("Cancel");?>" /></a>
<input name="Submit" type="submit" class="btn btn-default" value="<?=gettext("Save &amp; Force Update");?>" onclick="enable_change(true)" />
<?php if (isset($id) && $a_rfc2136[$id]): ?>
<input name="id" type="hidden" value="<?=htmlspecialchars($id);?>" />
<input name="force" type="submit" class="btn btn-default" value="<?=gettext("Save &amp; Force Update");?>" onclick="enable_change(true)" />
<?php if (isset($id)): ?>
<input name="id" type="hidden" value="<?=$id;?>" />
<?php endif; ?>
</td>
</tr>
<tr>
<td width="22%" valign="top">&nbsp;</td>
<td width="78%"><span class="vexpl"><span class="red"><strong><?=gettext("Note:");?><br />
<td>&nbsp;</td>
<td>
<span class="text-danger"><strong><?=gettext("Note:");?><br />
</strong></span><?php printf(gettext("You must configure a DNS server in %sSystem: " .
"General setup %sor allow the DNS server list to be overridden " .
"by DHCP/PPP on WAN for dynamic DNS updates to work."),'<a href="system_general.php">', '</a>');?></span></td>
"by DHCP/PPP on WAN for dynamic DNS updates to work."),'<a href="system_general.php">', '</a>');?>
</td>
</tr>
</table>
</div>
......@@ -248,5 +255,4 @@ include("head.inc");
</div>
</div>
</section>
<?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