Files

90 lines
2.8 KiB
Python
Raw Permalink Normal View History

2026-04-07 02:04:22 +05:30
import os
import sys
import time
import traceback
try:
import requests
except:
os.system("btpip install requests")
import requests
try:
import ntplib
except:
os.system("btpip install ntplib")
import ntplib
from datetime import datetime
try:
import pytz
except:
os.system("btpip install pytz")
import pytz
def sync_server_time(server, zone):
try:
print("Getting time from {}...".format(server))
client = ntplib.NTPClient()
response = client.request(server, version=3)
timestamp = response.tx_time
tz = pytz.timezone(zone)
time_zone = datetime.fromtimestamp(timestamp, tz)
local_time = datetime.now()
offset = timestamp - time.time()
print("Local time:", local_time)
print("Server time:", time_zone)
print("Time offset:", offset, "seconds")
import os
print("Syncing time...")
os.system('date -s "{}"'.format(time_zone))
return True
except Exception as e:
print("Failed to retrieve time from {}!".format(server))
# print(traceback.format_exc())
return False
server_list = ['cn.pool.ntp.org', '0.pool.ntp.org', '2.pool.ntp.org']
if __name__ == '__main__':
area = sys.argv[1].split('/')[0]
zone = sys.argv[1].split('/')[1]
print("Current time zone setting:{}".format(sys.argv[1]))
if not zone:
exit()
os.system('rm -f /etc/localtime')
os.system("ln -s '/usr/share/zoneinfo/" + area + "/" + zone + "' '/etc/localtime'")
flag = 0
for server in server_list:
if sync_server_time(server, sys.argv[1]):
flag = 1
print("|-Synchronized time successfully!")
break
if flag == 0:
try:
port = '7800'
port_pl = '/www/server/panel/data/port.pl'
if os.path.exists(port_pl):
with open(port_pl) as _pf:
port = (_pf.read() or '').strip() or '7800'
local_url = 'http://127.0.0.1:{}/api/index/get_time'.format(port)
print("Getting time from {}...".format(local_url))
r = requests.get(local_url, timeout=8)
timestamp = int(r.text)
tz = pytz.timezone(sys.argv[1])
time_zone = datetime.fromtimestamp(timestamp, tz)
local_time = datetime.now()
offset = timestamp - time.time()
print("Local time:", local_time)
print("Server time:", time_zone)
print("Time offset:", offset, "")
print("Syncing time...")
os.system(f"date -s '{time_zone}'")
flag = 1
print("|-Synchronized time successfully!")
except:
print(traceback.format_exc())
if flag == 0:
print("|-Synchronization time error!")