mirror of
https://github.com/f-droid/fdroidserver.git
synced 2025-09-15 07:22:29 +03:00
update: use KnownApks dates to check system clock on offline machines
KnownApks provides a reliable source of a relatively recent date.
This commit is contained in:
parent
1219f07d3b
commit
d46d9574b4
2 changed files with 21 additions and 14 deletions
|
@ -40,7 +40,7 @@ import json
|
|||
import xml.etree.ElementTree as XMLElementTree
|
||||
|
||||
from binascii import hexlify
|
||||
from datetime import datetime
|
||||
from datetime import datetime, timedelta
|
||||
from distutils.version import LooseVersion
|
||||
from queue import Queue
|
||||
from zipfile import ZipFile
|
||||
|
@ -1716,6 +1716,23 @@ def natural_key(s):
|
|||
return [int(sp) if sp.isdigit() else sp for sp in re.split(r'(\d+)', s)]
|
||||
|
||||
|
||||
def check_system_clock(dt_obj, path):
|
||||
"""Check if system clock is updated based on provided date
|
||||
|
||||
If an APK has files newer than the system time, suggest updating
|
||||
the system clock. This is useful for offline systems, used for
|
||||
signing, which do not have another source of clock sync info. It
|
||||
has to be more than 24 hours newer because ZIP/APK files do not
|
||||
store timezone info
|
||||
|
||||
"""
|
||||
checkdt = dt_obj - timedelta(1)
|
||||
if datetime.today() < checkdt:
|
||||
logging.warning(_('System clock is older than date in {path}!').format(path=path)
|
||||
+ '\n' + _('Set clock to that time using:') + '\n'
|
||||
+ 'sudo date -s "' + str(dt_obj) + '"')
|
||||
|
||||
|
||||
class KnownApks:
|
||||
"""permanent store of existing APKs with the date they were added
|
||||
|
||||
|
@ -1744,6 +1761,7 @@ class KnownApks:
|
|||
date = datetime.strptime(t[-1], '%Y-%m-%d')
|
||||
filename = line[0:line.rfind(appid) - 1]
|
||||
self.apks[filename] = (appid, date)
|
||||
check_system_clock(date, self.path)
|
||||
self.changed = False
|
||||
|
||||
def writeifchanged(self):
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue