summaryrefslogtreecommitdiffstats
path: root/usr/local/www/services_dyndns.php
diff options
context:
space:
mode:
authorScott Ullrich <sullrich@pfsense.org>2004-12-05 19:31:44 +0000
committerScott Ullrich <sullrich@pfsense.org>2004-12-05 19:31:44 +0000
commit07bd3f83b401d8e9e9de3938e0a26c6e452660af (patch)
tree7f6913b347dc994dc57fa524f85a5436ff151f54 /usr/local/www/services_dyndns.php
parent2ed803e736d9256aafae7a29ae0bb84aaf746c5f (diff)
downloadpfsense-07bd3f83b401d8e9e9de3938e0a26c6e452660af.zip
pfsense-07bd3f83b401d8e9e9de3938e0a26c6e452660af.tar.gz
Synchornize with m0n0wall 1.2b3. These files have not really been
modified too much so a straight copy works. 9 files remain to be patched by hand.
Diffstat (limited to 'usr/local/www/services_dyndns.php')
-rwxr-xr-xusr/local/www/services_dyndns.php146
1 files changed, 120 insertions, 26 deletions
diff --git a/usr/local/www/services_dyndns.php b/usr/local/www/services_dyndns.php
index e4864e6..20cdefd 100755
--- a/usr/local/www/services_dyndns.php
+++ b/usr/local/www/services_dyndns.php
@@ -31,6 +31,10 @@
require("guiconfig.inc");
+if (!is_array($config['dnsupdate'])) {
+ $config['dnsupdate'] = array();
+}
+
$pconfig['username'] = $config['dyndns']['username'];
$pconfig['password'] = $config['dyndns']['password'];
$pconfig['host'] = $config['dyndns']['host'];
@@ -39,18 +43,35 @@ $pconfig['type'] = $config['dyndns']['type'];
$pconfig['enable'] = isset($config['dyndns']['enable']);
$pconfig['wildcard'] = isset($config['dyndns']['wildcard']);
+$pconfig['dnsupdate_enable'] = isset($config['dnsupdate']['enable']);
+$pconfig['dnsupdate_host'] = $config['dnsupdate']['host'];
+$pconfig['dnsupdate_ttl'] = $config['dnsupdate']['ttl'];
+if (!$pconfig['dnsupdate_ttl'])
+ $pconfig['dnsupdate_ttl'] = 60;
+$pconfig['dnsupdate_keydata'] = $config['dnsupdate']['keydata'];
+$pconfig['dnsupdate_keyname'] = $config['dnsupdate']['keyname'];
+$pconfig['dnsupdate_keytype'] = $config['dnsupdate']['keytype'];
+if (!$pconfig['dnsupdate_keytype'])
+ $pconfig['dnsupdate_keytype'] = "zone";
+$pconfig['dnsupdate_usetcp'] = isset($config['dnsupdate']['usetcp']);
+
if ($_POST) {
unset($input_errors);
$pconfig = $_POST;
/* input validation */
+ $reqdfields = array();
+ $reqdfieldsn = array();
if ($_POST['enable']) {
- $reqdfields = explode(" ", "host username password type");
- $reqdfieldsn = explode(",", "Hostname,Username,Password,Service type");
-
- do_input_validation($_POST, $reqdfields, $reqdfieldsn, &$input_errors);
+ $reqdfields = array_merge($reqdfields, explode(" ", "host username password type"));
+ $reqdfieldsn = array_merge($reqdfieldsn, explode(",", "Hostname,Username,Password,Service type"));
}
+ if ($_POST['dnsupdate_enable']) {
+ $reqdfields = array_merge($reqdfields, explode(" ", "dnsupdate_host dnsupdate_ttl dnsupdate_keyname dnsupdate_keydata"));
+ $reqdfieldsn = array_merge($reqdfieldsn, explode(",", "Hostname,TTL,Key name,Key"));
+ }
+ do_input_validation($_POST, $reqdfields, $reqdfieldsn, &$input_errors);
if (($_POST['host'] && !is_domain($_POST['host']))) {
$input_errors[] = "The host name contains invalid characters.";
@@ -61,6 +82,16 @@ if ($_POST) {
if (($_POST['username'] && !is_dyndns_username($_POST['username']))) {
$input_errors[] = "The username contains invalid characters.";
}
+
+ if (($_POST['dnsupdate_host'] && !is_domain($_POST['dnsupdate_host']))) {
+ $input_errors[] = "The DNS update host name contains invalid characters.";
+ }
+ if (($_POST['dnsupdate_ttl'] && !is_numericint($_POST['dnsupdate_ttl']))) {
+ $input_errors[] = "The DNS update TTL must be an integer.";
+ }
+ if (($_POST['dnsupdate_keyname'] && !is_domain($_POST['dnsupdate_keyname']))) {
+ $input_errors[] = "The DNS update key name contains invalid characters.";
+ }
if (!$input_errors) {
$config['dyndns']['type'] = $_POST['type'];
@@ -70,6 +101,14 @@ if ($_POST) {
$config['dyndns']['mx'] = $_POST['mx'];
$config['dyndns']['wildcard'] = $_POST['wildcard'] ? true : false;
$config['dyndns']['enable'] = $_POST['enable'] ? true : false;
+
+ $config['dnsupdate']['enable'] = $_POST['dnsupdate_enable'] ? true : false;
+ $config['dnsupdate']['host'] = $_POST['dnsupdate_host'];
+ $config['dnsupdate']['ttl'] = $_POST['dnsupdate_ttl'];
+ $config['dnsupdate']['keyname'] = $_POST['dnsupdate_keyname'];
+ $config['dnsupdate']['keytype'] = $_POST['dnsupdate_keytype'];
+ $config['dnsupdate']['keydata'] = $_POST['dnsupdate_keydata'];
+ $config['dnsupdate']['usetcp'] = $_POST['dnsupdate_usetcp'] ? true : false;
write_config();
@@ -79,6 +118,7 @@ if ($_POST) {
config_lock();
services_dyndns_reset();
$retval = services_dyndns_configure();
+ $retval |= services_dnsupdate_process();
config_unlock();
}
$savemsg = get_std_save_message($retval);
@@ -94,21 +134,25 @@ if ($_POST) {
<script language="JavaScript">
<!--
function enable_change(enable_change) {
- if (document.iform.enable.checked || enable_change) {
- document.iform.host.disabled = 0;
- document.iform.mx.disabled = 0;
- document.iform.type.disabled = 0;
- document.iform.wildcard.disabled = 0;
- document.iform.username.disabled = 0;
- document.iform.password.disabled = 0;
- } else {
- document.iform.host.disabled = 1;
- document.iform.mx.disabled = 1;
- document.iform.type.disabled = 1;
- document.iform.wildcard.disabled = 1;
- document.iform.username.disabled = 1;
- document.iform.password.disabled = 1;
- }
+ var endis;
+
+ endis = !(document.iform.enable.checked || enable_change);
+ document.iform.host.disabled = endis;
+ document.iform.mx.disabled = endis;
+ document.iform.type.disabled = endis;
+ document.iform.wildcard.disabled = endis;
+ document.iform.username.disabled = endis;
+ document.iform.password.disabled = endis;
+
+ endis = !(document.iform.dnsupdate_enable.checked || enable_change);
+ document.iform.dnsupdate_host.disabled = endis;
+ document.iform.dnsupdate_ttl.disabled = endis;
+ document.iform.dnsupdate_keyname.disabled = endis;
+ document.iform.dnsupdate_keytype[0].disabled = endis;
+ document.iform.dnsupdate_keytype[1].disabled = endis;
+ document.iform.dnsupdate_keytype[2].disabled = endis;
+ document.iform.dnsupdate_keydata.disabled = endis;
+ document.iform.dnsupdate_usetcp.disabled = endis;
}
//-->
</script>
@@ -122,11 +166,12 @@ function enable_change(enable_change) {
<form action="services_dyndns.php" method="post" name="iform" id="iform">
<table width="100%" border="0" cellpadding="6" cellspacing="0">
<tr>
- <td width="22%" valign="top" class="vtable">&nbsp;</td>
- <td width="78%" class="vtable">
-<input name="enable" type="checkbox" value="yes" <?php if ($pconfig['enable']) echo "checked"; ?> onClick="enable_change(false)">
- <strong>Enable Dynamic DNS client</strong></td>
- </tr>
+ <td colspan="2" valign="top" class="optsect_t">
+ <table border="0" cellspacing="0" cellpadding="0" width="100%">
+ <tr><td class="optsect_s"><strong>Dynamic DNS client</strong></td>
+ <td align="right" class="optsect_s"><input name="enable" type="checkbox" value="yes" <?php if ($pconfig['enable']) echo "checked"; ?> onClick="enable_change(false)"> <strong>Enable</strong></td></tr>
+ </table></td>
+ </tr>
<tr>
<td width="22%" valign="top" class="vncellreq">Service type</td>
<td width="78%" class="vtable">
@@ -157,7 +202,7 @@ function enable_change(enable_change) {
<tr>
<td width="22%" valign="top" class="vncellreq">Wildcards</td>
<td width="78%" class="vtable">
- <input name="wildcard" type="checkbox" id="wildcard" value="yes" <?php if ($pconfig['wildcard'] == "yes") echo "checked"; ?>>
+ <input name="wildcard" type="checkbox" id="wildcard" value="yes" <?php if ($pconfig['wildcard']) echo "checked"; ?>>
Enable Wildcard</td>
</tr>
<tr>
@@ -173,6 +218,55 @@ function enable_change(enable_change) {
</td>
</tr>
<tr>
+ <td colspan="2" class="list" height="12"></td>
+ </tr>
+ <tr>
+ <td colspan="2" valign="top" class="optsect_t">
+ <table border="0" cellspacing="0" cellpadding="0" width="100%">
+ <tr><td class="optsect_s"><strong>RFC 2163 Dynamic DNS updates</strong></td>
+ <td align="right" class="optsect_s"><input name="dnsupdate_enable" type="checkbox" value="yes" <?php if ($pconfig['dnsupdate_enable']) echo "checked"; ?> onClick="enable_change(false)"> <strong>Enable</strong></td></tr>
+ </table></td>
+ </tr>
+ <tr>
+ <td width="22%" valign="top" class="vncellreq">Hostname</td>
+ <td width="78%" class="vtable">
+ <input name="dnsupdate_host" type="text" class="formfld" id="dnsupdate_host" size="30" value="<?=htmlspecialchars($pconfig['dnsupdate_host']);?>">
+ </td>
+ </tr>
+ <tr>
+ <td valign="top" class="vncellreq">TTL</td>
+ <td class="vtable">
+ <input name="dnsupdate_ttl" type="text" class="formfld" id="dnsupdate_ttl" size="6" value="<?=htmlspecialchars($pconfig['dnsupdate_ttl']);?>">
+ seconds</td>
+ </tr>
+ <tr>
+ <td valign="top" class="vncellreq">Key name</td>
+ <td class="vtable">
+ <input name="dnsupdate_keyname" type="text" class="formfld" id="dnsupdate_keyname" size="30" value="<?=htmlspecialchars($pconfig['dnsupdate_keyname']);?>">
+ <br>
+ This must match the setting on the DNS server.</td>
+ </tr>
+ <tr>
+ <td valign="top" class="vncellreq">Key type </td>
+ <td class="vtable">
+ <input name="dnsupdate_keytype" type="radio" value="zone" <?php if ($pconfig['dnsupdate_keytype'] == "zone") echo "checked"; ?>> Zone &nbsp;
+ <input name="dnsupdate_keytype" type="radio" value="host" <?php if ($pconfig['dnsupdate_keytype'] == "host") echo "checked"; ?>> Host &nbsp;
+ <input name="dnsupdate_keytype" type="radio" value="user" <?php if ($pconfig['dnsupdate_keytype'] == "user") echo "checked"; ?>> User
+ </tr>
+ <tr>
+ <td valign="top" class="vncellreq">Key</td>
+ <td class="vtable">
+ <input name="dnsupdate_keydata" type="text" class="formfld" id="dnsupdate_keydata" size="70" value="<?=htmlspecialchars($pconfig['dnsupdate_keydata']);?>">
+ <br>
+ Paste an HMAC-MD5 key here.</td>
+ </tr>
+ <tr>
+ <td width="22%" valign="top" class="vncellreq">Protocol</td>
+ <td width="78%" class="vtable">
+ <input name="dnsupdate_usetcp" type="checkbox" id="dnsupdate_usetcp" value="yes" <?php if ($pconfig['dnsupdate_usetcp']) echo "checked"; ?>>
+ <strong>Use TCP instead of UDP</strong></td>
+ </tr>
+ <tr>
<td width="22%" valign="top">&nbsp;</td>
<td width="78%">
<input name="Submit" type="submit" class="formbtn" value="Save" onClick="enable_change(true)">
@@ -183,7 +277,7 @@ function enable_change(enable_change) {
<td width="78%"><span class="vexpl"><span class="red"><strong>Note:<br>
</strong></span>You must configure a DNS server in <a href="system.php">System:
General setup</a> or allow the DNS server list to be overridden
- by DHCP/PPP on WAN for the DynDNS client to work.</span></td>
+ by DHCP/PPP on WAN for dynamic DNS updates to work.</span></td>
</tr>
</table>
</form>
OpenPOWER on IntegriCloud