Skip to content

Commit

Permalink
ntp: disable when no servers are set; closes #332
Browse files Browse the repository at this point in the history
This will make a few good people very happy.  :)
  • Loading branch information
fichtner committed Feb 25, 2016
1 parent 334e493 commit 0d70b4a
Show file tree
Hide file tree
Showing 4 changed files with 34 additions and 21 deletions.
16 changes: 9 additions & 7 deletions src/etc/inc/services.inc
Original file line number Diff line number Diff line change
Expand Up @@ -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();
Expand Down
17 changes: 11 additions & 6 deletions src/etc/inc/system.inc
Original file line number Diff line number Diff line change
Expand Up @@ -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';
Expand Down Expand Up @@ -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);

Expand Down
5 changes: 3 additions & 2 deletions src/www/services_ntpd.php
Original file line number Diff line number Diff line change
Expand Up @@ -63,9 +63,10 @@
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'];
Expand Down
17 changes: 11 additions & 6 deletions src/www/system_general.php
Original file line number Diff line number Diff line change
Expand Up @@ -159,9 +159,11 @@ function get_locale_list()
# 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 '.'.");
}
}
}

Expand All @@ -170,6 +172,9 @@ function get_locale_list()
$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']) {
Expand Down Expand Up @@ -448,9 +453,9 @@ function get_locale_list()
<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>
Expand Down

0 comments on commit 0d70b4a

Please sign in to comment.