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.
This commit is contained in:
Josh Cotton 2024-11-10 05:14:59 -08:00 committed by GitHub
parent 2cd2792306
commit 808dc7d29a
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -449,9 +449,15 @@ class KoboLibrary(object):
for m in matches: for m in matches:
# print "m:{0}".format(m[0]) # print "m:{0}".format(m[0])
macaddrs.append(m[0].upper()) 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: else:
# probably linux # final fallback
# let's try ip # let's try ip
c = re.compile('\s(' + '[0-9a-f]{2}:' * 5 + '[0-9a-f]{2})(\s|$)', re.IGNORECASE) c = re.compile('\s(' + '[0-9a-f]{2}:' * 5 + '[0-9a-f]{2})(\s|$)', re.IGNORECASE)
for line in os.popen('ip -br link'): for line in os.popen('ip -br link'):