verification compares to destination timezone

This commit is contained in:
ayntk-ai
2024-08-15 13:30:08 +02:00
parent a1915e40f7
commit 39b132f7e9

View File

@@ -289,16 +289,16 @@ class Form extends Component
"echo \"Timezone updated to: $desired_timezone\"", "echo \"Timezone updated to: $desired_timezone\"",
"date" "date"
]; ];
ray('Commands to be executed:', $commands); ray('Commands to be executed:', $commands);
$result = instant_remote_process($commands, $this->server); $result = instant_remote_process($commands, $this->server);
ray('Result of instant_remote_process:', $result); ray('Result of instant_remote_process:', $result);
// Improved verification // Improved verification
$verificationCommands = [ $verificationCommands = [
"date +'%Z %:z'",
"readlink /etc/localtime | sed 's#/usr/share/zoneinfo/##'", "readlink /etc/localtime | sed 's#/usr/share/zoneinfo/##'",
"date +'%Z %:z'"
]; ];
$verificationResult = instant_remote_process($verificationCommands, $this->server, false); $verificationResult = instant_remote_process($verificationCommands, $this->server, false);
$verificationLines = explode("\n", trim($verificationResult)); $verificationLines = explode("\n", trim($verificationResult));
@@ -308,17 +308,17 @@ class Form extends Component
$this->dispatch('error', 'Failed to verify timezone update. Unexpected server response.'); $this->dispatch('error', 'Failed to verify timezone update. Unexpected server response.');
return false; return false;
} }
[$abbreviation, $offset] = explode(' ', $verificationLines[0]); $actualTimezone = trim($verificationLines[0]);
$actualTimezone = trim($verificationLines[1]); [$abbreviation, $offset] = explode(' ', trim($verificationLines[1]));
// Convert desired_timezone to DateTimeZone for comparison // Convert desired_timezone to DateTimeZone for comparison
$desiredTz = new \DateTimeZone($desired_timezone); $desiredTz = new \DateTimeZone($desired_timezone);
$desiredAbbr = (new \DateTime('now', $desiredTz))->format('T'); $desiredAbbr = (new \DateTime('now', $desiredTz))->format('T');
$desiredOffset = $desiredTz->getOffset(new \DateTime('now', $desiredTz)); $desiredOffset = $this->formatOffset($desiredTz->getOffset(new \DateTime('now', $desiredTz)));
// Compare abbreviation, offset, and actual timezone // Compare actual timezone, abbreviation, and offset with the desired timezone
if ($abbreviation === $desiredAbbr && $offset === $this->formatOffset($desiredOffset) && $actualTimezone === $desired_timezone) { if ($actualTimezone === $desired_timezone && $abbreviation === $desiredAbbr && $offset === $desiredOffset) {
ray('Timezone update verified successfully'); ray('Timezone update verified successfully');
$this->server->settings->server_timezone = $desired_timezone; $this->server->settings->server_timezone = $desired_timezone;
$this->server->settings->save(); $this->server->settings->save();
@@ -326,6 +326,8 @@ class Form extends Component
return true; return true;
} else { } else {
ray('Timezone verification failed. Expected:', $desired_timezone, 'Actual:', $actualTimezone); ray('Timezone verification failed. Expected:', $desired_timezone, 'Actual:', $actualTimezone);
ray('Expected abbreviation:', $desiredAbbr, 'Actual:', $abbreviation);
ray('Expected offset:', $desiredOffset, 'Actual:', $offset);
$this->dispatch('error', 'Failed to update server timezone. The server reported a different timezone than requested.'); $this->dispatch('error', 'Failed to update server timezone. The server reported a different timezone than requested.');
return false; return false;
} }
@@ -335,7 +337,7 @@ class Form extends Component
return false; return false;
} }
} }
private function formatOffset($offsetSeconds) private function formatOffset($offsetSeconds)
{ {
$hours = abs($offsetSeconds) / 3600; $hours = abs($offsetSeconds) / 3600;