X-Git-Url: http://average.org/gitweb/?a=blobdiff_plain;f=loctrkd%2Fcollector.py;h=216134e57850d96d762286f23db43cafd9ea78c7;hb=e309a84d548213caf4382eda215dabf969332de4;hp=75cd33b861c374021c12d478631eff22c3cfcc4a;hpb=cbb7603aebedf517d7b7c61ff6de02d3e7193409;p=loctrkd.git diff --git a/loctrkd/collector.py b/loctrkd/collector.py index 75cd33b..216134e 100644 --- a/loctrkd/collector.py +++ b/loctrkd/collector.py @@ -14,7 +14,7 @@ from socket import ( ) from struct import pack from time import time -from typing import Any, cast, Dict, List, Optional, Set, Tuple, Union +from typing import Any, Dict, List, Optional, Set, Tuple, Union import zmq from . import common @@ -26,9 +26,6 @@ log = getLogger("loctrkd/collector") MAXBUFFER: int = 4096 -pmods: List[ProtoModule] = [] - - class Client: """Connected socket to the terminal plus buffer and metadata""" @@ -47,7 +44,7 @@ class Client: else: rest = b"" if rest: - log.warning( + log.info( "%d bytes in buffer on close: %s", len(rest), rest[:64].hex() ) @@ -71,11 +68,9 @@ class Client: ) return None if self.stream is None: - for pmod in pmods: - if pmod.probe_buffer(segment): - self.pmod = pmod - self.stream = pmod.Stream() - break + self.pmod = common.probe_pmod(segment) + if self.pmod is not None: + self.stream = self.pmod.Stream() if self.stream is None: log.info( "unrecognizable %d bytes of data %s from fd %d", @@ -90,7 +85,7 @@ class Client: if isinstance(elem, bytes): msgs.append((when, self.addr, elem)) else: - log.warning( + log.info( "%s from fd %d (IMEI %s)", elem, self.sock.fileno(), @@ -181,11 +176,6 @@ class Clients: def runserver(conf: ConfigParser, handle_hibernate: bool = True) -> None: - global pmods - pmods = [ - cast(ProtoModule, import_module("." + modnm, __package__)) - for modnm in conf.get("collector", "protocols").split(",") - ] # Is this https://github.com/zeromq/pyzmq/issues/1627 still not fixed?! zctx = zmq.Context() # type: ignore zpub = zctx.socket(zmq.PUB) # type: ignore @@ -233,6 +223,7 @@ def runserver(conf: ConfigParser, handle_hibernate: bool = True) -> None: zpub.send( Bcast( proto=proto, + pmod=pmod.PMODNAME, imei=imei, when=when, peeraddr=peeraddr, @@ -265,8 +256,9 @@ def runserver(conf: ConfigParser, handle_hibernate: bool = True) -> None: Bcast( is_incoming=False, proto=rpmod.proto_of_message(zmsg.packet), - when=zmsg.when, + pmod=pmod.PMODNAME, imei=zmsg.imei, + when=zmsg.when, packet=zmsg.packet, ).packed )