files/sdw-updater.py (40 lines of code) (raw):
#!/usr/bin/python3
import argparse
import sys
from PyQt5.QtWidgets import QApplication
from sdw_updater import Updater
from sdw_updater.Updater import should_launch_updater
from sdw_updater.UpdaterApp import UpdaterApp, launch_securedrop_client
from sdw_util import Util
DEFAULT_INTERVAL = 28800 # 8hr default for update interval
def parse_argv(argv):
parser = argparse.ArgumentParser()
parser.add_argument("--skip-delta", type=int)
parser.add_argument("--skip-netcheck", action="store_true")
return parser.parse_args(argv)
def launch_updater(should_skip_netcheck: bool = False):
"""
Start the updater GUI.
"""
app = QApplication(sys.argv)
form = UpdaterApp(should_skip_netcheck)
form.show()
sys.exit(app.exec_())
def main(argv):
Util.configure_logging(Updater.LOG_FILE)
Util.configure_logging(Updater.DETAIL_LOG_FILE, Updater.DETAIL_LOGGER_PREFIX, backup_count=10)
sdlog = Util.get_logger()
lock_handle = Util.obtain_lock(Updater.LOCK_FILE)
if lock_handle is None:
# Preflight updater already running or problems accessing lockfile.
# Logged.
sys.exit(1)
sdlog.info("Starting SecureDrop Launcher")
args = parse_argv(argv)
try:
args.skip_delta
except NameError:
args.skip_delta = DEFAULT_INTERVAL
if args.skip_delta is None:
args.skip_delta = DEFAULT_INTERVAL
interval = int(args.skip_delta)
if should_launch_updater(interval):
launch_updater(args.skip_netcheck)
else:
launch_securedrop_client()
if __name__ == "__main__":
main(sys.argv[1:])