mirror of
https://github.com/pandorafms/pandorafms.git
synced 2025-07-27 07:44:35 +02:00
fix server status when distinct timezones
This commit is contained in:
parent
d1fb27f5c4
commit
a2076ffd0c
5
pandora_console/extras/mr/61.sql
Normal file
5
pandora_console/extras/mr/61.sql
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
START TRANSACTION;
|
||||||
|
|
||||||
|
ALTER TABLE `tserver` ADD COLUMN `server_keepalive_utimestamp` BIGINT NOT NULL DEFAULT 0;
|
||||||
|
|
||||||
|
COMMIT;
|
@ -110,6 +110,12 @@ foreach ($servers as $server) {
|
|||||||
];
|
];
|
||||||
$data[0] = '<span title="'.$server['version'].'">'.strip_tags($server['name']).'</span>';
|
$data[0] = '<span title="'.$server['version'].'">'.strip_tags($server['name']).'</span>';
|
||||||
|
|
||||||
|
$server_keepalive = time_w_fixed_tz($server['keepalive']);
|
||||||
|
|
||||||
|
if ($server['server_keepalive_utimestamp'] > 0) {
|
||||||
|
$server_keepalive = $server['server_keepalive_utimestamp'];
|
||||||
|
}
|
||||||
|
|
||||||
// Status.
|
// Status.
|
||||||
$data[1] = ui_print_status_image(STATUS_SERVER_OK, '', true);
|
$data[1] = ui_print_status_image(STATUS_SERVER_OK, '', true);
|
||||||
if ($server['status'] == -1) {
|
if ($server['status'] == -1) {
|
||||||
@ -119,7 +125,7 @@ foreach ($servers as $server) {
|
|||||||
true
|
true
|
||||||
);
|
);
|
||||||
} else if ((int) ($server['status'] === 0)
|
} else if ((int) ($server['status'] === 0)
|
||||||
|| (($date - time_w_fixed_tz($server['keepalive'])) > ($server['server_keepalive']) * 2)
|
|| (($date - $server_keepalive) > ($server['server_keepalive']) * 2)
|
||||||
) {
|
) {
|
||||||
$data[1] = ui_print_status_image(
|
$data[1] = ui_print_status_image(
|
||||||
STATUS_SERVER_DOWN,
|
STATUS_SERVER_DOWN,
|
||||||
|
@ -1157,6 +1157,7 @@ CREATE TABLE IF NOT EXISTS `tserver` (
|
|||||||
`stat_utimestamp` BIGINT NOT NULL DEFAULT 0,
|
`stat_utimestamp` BIGINT NOT NULL DEFAULT 0,
|
||||||
`exec_proxy` TINYINT UNSIGNED NOT NULL DEFAULT 0,
|
`exec_proxy` TINYINT UNSIGNED NOT NULL DEFAULT 0,
|
||||||
`port` INT UNSIGNED NOT NULL DEFAULT 0,
|
`port` INT UNSIGNED NOT NULL DEFAULT 0,
|
||||||
|
`server_keepalive_utimestamp` BIGINT NOT NULL DEFAULT 0,
|
||||||
PRIMARY KEY (`id_server`),
|
PRIMARY KEY (`id_server`),
|
||||||
KEY `name` (`name`)
|
KEY `name` (`name`)
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4;
|
) ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4;
|
||||||
|
@ -118,7 +118,7 @@ use Tie::File;
|
|||||||
use Time::Local;
|
use Time::Local;
|
||||||
use Time::HiRes qw(time);
|
use Time::HiRes qw(time);
|
||||||
eval "use POSIX::strftime::GNU;1" if ($^O =~ /win/i);
|
eval "use POSIX::strftime::GNU;1" if ($^O =~ /win/i);
|
||||||
use POSIX qw(strftime);
|
use POSIX qw(strftime mktime);
|
||||||
use threads;
|
use threads;
|
||||||
use threads::shared;
|
use threads::shared;
|
||||||
use JSON qw(decode_json encode_json);
|
use JSON qw(decode_json encode_json);
|
||||||
@ -3174,15 +3174,19 @@ sub pandora_update_server ($$$$$$;$$$$) {
|
|||||||
|
|
||||||
my $master = ($server_type == SATELLITESERVER) ? 0 : $pa_config->{'pandora_master'};
|
my $master = ($server_type == SATELLITESERVER) ? 0 : $pa_config->{'pandora_master'};
|
||||||
|
|
||||||
|
my ($year, $month, $day, $hour, $minute, $second) = split /[- :]/, $timestamp;
|
||||||
|
|
||||||
|
my $keepalive_utimestamp = mktime($second, $minute, $hour, $day, $month-1, $year-1900);
|
||||||
|
|
||||||
# First run
|
# First run
|
||||||
if ($server_id == 0) {
|
if ($server_id == 0) {
|
||||||
|
|
||||||
# Create an entry in tserver if needed
|
# Create an entry in tserver if needed
|
||||||
my $server = get_db_single_row ($dbh, 'SELECT id_server FROM tserver WHERE BINARY name = ? AND server_type = ?', $server_name, $server_type);
|
my $server = get_db_single_row ($dbh, 'SELECT id_server FROM tserver WHERE BINARY name = ? AND server_type = ?', $server_name, $server_type);
|
||||||
if (! defined ($server)) {
|
if (! defined ($server)) {
|
||||||
$server_id = db_insert ($dbh, 'id_server', 'INSERT INTO tserver (name, server_type, description, version, threads, queued_modules, server_keepalive)
|
$server_id = db_insert ($dbh, 'id_server', 'INSERT INTO tserver (name, server_type, description, version, threads, queued_modules, server_keepalive, server_keepalive_utimestamp)
|
||||||
VALUES (?, ?, ?, ?, ?, ?, ?)', $server_name, $server_type,
|
VALUES (?, ?, ?, ?, ?, ?, ?, ?)', $server_name, $server_type,
|
||||||
'Autocreated at startup', $version, $num_threads, $queue_size, $keepalive);
|
'Autocreated at startup', $version, $num_threads, $queue_size, $keepalive, $keepalive_utimestamp);
|
||||||
|
|
||||||
$server = get_db_single_row ($dbh, 'SELECT status FROM tserver WHERE id_server = ?', $server_id);
|
$server = get_db_single_row ($dbh, 'SELECT status FROM tserver WHERE id_server = ?', $server_id);
|
||||||
if (! defined ($server)) {
|
if (! defined ($server)) {
|
||||||
@ -3193,14 +3197,14 @@ sub pandora_update_server ($$$$$$;$$$$) {
|
|||||||
$server_id = $server->{'id_server'};
|
$server_id = $server->{'id_server'};
|
||||||
}
|
}
|
||||||
|
|
||||||
db_do ($dbh, 'UPDATE tserver SET status = ?, keepalive = ?, master = ?, laststart = ?, version = ?, threads = ?, queued_modules = ?, server_keepalive = ?
|
db_do ($dbh, 'UPDATE tserver SET status = ?, keepalive = ?, master = ?, laststart = ?, version = ?, threads = ?, queued_modules = ?, server_keepalive = ?, server_keepalive_utimestamp = ?
|
||||||
WHERE id_server = ?',
|
WHERE id_server = ?',
|
||||||
1, $timestamp, $master, $timestamp, $version, $num_threads, $queue_size, $keepalive, $server_id);
|
1, $timestamp, $master, $timestamp, $version, $num_threads, $queue_size, $keepalive, $keepalive_utimestamp, $server_id);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
db_do ($dbh, 'UPDATE tserver SET status = ?, keepalive = ?, master = ?, version = ?, threads = ?, queued_modules = ?, server_keepalive = ?
|
db_do ($dbh, 'UPDATE tserver SET status = ?, keepalive = ?, master = ?, version = ?, threads = ?, queued_modules = ?, server_keepalive = ?, server_keepalive_utimestamp = ?
|
||||||
WHERE id_server = ?', $status, $timestamp, $master, $version, $num_threads, $queue_size, $keepalive, $server_id);
|
WHERE id_server = ?', $status, $timestamp, $master, $version, $num_threads, $queue_size, $keepalive, $keepalive_utimestamp, $server_id);
|
||||||
}
|
}
|
||||||
|
|
||||||
##########################################################################
|
##########################################################################
|
||||||
|
Loading…
x
Reference in New Issue
Block a user