Commit 0d70b4a9 authored by Franco Fichtner's avatar Franco Fichtner

ntp: disable when no servers are set; closes #332

This will make a few good people very happy.  :)
parent 334e4936
......@@ -2543,13 +2543,15 @@ function services_get()
$services[] = $pconfig;
}
$pconfig = array();
$pconfig['name'] = "ntpd";
$pconfig['description'] = gettext("NTP clock sync");
$pconfig['php']['restart'] = array('system_ntp_configure');
$pconfig['php']['start'] = array('system_ntp_configure');
$pconfig['pidfile'] = '/var/run/ntpd.pid';
$services[] = $pconfig;
if (isset($config['system']['timeservers'])) {
$pconfig = array();
$pconfig['name'] = "ntpd";
$pconfig['description'] = gettext("NTP clock sync");
$pconfig['php']['restart'] = array('system_ntp_configure');
$pconfig['php']['start'] = array('system_ntp_configure');
$pconfig['pidfile'] = '/var/run/ntpd.pid';
$services[] = $pconfig;
}
$iflist = array();
$ifdescrs = get_configured_interface_list();
......
......@@ -1474,6 +1474,17 @@ function system_ntp_configure($start_ntpd = true)
{
global $config;
/* if ntpd is running, kill it when restart is not delayed */
while ($start_ntpd && isvalidpid('/var/run/ntpd.pid')) {
killbypid('/var/run/ntpd.pid');
usleep(200 * 1000);
}
if (!isset($config['system']['timeservers'])) {
/* use this field for on/off toggle */
return;
}
$driftfile = '/var/db/ntpd.drift';
$statsdir = '/var/log/ntp';
$gps_device = '/dev/gps0';
......@@ -1719,12 +1730,6 @@ function system_ntp_configure($start_ntpd = true)
return;
}
/* if ntpd is running, kill it */
while (isvalidpid('/var/run/ntpd.pid')) {
killbypid('/var/run/ntpd.pid');
usleep(200 * 1000);
}
/* if /var/empty does not exist, create it */
@mkdir('/var/empty', 0775, true);
......
......@@ -63,9 +63,10 @@ if ($_POST) {
if (!empty($_POST["servselect{$i}"])) $config['ntpd']['noselect'].= "{$tserver} ";
}
}
if (trim($timeservers) == "")
$timeservers = "pool.ntp.org";
$config['system']['timeservers'] = trim($timeservers);
if (empty($config['system']['timeservers'])) {
unset($config['system']['timeservers']);
}
if (!empty($_POST['ntporphan']) && ($_POST['ntporphan'] < 17) && ($_POST['ntporphan'] != '12'))
$config['ntpd']['orphan'] = $_POST['ntporphan'];
......
......@@ -159,9 +159,11 @@ if ($_SERVER['REQUEST_METHOD'] === 'GET') {
# it's easy to have a little too much whitespace in the field, clean it up for the user before processing.
$pconfig['timeservers'] = preg_replace('/[[:blank:]]+/', ' ', $pconfig['timeservers']);
$pconfig['timeservers'] = trim($pconfig['timeservers']);
foreach (explode(' ', $pconfig['timeservers']) as $ts) {
if (!is_domain($ts)) {
$input_errors[] = gettext("A NTP Time Server name may only contain the characters a-z, 0-9, '-' and '.'.");
if (!empty($pconfig['timeservers'])) {
foreach (explode(' ', $pconfig['timeservers']) as $ts) {
if (!is_domain($ts)) {
$input_errors[] = gettext("A NTP Time Server name may only contain the characters a-z, 0-9, '-' and '.'.");
}
}
}
......@@ -170,6 +172,9 @@ if ($_SERVER['REQUEST_METHOD'] === 'GET') {
$config['system']['domain'] = $pconfig['domain'];
$config['system']['timezone'] = $pconfig['timezone'];
$config['system']['timeservers'] = strtolower($pconfig['timeservers']);
if (empty($config['system']['timeservers'])) {
unset($config['system']['timeservers']);
}
$config['theme'] = $pconfig['theme'];
if (!empty($pconfig['language']) && $pconfig['language'] != $config['system']['language']) {
......@@ -448,9 +453,9 @@ include("head.inc");
<td width="78%" class="vtable">
<input name="timeservers" type="text" class="formfld unknown" value="<?=$pconfig['timeservers'];?>" />
<div class="hidden" for="help_for_ntp">
<?=gettext("Use a space to separate multiple hosts (only one " .
"required). Remember to set up at least one DNS server " .
"if you enter a host name here!"); ?>
<?=gettext("Use a space to separate multiple hosts if " .
"needed or leave blank to disable the network time service. " .
"Remember to set up DNS if you enter host names here."); ?>
</div>
</td>
</tr>
......
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