diff --git a/unix-ffi/machine/machine/__init__.py b/unix-ffi/machine/machine/__init__.py index 80bf5da1a..72a5d9403 100644 --- a/unix-ffi/machine/machine/__init__.py +++ b/unix-ffi/machine/machine/__init__.py @@ -4,4 +4,17 @@ def unique_id(): + for base in ("/etc", "/var/lib/dbus"): + try: + with open(base + "/machine-id", "rb") as source: + data = source.read(32) + if len(data) == 32: + for byte in data: + if byte not in b"0123456789abcdef": + break + # unhexlify might not be available + return bytes([int(data[i : i + 2], 16) for i in range(0, len(data), 2)]) + except OSError as e: + if "ENOENT" not in str(e): + raise return b"upy-non-unique" diff --git a/unix-ffi/machine/manifest.py b/unix-ffi/machine/manifest.py index f7c11b81a..bdfb6a95f 100644 --- a/unix-ffi/machine/manifest.py +++ b/unix-ffi/machine/manifest.py @@ -1,4 +1,4 @@ -metadata(version="0.2.2") +metadata(version="0.2.3") # Originally written by Paul Sokolovsky.