From 74a5e5443d9651d654a8d9f8302f9029496d3195 Mon Sep 17 00:00:00 2001 From: Maximilian Wende Date: Sun, 16 Apr 2023 09:24:03 +0200 Subject: [PATCH] Add device IP address to status, auto adb connect --- tools/actions/status.py | 2 ++ tools/helpers/net.py | 36 ++++++++++++++++++++++++++++++++++ tools/services/user_manager.py | 3 +++ 3 files changed, 41 insertions(+) create mode 100644 tools/helpers/net.py diff --git a/tools/actions/status.py b/tools/actions/status.py index 32ad899..bb2aac2 100644 --- a/tools/actions/status.py +++ b/tools/actions/status.py @@ -3,6 +3,7 @@ import os import tools.config import tools.helpers.ipc +import tools.helpers.net import dbus def print_status(args): @@ -17,6 +18,7 @@ def print_status(args): print("Session:\tRUNNING") print("Container:\t" + session["state"]) print("Vendor type:\t" + cfg["waydroid"]["vendor_type"]) + print("IP address:\t" + (tools.helpers.net.get_device_ip_address() or "UNKNOWN")) print("Session user:\t{}({})".format(session["user_name"], session["user_id"])) print("Wayland display:\t" + session["wayland_display"]) else: diff --git a/tools/helpers/net.py b/tools/helpers/net.py new file mode 100644 index 0000000..c20a95b --- /dev/null +++ b/tools/helpers/net.py @@ -0,0 +1,36 @@ +# Copyright 2023 Maximilian Wende +# SPDX-License-Identifier: GPL-3.0-or-later +from shutil import which +import tools.helpers.run +import logging +import re + +def adb_connect(args): + """ + Creates an android debugging connection from the host system to the + Waydroid device, if ADB is found on the host system and the device + has booted. + """ + # Check if adb exists on the system. + if not which("adb"): + return + + # Start and 'warm up' the adb server + tools.helpers.run.user(args, ["adb", "start-server"]) + + ip = get_device_ip_address() + if not ip: + return + + tools.helpers.run.user(args, ["adb", "connect", ip]) + logging.info("Established ADB connection to Waydroid device at {}.".format(ip)) + +def get_device_ip_address(): + # The IP address is queried from the DHCP lease file. + lease_file = "/var/lib/misc/dnsmasq.waydroid0.leases" + + try: + with open(lease_file) as f: + return re.search("(\d{1,3}\.){3}\d{1,3}\s", f.read()).group().strip() + except: + pass \ No newline at end of file diff --git a/tools/services/user_manager.py b/tools/services/user_manager.py index 5616035..b8b9854 100644 --- a/tools/services/user_manager.py +++ b/tools/services/user_manager.py @@ -4,6 +4,7 @@ import logging import os import threading import tools.config +import tools.helpers.net from tools.interfaces import IUserMonitor from tools.interfaces import IPlatform @@ -66,6 +67,8 @@ def start(args, session, unlocked_cb=None): def userUnlocked(uid): logging.info("Android with user {} is ready".format(uid)) + tools.helpers.net.adb_connect(args) + platformService = IPlatform.get_service(args) if platformService: if not os.path.exists(apps_dir): -- 2.47.3