Commit 26032f66 authored by Franco Fichtner's avatar Franco Fichtner

services: more work on dynamic dns and rfc 2136

parent d51dd4ad
...@@ -35,7 +35,7 @@ ...@@ -35,7 +35,7 @@
/usr/local/etc/inc/plugins.inc /usr/local/etc/inc/plugins.inc
/usr/local/etc/inc/plugins.inc.d/dnsmasq.inc /usr/local/etc/inc/plugins.inc.d/dnsmasq.inc
/usr/local/etc/inc/plugins.inc.d/dyndns.inc /usr/local/etc/inc/plugins.inc.d/dyndns.inc
/usr/local/etc/inc/plugins.inc.d/dyndns/phpdns.inc /usr/local/etc/inc/plugins.inc.d/dyndns/phpDynDNS.inc
/usr/local/etc/inc/plugins.inc.d/dyndns/r53.inc /usr/local/etc/inc/plugins.inc.d/dyndns/r53.inc
/usr/local/etc/inc/plugins.inc.d/ipfw.inc /usr/local/etc/inc/plugins.inc.d/ipfw.inc
/usr/local/etc/inc/plugins.inc.d/ipsec.inc /usr/local/etc/inc/plugins.inc.d/ipsec.inc
......
...@@ -92,8 +92,8 @@ rrd interval 60s; ...@@ -92,8 +92,8 @@ rrd interval 60s;
## These parameters can be overridden in a specific alarm configuration ## These parameters can be overridden in a specific alarm configuration
alarm default { alarm default {
command on "/usr/local/opnsense/service/configd_ctl.py -m 'dyndns reload %T' 'ipsecdns reload' 'openvpn reload %T' 'filter reload' " command on "/usr/local/opnsense/service/configd_ctl.py -m 'dyndns reload %T' 'rfc2136 reload %T' 'ipsecdns reload' 'openvpn reload %T' 'filter reload' "
command off "/usr/local/opnsense/service/configd_ctl.py -m 'dyndns reload %T' 'ipsecdns reload' 'openvpn reload %T' 'filter reload' " command off "/usr/local/opnsense/service/configd_ctl.py -m 'dyndns reload %T' 'rfc2136 reload %T' 'ipsecdns reload' 'openvpn reload %T' 'filter reload' "
combine 10s combine 10s
} }
......
...@@ -29,7 +29,7 @@ ...@@ -29,7 +29,7 @@
POSSIBILITY OF SUCH DAMAGE. POSSIBILITY OF SUCH DAMAGE.
*/ */
require_once('plugins.inc.d/dyndns/phpdns.inc'); require_once('plugins.inc.d/dyndns/phpDynDNS.inc');
require_once('plugins.inc.d/dyndns/r53.inc'); require_once('plugins.inc.d/dyndns/r53.inc');
function dyndns_configure() function dyndns_configure()
...@@ -56,6 +56,26 @@ function dyndns_enabled() ...@@ -56,6 +56,26 @@ function dyndns_enabled()
return false; return false;
} }
function dyndns_services()
{
global $config;
$services = array();
if (dyndns_enabled()) {
$services[] = array(
'description' => gettext('Dynamic DNS'),
'configd' => array(
'restart' => array('dyndns reload'),
),
'nocheck' => true,
'name' => 'dyndns',
);
}
return $services;
}
function dyndns_cron() function dyndns_cron()
{ {
$jobs = array(); $jobs = array();
......
...@@ -147,7 +147,7 @@ ...@@ -147,7 +147,7 @@
$this->_curlSslVerifypeer = $curlSslVerifypeer; $this->_curlSslVerifypeer = $curlSslVerifypeer;
$this->_dnsVerboseLog = $dnsVerboseLog; $this->_dnsVerboseLog = $dnsVerboseLog;
if ($this->_dnsVerboseLog) if ($this->_dnsVerboseLog)
log_error("DynDns: updatedns() starting"); log_error("Dynamic DNS: updatedns() starting");
$dyndnslck = lock("DDNS".$dnsID, LOCK_EX); $dyndnslck = lock("DDNS".$dnsID, LOCK_EX);
...@@ -279,7 +279,7 @@ ...@@ -279,7 +279,7 @@
function _update() { function _update() {
if ($this->_dnsVerboseLog) if ($this->_dnsVerboseLog)
log_error("Dynamic DNS ({$this->_dnsHost}): DynDns _update() starting."); log_error("Dynamic DNS ({$this->_dnsHost}): _update() starting.");
if ($this->_dnsService != 'ods' and $this->_dnsService != 'route53 ') { if ($this->_dnsService != 'ods' and $this->_dnsService != 'route53 ') {
$ch = curl_init(); $ch = curl_init();
...@@ -649,7 +649,7 @@ ...@@ -649,7 +649,7 @@
break; break;
case 'eurodns': case 'eurodns':
if ($this->_dnsVerboseLog) if ($this->_dnsVerboseLog)
log_error("EuroDynDns ({$this->_dnsHost}) DNS update() starting."); log_error("EuroDNS ({$this->_dnsHost}) DNS update() starting.");
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_USERPWD, $this->_dnsUser.':'.$this->_dnsPass); curl_setopt($ch, CURLOPT_USERPWD, $this->_dnsUser.':'.$this->_dnsPass);
$server = "https://eurodyndns.org/update/"; $server = "https://eurodyndns.org/update/";
...@@ -729,7 +729,7 @@ ...@@ -729,7 +729,7 @@
*/ */
function _checkStatus($ch, $data) { function _checkStatus($ch, $data) {
if ($this->_dnsVerboseLog) { if ($this->_dnsVerboseLog) {
log_error("Dynamic DNS ({$this->_dnsHost}): DynDns _checkStatus() starting."); log_error("Dynamic DNS ({$this->_dnsHost}): _checkStatus() starting.");
log_error("Dynamic DNS ({$this->_dnsHost}): Current Service: {$this->_dnsService}"); log_error("Dynamic DNS ({$this->_dnsHost}): Current Service: {$this->_dnsService}");
} }
$successful_update = false; $successful_update = false;
...@@ -981,7 +981,7 @@ ...@@ -981,7 +981,7 @@
break; break;
case 'dnsexit': case 'dnsexit':
if (preg_match("/is the same/i", $data)) { if (preg_match("/is the same/i", $data)) {
$status = "phpDynDns ({$this->_dnsHost}): (Success) No Change In IP Address"; $status = "Dynamic DNS ({$this->_dnsHost}): (Success) No Change In IP Address";
$successful_update = true; $successful_update = true;
} else if (preg_match("/Success/i", $data)) { } else if (preg_match("/Success/i", $data)) {
$status = "Dynamic DNS ({$this->_dnsHost}): (Success) IP Address Changed Successfully!"; $status = "Dynamic DNS ({$this->_dnsHost}): (Success) IP Address Changed Successfully!";
...@@ -1019,7 +1019,7 @@ ...@@ -1019,7 +1019,7 @@
} else if (preg_match('/yours/i', $data)) { } else if (preg_match('/yours/i', $data)) {
$status = "Dynamic DNS ({$this->_dnsHost}): (Error) hostname specified exists, but not under the username specified."; $status = "Dynamic DNS ({$this->_dnsHost}): (Error) hostname specified exists, but not under the username specified.";
} else if (preg_match('/abuse/i', $data)) { } else if (preg_match('/abuse/i', $data)) {
$status = "phpDynDns ({$this->_dnsHost}): (Error) Updating too frequently, considered abuse."; $status = "Dynamic DNS ({$this->_dnsHost}): (Error) Updating too frequently, considered abuse.";
} else { } else {
$status = "Dynamic DNS ({$this->_dnsHost}): (Unknown Response)"; $status = "Dynamic DNS ({$this->_dnsHost}): (Unknown Response)";
log_error("Dynamic DNS ({$this->_dnsHost}): PAYLOAD: {$data}"); log_error("Dynamic DNS ({$this->_dnsHost}): PAYLOAD: {$data}");
...@@ -1323,10 +1323,10 @@ ...@@ -1323,10 +1323,10 @@
$wan_ip = $this->_checkIP(); $wan_ip = $this->_checkIP();
if ($wan_ip == 0) { if ($wan_ip == 0) {
log_error("DynDns ({$this->_dnsHost}): Current WAN IP could not be determined, skipping update process."); log_error("Dynamic DNS ({$this->_dnsHost}): Current WAN IP could not be determined, skipping update process.");
return false; return false;
} }
$log_error = "DynDns ({$this->_dnsHost}): Current WAN IP: {$wan_ip} "; $log_error = "Dynamic DNS ({$this->_dnsHost}): Current WAN IP: {$wan_ip} ";
if ($this->_useIPv6 == true) { if ($this->_useIPv6 == true) {
if (file_exists($this->_cacheFile_v6)) { if (file_exists($this->_cacheFile_v6)) {
...@@ -1367,13 +1367,13 @@ ...@@ -1367,13 +1367,13 @@
/* lets determine if the item needs updating */ /* lets determine if the item needs updating */
if ($cacheIP != $wan_ip) { if ($cacheIP != $wan_ip) {
$needs_updating = true; $needs_updating = true;
$update_reason = "DynDns: cacheIP != wan_ip. Updating. "; $update_reason = "Dynamic DNS: cacheIP != wan_ip. Updating. ";
$update_reason .= "Cached IP: {$cacheIP} WAN IP: {$wan_ip} "; $update_reason .= "Cached IP: {$cacheIP} WAN IP: {$wan_ip} ";
} }
if (($currentTime - $cacheTime) > $maxCacheAgeSecs) { if (($currentTime - $cacheTime) > $maxCacheAgeSecs) {
$needs_updating = true; $needs_updating = true;
$this->_forceUpdateNeeded = true; $this->_forceUpdateNeeded = true;
$update_reason = "DynDns: More than " . $this->_dnsMaxCacheAgeDays . " days. Updating. "; $update_reason = "Dynamic DNS: More than " . $this->_dnsMaxCacheAgeDays . " days. Updating. ";
$update_reason .= "{$currentTime} - {$cacheTime} > {$maxCacheAgeSecs} "; $update_reason .= "{$currentTime} - {$cacheTime} > {$maxCacheAgeSecs} ";
} }
if ($initial == true) { if ($initial == true) {
...@@ -1386,7 +1386,7 @@ ...@@ -1386,7 +1386,7 @@
*/ */
if ($needs_updating == true) { if ($needs_updating == true) {
if ($this->_dnsVerboseLog) if ($this->_dnsVerboseLog)
log_error("DynDns ({$this->_dnsHost}): {$update_reason}"); log_error("Dynamic DNS ({$this->_dnsHost}): {$update_reason}");
return true; return true;
} }
...@@ -1425,7 +1425,7 @@ ...@@ -1425,7 +1425,7 @@
$try++; $try++;
} }
if ($try >= 3) { if ($try >= 3) {
log_error("Dyndns debug information ({$this->_dnsHost}): Could not resolve {$hosttocheck} to ip using interface ip {$ip_address}."); log_error("Dynamic DNS debug information ({$this->_dnsHost}): Could not resolve {$hosttocheck} to ip using interface ip {$ip_address}.");
return 0; return 0;
} }
$ip_ch = curl_init("http://{$checkip}"); $ip_ch = curl_init("http://{$checkip}");
...@@ -1444,14 +1444,14 @@ ...@@ -1444,14 +1444,14 @@
$ip_address = trim($matches[1]); $ip_address = trim($matches[1]);
if (is_ipaddr($ip_address)) { if (is_ipaddr($ip_address)) {
if ($this->_dnsVerboseLog) if ($this->_dnsVerboseLog)
log_error("DynDns ({$this->_dnsHost}): {$ip_address} extracted from {$hosttocheck}"); log_error("Dynamic DNS ({$this->_dnsHost}): {$ip_address} extracted from {$hosttocheck}");
} else { } else {
log_error("DynDns ({$this->_dnsHost}): IP address could not be extracted from {$hosttocheck}"); log_error("Dynamic DNS ({$this->_dnsHost}): IP address could not be extracted from {$hosttocheck}");
return 0; return 0;
} }
} else { } else {
if ($this->_dnsVerboseLog) if ($this->_dnsVerboseLog)
log_error("DynDns ({$this->_dnsHost}): {$ip_address} extracted from local system."); log_error("Dynamic DNS ({$this->_dnsHost}): {$ip_address} extracted from local system.");
} }
$this->_dnsIP = $ip_address; $this->_dnsIP = $ip_address;
......
...@@ -38,8 +38,6 @@ function pf_services() ...@@ -38,8 +38,6 @@ function pf_services()
'description' => gettext('Packet Filter'), 'description' => gettext('Packet Filter'),
'configd' => array( 'configd' => array(
'restart' => array('filter reload'), 'restart' => array('filter reload'),
'start' => array('filter reload'),
'stop' => array('filter reload'),
), ),
'nocheck' => true, 'nocheck' => true,
'name' => 'pf', 'name' => 'pf',
......
...@@ -53,6 +53,26 @@ function rfc2136_enabled() ...@@ -53,6 +53,26 @@ function rfc2136_enabled()
return false; return false;
} }
function rfc2136_services()
{
global $config;
$services = array();
if (rfc2136_enabled()) {
$services[] = array(
'description' => gettext('RFC 2136'),
'configd' => array(
'restart' => array('rfc2136 reload'),
),
'nocheck' => true,
'name' => 'rfc2136',
);
}
return $services;
}
function rfc2136_cron() function rfc2136_cron()
{ {
$jobs = array(); $jobs = array();
......
...@@ -1295,8 +1295,8 @@ function upgrade_046_to_047() { ...@@ -1295,8 +1295,8 @@ function upgrade_046_to_047() {
} }
} }
function upgrade_047_to_048()
function upgrade_047_to_048() { {
global $config; global $config;
if (!empty($config['dyndns'])) { if (!empty($config['dyndns'])) {
$config['dyndnses'] = array(); $config['dyndnses'] = array();
...@@ -1311,7 +1311,7 @@ function upgrade_047_to_048() { ...@@ -1311,7 +1311,7 @@ function upgrade_047_to_048() {
$tempdyn['host'] = $config['dyndns'][0]['host']; $tempdyn['host'] = $config['dyndns'][0]['host'];
$tempdyn['mx'] = $config['dyndns'][0]['mx']; $tempdyn['mx'] = $config['dyndns'][0]['mx'];
$tempdyn['interface'] = "wan"; $tempdyn['interface'] = "wan";
$tempdyn['descr'] = sprintf('Upgraded Dyndns %s', $tempdyn['type']); $tempdyn['descr'] = sprintf('Upgraded dynamic DNS %s', $tempdyn['type']);
$config['dyndnses']['dyndns'][] = $tempdyn; $config['dyndnses']['dyndns'][] = $tempdyn;
} }
unset($config['dyndns']); unset($config['dyndns']);
......
...@@ -246,9 +246,9 @@ ...@@ -246,9 +246,9 @@
</ACL> </ACL>
</DNSResolver> </DNSResolver>
<DNSTools VisibleName="DNS Tools" cssClass="fa fa-tags fa-fw"> <DNSTools VisibleName="DNS Tools" cssClass="fa fa-tags fa-fw">
<DynDNS order="10" url="/services_dyndns.php"> <DynamicDNS VisibleName="Dynamic DNS" order="10" url="/services_dyndns.php">
<Edit url="/services_dyndns_edit.php*" visibility="hidden"/> <Edit url="/services_dyndns_edit.php*" visibility="hidden"/>
</DynDNS> </DynamicDNS>
<Filter order="20" url="/services_opendns.php"/> <Filter order="20" url="/services_opendns.php"/>
<RFC2136 order="30" VisibleName="RFC 2136" url="/services_rfc2136.php"> <RFC2136 order="30" VisibleName="RFC 2136" url="/services_rfc2136.php">
<Edit url="/services_rfc2136_edit.php*" visibility="hidden"/> <Edit url="/services_rfc2136_edit.php*" visibility="hidden"/>
......
[reload] [reload]
command:/usr/local/etc/rc.dyndns.update command:/usr/local/etc/rc.dyndns.update
description:DynDNS Update description:Dynamic DNS Update
parameters:%s parameters:%s
type:script type:script
message:updating dyndns %s message:updating dyndns %s
...@@ -30,6 +30,7 @@ ...@@ -30,6 +30,7 @@
require_once("guiconfig.inc"); require_once("guiconfig.inc");
require_once("interfaces.inc"); require_once("interfaces.inc");
require_once("services.inc"); require_once("services.inc");
require_once("system.inc");
require_once("plugins.inc.d/dyndns.inc"); require_once("plugins.inc.d/dyndns.inc");
if (empty($config['dyndnses']['dyndns']) || !isset($config['dyndnses']['dyndns'])) { if (empty($config['dyndnses']['dyndns']) || !isset($config['dyndnses']['dyndns'])) {
...@@ -44,7 +45,7 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') { ...@@ -44,7 +45,7 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') {
@unlink("/conf/dyndns_{$conf['interface']}{$conf['type']}" . escapeshellarg($conf['host']) . "{$conf['id']}.cache"); @unlink("/conf/dyndns_{$conf['interface']}{$conf['type']}" . escapeshellarg($conf['host']) . "{$conf['id']}.cache");
unset($a_dyndns[$_POST['id']]); unset($a_dyndns[$_POST['id']]);
write_config(); write_config();
configd_run('dyndns reload', true); system_cron_configure();
} }
exit; exit;
} elseif (isset($_POST['act']) && $_POST['act'] == "toggle" && isset($_POST['id'])) { } elseif (isset($_POST['act']) && $_POST['act'] == "toggle" && isset($_POST['id'])) {
...@@ -55,20 +56,25 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') { ...@@ -55,20 +56,25 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$a_dyndns[$_POST['id']]['enable'] = true; $a_dyndns[$_POST['id']]['enable'] = true;
} }
write_config(); write_config();
configd_run('dyndns reload', true); system_cron_configure();
if ($a_dyndns[$_POST['id']]['enable']) {
$a_dyndns[$_POST['id']]['force'] = true;
dyndns_configure_client($a_dyndns[$_POST['id']]);
}
} }
exit; exit;
} }
} }
include("head.inc"); include("head.inc");
legacy_html_escape_form_data($a_dyndns); legacy_html_escape_form_data($a_dyndns);
$main_buttons = array( $main_buttons = array(
array('label'=>gettext('Add'), 'href'=>'services_dyndns_edit.php'), array('label' => gettext('Add'), 'href' => 'services_dyndns_edit.php'),
); );
?>
?>
<body> <body>
<script type="text/javascript"> <script type="text/javascript">
$( document ).ready(function() { $( document ).ready(function() {
...@@ -78,7 +84,7 @@ $main_buttons = array( ...@@ -78,7 +84,7 @@ $main_buttons = array(
var id = $(this).data("id"); var id = $(this).data("id");
BootstrapDialog.show({ BootstrapDialog.show({
type:BootstrapDialog.TYPE_DANGER, type:BootstrapDialog.TYPE_DANGER,
title: "<?= gettext("DynDNS");?>", title: "<?= gettext("Dynamic DNS");?>",
message: "<?=gettext("Do you really want to delete this entry?");?>", message: "<?=gettext("Do you really want to delete this entry?");?>",
buttons: [{ buttons: [{
label: "<?= gettext("No");?>", label: "<?= gettext("No");?>",
......
...@@ -30,6 +30,7 @@ ...@@ -30,6 +30,7 @@
require_once("guiconfig.inc"); require_once("guiconfig.inc");
require_once("services.inc") ; require_once("services.inc") ;
require_once("interfaces.inc"); require_once("interfaces.inc");
require_once("system.inc");
require_once("plugins.inc.d/dyndns.inc"); require_once("plugins.inc.d/dyndns.inc");
/* returns true if $uname is a valid dynamic DNS username */ /* returns true if $uname is a valid dynamic DNS username */
...@@ -162,17 +163,22 @@ if ($_SERVER['REQUEST_METHOD'] === 'GET') { ...@@ -162,17 +163,22 @@ if ($_SERVER['REQUEST_METHOD'] === 'GET') {
} }
write_config(); write_config();
dyndns_configure_client($dyndns); system_cron_configure();
if ($dyndns['force']) {
dyndns_configure_client($dyndns);
}
header(url_safe('Location: /services_dyndns.php')); header(url_safe('Location: /services_dyndns.php'));
exit; exit;
} }
} }
legacy_html_escape_form_data($pconfig); legacy_html_escape_form_data($pconfig);
include("head.inc"); include("head.inc");
?>
?>
<body> <body>
<?php include("fbegin.inc"); ?> <?php include("fbegin.inc"); ?>
<script type="text/javascript"> <script type="text/javascript">
......
...@@ -30,6 +30,8 @@ ...@@ -30,6 +30,8 @@
require_once("guiconfig.inc"); require_once("guiconfig.inc");
require_once("interfaces.inc"); require_once("interfaces.inc");
require_once("services.inc"); require_once("services.inc");
require_once("system.inc");
require_once("plugins.inc.d/rfc2136.inc");
if (!isset($config['dnsupdates']['dnsupdate'])) { if (!isset($config['dnsupdates']['dnsupdate'])) {
$config['dnsupdates']['dnsupdate'] = array(); $config['dnsupdates']['dnsupdate'] = array();
...@@ -42,7 +44,7 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') { ...@@ -42,7 +44,7 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') {
if (!empty($a_rfc2136[$_POST['id']])) { if (!empty($a_rfc2136[$_POST['id']])) {
unset($a_rfc2136[$_POST['id']]); unset($a_rfc2136[$_POST['id']]);
write_config(); write_config();
configd_run('dyndns reload', true); system_cron_configure();
} }
exit; exit;
} elseif (isset($_POST['act']) && $_POST['act'] == "toggle" && isset($_POST['id'])) { } elseif (isset($_POST['act']) && $_POST['act'] == "toggle" && isset($_POST['id'])) {
...@@ -53,20 +55,24 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') { ...@@ -53,20 +55,24 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$a_rfc2136[$_POST['id']]['enable'] = true; $a_rfc2136[$_POST['id']]['enable'] = true;
} }
write_config(); write_config();
configd_run('dyndns reload', true); system_cron_configure();
if (!empty($a_rfc2136[$_POST['id']]['enable'])) {
rfc2136_configure_do(false, '', $a_rfc2136[$_POST['id']]['host'], true);
}
} }
exit; exit;
} }
} }
include("head.inc"); include("head.inc");
legacy_html_escape_form_data($a_rfc2136); legacy_html_escape_form_data($a_rfc2136);
$main_buttons = array( $main_buttons = array(
array('label' => gettext('Add'), 'href' => 'services_rfc2136_edit.php'), array('label' => gettext('Add'), 'href' => 'services_rfc2136_edit.php'),
); );
?>
?>
<body> <body>
<script type="text/javascript"> <script type="text/javascript">
$( document ).ready(function() { $( document ).ready(function() {
......
...@@ -29,7 +29,9 @@ ...@@ -29,7 +29,9 @@
require_once("guiconfig.inc"); require_once("guiconfig.inc");
require_once("services.inc"); require_once("services.inc");
require_once("system.inc");
require_once("interfaces.inc"); require_once("interfaces.inc");
require_once("plugins.inc.d/rfc2136.inc");
if (!isset($config['dnsupdates']['dnsupdate'])) { if (!isset($config['dnsupdates']['dnsupdate'])) {
$config['dnsupdates']['dnsupdate'] = array(); $config['dnsupdates']['dnsupdate'] = array();
...@@ -109,12 +111,12 @@ if ($_SERVER['REQUEST_METHOD'] === 'GET') { ...@@ -109,12 +111,12 @@ if ($_SERVER['REQUEST_METHOD'] === 'GET') {
} }
write_config('New/Edited RFC2136 dnsupdate entry was posted'); write_config('New/Edited RFC2136 dnsupdate entry was posted');
system_cron_configure();
if (!empty($pconfig['force'])) { if (!empty($pconfig['force'])) {
rfc2136_configure_do(false, '', $rfc2136['host'], true); rfc2136_configure_do(false, '', $rfc2136['host'], true);
} else {
rfc2136_configure_do();
} }
header(url_safe('Location: /services_rfc2136.php')); header(url_safe('Location: /services_rfc2136.php'));
exit; exit;
} }
...@@ -246,8 +248,8 @@ include("head.inc"); ...@@ -246,8 +248,8 @@ include("head.inc");
<td>&nbsp;</td> <td>&nbsp;</td>
<td> <td>
<input name="save" type="submit" class="btn btn-primary" value="<?=gettext("Save");?>" onclick="enable_change(true)" /> <input name="save" type="submit" class="btn btn-primary" value="<?=gettext("Save");?>" onclick="enable_change(true)" />
<input name="force" type="submit" class="btn btn-primary" value="<?=gettext("Save &amp; Force Update");?>" onclick="enable_change(true)" />
<a href="services_rfc2136.php"><input name="Cancel" type="button" class="btn btn-default" value="<?=gettext("Cancel");?>" /></a> <a href="services_rfc2136.php"><input name="Cancel" type="button" class="btn btn-default" value="<?=gettext("Cancel");?>" /></a>
<input name="force" type="submit" class="btn btn-default" value="<?=gettext("Save &amp; Force Update");?>" onclick="enable_change(true)" />
<?php if (isset($id)): ?> <?php if (isset($id)): ?>
<input name="id" type="hidden" value="<?=$id;?>" /> <input name="id" type="hidden" value="<?=$id;?>" />
<?php endif; ?> <?php endif; ?>
......
...@@ -58,6 +58,7 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') { ...@@ -58,6 +58,7 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$retval = system_routing_configure(); $retval = system_routing_configure();
configd_run('dyndns reload'); configd_run('dyndns reload');
configd_run('rfc2136 reload');
configd_run('ipsecdns reload'); configd_run('ipsecdns reload');
configd_run('filter reload'); configd_run('filter reload');
......
<?php <?php
$dyn_dns_status_title = gettext('DynDNS'); $dyn_dns_status_title = gettext('Dynamic DNS');
$dyn_dns_status_title_link = 'services_dyndns.php'; $dyn_dns_status_title_link = 'services_dyndns.php';
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