diff --git a/builder/data/etc/systemd/system/bettercap.service b/builder/data/etc/systemd/system/bettercap.service index 1ba1fc6f..987d33ac 100644 --- a/builder/data/etc/systemd/system/bettercap.service +++ b/builder/data/etc/systemd/system/bettercap.service @@ -5,7 +5,6 @@ Wants=network.target [Service] Type=simple -PermissionsStartOnly=true ExecStart=/usr/bin/bettercap-launcher Restart=always RestartSec=30 diff --git a/builder/data/etc/systemd/system/pwnagotchi.service b/builder/data/etc/systemd/system/pwnagotchi.service index fb762852..5b7a153e 100644 --- a/builder/data/etc/systemd/system/pwnagotchi.service +++ b/builder/data/etc/systemd/system/pwnagotchi.service @@ -7,7 +7,6 @@ After=pwngrid-peer.service [Service] Type=simple WorkingDirectory=/tmp -PermissionsStartOnly=true ExecStart=/usr/bin/pwnagotchi-launcher Restart=always RestartSec=30 diff --git a/builder/data/etc/systemd/system/pwngrid-peer.service b/builder/data/etc/systemd/system/pwngrid-peer.service index 06b7ec24..98cda8df 100644 --- a/builder/data/etc/systemd/system/pwngrid-peer.service +++ b/builder/data/etc/systemd/system/pwngrid-peer.service @@ -6,7 +6,6 @@ After=bettercap.service [Service] Type=simple -PermissionsStartOnly=true ExecStart=/usr/local/bin/pwngrid -keys /etc/pwnagotchi -peers /root/peers -address 127.0.0.1:8666 -client-token /root/.api-enrollment.json -wait -log /var/log/pwngrid-peer.log -iface wlan0mon Restart=always RestartSec=30 diff --git a/pwnagotchi/bettercap.py b/pwnagotchi/bettercap.py index b1f7d972..d53dc45e 100644 --- a/pwnagotchi/bettercap.py +++ b/pwnagotchi/bettercap.py @@ -40,29 +40,26 @@ class Client(object): async def start_websocket(self, consumer): s = "%s/events" % self.websocket - async with websockets.connect(s, ping_interval=60, ping_timeout=90) as ws: - # After the websocket connection is opened, loop waiting for messages - # Moved the websocket connection before the loop to avoid runaway websocket - # connections that were exhausting all possible TCP ports (ephemeral port exhaustion) - while True: - try: + while True: + try: + async with websockets.connect(s, ping_interval=60, ping_timeout=90) as ws: async for msg in ws: try: await consumer(msg) except Exception as ex: logging.debug("Error while parsing event (%s)", ex) - except websockets.ConnectionClosedError: - logging.error("Lost websocket connection. Reconnecting...") - continue - except websockets.WebSocketException as wex: - logging.error("Websocket exception (%s)", wex) - continue - except OSError as e: - logging.error("Websocket OSError exception (%s) with parameter %s", e, s) - continue - except Exception as e: - logging.error("Other exception (%s) with parameter %s", e, s) - continue + except websockets.ConnectionClosedError: + logging.error("Lost websocket connection. Reconnecting...") + continue + except websockets.WebSocketException as wex: + logging.error("Websocket exception (%s)", wex) + continue + except OSError as e: + logging.error("Websocket OSError exception (%s) with parameter %s", e, s) + continue + except Exception as e: + logging.error("Other exception (%s) with parameter %s", e, s) + continue def run(self, command, verbose_errors=True): for _ in range(0,2):