Fix support for Chrony in Debian systems

This commit is contained in:
Ilia Ross
2024-06-17 15:09:42 +03:00
parent 61d2081371
commit 76ccb2b7ed
3 changed files with 14 additions and 11 deletions

View File

@@ -56,7 +56,7 @@ if ($in{'action'} eq $text{'action_sync'}) {
if (defined($in{'sync_service_name'}) &&
defined($in{'sync_service_status'})) {
my $service_name = $in{'sync_service_name'};
if ($service_name !~ /^(chronyd|systemd-timesyncd)$/) {
if ($service_name !~ /^(chronyd|chrony|systemd-timesyncd)$/) {
&error(&text('error_serviceunknown', &html_escape($service_name)));
}
my $service_status = int($in{'sync_service_status'});

View File

@@ -5,7 +5,8 @@ use warnings;
no warnings 'redefine';
no warnings 'uninitialized';
require './time-lib.pl';
our (%in, %text, %config, %access, $base_remote_user, $get_hardware_time_error);
our (%in, %text, %config, %access, $base_remote_user,
$get_hardware_time_error, $cronyd_name);
my ($rawdate, $rawhwdate, %system_date, $rawtime, %hw_date, $txt);
$txt = "";
@@ -174,13 +175,14 @@ if ( ( !$access{ 'sysdate' } && &has_command( "date" ) || !$access{ 'hwdate' } &
$config{'timeserver_hardware'}));
}
}
if (&foreign_require('init') && &init::action_status('chronyd') > 0 && &has_command("chronyc")) {
my $chronyd_running = &init::status_action('chronyd');
my $chronyd_run_atboot = &init::action_status('chronyd');
my $ui_hiddens = &ui_hidden("sync_service_name", "chronyd");
if (&foreign_require('init') &&
&init::action_status($cronyd_name) > 0 && &has_command("chronyc")) {
my $chronyd_running = &init::status_action($cronyd_name);
my $chronyd_run_atboot = &init::action_status($cronyd_name);
my $ui_hiddens = &ui_hidden("sync_service_name", $cronyd_name);
$ui_hiddens .= &ui_hidden("timeserver", $config{'timeserver'})
if (!$ntp_support);
print &ui_table_row(&text('index_tabsync2', 'chronyd'),
print &ui_table_row(&text('index_tabsync2', $cronyd_name),
$ui_hiddens.
&ui_radio("sync_service_status",
(($chronyd_run_atboot == 2 && $chronyd_running) ? 2 :

View File

@@ -13,6 +13,7 @@ our ($timezones_file, $currentzone_link, $currentzone_file, $timezones_dir,
$sysclock_file);
our ($get_hardware_time_error);
our $cron_cmd = "$module_config_directory/sync.pl";
our $cronyd_name = $gconfig{'os_type'} eq 'debian-linux' ? 'chrony' : 'chronyd';
our $rawtime;
if ($config{'zone_style'}) {
do "$config{'zone_style'}-lib.pl";
@@ -49,13 +50,13 @@ if (&has_command("ntpdate")) {
elsif (&has_command("sntp")) {
$out = &backquote_logged("sntp -s $servs 2>&1");
}
elsif (&foreign_require('init') && &init::action_status('chronyd') > 0 && &has_command("chronyc")) {
my $chronyd_running = &init::status_action('chronyd');
$out = &backquote_logged("systemctl restart chronyd 2>&1");
elsif (&foreign_require('init') && &init::action_status($cronyd_name) > 0 && &has_command("chronyc")) {
my $chronyd_running = &init::status_action($cronyd_name);
$out = &backquote_logged("systemctl restart $cronyd_name 2>&1");
$out .= &backquote_logged("chronyc makestep 2>&1");
sleep ($chronyd_running ? 5 : 15);
if (!$chronyd_running) {
&backquote_logged("systemctl stop chronyd 2>&1");
&backquote_logged("systemctl stop $cronyd_name 2>&1");
}
}
elsif (&foreign_require('init') && &init::action_status('systemd-timesyncd') > 0) {