Commit 2d8f854e authored by Ad Schellevis's avatar Ad Schellevis

refactor services_opendns.php

parent 59f71633
......@@ -33,36 +33,36 @@ require_once("pfsense-utils.inc");
require_once("services.inc");
require_once("interfaces.inc");
if (!is_array($config['opendns'])) {
if (empty($config['opendns']) || !is_array($config['opendns'])) {
$config['opendns'] = array();
}
$pconfig['enable'] = isset($config['opendns']['enable']);
$pconfig['username'] = $config['opendns']['username'];
$pconfig['password'] = $config['opendns']['password'];
$pconfig['host'] = $config['opendns']['host'];
if ($_POST) {
unset($input_errors);
if ($_SERVER['REQUEST_METHOD'] === 'GET') {
$pconfig['enable'] = isset($config['opendns']['enable']);
$pconfig['username'] = !empty($config['opendns']['username']) ? $config['opendns']['username'] : null;
$pconfig['password'] = !empty($config['opendns']['password']) ? $config['opendns']['password'] : null;
$pconfig['host'] = !empty($config['opendns']['host']) ? $config['opendns']['host'] : null;
} elseif ($_SERVER['REQUEST_METHOD'] === 'POST') {
$input_errors = array();
$pconfig = $_POST;
/* input validation */
$reqdfields = array();
$reqdfieldsn = array();
if ($_POST['enable']) {
if (!empty($pconfig['enable'])) {
$reqdfields = array_merge($reqdfields, explode(" ", "host username password"));
$reqdfieldsn = array_merge($reqdfieldsn, explode(",", "Network,Username,Password"));
}
do_input_validation($_POST, $reqdfields, $reqdfieldsn, $input_errors);
if (($_POST['host'] && !is_domain($_POST['host']))) {
if (!empty($pconfig['host']) && !is_domain($pconfig['host'])) {
$input_errors[] = 'The host name contains invalid characters.';
}
if (($_POST['username'] && empty($_POST['username']))) {
if (empty($pconfig['username'])) {
$input_errors[] = 'The username cannot be empty.';
}
if ($_POST['test']) {
if (!empty($pconfig['test'])) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, sprintf( 'https://updates.opendns.com/nic/update?hostname=%s', $pconfig['host']));
curl_setopt($ch, CURLOPT_USERPWD, sprintf('%s:%s', $pconfig['username'], $pconfig['password']));
......@@ -70,15 +70,15 @@ if ($_POST) {
$output = curl_exec($ch);
curl_close($ch);
$test_results = explode("\r\n", $output);
} elseif (!$input_errors) {
} elseif (count($input_errors) == 0) {
$refresh = $pconfig['enable'] != $config['opendns']['enable'];
$config['opendns']['enable'] = $_POST['enable'] ? true : false;
$config['opendns']['username'] = $_POST['username'];
$config['opendns']['password'] = $_POST['password'];
$config['opendns']['host'] = $_POST['host'];
$config['opendns']['enable'] = !empty($pconfig['enable']);
$config['opendns']['username'] = $pconfig['username'];
$config['opendns']['password'] = $pconfig['password'];
$config['opendns']['host'] = $pconfig['host'];
if ($refresh) {
if ($config['opendns']['enable']) {
unset($config['system']['dnsserver']);
$config['system']['dnsserver'] = array();
$v4_server = array('208.67.222.222', '208.67.220.220');
$v6_server = array('2620:0:ccc::2', '2620:0:ccd::2');
if (isset($config['system']['prefer_ipv4'])) {
......@@ -98,7 +98,7 @@ if ($_POST) {
}
$config['system']['dnsallowoverride'] = false;
} else {
unset($config['system']['dnsserver']);
$config['system']['dnsserver'] = array();
$config['system']['dnsserver'][] = '';
$config['system']['dnsallowoverride'] = true;
}
......@@ -111,81 +111,77 @@ if ($_POST) {
}
}
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
<?php
if (isset($input_errors) && count($input_errors) > 0) {
print_input_errors($input_errors);
}
if (isset($savemsg)) {
print_info_box($savemsg);
}
?>
}?>
<section class="col-xs-12">
<div class="content-box table-responsive">
<form action="services_opendns.php" method="post">
<table width="100%" border="0" cellpadding="6" cellspacing="0" summary="main area" class="table table-striped">
<form method="post">
<table class="table table-striped">
<thead>
<tr>
<th colspan="2" valign="top" class="listtopic"><?=gettext('OpenDNS Setup'); ?></th>
<td width="22%"><strong><?=gettext('OpenDNS Setup'); ?></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>
&nbsp;
</td>
</tr>
</thead>
<tbody>
<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><a id="help_for_enable" href="#" class="showhelp"><i class="fa fa-info-circle"></i></a> <?=gettext('Enable'); ?></td>
<td>
<input name="enable" type="checkbox" id="enable" value="yes" <?=!empty($pconfig['enable']) ? 'checked="checked"' : "";?> />
<strong><?=gettext('Filter DNS requests using OpenDNS'); ?></strong>
<br />
<br />
<span class="vexpl">
<div class="hidden" for="help_for_enable">
<?=gettext(sprintf(
'Enabling the OpenDNS service will overwrite DNS servers configured ' .
'via the General Setup page as well as ignore any DNS servers learned ' .
'by DHCP/PPP on WAN and use the DNS servers from %s instead.',
'<a href="http://www.opendns.com" target="_blank">OpenDNS.com</a>'
)); ?>
</span>
</div>
</td>
</tr>
<tr>
<td width="22%" valign="top" class="vncell"><?=gettext('Username'); ?></td>
<td width="78%" class="vtable">
<input name="username" type="text" id="username" size="20" value="<?=htmlspecialchars($pconfig['username']);?>" />
<br />
<span class="vexpl">
<td><a id="help_for_username" href="#" class="showhelp"><i class="fa fa-info-circle"></i></a> <?=gettext('Username'); ?></td>
<td>
<input name="username" type="text" id="username" size="20" value="<?=$pconfig['username'];?>" />
<div class="hidden" for="help_for_username">
<?=gettext(
'Signon Username to log into your OpenDNS dashboard. ' .
'It is used to automatically update the IP address of ' .
'the registered network.'
); ?>
</span>
</div>
</td>
</tr>
<tr>
<td width="22%" valign="top" class="vncell"><?=gettext('Password'); ?></td>
<td width="78%" class="vtable">
<input name="password" type="password" id="password" size="20" value="<?=htmlspecialchars($pconfig['password']);?>" />
<td><i class="fa fa-info-circle text-muted"></i> <?=gettext('Password'); ?></td>
<td>
<input name="password" type="password" id="password" size="20" value="<?=$pconfig['password'];?>" />
</td>
</tr>
<tr>
<td width="22%" valign="top" class="vncell"><?=gettext('Network'); ?></td>
<td width="78%" class="vtable">
<input name="host" type="text" id="host" size="30" value="<?=htmlspecialchars($pconfig['host']);?>" />
<br />
<span class="vexpl">
<td><a id="help_for_host" href="#" class="showhelp"><i class="fa fa-info-circle"></i></a> <?=gettext('Network'); ?></td>
<td>
<input name="host" type="text" id="host" size="30" value="<?=$pconfig['host'];?>" />
<div class="hidden" for="help_for_host">
<?=gettext(sprintf(
'Enter the network name configured on the %s under ' .
'\'Manage your networks\'. Used to update the node\'s ' .
......@@ -193,14 +189,15 @@ include 'head.inc';
'<a href="https://www.opendns.com/dashboard/networks/" target="_blank">' .
gettext('Networks Dashboard of OpenDNS') .'</a>'
)); ?>
</span>
</div>
</td>
</tr>
<?php if (is_array($test_results)): ?>
<?php
if (isset($test_results) && is_array($test_results)): ?>
<tr>
<td width="22%" valign="top"><?=gettext('Test result');?></td>
<td width="78%">
<?php
<td><i class="fa fa-info-circle text-muted"></i> <?=gettext('Test result');?></td>
<td>
<?php
foreach ($test_results as $result) {
if (!strlen($result)) {
continue;
......@@ -211,14 +208,14 @@ include 'head.inc';
strpos($result, 'good') === 0 ? 'ok text-success' : 'remove text-danger',
$result
);
}
?>
}?>
</td>
</tr>
<?php endif; ?>
<?php
endif; ?>
<tr>
<td width="22%" valign="top">&nbsp;</td>
<td width="78%">
<td>&nbsp;</td>
<td>
<input name="submit" type="submit" class="btn btn-primary" value="<?=gettext('Save');?>" />
<input name="test" type="submit" class="btn btn-primary" value="<?=gettext('Test/Update');?>" />
</td>
......
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