From 1ab183831371e8a406e0208f368add6314caa207 Mon Sep 17 00:00:00 2001 From: Simone Margaritelli Date: Wed, 9 Oct 2019 13:54:09 +0200 Subject: [PATCH] fix: fixed auto-update plugin to use pip3 based update process from pypi.org --- pwnagotchi/defaults.yml | 1 + pwnagotchi/plugins/default/auto-update.py | 28 ++++++++++++----------- 2 files changed, 16 insertions(+), 13 deletions(-) diff --git a/pwnagotchi/defaults.yml b/pwnagotchi/defaults.yml index dbb7b6b..5f00d42 100644 --- a/pwnagotchi/defaults.yml +++ b/pwnagotchi/defaults.yml @@ -13,6 +13,7 @@ main: - YourHomeNetworkHere auto-update: enabled: false + system: false # set to true to also enable system updates via apt interval: 1 # every day auto-backup: enabled: false diff --git a/pwnagotchi/plugins/default/auto-update.py b/pwnagotchi/plugins/default/auto-update.py index 8a01a45..43ea6ff 100644 --- a/pwnagotchi/plugins/default/auto-update.py +++ b/pwnagotchi/plugins/default/auto-update.py @@ -17,12 +17,17 @@ def on_loaded(): global READY if 'interval' not in OPTIONS or ('interval' in OPTIONS and OPTIONS['interval'] is None): - logging.error("AUTO-UPDATE: Interval is not set.") + logging.error("auto-update: Interval is not set.") return READY = True +def run(cmd): + return subprocess.Popen(cmd, shell=True, stdin=None, stdout=open("/dev/null", "w"), stderr=None, + executable="/bin/bash") + + def on_internet_available(agent): global STATUS @@ -36,23 +41,20 @@ def on_internet_available(agent): display.set('status', 'Updating ...') display.update() - logging.info("AUTO-UPDATE: updating packages index ...") + logging.info("auto-update: updating pwnagotchi ...") + run('pip3 install --upgrade --upgrade-strategy only-if-needed pwnagotchi').wait() - update = subprocess.Popen('apt update -y', shell=True, stdin=None, - stdout=open("/dev/null", "w"), stderr=None, executable="/bin/bash") - update.wait() + if OPTIONS['system']: + logging.info("auto-update: updating packages index ...") + run('apt update -y').wait() - logging.info("AUTO-UPDATE: updating packages ...") - - upgrade = subprocess.Popen('apt upgrade -y', shell=True, stdin=None, - stdout=open("/dev/null", "w"), stderr=None, executable="/bin/bash") - upgrade.wait() - - logging.info("AUTO-UPDATE: complete.") + logging.info("auto-update: updating packages ...") + run('apt upgrade -y').wait() + logging.info("auto-update: complete.") STATUS.update() except Exception as e: - logging.exception("AUTO-UPDATE ERROR") + logging.exception("auto-update ERROR") display.set('status', 'Updated!') display.update()