]> www.average.org Git - loctrkd.git/blob - gps303/__main__.py
fill in `when` in Resp packet
[loctrkd.git] / gps303 / __main__.py
1 """ Command line tool for sending requests to the terminal """
2
3 from datetime import datetime, timezone
4 from getopt import getopt
5 from logging import getLogger
6 from sys import argv
7 from time import time
8 import zmq
9
10 from . import common
11 from .gps303proto import *
12 from .zmsg import Bcast, Resp
13
14 log = getLogger("gps303")
15
16
17 def main(conf, opts, args):
18     zctx = zmq.Context()
19     zpush = zctx.socket(zmq.PUSH)
20     zpush.connect(conf.get("collector", "listenurl"))
21
22     if len(args) < 2:
23         raise ValueError(
24             "Too few args, need IMEI and command min: " + str(args)
25         )
26     imei = args[0]
27     cmd = args[1]
28     args = args[2:]
29     cls = class_by_prefix(cmd)
30     if isinstance(cls, list):
31         raise ValueError("Prefix does not select a single class: " + str(cls))
32     kwargs = dict([arg.split("=") for arg in args])
33     for arg in args:
34         k, v = arg.split("=")
35         kwargs[k] = v
36     resp = Resp(imei=imei, when=time(), packet=cls.Out(**kwargs).packed)
37     log.debug("Response: %s", resp)
38     zpush.send(resp.packed)
39
40
41 if __name__.endswith("__main__"):
42     opts, args = getopt(argv[1:], "c:d")
43     main(common.init(log, opts=opts), opts, args)