Merge branch 'master' of https://git.unsigned.io/markqvist/Reticulum
This commit is contained in:
commit
ce91c34b21
@ -23,8 +23,8 @@ APP_NAME = "example_utilities"
|
|||||||
# A reference to the latest client link that connected
|
# A reference to the latest client link that connected
|
||||||
latest_client_link = None
|
latest_client_link = None
|
||||||
|
|
||||||
def random_text_generator(path, data, request_id, remote_identity, requested_at):
|
def random_text_generator(path, data, request_id, link_id, remote_identity, requested_at):
|
||||||
RNS.log("Generating response to request "+RNS.prettyhexrep(request_id))
|
RNS.log("Generating response to request "+RNS.prettyhexrep(request_id)+" on link "+RNS.prettyhexrep(link_id))
|
||||||
texts = ["They looked up", "On each full moon", "Becky was upset", "I’ll stay away from it", "The pet shop stocks everything"]
|
texts = ["They looked up", "On each full moon", "Becky was upset", "I’ll stay away from it", "The pet shop stocks everything"]
|
||||||
return texts[random.randint(0, len(texts)-1)]
|
return texts[random.randint(0, len(texts)-1)]
|
||||||
|
|
||||||
|
@ -296,7 +296,7 @@ class Destination:
|
|||||||
Registers a request handler.
|
Registers a request handler.
|
||||||
|
|
||||||
:param path: The path for the request handler to be registered.
|
:param path: The path for the request handler to be registered.
|
||||||
:param response_generator: A function or method with the signature *response_generator(path, data, request_id, remote_identity, requested_at)* to be called. Whatever this funcion returns will be sent as a response to the requester. If the function returns ``None``, no response will be sent.
|
:param response_generator: A function or method with the signature *response_generator(path, data, request_id, link_id, remote_identity, requested_at)* to be called. Whatever this funcion returns will be sent as a response to the requester. If the function returns ``None``, no response will be sent.
|
||||||
:param allow: One of ``RNS.Destination.ALLOW_NONE``, ``RNS.Destination.ALLOW_ALL`` or ``RNS.Destination.ALLOW_LIST``. If ``RNS.Destination.ALLOW_LIST`` is set, the request handler will only respond to requests for identified peers in the supplied list.
|
:param allow: One of ``RNS.Destination.ALLOW_NONE``, ``RNS.Destination.ALLOW_ALL`` or ``RNS.Destination.ALLOW_LIST``. If ``RNS.Destination.ALLOW_LIST`` is set, the request handler will only respond to requests for identified peers in the supplied list.
|
||||||
:param allowed_list: A list of *bytes-like* :ref:`RNS.Identity<api-identity>` hashes.
|
:param allowed_list: A list of *bytes-like* :ref:`RNS.Identity<api-identity>` hashes.
|
||||||
:raises: ``ValueError`` if any of the supplied arguments are invalid.
|
:raises: ``ValueError`` if any of the supplied arguments are invalid.
|
||||||
|
@ -26,6 +26,7 @@ from RNS.Cryptography import Fernet
|
|||||||
from time import sleep
|
from time import sleep
|
||||||
from .vendor import umsgpack as umsgpack
|
from .vendor import umsgpack as umsgpack
|
||||||
import threading
|
import threading
|
||||||
|
import inspect
|
||||||
import math
|
import math
|
||||||
import time
|
import time
|
||||||
import RNS
|
import RNS
|
||||||
@ -568,7 +569,13 @@ class Link:
|
|||||||
|
|
||||||
if allowed:
|
if allowed:
|
||||||
RNS.log("Handling request "+RNS.prettyhexrep(request_id)+" for: "+str(path), RNS.LOG_DEBUG)
|
RNS.log("Handling request "+RNS.prettyhexrep(request_id)+" for: "+str(path), RNS.LOG_DEBUG)
|
||||||
response = response_generator(path, request_data, request_id, self.__remote_identity, requested_at)
|
if len(inspect.signature(response_generator).parameters) == 5:
|
||||||
|
response = response_generator(path, request_data, request_id, self.__remote_identity, requested_at)
|
||||||
|
elif len(inspect.signature(response_generator).parameters) == 6:
|
||||||
|
response = response_generator(path, request_data, request_id, self.link_id, self.__remote_identity, requested_at)
|
||||||
|
else:
|
||||||
|
raise TypeError("Invalid signature for response generator callback")
|
||||||
|
|
||||||
if response != None:
|
if response != None:
|
||||||
packed_response = umsgpack.packb([request_id, response])
|
packed_response = umsgpack.packb([request_id, response])
|
||||||
|
|
||||||
|
@ -1387,8 +1387,8 @@ def main():
|
|||||||
print(" / \\ Select this option if you have put toghether an RNode")
|
print(" / \\ Select this option if you have put toghether an RNode")
|
||||||
print(" | of your own design, or if you are prototyping one.")
|
print(" | of your own design, or if you are prototyping one.")
|
||||||
print("")
|
print("")
|
||||||
print("[3] LilyGO LoRa32 v2.1 (aka T3 v1.6.1)")
|
print("[3] LilyGO LoRa32 v2.1 (aka T3 v1.6 / T3 v1.6.1)")
|
||||||
print("[4] LilyGO LoRa32 v2.0 (aka T3 v1.6)")
|
print("[4] LilyGO LoRa32 v2.0")
|
||||||
print("[5] LilyGO T-Beam")
|
print("[5] LilyGO T-Beam")
|
||||||
print("[6] Heltec LoRa32 v2")
|
print("[6] Heltec LoRa32 v2")
|
||||||
print(" .")
|
print(" .")
|
||||||
|
@ -20,6 +20,7 @@ For each release cycle of Reticulum, improvements and additions from the five [P
|
|||||||
- [x] Improved roaming support on Android
|
- [x] Improved roaming support on Android
|
||||||
- [x] Add bluetooth pairing code output to rnodeconf
|
- [x] Add bluetooth pairing code output to rnodeconf
|
||||||
- [x] Add `rnid` utility with encryption, signing and Identity funcionality
|
- [x] Add `rnid` utility with encryption, signing and Identity funcionality
|
||||||
|
- [ ] Add automatic retries to all use cases of the `Request` API
|
||||||
- [ ] Updating the documentation to reflect recent changes and improvements
|
- [ ] Updating the documentation to reflect recent changes and improvements
|
||||||
- [ ] Transit traffic display in rnstatus
|
- [ ] Transit traffic display in rnstatus
|
||||||
- [ ] JSON output mode for rnstatus
|
- [ ] JSON output mode for rnstatus
|
||||||
@ -77,6 +78,7 @@ These efforts seek to broaden the universality of the Reticulum software and har
|
|||||||
These efforts aim to expand and improve the core functionality and reliability of Reticulum.
|
These efforts aim to expand and improve the core functionality and reliability of Reticulum.
|
||||||
|
|
||||||
- Improve storage persist call on local client connect/disconnect
|
- Improve storage persist call on local client connect/disconnect
|
||||||
|
- Add automatic retries to all use cases of the `Request` API
|
||||||
- Faster path invalidation on physical topography changes
|
- Faster path invalidation on physical topography changes
|
||||||
- Better path invalidation on roaming interfaces
|
- Better path invalidation on roaming interfaces
|
||||||
- Add a `Buffer` class to the API, for handling stream-like buffers over Reticulum
|
- Add a `Buffer` class to the API, for handling stream-like buffers over Reticulum
|
||||||
|
@ -234,7 +234,7 @@ chapter for a guide. If you prefer purchasing a ready-made unit, you can refer t
|
|||||||
refer to these additional external resources:
|
refer to these additional external resources:
|
||||||
|
|
||||||
* `How To Make Your Own RNodes <https://unsigned.io/how-to-make-your-own-rnodes/>`_
|
* `How To Make Your Own RNodes <https://unsigned.io/how-to-make-your-own-rnodes/>`_
|
||||||
* `Installing RNode Firmware on Compatible LoRa Devices <https://unsigned.io/installing-rnode-firmware-on-t-beam-and-lora32-devices/>`_
|
* `Installing RNode Firmware on Compatible LoRa Devices <https://unsigned.io/installing-rnode-firmware-on-supported-devices/>`_
|
||||||
* `Private, Secure and Uncensorable Messaging Over a LoRa Mesh <https://unsigned.io/private-messaging-over-lora/>`_
|
* `Private, Secure and Uncensorable Messaging Over a LoRa Mesh <https://unsigned.io/private-messaging-over-lora/>`_
|
||||||
* `RNode Firmware <https://github.com/markqvist/RNode_Firmware/>`_
|
* `RNode Firmware <https://github.com/markqvist/RNode_Firmware/>`_
|
||||||
|
|
||||||
|
@ -1632,8 +1632,8 @@ the link has been established.</p>
|
|||||||
<span class="c1"># A reference to the latest client link that connected</span>
|
<span class="c1"># A reference to the latest client link that connected</span>
|
||||||
<span class="n">latest_client_link</span> <span class="o">=</span> <span class="kc">None</span>
|
<span class="n">latest_client_link</span> <span class="o">=</span> <span class="kc">None</span>
|
||||||
|
|
||||||
<span class="k">def</span> <span class="nf">random_text_generator</span><span class="p">(</span><span class="n">path</span><span class="p">,</span> <span class="n">data</span><span class="p">,</span> <span class="n">request_id</span><span class="p">,</span> <span class="n">remote_identity</span><span class="p">,</span> <span class="n">requested_at</span><span class="p">):</span>
|
<span class="k">def</span> <span class="nf">random_text_generator</span><span class="p">(</span><span class="n">path</span><span class="p">,</span> <span class="n">data</span><span class="p">,</span> <span class="n">request_id</span><span class="p">,</span> <span class="n">link_id</span><span class="p">,</span> <span class="n">remote_identity</span><span class="p">,</span> <span class="n">requested_at</span><span class="p">):</span>
|
||||||
<span class="n">RNS</span><span class="o">.</span><span class="n">log</span><span class="p">(</span><span class="s2">"Generating response to request "</span><span class="o">+</span><span class="n">RNS</span><span class="o">.</span><span class="n">prettyhexrep</span><span class="p">(</span><span class="n">request_id</span><span class="p">))</span>
|
<span class="n">RNS</span><span class="o">.</span><span class="n">log</span><span class="p">(</span><span class="s2">"Generating response to request "</span><span class="o">+</span><span class="n">RNS</span><span class="o">.</span><span class="n">prettyhexrep</span><span class="p">(</span><span class="n">request_id</span><span class="p">)</span><span class="o">+</span><span class="s2">" on link "</span><span class="o">+</span><span class="n">RNS</span><span class="o">.</span><span class="n">prettyhexrep</span><span class="p">(</span><span class="n">link_id</span><span class="p">))</span>
|
||||||
<span class="n">texts</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"They looked up"</span><span class="p">,</span> <span class="s2">"On each full moon"</span><span class="p">,</span> <span class="s2">"Becky was upset"</span><span class="p">,</span> <span class="s2">"I’ll stay away from it"</span><span class="p">,</span> <span class="s2">"The pet shop stocks everything"</span><span class="p">]</span>
|
<span class="n">texts</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"They looked up"</span><span class="p">,</span> <span class="s2">"On each full moon"</span><span class="p">,</span> <span class="s2">"Becky was upset"</span><span class="p">,</span> <span class="s2">"I’ll stay away from it"</span><span class="p">,</span> <span class="s2">"The pet shop stocks everything"</span><span class="p">]</span>
|
||||||
<span class="k">return</span> <span class="n">texts</span><span class="p">[</span><span class="n">random</span><span class="o">.</span><span class="n">randint</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="nb">len</span><span class="p">(</span><span class="n">texts</span><span class="p">)</span><span class="o">-</span><span class="mi">1</span><span class="p">)]</span>
|
<span class="k">return</span> <span class="n">texts</span><span class="p">[</span><span class="n">random</span><span class="o">.</span><span class="n">randint</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="nb">len</span><span class="p">(</span><span class="n">texts</span><span class="p">)</span><span class="o">-</span><span class="mi">1</span><span class="p">)]</span>
|
||||||
|
|
||||||
|
@ -404,7 +404,7 @@ chapter for a guide. If you prefer purchasing a ready-made unit, you can refer t
|
|||||||
refer to these additional external resources:</p>
|
refer to these additional external resources:</p>
|
||||||
<ul class="simple">
|
<ul class="simple">
|
||||||
<li><p><a class="reference external" href="https://unsigned.io/how-to-make-your-own-rnodes/">How To Make Your Own RNodes</a></p></li>
|
<li><p><a class="reference external" href="https://unsigned.io/how-to-make-your-own-rnodes/">How To Make Your Own RNodes</a></p></li>
|
||||||
<li><p><a class="reference external" href="https://unsigned.io/installing-rnode-firmware-on-t-beam-and-lora32-devices/">Installing RNode Firmware on Compatible LoRa Devices</a></p></li>
|
<li><p><a class="reference external" href="https://unsigned.io/installing-rnode-firmware-on-supported-devices/">Installing RNode Firmware on Compatible LoRa Devices</a></p></li>
|
||||||
<li><p><a class="reference external" href="https://unsigned.io/private-messaging-over-lora/">Private, Secure and Uncensorable Messaging Over a LoRa Mesh</a></p></li>
|
<li><p><a class="reference external" href="https://unsigned.io/private-messaging-over-lora/">Private, Secure and Uncensorable Messaging Over a LoRa Mesh</a></p></li>
|
||||||
<li><p><a class="reference external" href="https://github.com/markqvist/RNode_Firmware/">RNode Firmware</a></p></li>
|
<li><p><a class="reference external" href="https://github.com/markqvist/RNode_Firmware/">RNode Firmware</a></p></li>
|
||||||
</ul>
|
</ul>
|
||||||
|
@ -720,7 +720,7 @@ proofs should be returned for received packets.</p>
|
|||||||
<dt class="field-odd">Parameters</dt>
|
<dt class="field-odd">Parameters</dt>
|
||||||
<dd class="field-odd"><ul class="simple">
|
<dd class="field-odd"><ul class="simple">
|
||||||
<li><p><strong>path</strong> – The path for the request handler to be registered.</p></li>
|
<li><p><strong>path</strong> – The path for the request handler to be registered.</p></li>
|
||||||
<li><p><strong>response_generator</strong> – A function or method with the signature <em>response_generator(path, data, request_id, remote_identity, requested_at)</em> to be called. Whatever this funcion returns will be sent as a response to the requester. If the function returns <code class="docutils literal notranslate"><span class="pre">None</span></code>, no response will be sent.</p></li>
|
<li><p><strong>response_generator</strong> – A function or method with the signature <em>response_generator(path, data, request_id, link_id, remote_identity, requested_at)</em> to be called. Whatever this funcion returns will be sent as a response to the requester. If the function returns <code class="docutils literal notranslate"><span class="pre">None</span></code>, no response will be sent.</p></li>
|
||||||
<li><p><strong>allow</strong> – One of <code class="docutils literal notranslate"><span class="pre">RNS.Destination.ALLOW_NONE</span></code>, <code class="docutils literal notranslate"><span class="pre">RNS.Destination.ALLOW_ALL</span></code> or <code class="docutils literal notranslate"><span class="pre">RNS.Destination.ALLOW_LIST</span></code>. If <code class="docutils literal notranslate"><span class="pre">RNS.Destination.ALLOW_LIST</span></code> is set, the request handler will only respond to requests for identified peers in the supplied list.</p></li>
|
<li><p><strong>allow</strong> – One of <code class="docutils literal notranslate"><span class="pre">RNS.Destination.ALLOW_NONE</span></code>, <code class="docutils literal notranslate"><span class="pre">RNS.Destination.ALLOW_ALL</span></code> or <code class="docutils literal notranslate"><span class="pre">RNS.Destination.ALLOW_LIST</span></code>. If <code class="docutils literal notranslate"><span class="pre">RNS.Destination.ALLOW_LIST</span></code> is set, the request handler will only respond to requests for identified peers in the supplied list.</p></li>
|
||||||
<li><p><strong>allowed_list</strong> – A list of <em>bytes-like</em> <a class="reference internal" href="#api-identity"><span class="std std-ref">RNS.Identity</span></a> hashes.</p></li>
|
<li><p><strong>allowed_list</strong> – A list of <em>bytes-like</em> <a class="reference internal" href="#api-identity"><span class="std std-ref">RNS.Identity</span></a> hashes.</p></li>
|
||||||
</ul>
|
</ul>
|
||||||
|
File diff suppressed because one or more lines are too long
@ -234,7 +234,7 @@ chapter for a guide. If you prefer purchasing a ready-made unit, you can refer t
|
|||||||
refer to these additional external resources:
|
refer to these additional external resources:
|
||||||
|
|
||||||
* `How To Make Your Own RNodes <https://unsigned.io/how-to-make-your-own-rnodes/>`_
|
* `How To Make Your Own RNodes <https://unsigned.io/how-to-make-your-own-rnodes/>`_
|
||||||
* `Installing RNode Firmware on Compatible LoRa Devices <https://unsigned.io/installing-rnode-firmware-on-t-beam-and-lora32-devices/>`_
|
* `Installing RNode Firmware on Compatible LoRa Devices <https://unsigned.io/installing-rnode-firmware-on-supported-devices/>`_
|
||||||
* `Private, Secure and Uncensorable Messaging Over a LoRa Mesh <https://unsigned.io/private-messaging-over-lora/>`_
|
* `Private, Secure and Uncensorable Messaging Over a LoRa Mesh <https://unsigned.io/private-messaging-over-lora/>`_
|
||||||
* `RNode Firmware <https://github.com/markqvist/RNode_Firmware/>`_
|
* `RNode Firmware <https://github.com/markqvist/RNode_Firmware/>`_
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user