Commit Graph

1072 Commits

Author SHA1 Message Date
Dionysis Grigoropoulos
743736b376
Fix bug in device selection of rnodeconf 2023-06-21 00:02:11 +03:00
Mark Qvist
049733c4b6 Fixed race condition for link initiators on timed out link establishment 2023-06-13 19:20:54 +02:00
Mark Qvist
420d58527d Merge branch 'master' of github.com:markqvist/Reticulum 2023-06-13 16:11:28 +02:00
Mark Qvist
bab779a34c Fixed race condition for link initiators on timed out link establishment 2023-06-13 16:10:47 +02:00
SebastianObi
6dcfe2cad6
Fixed missing init of 'r_stat_snr'.
This this will otherwise lead to the error:
AttributeError: 'RNodeInterface' object has no attribute 'r_stat_snr'
2023-06-07 17:43:14 +02:00
SebastianObi
f206047908
Fixed missing init of 'r_stat_snr'.
This this will otherwise lead to the error:
AttributeError: 'RNodeInterface' object has no attribute 'r_stat_snr'
2023-06-07 17:42:44 +02:00
Nathan Petrangelo
6ce979a7de
Update __init__.py
Auto convert log messages to strings on the way in
2023-06-05 17:31:52 -04:00
Mark Qvist
f9f623dfa5 Updated version and changelog 2023-06-03 15:52:44 +02:00
Mark Qvist
ffa6bec3b4 Updated parser 2023-06-02 21:24:57 +02:00
Mark Qvist
4f78973751 Fixed race condition when timed-out link receives a late establishment proof a few milliseconds after it has timed out 2023-06-02 21:24:49 +02:00
Mark Qvist
a8a7af4b74 Handle missing identity file in rncp. Fixes #317. 2023-05-31 15:39:55 +02:00
Mark Qvist
9294ab4f97 Updated version 2023-05-19 11:31:36 +02:00
Mark Qvist
d7375bc4c3 Fixed callback invocation on channel receive 2023-05-19 01:58:28 +02:00
Mark Qvist
1a860c6ffd Add EOF signal on buffer close 2023-05-19 01:57:20 +02:00
Mark Qvist
800ed3af7a Fixed ready callback invocation 2023-05-18 23:35:28 +02:00
Mark Qvist
9c8e79546c Fixed missing check in receipt culling 2023-05-18 23:33:26 +02:00
Mark Qvist
61626897e7 Add channel window mode for slow links 2023-05-11 21:28:13 +02:00
Mark Qvist
fc5b02ed5d Added medium window to channel 2023-05-11 20:23:36 +02:00
Mark Qvist
a06e752b76 Added multi-interface duplicate deque to AutoInterface 2023-05-11 19:54:26 +02:00
Mark Qvist
66fda34b20 Cleanup 2023-05-11 17:48:07 +02:00
Mark Qvist
1542c5f4fe Fixed received link packet proofs not resetting watchdog stale timer 2023-05-11 16:22:44 +02:00
Mark Qvist
523fc7b8f9 Adjusted loglevel 2023-05-11 16:09:25 +02:00
Mark Qvist
73faf04ea1 Tuned channel windowing 2023-05-10 20:01:33 +02:00
Mark Qvist
e10ddf9d2d Cleanup 2023-05-10 19:28:28 +02:00
Mark Qvist
641a7ea75d Implemented basic channel windowing 2023-05-10 19:15:45 +02:00
Mark Qvist
e543d5c27f Implemented basic channel windowing 2023-05-10 19:15:20 +02:00
Mark Qvist
01c59ab0c6 Cleanup 2023-05-10 18:44:05 +02:00
Mark Qvist
a4c64abed4 Initial framework for channel windowing 2023-05-10 18:43:17 +02:00
Mark Qvist
7df11a6f67 Fixed missing isolation of packet delivery callback 2023-05-10 18:40:46 +02:00
Mark Qvist
1bd6020163 Cleanup 2023-05-10 18:40:18 +02:00
Mark Qvist
b3ac3131b5 Updated version 2023-05-09 23:07:47 +02:00
Mark Qvist
f522cb1db1 Added per-packet compression to buffer 2023-05-09 22:13:57 +02:00
Mark Qvist
d96a4853fe Fixed version display 2023-05-09 22:13:23 +02:00
Mark Qvist
52a0447fea Fixed resent packets not getting repacked 2023-05-09 22:12:49 +02:00
Mark Qvist
e82e6d56f1 Added ability to trust external signing keys to rnodeconf 2023-05-09 15:31:02 +02:00
Mark Qvist
dcf33e125b Cleanup 2023-05-05 10:43:27 +02:00
Mark Qvist
01600b96a4 Fix import paths 2023-05-05 10:37:22 +02:00
Mark Qvist
64bdc4c18c Fix import paths 2023-05-05 10:25:15 +02:00
Mark Qvist
5e5d89cc92 Removed dependency on netifaces. 2023-05-04 23:19:43 +02:00
Mark Qvist
a3bee4baa9 Removed netifaces dependency from AutoInterface 2023-05-04 17:55:58 +02:00
Mark Qvist
fab83ec399 Restructured library 2023-05-04 17:55:38 +02:00
Mark Qvist
b740e36985 Added ifaddr module 2023-05-04 17:46:56 +02:00
Mark Qvist
53b325d34d Added support for T3 v1.0 to rnodeconf 2023-05-03 15:56:19 +02:00
Mark Qvist
d31cf6e297 Added ability to configure RNode display intensity 2023-05-03 14:26:47 +02:00
Mark Qvist
e386a5d08b Use native Python unzip for updates 2023-05-03 12:57:38 +02:00
Mark Qvist
d467ed9ece Merge branch 'master' of github.com:markqvist/Reticulum 2023-05-03 12:27:10 +02:00
Mark Qvist
892a467d74 Update version 2023-05-03 12:26:48 +02:00
markqvist
4366e71f34
Merge pull request #272 from VioletEternity/windows
Improve Windows compatibility for rnodeconf
2023-05-03 12:26:36 +02:00
Mark Qvist
7e9998b4fd Use included platform detection method 2023-05-03 12:21:57 +02:00
markqvist
79abe93139
Merge pull request #278 from VioletEternity/windows-so_reuseaddr
Use SO_EXCLUSIVEADDRUSE instead of SO_REUSEADDR on Windows
2023-05-03 12:18:49 +02:00
Mark Qvist
d69d4b3920 Fixed firmware extraction for unverifiable devices. Fixes #266. 2023-05-02 18:10:04 +02:00
Mark Qvist
3300541181 Fixed invalid error code in conditional. Fixes #284. 2023-05-02 17:45:30 +02:00
Mark Qvist
3848059f19 Only use ifname for link-local discovery scopes. Fixes #283. 2023-05-02 17:39:06 +02:00
Mark Qvist
30021d89cb Fixed header bits in get_packed_flags(). Fixes #275. 2023-05-02 17:33:38 +02:00
Mark Qvist
29019724bd Added verbosity argument to Reticulum instantiation. Fixes #238. 2023-05-02 16:42:04 +02:00
Maya
ba7838c04e Use SO_EXCLUSIVEADDRUSE instead of SO_REUSEADDR on Windows.
On Linux, SO_REUSEADDR is used so that a socket in TIME-WAIT state can
be rebound after a listening process is restarted. It does not allow two
processes to listen on the exact same (addr, port) combination. However,
on Windows, it does, and SO_EXCLUSIVEADDRUSE is required to reproduce
the Linux behavior.

Reticulum relies on an error being returned by bind() that reuses
the same (addr, port) combination as another process to detect whether
there is a shared instance already running. Setting SO_EXCLUSIVEADDRUSE
makes this detection process work on Windows as well.
2023-04-19 03:03:15 +01:00
Maya
af16c68e47 Make esptool.py invocation compatible with Windows. 2023-04-13 18:17:14 +01:00
Maya
bda5717051 Use standard Python zipfile module to decompress firmware 2023-04-13 18:10:21 +01:00
Mark Qvist
fac4973329 Fixed potential race condition in announce queue handling for AutoInterface 2023-03-09 18:32:14 +01:00
Mark Qvist
159c7a9a52 Fixed rnstatus JSON output error 2023-03-08 14:10:33 +01:00
Mark Qvist
226004da94 Ignore lo0 in all cases. Fixes #237. 2023-03-07 16:43:10 +01:00
Aaron Heise
9c9f0a20f9
Handle sequence overflow when checking incoming message 2023-03-04 23:54:07 -06:00
Aaron Heise
6d9d410a70
Address multiple issues with Buffer and Channel
- StreamDataMessage now packed by struct rather than umsgpack for a more predictable size
- Added protected variable on LocalInterface to allow tests to simulate a low bandwidth connection
- Retry timer now has exponential backoff and a more sane starting value
- Link proves packet _before_ sending contents to Channel; this should help prevent spurious retries especially on half-duplex links
- Prevent Transport packet filter from filtering out duplicate packets for Channel; handle duplicates in Channel to ensure the packet is reproven (in case the original proof packet was lost)
- Fix up other tests broken by these changes
2023-03-04 23:37:58 -06:00
Mark Qvist
d8f3ad8d3f Temporarily disabled extra-level log statement 2023-03-04 19:30:47 +01:00
Mark Qvist
a1b75b9746 Increased per-hop timeout 2023-03-04 19:30:23 +01:00
Mark Qvist
80f3bfaece Adjusted StreamDataMessage overhead calculation 2023-03-04 19:06:47 +01:00
Mark Qvist
37b2d8a6ec Fixed Link MDU output in phyparams() 2023-03-04 18:37:28 +01:00
Mark Qvist
777fea9cea Differentiate exception between link establishment callback, and internal RTT packet handling 2023-03-04 18:32:36 +01:00
Mark Qvist
bbfdd37935 Added check for link state before sending 2023-03-04 18:31:07 +01:00
Mark Qvist
28e6302b3d Updated versions 2023-03-04 17:56:30 +01:00
Aaron Heise
aac2b9f987
Buffer: send and receive binary data over Channel
(also some minor fixes in channel)
2023-03-02 17:17:18 -06:00
markqvist
a6551fc019
Merge pull request #246 from gdt/fix-transmit-hash
AutoInterface: Drop embedded scope identifier on fe80::
2023-03-02 11:34:00 +01:00
markqvist
a06ae40797
Merge pull request #236 from faragher/master
Additional error messages for offline flashing.
2023-03-02 11:31:31 +01:00
markqvist
1db08438df
Merge pull request #248 from Erethon/hkdf-remove-dead-code
hkdf: Remove duplicate check if the salt is None
2023-03-02 11:29:18 +01:00
Dionysis Grigoropoulos
ddb7a92c15 hkdf: Remove duplicate check if the salt is None
The second if isn't needed since we initialize the salt with zeroes
earlier. If instead we meant to pass an empty bytes class to the HMAC
implementation, the end result would be the same, since it's gonna get
padded with zeroes in the HMAC code.
2023-03-01 16:22:51 +02:00
Greg Troxel
e273900e87 AutoInterface: Drop embedded scope identifier on fe80::
The code previously dropped scope identifiers expressed as a trailing
"%ifname", which happens on macOS.  On NetBSD and OpenBSD (and likely
FreeBSD, not tested), the scope identifier is embedded.  Drop that
form of identifier as well, because we keep address and ifname
separate, and because the scope identifier must not be part of
computing the hash of the address.

Resolves #240, failure to peer on NetBSD and OpenBSD.
2023-02-28 10:19:46 -05:00
Aaron Heise
9963cf37b8
Fix exceptions on Channel shutdown 2023-02-28 08:38:23 -06:00
Aaron Heise
72300cc821
Revert "Only send proof if link is still active" 2023-02-28 08:24:13 -06:00
Aaron Heise
8168d9bb92
Only send proof if link is still active 2023-02-28 08:13:07 -06:00
Aaron Heise
8f0151fed6
Tidy up PR 2023-02-27 21:33:50 -06:00
Aaron Heise
42935c8238
Make the PR have zero deletions 2023-02-27 21:15:25 -06:00
Aaron Heise
118acf77b8
Fix up documentation even more 2023-02-27 21:10:28 -06:00
Aaron Heise
661964277f
Fix up documentation for building 2023-02-27 19:05:25 -06:00
Aaron Heise
464dc23ff0
Add some internal documenation 2023-02-27 17:36:04 -06:00
Aaron Heise
c00b592ed9
System-reserved channel message types
- a message handler can return logical True to prevent subsequent message handlers from running
- Message types >= 0xff00 are reserved for system/framework messages
2023-02-26 11:39:49 -06:00
Aaron Heise
e005826151
Allow channel message handlers to short circuit
- a message handler can return logical True to prevent subsequent message handlers from running
2023-02-26 11:23:38 -06:00
Aaron Heise
fe3a3e22f7
Expose Channel on Link
Separates channel interface from link

Also added: allow multiple message handlers
2023-02-26 07:25:49 -06:00
Aaron Heise
68cb4a6740
Initial work on Channel 2023-02-25 18:23:25 -06:00
Michael Faragher
5b3d26a90a Additional error messages for offline flashing. 2023-02-22 12:49:24 -06:00
Mark Qvist
c604214bb9 Improved RNode reconnection when serial device disappears 2023-02-18 13:31:22 +01:00
Mark Qvist
d02cdd5471 Added JSON output to rnstatus 2023-02-17 21:29:35 +01:00
Mark Qvist
b82ecf047a Added Link establishment rate calculation 2023-02-17 09:54:18 +01:00
Mark Qvist
4d3570fe4c Updated version 2023-02-15 12:28:06 +01:00
Mark Qvist
fc818f00f1 Merge branch 'master' of github.com:markqvist/Reticulum 2023-02-09 11:54:06 +01:00
Mark Qvist
a55d39b7d4 Added Link ID to response_generator callback signature 2023-02-09 11:52:54 +01:00
Dionysis Grigoropoulos
323c2285ce rnodeconf: Typo fix on board versions 2023-02-04 17:16:57 +02:00
Mark Qvist
e9ae255f84 Added fallback version URL to rnodeconf updater 2023-02-04 14:18:11 +01:00
Mark Qvist
42dfee8557 Added Bluetooth pairing PIN output 2023-02-04 13:45:12 +01:00
Mark Qvist
1b55ac7f24 Added destination hash generation and announce functionality to rnid utility 2023-02-03 20:27:39 +01:00
Mark Qvist
d7aacba797 Cleanup 2023-02-03 10:13:36 +01:00
Mark Qvist
b92ddeccff Cleanup 2023-02-03 08:29:32 +01:00
Mark Qvist
6fac96ec18 Mask entire header 2023-02-03 00:11:11 +01:00
Mark Qvist
53ceafcebd Improved IFAC mask derivation 2023-02-02 23:59:02 +01:00
Mark Qvist
4df67304d6 Added payload masking to interfaces with IFAC enabled 2023-02-02 20:48:52 +01:00
Mark Qvist
ac07ba1368 Added Identity generation to rnid utility 2023-02-02 19:26:27 +01:00
Mark Qvist
ece064d46e Updated version 2023-02-02 19:05:15 +01:00
Mark Qvist
08e480387b Added signing and validation to rnid 2023-02-02 19:02:05 +01:00
Mark Qvist
f4241ae9c2 Added basic rnid utility 2023-02-02 17:45:59 +01:00
markqvist
3b2fbe02c6
Merge pull request #189 from Erethon/master
Fix bug where announce_identity could be undefined
2023-02-02 10:41:42 +01:00
Dionysis Grigoropoulos
6ecae615de packet: Fix header_type matching according to IFAC
Ever since IFAC/Interface Access Codes were introduced, the header type
is one bit long and not two.
2023-01-27 15:29:06 +02:00
Dionysis Grigoropoulos
72ca6316f6 Fix bug where announce_identity could be undefined 2023-01-26 22:05:38 +02:00
Mark Qvist
e4f0b2dc39 Allow rnodeconf to provision RNodes from extracted firmwares on systems without prior tools installed 2023-01-14 20:47:34 +01:00
Mark Qvist
c5a586175d Updated version 2023-01-14 15:06:30 +01:00
Mark Qvist
2a1ec6592c Added autoinstall and updating from extracted RNode Firmwares to rnodeconf 2023-01-14 14:51:44 +01:00
Mark Qvist
eed7698ed3 Added firmware extraction from existing devices to rnodeconf 2023-01-14 13:20:19 +01:00
Mark Qvist
8d96673bec Updated flasher paths 2023-01-14 00:55:34 +01:00
Mark Qvist
62a13eb0e8 Added RNode Bootstrap Console info to rnodeconf autoinstaller 2023-01-14 00:28:34 +01:00
Mark Qvist
78253093c7 Updated rnodeconf 2023-01-13 11:59:38 +01:00
Mark Qvist
63d54dbecb Added console image flashing to rnodeconf 2023-01-11 13:56:41 +01:00
Mark Qvist
32922868b9 Updated rnodeconf install guide 2023-01-11 11:45:10 +01:00
Mark Qvist
274c7199b0 Updated version 2022-12-23 23:27:37 +01:00
Mark Qvist
7960226883 Fixed missing path invalidation on failed link establishments made from a shared instance client 2022-12-23 23:26:50 +01:00
Mark Qvist
bb74878e94 Reordered property assignment 2022-12-23 23:24:26 +01:00
Mark Qvist
5c2c935b6f Updated version 2022-12-22 21:08:02 +01:00
Mark Qvist
8402541c73 Faster roaming path recovery for multiple interface non-transport instances 2022-12-22 20:17:09 +01:00
Mark Qvist
c34c268a6a Added carrier change detection flag to AutoInterface 2022-12-22 18:20:34 +01:00
Mark Qvist
8fcdc4613c Adjusted loglevels 2022-12-22 18:20:13 +01:00
Mark Qvist
f645fa569b Fixed AutoInterface multicast echoes failing on interfaces with rolling MAC addresses on every re-connect 2022-12-22 17:46:46 +01:00
Mark Qvist
e9e98a00c2 Updated version 2022-12-22 15:07:36 +01:00
Mark Qvist
b305eb8e0a Improved path response handling. Prepared destination path response handling for multi-path Transport. 2022-12-22 11:28:56 +01:00
Mark Qvist
dd7931d421 Added signal quality stats to announce log output 2022-12-22 11:26:59 +01:00
Mark Qvist
171457713b Improved RNode hotplug over Bluetooth on Android 2022-12-20 15:17:46 +01:00
Mark Qvist
67ee8d6aab Added originator check to path rediscovery on failed links 2022-12-19 01:31:00 +01:00
Mark Qvist
13fa7d49d9 Added automatic path rediscovery on failed link establishments 2022-12-19 01:15:49 +01:00
Mark Qvist
66d921e669 Improved resource advertisement retry handling 2022-12-19 01:10:34 +01:00
Mark Qvist
85f60ea04e Added check for already transferring resource to Link class 2022-12-19 01:04:49 +01:00
Mark Qvist
4870e741f6 Added link request proof signature validation for every transport hop 2022-12-18 21:27:14 +01:00
Mark Qvist
f71c1986af Added Heltec USB issue notice to autoinstaller 2022-12-16 23:34:31 +01:00
Mark Qvist
30d8e351dd Updated version 2022-12-16 23:21:22 +01:00
Mark Qvist
d26bbbd59f Merge branch 'master' of https://git.unsigned.io/markqvist/Reticulum 2022-12-15 17:14:15 +01:00
Mark Qvist
2a264fa7d6 Fixed invalid driver proxy for Qinheng CH34x chips on Android 2022-12-15 17:14:09 +01:00
Mark Qvist
d5e0a461cf Fixed invalid check for None 2022-11-25 00:42:22 +01:00
Mark Qvist
f692e81b8e Fixed AutoInterface roaming on Android devices that rotate Ethernet/WiFi MAC addresses on reconnect 2022-11-24 17:19:01 +01:00
Mark Qvist
680d17fb98 Improved startup time for instances and programs connected to a shared instance 2022-11-24 13:28:22 +01:00
Mark Qvist
ab301cdb79 Updated version 2022-11-24 10:45:45 +01:00
Mark Qvist
cecb4b3acb Fixed buffered input stream reader not working on Android API levels < 30 2022-11-23 20:39:49 +01:00
Mark Qvist
de53a105a4 Improved time pretty-print function 2022-11-23 17:15:46 +01:00
Mark Qvist
f22504d080 Improved I2P recovery time on unresponsive tunnels 2022-11-03 22:47:08 +01:00
Mark Qvist
f22e5cc200 Fixed socket references. Closes #146. 2022-11-03 19:51:04 +01:00
Mark Qvist
36906f6567 Updated version 2022-11-03 18:05:13 +01:00
Mark Qvist
88b88b9b64 Fixed missing check for socket state 2022-11-03 18:03:00 +01:00
Mark Qvist
76fcad0b53 Added better I2P state visibility to rnstatus util 2022-11-03 17:49:25 +01:00
Mark Qvist
01e520b082 Adjusted I2P interface timings 2022-11-03 16:30:07 +01:00
Mark Qvist
1d2a0fe4c8 Improved I2P tunnel state detection. Fixed missing IFAC init on spawned I2P interfaces. 2022-11-03 15:22:34 +01:00
Mark Qvist
0f19ced9d3 Fixed missing IFAC identity init on spawned TCP clients. Closes #137. 2022-11-03 14:16:00 +01:00
Mark Qvist
81ec701240 Updated version 2022-11-03 12:05:10 +01:00
Mark Qvist
5f7e37187f Fixed local firmware cache location for rnodeconf 2022-11-03 12:03:26 +01:00
Mark Qvist
b9d73518dd Improved rnodeconf firmware install 2022-11-03 00:42:46 +01:00
Mark Qvist
36052e2c61 Updated version 2022-11-02 22:34:52 +01:00
Mark Qvist
06d232f889 Added Bluetooth control interface for RNode interfaces on Android 2022-11-02 22:34:07 +01:00
Mark Qvist
f9b3c749e0 Improved cleanup on device disconnect 2022-11-02 20:44:09 +01:00
Mark Qvist
63a59753af Implemented Bluetooth support for RNode interfaces on Android. Added Bluetooth/USB multiplexing and Bluetooth manager to interface. 2022-11-02 20:43:46 +01:00
Mark Qvist
20696e7827 Bluetooth support for RNode interfaces on Linux (via standard rfcomm driver) 2022-11-02 20:42:45 +01:00
Mark Qvist
fee9473cac Improved rnodeconf timings 2022-11-02 01:23:23 +01:00
Mark Qvist
9bc5d91106 Added rnodeconf to package 2022-11-01 22:40:09 +01:00
Mark Qvist
45ae66e9bf Updated bluetooth control commands for RNode interface 2022-11-01 20:27:41 +01:00
Mark Qvist
47db2a3bd5 Added log output control options 2022-11-01 20:26:55 +01:00
Mark Qvist
40cd961eab Added better teardown handling on RNodeInterfaces 2022-10-30 23:13:44 +01:00
Mark Qvist
34cdd4bf0f Improved RNode error reporting and teardown 2022-10-29 16:41:47 +02:00
Mark Qvist
b0ef58e5ca Added support for writing to display framebuffer of connected RNodes 2022-10-29 14:28:53 +02:00
Mark Qvist
b6020b5ea8 Updated version 2022-10-29 14:28:06 +02:00
Mark Qvist
886b0ac0ca Fixed Android interfaces import 2022-10-22 01:38:38 +02:00
Mark Qvist
ed4070a3d1 Removed stray import. Fixes #125. 2022-10-22 01:05:08 +02:00
Mark Qvist
b479e14ca5 Improved handling of Android interfaces in apps without hardware access 2022-10-20 20:10:50 +02:00
Mark Qvist
81fc920bdf Fixed AutoInterface peering hashes on WiFi devices that employ MAC address randomisation on reconnects and roaming 2022-10-19 11:57:09 +02:00
Mark Qvist
5b1b18e84a Fixed incorrect behaviour in announce processing for instance-local destinations to roaming- or boundary-mode interfaces 2022-10-18 18:24:29 +02:00
Mark Qvist
9c8c143c62 Added logging to announce processing 2022-10-18 17:44:14 +02:00
Mark Qvist
db9858d75f Cleanup 2022-10-16 00:11:40 +02:00
Mark Qvist
874405cbdd Fixed missing announce cap on hotplugged interfaces 2022-10-15 23:14:47 +02:00
Mark Qvist
2a3f2b8bdc Updated version 2022-10-15 14:57:57 +02:00
Mark Qvist
9aae06c694 Added Android-specific KISS interface 2022-10-15 14:57:16 +02:00
Mark Qvist
70ffc38c49 Android-specific import 2022-10-15 14:56:23 +02:00
Mark Qvist
73071b0755 Cleanup 2022-10-15 14:41:12 +02:00
Mark Qvist
ab697dc583 Android-specific import 2022-10-15 11:39:23 +02:00
Mark Qvist
ecc78fa45f Added Android serial interface 2022-10-15 11:36:18 +02:00
Mark Qvist
e5309caf48 Added Android serial interface 2022-10-15 11:33:48 +02:00
Mark Qvist
094d2f2079 Cleanup 2022-10-15 11:31:34 +02:00
Mark Qvist
5111c32854 Fixed help text 2022-10-13 23:10:38 +02:00
Mark Qvist
60773ceb16 Return public identity for registered destinations in Identity.recall() 2022-10-13 20:43:38 +02:00
Mark Qvist
5d6c3dd891 Cleanup 2022-10-12 18:56:30 +02:00
Mark Qvist
a564dd2b2d Cleanup 2022-10-12 18:06:21 +02:00
Mark Qvist
16cf1ab1ba Fix debug output 2022-10-12 16:08:48 +02:00
Mark Qvist
47e326c8a9 Import Android-specific RNode interface on Android 2022-10-12 16:08:29 +02:00
Mark Qvist
9a7585cbef Added platform detect function 2022-10-12 16:07:53 +02:00
Mark Qvist
902f7af64d Added platform check 2022-10-12 15:14:42 +02:00
Mark Qvist
004bf27526 Added Android-specific RNode interface. Contains debug code. Not ready yet. Hang in there. 2022-10-12 15:11:02 +02:00
Mark Qvist
9cad90266e Reverted RNode interface to exclude Android-specific logic 2022-10-12 15:00:21 +02:00
Mark Qvist
e9de01e10e Added property default 2022-10-12 14:58:00 +02:00
Mark Qvist
372bedcd85 Added support for RNode interfaces on Android 2022-10-11 14:06:42 +02:00
Mark Qvist
d3525943c2 Updated version 2022-10-06 23:16:01 +02:00
Mark Qvist
cb55189e5c Truncate name_hash to 80 bits. Take all array slices from Identity.NAME_HASH_LENGTH constant. 2022-10-06 23:14:32 +02:00
Mark Qvist
89d8342ce5 Improved logging. Reject mismatching keys on hash collision. 2022-10-04 22:42:59 +02:00
Mark Qvist
c18997bf5b Cleanup 2022-10-04 22:41:58 +02:00
Mark Qvist
1e4dd9d6f0 Added note 2022-10-04 22:40:43 +02:00
Mark Qvist
7997fd104e Fix destination hash construction and random blob extraction 2022-10-04 09:11:20 +02:00
Mark Qvist
7744c4ffe6 Updated version 2022-10-04 07:00:13 +02:00
Mark Qvist
8a61d2c8d5 Fixed missing validation in announce processing 2022-10-04 06:59:33 +02:00
Mark Qvist
b085127d6e Fixed config dir path 2022-09-30 20:41:11 +02:00
Mark Qvist
76fb73f46c Updated configuration path defaults 2022-09-30 20:37:46 +02:00
Mark Qvist
c18806c912 Updated deprecated threading API call and updated docs 2022-09-30 19:02:41 +02:00
Mark Qvist
2abd8a1aae Updated docs and manual 2022-09-30 11:26:51 +02:00
Mark Qvist
7940ac0812 Updated docs and manual 2022-09-30 11:15:34 +02:00
Mark Qvist
8886ed5794 Fixed missing destination-side ephemeral key generation in link establishment 2022-09-29 22:47:10 +02:00
Mark Qvist
32ee4216fd Changed log levels 2022-09-24 12:23:59 +02:00
Mark Qvist
571ad2c8fb Added initial connection timeout option to TCPClientInterface 2022-09-15 15:35:28 +02:00
Mark Qvist
18f450c58b Periodically try to connect RNodes that were unavailable at startup. Closes #87. 2022-09-14 17:43:07 +02:00
Mark Qvist
b3d85b583f Place config in .config dir by default 2022-09-14 16:21:34 +02:00
Mark Qvist
03695565ba Added rnsd warning on start as client 2022-09-14 00:13:20 +02:00
Mark Qvist
3e380a8fc7 Fixed rendering in rnpath utility 2022-09-14 00:07:23 +02:00
Mark Qvist
921987c999 Added table persist on local client disconnect 2022-09-13 22:32:00 +02:00
Mark Qvist
75e32af1c5 Added periodic data persistence for shared and standalone instances 2022-09-13 20:17:25 +02:00
Mark Qvist
9775893840 Improved known destination saving 2022-09-06 19:43:46 +02:00
Mark Qvist
4042dd6ef7 Added locking and timeouts to table saving routines 2022-09-06 18:05:02 +02:00
Mark Qvist
af538e0489 Improved shutdown handling and table saving 2022-09-06 17:42:13 +02:00
Mark Qvist
c55e1e9628 Version bump 2022-09-06 12:24:46 +02:00
Mark Qvist
be02586133 Added detach handler to TCP Server Interface 2022-09-06 12:23:52 +02:00
Mark Qvist
383f96d82a Updated version 2022-07-09 15:46:42 +02:00
Mark Qvist
ebef2da7a8 Fixed incorrect allocation size in resource advertisements after switching to 128-bit address space 2022-07-09 15:46:19 +02:00
Mark Qvist
eae788957a Updated version 2022-07-08 12:01:13 +02:00
Mark Qvist
045a9d8451 Fixed a race condition in link establishment flow 2022-07-08 11:14:35 +02:00
Mark Qvist
3d979e2d65 Added Android compatibility to AES proxy class 2022-07-08 00:22:30 +02:00
Mark Qvist
5158613501 Fixed missing config section check 2022-07-08 00:21:48 +02:00
Mark Qvist
8cff18f8ce Improved cache handling 2022-07-02 15:15:47 +02:00
Mark Qvist
5e072affe4 Changed job timing 2022-07-02 13:34:17 +02:00
Mark Qvist
fc4c7638a6 Added cache job scheduler 2022-07-02 13:24:07 +02:00
Mark Qvist
532f9ee665 Added cache cleaning 2022-07-02 13:12:54 +02:00
Mark Qvist
4a725de935 Improved rnx interactive mode 2022-07-02 10:38:35 +02:00
Mark Qvist
2335a71427 Fixed --no-auth option in rncp 2022-07-02 09:48:15 +02:00
Mark Qvist
3e70dd6134 Fixed --no-auth option in rncp 2022-07-02 09:33:05 +02:00
Mark Qvist
d33154bfdb Cleanup 2022-07-02 08:45:40 +02:00
Mark Qvist
bc39a1acf1 Fixed static size index 2022-07-01 21:16:01 +02:00
Mark Qvist
40560a31f2 Version updated 2022-07-01 10:27:31 +02:00
Mark Qvist
2e19304ebf Fixed static length calculation in proof destination generation 2022-06-30 19:33:35 +02:00
Mark Qvist
1cd7c85a52 Cleanup 2022-06-30 19:32:47 +02:00
Mark Qvist
171f43f4e3 Cleanup 2022-06-30 19:32:29 +02:00
Mark Qvist
09a1088437 Added description about Fernet modifications 2022-06-30 19:32:08 +02:00
Mark Qvist
e19438fdcc Added license headers 2022-06-30 19:10:51 +02:00
Mark Qvist
5faf13d505 Expanded address space to 128 bits 2022-06-30 14:02:57 +02:00
Mark Qvist
aa255d0713 Tuned I2PInterface socket timeouts 2022-06-13 15:45:53 +02:00
Mark Qvist
5a8152c589 Fixed I2PInterface status not being set on connectable interfaces 2022-06-12 21:34:54 +02:00
Mark Qvist
8a24dbae40 Added filter option to rnstatus utility 2022-06-12 19:08:47 +02:00
Mark Qvist
2166294a7a Optimised resource transfer speed on faster links 2022-06-12 18:56:49 +02:00
Mark Qvist
8042f5eaa1 Improved log output 2022-06-12 18:55:06 +02:00
Mark Qvist
ae8fcb88d8 Resource timeout tuning 2022-06-12 13:28:05 +02:00
Mark Qvist
d7a444556a Tuned TCP socket options 2022-06-12 11:50:09 +02:00
Mark Qvist
3c81f93d4a Added link accept option to API 2022-06-12 11:49:24 +02:00
Mark Qvist
2685e043ea Fixed missing check for zero-length packets on IFAC-enabled interfaces. Fixes #65. 2022-06-11 18:52:33 +02:00
Mark Qvist
d39c1893e7 Cleanup 2022-06-11 14:11:58 +02:00
Mark Qvist
548cbd50d8 Improved I2PInterface error handling and stability 2022-06-11 13:52:56 +02:00
Mark Qvist
6b06875c42 Fixed potential undefined variable 2022-06-11 13:42:08 +02:00
Mark Qvist
d7262c7cbe Fixed socket leak in I2PInterface 2022-06-11 11:27:01 +02:00
Mark Qvist
8451bbe7e6 Tuned resource window 2022-06-10 18:17:48 +02:00
Mark Qvist
1ac7238347 Cleanup 2022-06-10 17:05:00 +02:00
Mark Qvist
68cd79768b Added internal python-only AES-128-CBC implementation 2022-06-09 21:13:34 +02:00
Mark Qvist
2c1b3a0e5b Optimised resource performance over varied network topologies 2022-06-09 19:29:33 +02:00
Mark Qvist
02968baa76 Added establishment cost property to Link 2022-06-09 19:28:31 +02:00
Mark Qvist
513a82e363 Updated link test 2022-06-09 17:14:43 +02:00
Mark Qvist
be6910e4e0 Work on Resource optimisation 2022-06-09 17:00:27 +02:00
Mark Qvist
0a8b755230 Transport optimisations 2022-06-09 16:54:47 +02:00
Mark Qvist
d334613888 Removed delay 2022-06-09 16:48:31 +02:00
Mark Qvist
14bdcaf770 Added size print function 2022-06-09 14:46:36 +02:00
Mark Qvist
592c405067 Cleanup 2022-06-09 14:46:02 +02:00
Mark Qvist
648e9a68b8 Added profiling info to LocalInterface 2022-06-09 14:45:00 +02:00
Mark Qvist
26dae3830e Fixed unclosed socket in AutoInterface 2022-06-09 08:48:55 +02:00
Mark Qvist
7916b8e7f4 Automatic switch to internal backend on missing PyCA module 2022-06-08 21:25:46 +02:00
Mark Qvist
c46b98f163 Added python-only fallback for SHA-256 and SHA-512 2022-06-08 21:03:58 +02:00
Mark Qvist
86061f9f47 Cleanup 2022-06-08 19:47:51 +02:00
Mark Qvist
e0b795b4d0 Added internal python-only implementation of Ed25519 2022-06-08 19:47:09 +02:00
Mark Qvist
34efbc6100 Cleanup 2022-06-08 17:05:15 +02:00
Mark Qvist
94edc8eff3 Implemented proxies to pyca X25519 2022-06-08 17:03:40 +02:00
Mark Qvist
e2aeb56c12 Renamed file 2022-06-08 15:54:48 +02:00
Mark Qvist
9a4325ce8e Constant time X25519 exchange 2022-06-08 15:52:37 +02:00
Mark Qvist
06fffe5a94 Use internal implementation for X25519 key exchanges 2022-06-08 13:36:23 +02:00
Mark Qvist
7a596882a8 Cleanup 2022-06-08 12:52:42 +02:00
Mark Qvist
76f86f782a Moved Destination Fernet to internal implementation 2022-06-08 12:37:24 +02:00
Mark Qvist
4bd5f05e0e Moved Link Fernet to internal implementation 2022-06-08 12:34:31 +02:00
Mark Qvist
5d3a0efc89 Moved Identity Fernet to internal implementation 2022-06-08 12:29:51 +02:00
Mark Qvist
d1a461a2b3 Added multi-backend abstraction for AES-128 CBC primitive 2022-06-08 12:21:50 +02:00
Mark Qvist
0b1e7df31a Added internal Fernet implementation 2022-06-07 17:38:57 +02:00
Mark Qvist
301661c29e Set SHA-256 as default hash for HMAC 2022-06-07 17:33:08 +02:00
Mark Qvist
b2b6708e8f Added python-only implementation of PKCS7 padding 2022-06-07 17:32:22 +02:00
Mark Qvist
19a033db96 Freed RNS from dependency on PyCA HMAC, HKDF and hashes 2022-06-07 15:48:23 +02:00
Mark Qvist
5bb510b589 Added internal python-only HKDF 2022-06-07 15:26:45 +02:00
Mark Qvist
f1dcda82ac Added internal python-only HMAC implementation 2022-06-07 15:25:41 +02:00
Mark Qvist
d24f3a490a Added internal abstraction to SHA-256 2022-06-07 15:21:19 +02:00
Mark Qvist
715a84c6f2 Moved hashing to native python3 hashlib 2022-06-07 12:51:41 +02:00
Mark Qvist
379e56b2ce Socket option check for OpenWRT compatibility 2022-06-07 12:40:50 +02:00
Mark Qvist
c6df6293b2 Added hardware MTU parameter to interfaces 2022-05-29 15:43:50 +02:00
Mark Qvist
9e20ba2dac Implemented I2PInterface recovery on I2P router restart 2022-05-28 02:24:01 +02:00
Mark Qvist
49ed335e19 Cleanup 2022-05-26 16:52:28 +02:00
Mark Qvist
33fac728f8 Improved link stale process and timeout calculations 2022-05-26 16:49:02 +02:00
Mark Qvist
49616a36cf Fixed I2P controller startup when event loop is not immediately ready 2022-05-26 09:54:56 +02:00
Mark Qvist
1e77f85cd4 Fixed rnx version output 2022-05-26 00:03:37 +02:00
Mark Qvist
9e316ab989 Fixed deprecated options in asyncio API for Python 3.10. Fixes #58. 2022-05-25 23:11:01 +02:00
Mark Qvist
94749e0dde Updated default configs 2022-05-25 23:10:05 +02:00
Mark Qvist
a6dbc53209 Improved status display for I2P interfaces 2022-05-25 21:44:49 +02:00
Mark Qvist
3af5a8f3ed Improved I2P server tunnel error handling. Fixes #13. 2022-05-25 21:23:52 +02:00
Mark Qvist
fb5172ff10 Improved I2P client tunnel error handling 2022-05-25 20:18:06 +02:00
Mark Qvist
d3ab0878e0 Improved I2P interface display in rnstatus 2022-05-25 15:50:54 +02:00
Mark Qvist
7848b7e396 Fixed invalid reference in rnx 2022-05-25 15:08:45 +02:00
Mark Qvist
fc80dd2614 Improved rnstatus output 2022-05-25 14:21:04 +02:00
Mark Qvist
417ac9f8da Added rnx remote command utility 2022-05-24 20:14:43 +02:00
Mark Qvist
fe5e74bc2b Improved rncp arguments 2022-05-24 20:13:54 +02:00
Mark Qvist
30f71857ae Added docstrings. Added request size to receipts. Fixed link stale time calculation on newly created links with no actual activity. 2022-05-24 20:13:11 +02:00
Mark Qvist
c24233845e Implemented bandwidth cap for recursive path requests 2022-05-23 19:49:48 +02:00
Mark Qvist
c0fbde5ad1 Added recursive path request loop avoidance 2022-05-23 18:14:45 +02:00
Mark Qvist
5da66402dd Fixed rncp output 2022-05-23 09:23:37 +02:00
Mark Qvist
3bf5694238 Fixed naming conflict in resource advertisements 2022-05-23 08:54:07 +02:00
Mark Qvist
9e6a5d5d91 Fix announce rate targets on I2PInterface peers 2022-05-23 00:28:06 +02:00
Mark Qvist
cf3e47f469 Fixed interface mode inheritance 2022-05-23 00:06:26 +02:00
Mark Qvist
f8db5a545d Fixed interface mode check 2022-05-23 00:00:14 +02:00
Mark Qvist
a79f6e7efa Added rncp utility 2022-05-22 23:44:32 +02:00
Mark Qvist
d1cb07356c Fixed missing recursive progress callback allocation in segmented resource transfer 2022-05-22 21:05:07 +02:00
Mark Qvist
e811d54d0f Fixed bug in conditional resource acceptance callback 2022-05-22 19:09:44 +02:00
Mark Qvist
49c8ada478 Added standard identity storage folder 2022-05-22 19:09:16 +02:00
Mark Qvist
0ace84367b Improved link authentication callback 2022-05-22 19:08:03 +02:00
Mark Qvist
e63e6821e0 Updated Destination docstrings 2022-05-22 17:11:30 +02:00
Mark Qvist
109132e09d Fixed expired AP and roaming paths not being removed at correct time. 2022-05-22 15:43:46 +02:00
Mark Qvist
44ba5624bc Added gateway mode to rnstatus 2022-05-22 15:16:58 +02:00
Mark Qvist
e9c5e3c189 Version bump 2022-05-22 14:29:29 +02:00
Mark Qvist
f3ff71d9b8 Implemented unknown path discovery 2022-05-22 14:18:58 +02:00
Mark Qvist
81b92ffdc1 Added gateway interface mode 2022-05-22 11:14:33 +02:00
Mark Qvist
ecc9e84bc2 Fixed typo 2022-05-18 00:47:29 +02:00
Mark Qvist
2b43436f56 Updated manual and documentation 2022-05-17 22:12:21 +02:00
Mark Qvist
b2d61843d0 Improved log output 2022-05-17 13:25:42 +02:00
Mark Qvist
d66c31b4e9 Added announce rate information to rnpath utility, added exit codes and improved table lookup. 2022-05-14 22:14:38 +02:00
Mark Qvist
e825b0b8ff Added Pipe Interface 2022-05-14 20:19:46 +02:00
Mark Qvist
3871d8615e Added per-interface announce rate control 2022-05-14 18:09:38 +02:00
Mark Qvist
8636259886 Added roaming and boundary interface modes 2022-05-13 21:03:51 +02:00
Mark Qvist
af1a05ff6a Added announce queue dropping to rnpath utility 2022-05-13 16:18:13 +02:00
Mark Qvist
1b50f5267a Improved announce queue processing 2022-05-13 15:45:09 +02:00
Mark Qvist
600bd0e64d Updated documentation 2022-04-28 14:17:12 +02:00
Mark Qvist
123fd1de92 Configure IFAC size in bits 2022-04-28 11:51:04 +02:00
Mark Qvist
b8ca89c2b6 Cleanup 2022-04-28 10:58:26 +02:00
Mark Qvist
79725a1637 Cleanup 2022-04-28 10:56:19 +02:00
Mark Qvist
1a2da0d7c7 Drop IFAC packets on non-IFAC interfaces 2022-04-28 10:38:34 +02:00
Mark Qvist
5d90ea565a Implemented interface authentication and virtual network segmentation 2022-04-27 19:00:09 +02:00
Mark Qvist
b701cdd07f Generalised transport transmit handler 2022-04-27 13:50:56 +02:00
Mark Qvist
8e5b3b4e83 Cleanup 2022-04-27 13:31:44 +02:00
Mark Qvist
24b7cb777f Cleanup 2022-04-27 13:31:07 +02:00
Mark Qvist
cf1ca01a3b Configuration support for interface access codes 2022-04-27 13:21:53 +02:00
Mark Qvist
7c70f9d865 Set IFAC parameters on spawned interfaces 2022-04-27 13:20:46 +02:00
Mark Qvist
6cf9288b11 Improved AutoInterface peering timeout 2022-04-27 13:19:48 +02:00
Mark Qvist
ecffa1a7eb Cleanup 2022-04-20 20:28:14 +02:00
Mark Qvist
9fef53d083 Updated propagation timing 2022-04-20 20:06:44 +02:00
Mark Qvist
0db64610b1 Added reverse path detection 2022-04-20 19:29:25 +02:00
Mark Qvist
4af14a712c Added timeout to rnpath utility 2022-04-20 13:40:07 +02:00
Mark Qvist
402b5fc461 Random hash length from truncated hash length 2022-04-20 13:08:21 +02:00
Mark Qvist
38aeb1ab3b Improved logging 2022-04-20 12:58:00 +02:00
Mark Qvist
b0a21b3aa9 Improved logging 2022-04-20 12:56:43 +02:00
Mark Qvist
5e6a1add6b Improved logging and rnpath output 2022-04-20 11:22:52 +02:00
Mark Qvist
104b186047 Added drop path ability to rnpath utility 2022-04-20 11:12:21 +02:00
Mark Qvist
6d23da360d Added path table output to rnpath utility 2022-04-20 10:40:51 +02:00
Mark Qvist
1be00a5c41 Improved announce logging 2022-04-20 10:08:55 +02:00
Mark Qvist
71e5eef8c1 Improved announce logging 2022-04-20 10:08:30 +02:00
Mark Qvist
b3a439993d Improved rnstatus output 2022-04-20 09:59:58 +02:00
Mark Qvist
5606b64317 Improved transport logging 2022-04-20 09:24:48 +02:00
Mark Qvist
3d38ef27d4 Improved announce logging 2022-04-20 09:04:12 +02:00
Mark Qvist
d53e8cf037 Bitrate guess on TCP and UDP interfaces 2022-04-18 18:09:31 +02:00
Mark Qvist
da297aeb64 Changed log level 2022-04-18 16:54:35 +02:00
Mark Qvist
282239fc57 Added interface announce queue stats to rnstatus 2022-04-18 16:41:38 +02:00
Mark Qvist
222437d851 Version bump 2022-04-18 16:26:08 +02:00
Mark Qvist
c9de260e00 Cleanup 2022-04-18 16:25:11 +02:00
Mark Qvist
31104c6e9c Implemented bandwidth-based announce propagation calculation 2022-04-18 16:23:24 +02:00
Mark Qvist
64593e27be Added announce cap setting 2022-04-17 20:14:20 +02:00
Mark Qvist
124ec006b4 Auto-set sensible interface rate defaults 2022-04-17 19:35:31 +02:00
Mark Qvist
dd55899775 Improved I2P interface display in rnstatus 2022-04-17 19:35:05 +02:00
Mark Qvist
cc0c01661d Fixed a possible race condition in Transport startup when a local shared instance was restarted and client apps reconnect 2022-04-17 19:34:12 +02:00
Mark Qvist
5f36c8601f Improved rnstatus utility display 2022-04-17 19:08:48 +02:00
Mark Qvist
2f71296816 Basic interface rate estimation 2022-04-17 19:07:32 +02:00
Mark Qvist
7923322d92 Linearized announce propagation delays for supporting up to 128 hops 2022-04-17 18:27:35 +02:00
Mark Qvist
fef5ed6bad Cleanup 2022-04-17 17:37:27 +02:00
Mark Qvist
059b0743ef Improved rnstatus util display 2022-04-17 17:30:39 +02:00
Mark Qvist
4d4d39651f Improved rnstatus util display 2022-04-16 23:26:57 +02:00
Mark Qvist
6a1e6417bb Updated logging 2022-04-16 16:44:10 +02:00
Mark Qvist
39f1258d0e Added interface mode config shorthands 2022-04-16 16:42:59 +02:00
Mark Qvist
03d3478b5e Added interface mode shorthand 2022-04-15 22:13:59 +02:00
Mark Qvist
ee90605b30 Tweaked decay constant 2022-04-07 19:00:07 +02:00
Mark Qvist
04540f6e48 Changed config description 2022-04-06 15:51:27 +02:00
Mark Qvist
dc6877927e Updated license headers 2022-04-01 17:18:18 +02:00
Mark Qvist
7398e312fc Updated version 2022-03-28 15:20:14 +02:00
Mark Qvist
3051b6897d Updated filtering rules. Fixes #18. 2022-03-15 14:55:47 +01:00
Mark Qvist
550dfd44cb Improved cryptography API compatibility 2022-03-08 00:38:51 +01:00
Mark Qvist
95d3346da6 Fixed I2P interface missing attribute 2022-02-26 21:37:50 +01:00
Mark Qvist
d4aabc8b89 Added I2P base32 address output to rnstatus utility 2022-02-26 21:04:54 +01:00
Mark Qvist
cb023cde40 Fixed potential race condition in resource assembly 2022-02-26 18:27:11 +01:00
Mark Qvist
b8105e23ff Fixed TCP interface mode reference 2022-02-25 22:10:55 +01:00
Mark Qvist
4dfa62833c Restructured default config 2022-02-25 21:48:25 +01:00
Mark Qvist
15d027e11e Restructured default config and added config example to rnsd 2022-02-25 21:41:24 +01:00
Mark Qvist
f8272793b4 Tuned AutoInterface timeouts 2022-02-25 20:29:47 +01:00