From 808dc7d29a0250ca90647ec593ec6ca3bce91df5 Mon Sep 17 00:00:00 2001 From: Josh Cotton Date: Sun, 10 Nov 2024 05:14:59 -0800 Subject: [PATCH] Fix Obok import in Calibre flatpak by using /sys/class/net/IFACE/address instead of `ip` (#586) Fix #585. Use /sys/class/net/IFACE/address for the MAC address instead of the ip command. --- Obok_plugin/obok/obok.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/Obok_plugin/obok/obok.py b/Obok_plugin/obok/obok.py index 603e773..a8379b1 100644 --- a/Obok_plugin/obok/obok.py +++ b/Obok_plugin/obok/obok.py @@ -449,9 +449,15 @@ class KoboLibrary(object): for m in matches: # print "m:{0}".format(m[0]) macaddrs.append(m[0].upper()) + elif sys.platform.startswith('linux'): + for interface in os.listdir('/sys/class/net'): + with open('/sys/class/net/' + interface + '/address', 'r') as f: + mac = f.read().strip().upper() + # some interfaces, like Tailscale's VPN interface, do not have a MAC address + if mac != '': + macaddrs.append(mac) else: - # probably linux - + # final fallback # let's try ip c = re.compile('\s(' + '[0-9a-f]{2}:' * 5 + '[0-9a-f]{2})(\s|$)', re.IGNORECASE) for line in os.popen('ip -br link'):