Просмотр исходного кода

2971 [Bug] Time zone change bug (#3031)

* Fix 2971 | Use server time zone names

So we don't require any conversions.

* Update shell list
Jaap Marcus 3 лет назад
Родитель
Сommit
2459e7bf09
3 измененных файлов с 36 добавлено и 532 удалено
  1. 23 439
      bin/v-get-sys-timezones
  2. 11 88
      web/edit/server/index.php
  3. 2 5
      web/templates/pages/edit_server.html

+ 23 - 439
bin/v-get-sys-timezones

@@ -25,457 +25,41 @@ source_conf "$HESTIA/conf/hestia.conf"
 #                       Action                             #
 #----------------------------------------------------------#
 
-Zones="Africa/Abidjan
-Africa/Accra
-Africa/Addis_Ababa
-Africa/Algiers
-Africa/Asmara
-Africa/Bamako
-Africa/Bangui
-Africa/Banjul
-Africa/Bissau
-Africa/Blantyre
-Africa/Brazzaville
-Africa/Bujumbura
-Africa/Cairo
-Africa/Casablanca
-Africa/Ceuta
-Africa/Conakry
-Africa/Dakar
-Africa/Dar_es_Salaam
-Africa/Djibouti
-Africa/Douala
-Africa/El_Aaiun
-Africa/Freetown
-Africa/Gaborone
-Africa/Harare
-Africa/Johannesburg
-Africa/Juba
-Africa/Kampala
-Africa/Khartoum
-Africa/Kigali
-Africa/Kinshasa
-Africa/Lagos
-Africa/Libreville
-Africa/Lome
-Africa/Luanda
-Africa/Lubumbashi
-Africa/Lusaka
-Africa/Malabo
-Africa/Maputo
-Africa/Maseru
-Africa/Mbabane
-Africa/Mogadishu
-Africa/Monrovia
-Africa/Nairobi
-Africa/Ndjamena
-Africa/Niamey
-Africa/Nouakchott
-Africa/Ouagadougou
-Africa/Porto-Novo
-Africa/Sao_Tome
-Africa/Tripoli
-Africa/Tunis
-Africa/Windhoek
-America/Adak
-America/Anchorage
-America/Anguilla
-America/Antigua
-America/Araguaina
-America/Argentina/Buenos_Aires
-America/Argentina/Catamarca
-America/Argentina/Cordoba
-America/Argentina/Jujuy
-America/Argentina/La_Rioja
-America/Argentina/Mendoza
-America/Argentina/Rio_Gallegos
-America/Argentina/Salta
-America/Argentina/San_Juan
-America/Argentina/San_Luis
-America/Argentina/Tucuman
-America/Argentina/Ushuaia
-America/Aruba
-America/Asuncion
-America/Atikokan
-America/Bahia
-America/Bahia_Banderas
-America/Barbados
-America/Belem
-America/Belize
-America/Blanc-Sablon
-America/Boa_Vista
-America/Bogota
-America/Boise
-America/Cambridge_Bay
-America/Campo_Grande
-America/Cancun
-America/Caracas
-America/Cayenne
-America/Cayman
-America/Chicago
-America/Chihuahua
-America/Costa_Rica
-America/Creston
-America/Cuiaba
-America/Curacao
-America/Danmarkshavn
-America/Dawson
-America/Dawson_Creek
-America/Denver
-America/Detroit
-America/Dominica
-America/Edmonton
-America/Eirunepe
-America/El_Salvador
-America/Fortaleza
-America/Glace_Bay
-America/Godthab
-America/Goose_Bay
-America/Grand_Turk
-America/Grenada
-America/Guadeloupe
-America/Guatemala
-America/Guayaquil
-America/Guyana
-America/Halifax
-America/Havana
-America/Hermosillo
-America/Indiana/Indianapolis
-America/Indiana/Knox
-America/Indiana/Marengo
-America/Indiana/Petersburg
-America/Indiana/Tell_City
-America/Indiana/Vevay
-America/Indiana/Vincennes
-America/Indiana/Winamac
-America/Inuvik
-America/Iqaluit
-America/Jamaica
-America/Juneau
-America/Kentucky/Louisville
-America/Kentucky/Monticello
-America/Kralendijk
-America/La_Paz
-America/Lima
-America/Los_Angeles
-America/Lower_Princes
-America/Maceio
-America/Managua
-America/Manaus
-America/Marigot
-America/Martinique
-America/Matamoros
-America/Mazatlan
-America/Menominee
-America/Merida
-America/Metlakatla
-America/Mexico_City
-America/Miquelon
-America/Moncton
-America/Monterrey
-America/Montevideo
-America/Montserrat
-America/Nassau
-America/New_York
-America/Nipigon
-America/Nome
-America/Noronha
-America/North_Dakota/Beulah
-America/North_Dakota/Center
-America/North_Dakota/New_Salem
-America/Ojinaga
-America/Panama
-America/Pangnirtung
-America/Paramaribo
-America/Phoenix
-America/Port-au-Prince
-America/Port_of_Spain
-America/Porto_Velho
-America/Puerto_Rico
-America/Rainy_River
-America/Rankin_Inlet
-America/Recife
-America/Regina
-America/Resolute
-America/Rio_Branco
-America/Santa_Isabel
-America/Santarem
-America/Santiago
-America/Santo_Domingo
-America/Sao_Paulo
-America/Scoresbysund
-America/Sitka
-America/St_Barthelemy
-America/St_Johns
-America/St_Kitts
-America/St_Lucia
-America/St_Thomas
-America/St_Vincent
-America/Swift_Current
-America/Tegucigalpa
-America/Thule
-America/Thunder_Bay
-America/Tijuana
-America/Toronto
-America/Tortola
-America/Vancouver
-America/Whitehorse
-America/Winnipeg
-America/Yakutat
-America/Yellowknife
-Antarctica/Casey
-Antarctica/Davis
-Antarctica/DumontDUrville
-Antarctica/Macquarie
-Antarctica/Mawson
-Antarctica/McMurdo
-Antarctica/Palmer
-Antarctica/Rothera
-Antarctica/Syowa
-Antarctica/Troll
-Antarctica/Vostok
-Arctic/Longyearbyen
-Asia/Aden
-Asia/Almaty
-Asia/Amman
-Asia/Anadyr
-Asia/Aqtau
-Asia/Aqtobe
-Asia/Ashgabat
-Asia/Baghdad
-Asia/Bahrain
-Asia/Baku
-Asia/Bangkok
-Asia/Beirut
-Asia/Bishkek
-Asia/Brunei
-Asia/Chita
-Asia/Choibalsan
-Asia/Colombo
-Asia/Damascus
-Asia/Dhaka
-Asia/Dili
-Asia/Dubai
-Asia/Dushanbe
-Asia/Gaza
-Asia/Hebron
-Asia/Ho_Chi_Minh
-Asia/Hong_Kong
-Asia/Hovd
-Asia/Irkutsk
-Asia/Jakarta
-Asia/Jayapura
-Asia/Jerusalem
-Asia/Kabul
-Asia/Kamchatka
-Asia/Karachi
-Asia/Kathmandu
-Asia/Khandyga
-Asia/Kolkata
-Asia/Krasnoyarsk
-Asia/Kuala_Lumpur
-Asia/Kuching
-Asia/Kuwait
-Asia/Macau
-Asia/Magadan
-Asia/Makassar
-Asia/Manila
-Asia/Muscat
-Asia/Nicosia
-Asia/Novokuznetsk
-Asia/Novosibirsk
-Asia/Omsk
-Asia/Oral
-Asia/Phnom_Penh
-Asia/Pontianak
-Asia/Pyongyang
-Asia/Qatar
-Asia/Qyzylorda
-Asia/Rangoon
-Asia/Riyadh
-Asia/Sakhalin
-Asia/Samarkand
-Asia/Seoul
-Asia/Shanghai
-Asia/Singapore
-Asia/Srednekolymsk
-Asia/Taipei
-Asia/Tashkent
-Asia/Tbilisi
-Asia/Tehran
-Asia/Thimphu
-Asia/Tokyo
-Asia/Ulaanbaatar
-Asia/Urumqi
-Asia/Ust-Nera
-Asia/Vientiane
-Asia/Vladivostok
-Asia/Yakutsk
-Asia/Yekaterinburg
-Asia/Yerevan
-Atlantic/Azores
-Atlantic/Bermuda
-Atlantic/Canary
-Atlantic/Cape_Verde
-Atlantic/Faroe
-Atlantic/Madeira
-Atlantic/Reykjavik
-Atlantic/South_Georgia
-Atlantic/St_Helena
-Atlantic/Stanley
-Australia/Adelaide
-Australia/Brisbane
-Australia/Broken_Hill
-Australia/Currie
-Australia/Darwin
-Australia/Eucla
-Australia/Hobart
-Australia/Lindeman
-Australia/Lord_Howe
-Australia/Melbourne
-Australia/Perth
-Australia/Sydney
-Europe/Amsterdam
-Europe/Andorra
-Europe/Athens
-Europe/Belgrade
-Europe/Berlin
-Europe/Bratislava
-Europe/Brussels
-Europe/Bucharest
-Europe/Budapest
-Europe/Busingen
-Europe/Chisinau
-Europe/Copenhagen
-Europe/Dublin
-Europe/Gibraltar
-Europe/Guernsey
-Europe/Helsinki
-Europe/Isle_of_Man
-Europe/Istanbul
-Europe/Jersey
-Europe/Kaliningrad
-Europe/Kiev
-Europe/Lisbon
-Europe/Ljubljana
-Europe/London
-Europe/Luxembourg
-Europe/Madrid
-Europe/Malta
-Europe/Mariehamn
-Europe/Minsk
-Europe/Monaco
-Europe/Moscow
-Europe/Oslo
-Europe/Paris
-Europe/Podgorica
-Europe/Prague
-Europe/Riga
-Europe/Rome
-Europe/Samara
-Europe/San_Marino
-Europe/Sarajevo
-Europe/Simferopol
-Europe/Skopje
-Europe/Sofia
-Europe/Stockholm
-Europe/Tallinn
-Europe/Tirane
-Europe/Uzhgorod
-Europe/Vaduz
-Europe/Vatican
-Europe/Vienna
-Europe/Vilnius
-Europe/Volgograd
-Europe/Warsaw
-Europe/Zagreb
-Europe/Zaporozhye
-Europe/Zurich
-Indian/Antananarivo
-Indian/Chagos
-Indian/Christmas
-Indian/Cocos
-Indian/Comoro
-Indian/Kerguelen
-Indian/Mahe
-Indian/Maldives
-Indian/Mauritius
-Indian/Mayotte
-Indian/Reunion
-Pacific/Apia
-Pacific/Auckland
-Pacific/Bougainville
-Pacific/Chatham
-Pacific/Chuuk
-Pacific/Easter
-Pacific/Efate
-Pacific/Enderbury
-Pacific/Fakaofo
-Pacific/Fiji
-Pacific/Funafuti
-Pacific/Galapagos
-Pacific/Gambier
-Pacific/Guadalcanal
-Pacific/Guam
-Pacific/Honolulu
-Pacific/Johnston
-Pacific/Kiritimati
-Pacific/Kosrae
-Pacific/Kwajalein
-Pacific/Majuro
-Pacific/Marquesas
-Pacific/Midway
-Pacific/Nauru
-Pacific/Niue
-Pacific/Norfolk
-Pacific/Noumea
-Pacific/Pago_Pago
-Pacific/Palau
-Pacific/Pitcairn
-Pacific/Pohnpei
-Pacific/Port_Moresby
-Pacific/Rarotonga
-Pacific/Saipan
-Pacific/Tahiti
-Pacific/Tarawa
-Pacific/Tongatapu
-Pacific/Wake
-Pacific/Wallis"
+json_list() {
+  jq -ncR '[inputs]' <<< "$zones"
+}
 
-# Check timesonze
-if [ -f /etc/timezone ]; then
- TZ=$(cat /etc/timezone)
-elif [ -h /etc/localtime ]; then
-  TZ=$(readlink /etc/localtime | sed "s/\/usr\/share\/zoneinfo\///")
-else
-  checksum=$(md5sum /etc/localtime | cut -d' ' -f1)
-  TZ=$(find /usr/share/zoneinfo/ -type f -exec md5sum {} \; |\
-    grep "^$checksum" | sed "s/.*\/usr\/share\/zoneinfo\///" | head -n 1)
-fi
+shell_list() {
+  IFS=$'\n'
+  echo "Timezone"
+  echo "--------"
+  for zone in $zones; do
+    echo $zone;
+  done
+}
 
-echo $TZ
+plain_list() {
+  IFS=$'\n'
+  for zone in $zones; do
+    echo $zone;
+  done
+}
 
-exit
-# Defining config
-echo -e "$str" > $tmp_file
-conf=$tmp_file
 
-# Defining fileds to select
-fields="\$SYS \$HOSTNAME \$OS \$VERSION \$ARCH \$UPTIME \$LOADAVERAGE"
+zones=$(cd /usr/share/zoneinfo/posix && find * -type f -or -type l | sort)
 
-# Listing services
+# Listing data
 case $format in
     json)   json_list ;;
-    plain)  nohead=1; shell_list ;;
-    shell)  fields="\$HOSTNAME \$OS \$VERSION \$ARCH \$UPTIME \$LOADAVERAGE"
-            shell_list | column -t ;;
-    *)      check_args '1' '0' 'USER [FORMAT]'
+    plain)  plain_list ;;
+    shell)  shell_list |column -t ;;
 esac
 
-rm -f $tmp_file
 
 #----------------------------------------------------------#
 #                       Hestia                             #
 #----------------------------------------------------------#
 
+
+
 exit

+ 11 - 88
web/edit/server/index.php

@@ -16,49 +16,13 @@ if ($_SESSION['userContext'] != 'admin') {
 $v_hostname = exec('hostname');
 
 // List available timezones and get current one
-$v_timezones = list_timezones();
 exec(HESTIA_CMD."v-get-sys-timezone", $output, $return_var);
 $v_timezone = $output[0];
 unset($output);
-if ($v_timezone == 'Etc/UTC') {
-    $v_timezone = 'UTC';
-}
-if ($v_timezone == 'Pacific/Honolulu') {
-    $v_timezone = 'HAST';
-}
-if ($v_timezone == 'US/Aleutian') {
-    $v_timezone = 'HADT';
-}
-if ($v_timezone == 'Etc/GMT+9') {
-    $v_timezone = 'AKST';
-}
-if ($v_timezone == 'America/Anchorage') {
-    $v_timezone = 'AKDT';
-}
-if ($v_timezone == 'America/Dawson_Creek') {
-    $v_timezone = 'PST';
-}
-if ($v_timezone == 'PST8PDT') {
-    $v_timezone = 'PDT';
-}
-if ($v_timezone == 'MST7MDT') {
-    $v_timezone = 'MDT';
-}
-if ($v_timezone == 'Canada/Saskatchewan') {
-    $v_timezone = 'CST';
-}
-if ($v_timezone == 'CST6CDT') {
-    $v_timezone = 'CDT';
-}
-if ($v_timezone == 'EST5EDT') {
-    $v_timezone = 'EDT';
-}
-if ($v_timezone == 'America/Puerto_Rico') {
-    $v_timezone = 'AST';
-}
-if ($v_timezone == 'America/Halifax') {
-    $v_timezone = 'ADT';
-}
+
+exec(HESTIA_CMD."v-get-sys-timezones json", $output, $return_var);
+$v_timezones = json_decode(implode('', $output), true);
+unset($output);
 
 // List supported php versions
 exec(HESTIA_CMD."v-list-web-templates-backend json", $output, $return_var);
@@ -355,51 +319,10 @@ if (!empty($_POST['save'])) {
     // Change timezone
     if (empty($_SESSION['error_msg'])) {
         if (!empty($_POST['v_timezone'])) {
-            $v_tz = $_POST['v_timezone'];
-            if ($v_tz == 'UTC') {
-                $v_tz = 'Etc/UTC';
-            }
-            if ($v_tz == 'HAST') {
-                $v_tz = 'Pacific/Honolulu';
-            }
-            if ($v_tz == 'HADT') {
-                $v_tz = 'US/Aleutian';
-            }
-            if ($v_tz == 'AKST') {
-                $v_tz = 'Etc/GMT+9';
-            }
-            if ($v_tz == 'AKDT') {
-                $v_tz = 'America/Anchorage';
-            }
-            if ($v_tz == 'PST') {
-                $v_tz = 'America/Dawson_Creek';
-            }
-            if ($v_tz == 'PDT') {
-                $v_tz = 'PST8PDT';
-            }
-            if ($v_tz == 'MDT') {
-                $v_tz = 'MST7MDT';
-            }
-            if ($v_tz == 'CST') {
-                $v_tz = 'Canada/Saskatchewan';
-            }
-            if ($v_tz == 'CDT') {
-                $v_tz = 'CST6CDT';
-            }
-            if ($v_tz == 'EDT') {
-                $v_tz = 'EST5EDT';
-            }
-            if ($v_tz == 'AST') {
-                $v_tz = 'America/Puerto_Rico';
-            }
-            if ($v_tz == 'ADT') {
-                $v_tz = 'America/Halifax';
-            }
-
-            if ($v_timezone != $v_tz) {
-                exec(HESTIA_CMD."v-change-sys-timezone ".quoteshellarg($v_tz), $output, $return_var);
+            if ($v_timezone != $_POST['v_timezone']) {
+                exec(HESTIA_CMD."v-change-sys-timezone ".quoteshellarg($_POST['v_timezone']), $output, $return_var);
                 check_return_code($return_var, $output);
-                $v_timezone = $v_tz;
+                $v_timezone = $_POST['v_timezone'];
                 unset($output);
             }
         }
@@ -1067,7 +990,7 @@ if (!empty($_POST['save'])) {
             $v_security_adv = 'yes';
         }
     }
-    
+
     if ($_POST['v_api_system'] != $_SESSION['API_SYSTEM'] || $_POST['v_api'] != $_SESSION['API'] || $_POST['v_api_allowed_ip'] != $_SESSION['API_ALLOWED_IP']){
         if (empty($_SESSION['error_msg'])) {
             if($_POST['v_api'] == "no" && $_POST['v_api_system'] === 0 ){
@@ -1092,7 +1015,7 @@ if (!empty($_POST['save'])) {
                 $v_security_adv = 'yes';
             }
         }
-        
+
         // Change API access
         if (empty($_SESSION['error_msg'])) {
             if ($_POST['v_api'] != $_SESSION['API']) {
@@ -1109,7 +1032,7 @@ if (!empty($_POST['save'])) {
                 $v_security_adv = 'yes';
             }
         }
-            
+
         // Change API allowed IPs
         if (empty($_SESSION['error_msg'])) {
             if ($_POST['v_api_allowed_ip'] != $_SESSION['API_ALLOWED_IP']) {
@@ -1133,7 +1056,7 @@ if (!empty($_POST['save'])) {
                     $v_security_adv = 'yes';
                 }
             }
-        }   
+        }
 
     }
 

+ 2 - 5
web/templates/pages/edit_server.html

@@ -44,11 +44,8 @@
                 <select class="form-select" name="v_timezone" id="v_timezone">
                   <?php
                     foreach ($v_timezones as $key => $value) {
-                      echo "\t\t\t\t<option value=\"".$key."\"";
-                      if ((!empty($v_timezone)) && ( $key == $v_timezone)){
-                        echo ' selected' ;
-                      }
-                      if($key == "UTC" && $v_timezone == "Etc/UTC"){
+                      echo "\t\t\t\t<option value=\"".$value."\"";
+                      if ((!empty($v_timezone)) && ( $value == $v_timezone)){
                         echo ' selected' ;
                       }
                       echo ">".$value."</option>\n";