Added LXMF message ingestion

This commit is contained in:
Mark Qvist 2021-05-04 11:09:41 +02:00
parent 07a62dd08d
commit ac81f0768a
2 changed files with 47 additions and 6 deletions

View File

@ -1,7 +1,9 @@
import os import os
import time
import atexit import atexit
import RNS import RNS
import LXMF
import nomadnet import nomadnet
from ._version import __version__ from ._version import __version__
@ -31,12 +33,13 @@ class NomadNetworkApp:
if NomadNetworkApp._shared_instance == None: if NomadNetworkApp._shared_instance == None:
NomadNetworkApp._shared_instance = self NomadNetworkApp._shared_instance = self
self.configpath = self.configdir+"/config" self.configpath = self.configdir+"/config"
self.logfilepath = self.configdir+"/logfile" self.logfilepath = self.configdir+"/logfile"
self.storagepath = self.configdir+"/storage" self.storagepath = self.configdir+"/storage"
self.identitypath = self.configdir+"/storage/identity" self.identitypath = self.configdir+"/storage/identity"
self.cachepath = self.configdir+"/storage/cache" self.cachepath = self.configdir+"/storage/cache"
self.resourcepath = self.configdir+"/storage/resources" self.resourcepath = self.configdir+"/storage/resources"
self.conversationpath = self.configdir+"/storage/conversations"
if not os.path.isdir(self.storagepath): if not os.path.isdir(self.storagepath):
os.makedirs(self.storagepath) os.makedirs(self.storagepath)
@ -47,6 +50,9 @@ class NomadNetworkApp:
if not os.path.isdir(self.resourcepath): if not os.path.isdir(self.resourcepath):
os.makedirs(self.resourcepath) os.makedirs(self.resourcepath)
if not os.path.isdir(self.conversationpath):
os.makedirs(self.conversationpath)
if os.path.isfile(self.configpath): if os.path.isfile(self.configpath):
try: try:
self.config = ConfigObj(self.configpath) self.config = ConfigObj(self.configpath)
@ -93,9 +99,43 @@ class NomadNetworkApp:
self.rns = RNS.Reticulum(configdir = rnsconfigdir) self.rns = RNS.Reticulum(configdir = rnsconfigdir)
atexit.register(self.exit_handler) atexit.register(self.exit_handler)
self.message_router = LXMF.LXMRouter()
self.message_router.register_delivery_callback(self.lxmf_delivery)
self.lxmf_destination = self.message_router.register_delivery_identity(self.identity)
RNS.log("LXMF Router ready to receive on: "+RNS.prettyhexrep(self.lxmf_destination.hash))
self.ui = nomadnet.ui.spawn(self.uimode) self.ui = nomadnet.ui.spawn(self.uimode)
def lxmf_delivery(self, message):
time_string = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(message.timestamp))
signature_string = "Signature is invalid, reason undetermined"
if message.signature_validated:
signature_string = "Validated"
else:
if message.unverified_reason == LXMF.LXMessage.SIGNATURE_INVALID:
signature_string = "Invalid signature"
if message.unverified_reason == LXMF.LXMessage.SOURCE_UNKNOWN:
signature_string = "Cannot verify, source is unknown"
nomadnet.Conversation.ingest(message, self)
# RNS.log("\t+--- LXMF Delivery ---------------------------------------------")
# RNS.log("\t| Message ID : "+RNS.prettyhexrep(message.hash))
# RNS.log("\t| Source hash : "+RNS.prettyhexrep(message.source_hash))
# RNS.log("\t| Source instance : "+str(message.get_source()))
# RNS.log("\t| Destination hash : "+RNS.prettyhexrep(message.destination_hash))
# RNS.log("\t| Destination instance : "+str(message.get_destination()))
# RNS.log("\t| Transport Encryption : "+str(message.transport_encryption))
# RNS.log("\t| Timestamp : "+time_string)
# RNS.log("\t| Title : "+message.title_as_string())
# RNS.log("\t| Content : "+message.content_as_string())
# RNS.log("\t| Fields : "+str(message.fields))
# RNS.log("\t| Message signature : "+signature_string)
# RNS.log("\t+---------------------------------------------------------------")
def createDefaultConfig(self): def createDefaultConfig(self):
self.config = ConfigObj(__default_nomadnet_config__) self.config = ConfigObj(__default_nomadnet_config__)
self.config.filename = self.configpath self.config.filename = self.configpath

View File

@ -2,6 +2,7 @@ import os
import glob import glob
from .NomadNetworkApp import NomadNetworkApp from .NomadNetworkApp import NomadNetworkApp
from .Conversation import Conversation
from .ui import * from .ui import *