mirror of
https://github.com/markqvist/Reticulum.git
synced 2024-11-22 21:50:18 +00:00
Compare commits
5 Commits
680d17fb98
...
e28dbd4afa
Author | SHA1 | Date | |
---|---|---|---|
|
e28dbd4afa | ||
|
8626dcd69f | ||
|
e34f21f4dc | ||
|
f692e81b8e | ||
|
28e43b52f9 |
@ -48,6 +48,11 @@ class AutoInterface(Interface):
|
|||||||
|
|
||||||
BITRATE_GUESS = 10*1000*1000
|
BITRATE_GUESS = 10*1000*1000
|
||||||
|
|
||||||
|
def handler_factory(self, callback):
|
||||||
|
def create_handler(*args, **keys):
|
||||||
|
return AutoInterfaceHandler(callback, *args, **keys)
|
||||||
|
return create_handler
|
||||||
|
|
||||||
def __init__(self, owner, name, group_id=None, discovery_scope=None, discovery_port=None, data_port=None, allowed_interfaces=None, ignored_interfaces=None, configured_bitrate=None):
|
def __init__(self, owner, name, group_id=None, discovery_scope=None, discovery_port=None, data_port=None, allowed_interfaces=None, ignored_interfaces=None, configured_bitrate=None):
|
||||||
import importlib
|
import importlib
|
||||||
if importlib.util.find_spec('netifaces') != None:
|
if importlib.util.find_spec('netifaces') != None:
|
||||||
@ -70,6 +75,7 @@ class AutoInterface(Interface):
|
|||||||
self.peers = {}
|
self.peers = {}
|
||||||
self.link_local_addresses = []
|
self.link_local_addresses = []
|
||||||
self.adopted_interfaces = {}
|
self.adopted_interfaces = {}
|
||||||
|
self.interface_servers = {}
|
||||||
self.multicast_echoes = {}
|
self.multicast_echoes = {}
|
||||||
self.timed_out_interfaces = {}
|
self.timed_out_interfaces = {}
|
||||||
|
|
||||||
@ -199,11 +205,6 @@ class AutoInterface(Interface):
|
|||||||
peering_wait = self.announce_interval*1.2
|
peering_wait = self.announce_interval*1.2
|
||||||
RNS.log(str(self)+" discovering peers for "+str(round(peering_wait, 2))+" seconds...", RNS.LOG_VERBOSE)
|
RNS.log(str(self)+" discovering peers for "+str(round(peering_wait, 2))+" seconds...", RNS.LOG_VERBOSE)
|
||||||
|
|
||||||
def handlerFactory(callback):
|
|
||||||
def createHandler(*args, **keys):
|
|
||||||
return AutoInterfaceHandler(callback, *args, **keys)
|
|
||||||
return createHandler
|
|
||||||
|
|
||||||
self.owner = owner
|
self.owner = owner
|
||||||
socketserver.UDPServer.address_family = socket.AF_INET6
|
socketserver.UDPServer.address_family = socket.AF_INET6
|
||||||
|
|
||||||
@ -212,9 +213,10 @@ class AutoInterface(Interface):
|
|||||||
addr_info = socket.getaddrinfo(local_addr, self.data_port, socket.AF_INET6, socket.SOCK_DGRAM)
|
addr_info = socket.getaddrinfo(local_addr, self.data_port, socket.AF_INET6, socket.SOCK_DGRAM)
|
||||||
address = addr_info[0][4]
|
address = addr_info[0][4]
|
||||||
|
|
||||||
self.server = socketserver.UDPServer(address, handlerFactory(self.processIncoming))
|
udp_server = socketserver.UDPServer(address, self.handler_factory(self.processIncoming))
|
||||||
|
self.interface_servers[ifname] = udp_server
|
||||||
|
|
||||||
thread = threading.Thread(target=self.server.serve_forever)
|
thread = threading.Thread(target=udp_server.serve_forever)
|
||||||
thread.daemon = True
|
thread.daemon = True
|
||||||
thread.start()
|
thread.start()
|
||||||
|
|
||||||
@ -277,8 +279,32 @@ class AutoInterface(Interface):
|
|||||||
if address["addr"].startswith("fe80:"):
|
if address["addr"].startswith("fe80:"):
|
||||||
link_local_addr = address["addr"].split("%")[0]
|
link_local_addr = address["addr"].split("%")[0]
|
||||||
if link_local_addr != self.adopted_interfaces[ifname]:
|
if link_local_addr != self.adopted_interfaces[ifname]:
|
||||||
|
# TODO: Remove
|
||||||
|
# RNS.log("Replacing link-local address for "+str(ifname), RNS.LOG_DEBUG)
|
||||||
self.adopted_interfaces[ifname] = link_local_addr
|
self.adopted_interfaces[ifname] = link_local_addr
|
||||||
|
|
||||||
|
local_addr = link_local_addr+"%"+ifname
|
||||||
|
addr_info = socket.getaddrinfo(local_addr, self.data_port, socket.AF_INET6, socket.SOCK_DGRAM)
|
||||||
|
listen_address = addr_info[0][4]
|
||||||
|
|
||||||
|
if ifname in self.interface_servers:
|
||||||
|
# TODO: Remove
|
||||||
|
# RNS.log("Shutting down previous UDP socket server for "+str(ifname), RNS.LOG_DEBUG)
|
||||||
|
previous_server = self.interface_servers[ifname]
|
||||||
|
def shutdown_server():
|
||||||
|
previous_server.shutdown()
|
||||||
|
threading.Thread(target=shutdown_server, daemon=True).start()
|
||||||
|
|
||||||
|
# TODO: Remove
|
||||||
|
# RNS.log("Starting new UDP socket server for "+str(ifname), RNS.LOG_DEBUG)
|
||||||
|
|
||||||
|
udp_server = socketserver.UDPServer(listen_address, self.handler_factory(self.processIncoming))
|
||||||
|
self.interface_servers[ifname] = udp_server
|
||||||
|
|
||||||
|
thread = threading.Thread(target=udp_server.serve_forever)
|
||||||
|
thread.daemon = True
|
||||||
|
thread.start()
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
RNS.log("Could not get device information while updating link-local addresses for "+str(self)+". The contained exception was: "+str(e), RNS.LOG_ERROR)
|
RNS.log("Could not get device information while updating link-local addresses for "+str(self)+". The contained exception was: "+str(e), RNS.LOG_ERROR)
|
||||||
|
|
||||||
|
15
Roadmap.md
15
Roadmap.md
@ -31,6 +31,7 @@ These efforts are aimed at improving the ease of which Reticulum is understood,
|
|||||||
## Universality
|
## Universality
|
||||||
These efforts seek to broaden the universality of the Reticulum software and hardware ecosystem by continously diversifying platform support, and by improving the overall availability and ease of deployment of the Reticulum stack.
|
These efforts seek to broaden the universality of the Reticulum software and hardware ecosystem by continously diversifying platform support, and by improving the overall availability and ease of deployment of the Reticulum stack.
|
||||||
|
|
||||||
|
- Improved roaming support on Android
|
||||||
- OpenWRT support
|
- OpenWRT support
|
||||||
- Create a standalone RNS Daemon app for Android
|
- Create a standalone RNS Daemon app for Android
|
||||||
- A lightweight and portable C implementation for microcontrollers, µRNS
|
- A lightweight and portable C implementation for microcontrollers, µRNS
|
||||||
@ -84,18 +85,22 @@ These efforts aim to expand the types of physical and virtual interfaces that Re
|
|||||||
- Tor
|
- Tor
|
||||||
|
|
||||||
## Active Work Areas
|
## Active Work Areas
|
||||||
For each release cycle of Reticulum, improvements and additions from the five areas are selected as active work areas, and can be expected to be included in the next release. While not entirely set in stone for each release cycle, they serve as a pointer of what to expect in the next release.
|
For each release cycle of Reticulum, improvements and additions from the five areas are selected as active work areas, and can be expected to be included in the upcoming releases within that cycle. While not entirely set in stone for each release cycle, they serve as a pointer of what to expect in the near future.
|
||||||
|
|
||||||
- Version `0.4.3` targets:
|
- The current `0.4.x` release cycle aims at completing:
|
||||||
|
- [x] Improve storage persist call on local client connect/disconnect
|
||||||
|
- [x] Improved roaming support on Android
|
||||||
- [ ] Updating the documentation to reflect recent changes and improvements
|
- [ ] Updating the documentation to reflect recent changes and improvements
|
||||||
- [ ] Add bluetooth pairing code output to rnodeconf
|
- [ ] Add bluetooth pairing code output to rnodeconf
|
||||||
- [ ] Improve storage persist call on every local client connect/disconnect
|
- [ ] Improve storage persist call on every local client connect/disconnect
|
||||||
|
- [ ] Transit traffic display in rnstatus
|
||||||
- [ ] JSON output mode for rnstatus
|
- [ ] JSON output mode for rnstatus
|
||||||
- [ ] rnid utility
|
- [ ] Add `rnid` utility
|
||||||
- [ ] rnsign utility
|
- [ ] Add `rnsign` utility
|
||||||
- [ ] rncrypt utility
|
- [ ] Add `rncrypt` utility
|
||||||
- [ ] Create a standalone RNS Daemon app for Android
|
- [ ] Create a standalone RNS Daemon app for Android
|
||||||
- Targets for related applications
|
- Targets for related applications
|
||||||
- [x] Add paper offline & paper message transport to LXMF
|
- [x] Add paper offline & paper message transport to LXMF
|
||||||
- [x] Implement paper messaging in Nomad Network
|
- [x] Implement paper messaging in Nomad Network
|
||||||
- [x] Implement paper messaging in Sideband
|
- [x] Implement paper messaging in Sideband
|
||||||
|
- [x] Expand device support in Sideband to support older Android devices
|
||||||
|
Binary file not shown.
Loading…
Reference in New Issue
Block a user