X-Git-Url: http://average.org/gitweb/?a=blobdiff_plain;f=loctrkd%2Frectifier.py;h=585eb793d223ad37eab4fc7a2a04864f3d673c3e;hb=042f003133249fb38d87d92faa9c730833d14904;hp=47d9d055f8471357d5edb748f580cbaf6be90169;hpb=456fcc5a8964c84385d34a6687e83ae05ab2ddc3;p=loctrkd.git diff --git a/loctrkd/rectifier.py b/loctrkd/rectifier.py index 47d9d05..585eb79 100644 --- a/loctrkd/rectifier.py +++ b/loctrkd/rectifier.py @@ -31,7 +31,7 @@ class QryModule: mnc: int, gsm_cells: List[Tuple[int, int, int]], wifi_aps: List[Tuple[str, int]], - ) -> Tuple[float, float]: + ) -> Tuple[float, float, float]: ... @@ -51,7 +51,9 @@ def runserver(conf: ConfigParser) -> None: zpush = zctx.socket(zmq.PUSH) # type: ignore zpush.connect(conf.get("collector", "listenurl")) zpub = zctx.socket(zmq.PUB) # type: ignore - zpub.connect(conf.get("rectifier", "publishurl")) + oldmask = umask(0o117) + zpub.bind(conf.get("rectifier", "publishurl")) + umask(oldmask) try: while True: @@ -72,14 +74,18 @@ def runserver(conf: ConfigParser) -> None: zpub.send(Rept(imei=zmsg.imei, payload=rect.json).packed) elif isinstance(rect, HintReport): try: - lat, lon = qry.lookup( + lat, lon, acc = qry.lookup( rect.mcc, rect.mnc, rect.gsm_cells, list((mac, strng) for _, mac, strng in rect.wifi_aps), ) log.debug( - "Approximated lat=%s, lon=%s for %s", lat, lon, rect + "Approximated lat=%s, lon=%s, acc=%s for %s", + lat, + lon, + acc, + rect, ) if proto_needanswer.get(zmsg.proto, False): resp = Resp( @@ -89,23 +95,25 @@ def runserver(conf: ConfigParser) -> None: ) log.debug("Sending reponse %s", resp) zpush.send(resp.packed) + rept = CoordReport( + devtime=rect.devtime, + battery_percentage=rect.battery_percentage, + accuracy=acc, + altitude=None, + speed=None, + direction=None, + latitude=lat, + longitude=lon, + ) + log.debug("Sending report %s", rept) zpub.send( Rept( imei=zmsg.imei, - payload=CoordReport( - devtime=rect.devtime, - battery_percentage=rect.battery_percentage, - accuracy=-1, - altitude=-1, - speed=-1, - direction=-1, - latitude=lat, - longitude=lon, - ).json, + payload=rept.json, ).packed ) except Exception as e: - log.warning( + log.exception( "Lookup for %s rectified as %s resulted in %s", msg, rect,