diff options
-rw-r--r-- | gnunet/_dbus_utils.py | 24 | ||||
-rw-r--r-- | gnunet/dht.py | 19 | ||||
-rw-r--r-- | gnunet/gns.py | 7 | ||||
-rw-r--r-- | gnunet/gnsrecord.py | 10 | ||||
-rw-r--r-- | setup.py | 8 |
5 files changed, 47 insertions, 21 deletions
diff --git a/gnunet/_dbus_utils.py b/gnunet/_dbus_utils.py index 2eb317f..26cdadd 100644 --- a/gnunet/_dbus_utils.py +++ b/gnunet/_dbus_utils.py | |||
@@ -32,7 +32,8 @@ def pythonize(arg, argtype): | |||
32 | if isinstance(arg, str): | 32 | if isinstance(arg, str): |
33 | return strings.string_to_absolute_time(arg) | 33 | return strings.string_to_absolute_time(arg) |
34 | if isinstance(arg. dbus.UInt64): | 34 | if isinstance(arg. dbus.UInt64): |
35 | return datetime.datetime(1970, 1, 1) + datetime.timedelta(microseconds=arg) | 35 | return (datetime.datetime(1970, 1, 1) |
36 | + datetime.timedelta(microseconds=arg)) | ||
36 | return datetime.datetime(arg) | 37 | return datetime.datetime(arg) |
37 | 38 | ||
38 | 39 | ||
@@ -48,7 +49,8 @@ def dbusize(arg, pretty): | |||
48 | 49 | ||
49 | if isinstance(arg, datetime.datetime): | 50 | if isinstance(arg, datetime.datetime): |
50 | if pretty: | 51 | if pretty: |
51 | return dbus.String(strings.absolute_time_to_string(arg), variant_level=1) | 52 | return dbus.String(strings.absolute_time_to_string(arg), |
53 | variant_level=1) | ||
52 | else: | 54 | else: |
53 | return dbus.UInt64((arg - datetime.datetime(1970, 1, 1)).total_seconds() * 1000000, variant_level=1) | 55 | return dbus.UInt64((arg - datetime.datetime(1970, 1, 1)).total_seconds() * 1000000, variant_level=1) |
54 | 56 | ||
@@ -60,12 +62,16 @@ def handle_exception(e, daemon, daemon_address): | |||
60 | raise e | 62 | raise e |
61 | name = name[len("org.freedesktop.DBus.Error."):] | 63 | name = name[len("org.freedesktop.DBus.Error."):] |
62 | 64 | ||
63 | if name == "Failed" or name == "InvalidArgs": | 65 | if name in ("Failed", "InvalidArgs"): |
64 | raise GNUNetDaemonError(message) | 66 | raise GNUNetDaemonError(message) |
65 | if name == "NoMemory": | 67 | elif name == "NoMemory": |
66 | raise MemoryError(message) | 68 | raise MemoryError(message) |
67 | if name == "ServiceUnknown" or name == "NameHasNoOwner": | 69 | elif name in ("ServiceUnknown", "NameHasNoOwner"): |
68 | raise GNUNetDaemonError("Failed to contact " + daemon + " daemon at " + daemon_address) | 70 | raise GNUNetDaemonError("Failed to contact %s daemon at %s" % |
69 | if name == "NoReply" or name == "Timeout": | 71 | (daemon, daemon_address)) |
70 | raise GNUNetDaemonError("Did not receive reply from " + daemon + " daemon at " + daemon_address + ". Daemon might of crashed") | 72 | elif name in ("NoReply", "Timeout"): |
71 | raise e | 73 | raise GNUNetDaemonError("Did not receive reply from %s daemon at %s. " |
74 | "Daemon might of crashed." | ||
75 | % (daemon, daemon_address)) | ||
76 | else: | ||
77 | raise e | ||
diff --git a/gnunet/dht.py b/gnunet/dht.py index b97c7a1..e9aa525 100644 --- a/gnunet/dht.py +++ b/gnunet/dht.py | |||
@@ -30,9 +30,12 @@ class GetResult(threading.Thread): | |||
30 | 30 | ||
31 | if request: | 31 | if request: |
32 | if request.record_route: | 32 | if request.record_route: |
33 | request.callback(self.block_type, self.key, self.data, self.expiry, get_path=self.get_path, put_path=self.put_path) | 33 | request.callback(self.block_type, self.key, self.data, |
34 | self.expiry, get_path=self.get_path, | ||
35 | put_path=self.put_path) | ||
34 | else: | 36 | else: |
35 | request.callback(self.block_type, self.key, self.data, self.expiry) | 37 | request.callback(self.block_type, self.key, self.data, |
38 | self.expiry) | ||
36 | 39 | ||
37 | 40 | ||
38 | def _result(expiry, key, get_path, put_path, block_type, data, path): | 41 | def _result(expiry, key, get_path, put_path, block_type, data, path): |
@@ -44,7 +47,8 @@ def _result(expiry, key, get_path, put_path, block_type, data, path): | |||
44 | data = bytearray(data) | 47 | data = bytearray(data) |
45 | GetResult(expiry, key, get_path, put_path, block_type, data, path) | 48 | GetResult(expiry, key, get_path, put_path, block_type, data, path) |
46 | 49 | ||
47 | sysbus.add_signal_receiver(_result, "result", "gnu.gnunet.dht.get", "gnu.gnunet.dht", path_keyword="path") | 50 | sysbus.add_signal_receiver(_result, "result", "gnu.gnunet.dht.get", |
51 | "gnu.gnunet.dht", path_keyword="path") | ||
48 | 52 | ||
49 | 53 | ||
50 | class GetRequest: | 54 | class GetRequest: |
@@ -54,7 +58,8 @@ class GetRequest: | |||
54 | self.record_route = record_route | 58 | self.record_route = record_route |
55 | 59 | ||
56 | def filter_known_results(self, keys): | 60 | def filter_known_results(self, keys): |
57 | keys = dbus.Array([dbusize(HashCode(key)) for key in list(keys)], signature="v") | 61 | keys = dbus.Array([dbusize(HashCode(key)) |
62 | for key in list(keys)], signature="v") | ||
58 | try: | 63 | try: |
59 | sysbus.get_object("gnu.gnunet.dht", self._path).filter_known_results(keys, dbus_interface="gnu.gnunet.dht.get") | 64 | sysbus.get_object("gnu.gnunet.dht", self._path).filter_known_results(keys, dbus_interface="gnu.gnunet.dht.get") |
60 | except dbus.DBusException as e: | 65 | except dbus.DBusException as e: |
@@ -67,7 +72,8 @@ class GetRequest: | |||
67 | handle_exception(e, "dht", "gnu.gnunet.dht") | 72 | handle_exception(e, "dht", "gnu.gnunet.dht") |
68 | 73 | ||
69 | 74 | ||
70 | def put(key, desired_replication_level, block_type, data, expiry=None, demultiplex_everywhere=False, record_route=False, bart=False): | 75 | def put(key, desired_replication_level, block_type, data, expiry=None, |
76 | demultiplex_everywhere=False, record_route=False, bart=False): | ||
71 | key = dbusize(HashCode(key), True) | 77 | key = dbusize(HashCode(key), True) |
72 | desired_replication_level = dbus.UInt32(desired_replication_level) | 78 | desired_replication_level = dbus.UInt32(desired_replication_level) |
73 | if block_type not in block.TYPES: | 79 | if block_type not in block.TYPES: |
@@ -94,7 +100,8 @@ def put(key, desired_replication_level, block_type, data, expiry=None, demultipl | |||
94 | handle_exception(e, "dht", "gnu.gnunet.dht") | 100 | handle_exception(e, "dht", "gnu.gnunet.dht") |
95 | 101 | ||
96 | 102 | ||
97 | def get_start(callback, block_type, key, desired_replication_level, demultiplex_everywhere=False, record_route=False, bart=False): | 103 | def get_start(callback, block_type, key, desired_replication_level, |
104 | demultiplex_everywhere=False, record_route=False, bart=False): | ||
98 | if block_type not in block.TYPES: | 105 | if block_type not in block.TYPES: |
99 | raise ValueError("'block_type' must be one of %s" % block.TYPES) | 106 | raise ValueError("'block_type' must be one of %s" % block.TYPES) |
100 | block_type = dbus.String(block_type, variant_level=1) | 107 | block_type = dbus.String(block_type, variant_level=1) |
diff --git a/gnunet/gns.py b/gnunet/gns.py index 5f33566..b46b681 100644 --- a/gnunet/gns.py +++ b/gnunet/gns.py | |||
@@ -17,7 +17,9 @@ def lookup(name, zone, record_type, only_cached): | |||
17 | only_cached = dbus.Boolean(only_cached) | 17 | only_cached = dbus.Boolean(only_cached) |
18 | 18 | ||
19 | try: | 19 | try: |
20 | results = sysbus.get_object("gnu.gnunet.gns", "/").lookup(name, zone, record_type, only_cached) | 20 | results = sysbus.get_object("gnu.gnunet.gns", "/").lookup(name, zone, |
21 | record_type, | ||
22 | only_cached) | ||
21 | except dbus.DBusException as e: | 23 | except dbus.DBusException as e: |
22 | handle_exception(e, "gns", "gnu.gnunet.gns") | 24 | handle_exception(e, "gns", "gnu.gnunet.gns") |
23 | 25 | ||
@@ -43,6 +45,7 @@ def lookup(name, zone, record_type, only_cached): | |||
43 | expiration_time = pythonize(r[3], datetime.timedelta) | 45 | expiration_time = pythonize(r[3], datetime.timedelta) |
44 | else: | 46 | else: |
45 | expiration_time = pythonize(r[3], datetime.datetime) | 47 | expiration_time = pythonize(r[3], datetime.datetime) |
46 | ret.append(gnsrecord.Data(record_type, data, expiration_time, private, pending, shadow)) | 48 | ret.append(gnsrecord.Data(record_type, data, expiration_time, |
49 | private, pending, shadow)) | ||
47 | 50 | ||
48 | return ret | 51 | return ret |
diff --git a/gnunet/gnsrecord.py b/gnunet/gnsrecord.py index e9774c4..d869d05 100644 --- a/gnunet/gnsrecord.py +++ b/gnunet/gnsrecord.py | |||
@@ -26,14 +26,18 @@ TYPES.update(GNS_TYPES.items()) | |||
26 | 26 | ||
27 | 27 | ||
28 | class Data: | 28 | class Data: |
29 | def __init__(self, record_type, data, expiration_time=None, private=None, pending=None, shadow=None): | 29 | def __init__(self, record_type, data, expiration_time=None, private=None, |
30 | pending=None, shadow=None): | ||
30 | self.record_type = str(record_type) | 31 | self.record_type = str(record_type) |
31 | if record_type not in TYPES: | 32 | if record_type not in TYPES: |
32 | raise ValueError("'record_type' must be one of %s" % TYPES) | 33 | raise ValueError("'record_type' must be one of %s" % TYPES) |
33 | # self.data = bytearray(data) | 34 | # self.data = bytearray(data) |
34 | self.data = str(data) | 35 | self.data = str(data) |
35 | if expiration_time is not None and not isinstance(expiration_time, datetime.datetime) or isinstance(expiration_time, datetime.timedelta): | 36 | if (expiration_time is not None and |
36 | raise TypeError("'expiration_time' must be a datetime.datetime or a datetime.timedelta") | 37 | not isinstance(expiration_time, |
38 | (datetime.datetime, datetime.timedelta))): | ||
39 | raise TypeError("'expiration_time' must be a datetime.datetime " | ||
40 | "or a datetime.timedelta") | ||
37 | self.expiration_time = expiration_time | 41 | self.expiration_time = expiration_time |
38 | self.private = private | 42 | self.private = private |
39 | self.pending = pending | 43 | self.pending = pending |
@@ -20,7 +20,13 @@ setup( | |||
20 | license="GNU GPLv3+", | 20 | license="GNU GPLv3+", |
21 | keywords="GNUnet binding p2p", | 21 | keywords="GNUnet binding p2p", |
22 | url="https://gnunet.org", | 22 | url="https://gnunet.org", |
23 | long_description="""GNUnet is an alternative network stack for building secure, decentralized and privacy-preserving distributed applications. Our goal is to replace the old insecure Internet protocol stack. Starting from an application for secure publication of files, it has grown to include all kinds of basic protocol components and applications towards the creation of a GNU internet. | 23 | long_description=""" |
24 | GNUnet is an alternative network stack for building secure, | ||
25 | decentralized and privacy-preserving distributed applications. Our | ||
26 | goal is to replace the old insecure Internet protocol stack. | ||
27 | Starting from an application for secure publication of files, it | ||
28 | has grown to include all kinds of basic protocol components and | ||
29 | applications towards the creation of a GNU internet. | ||
24 | 30 | ||
25 | GNUnet is an official GNU package. | 31 | GNUnet is an official GNU package. |
26 | 32 | ||