X-Git-Url: http://average.org/gitweb/?a=blobdiff_plain;f=gps303%2F__main__.py;h=fcd07a6380ff43ec3c8d1060ebcfba57da443a99;hb=bf48ccad4b4b91e7d7e09d1087f5953bc2db97d7;hp=45deb2f39c42acf27f8e553cc129eaee38d202ed;hpb=5d056391aed17388fb8c2bfe71fd9eade2fe5c55;p=loctrkd.git diff --git a/gps303/__main__.py b/gps303/__main__.py index 45deb2f..fcd07a6 100644 --- a/gps303/__main__.py +++ b/gps303/__main__.py @@ -1,33 +1,44 @@ """ Command line tool for sending requests to the terminal """ +from configparser import ConfigParser from datetime import datetime, timezone from getopt import getopt from logging import getLogger from sys import argv +from time import time +from typing import List, Tuple import zmq from . import common -from .gps303proto import * +from .zx303proto import * from .zmsg import Bcast, Resp log = getLogger("gps303") -def main(conf, opts, args): - zctx = zmq.Context() - zpush = zctx.socket(zmq.PUSH) +def main( + conf: ConfigParser, opts: List[Tuple[str, str]], args: List[str] +) -> None: + # Is this https://github.com/zeromq/pyzmq/issues/1627 still not fixed?! + zctx = zmq.Context() # type: ignore + zpush = zctx.socket(zmq.PUSH) # type: ignore zpush.connect(conf.get("collector", "listenurl")) if len(args) < 2: - raise ValueError("Too few args, need IMEI and command min: " + str(args)) + raise ValueError( + "Too few args, need IMEI and command min: " + str(args) + ) imei = args[0] cmd = args[1] args = args[2:] cls = class_by_prefix(cmd) if isinstance(cls, list): raise ValueError("Prefix does not select a single class: " + str(cls)) - kwargs = {} - resp = Resp(imei=imei, packet=cls.response(**kwargs)) + kwargs = dict([arg.split("=") for arg in args]) + for arg in args: + k, v = arg.split("=") + kwargs[k] = v + resp = Resp(imei=imei, when=time(), packet=cls.Out(**kwargs).packed) log.debug("Response: %s", resp) zpush.send(resp.packed)