]> average.org Git - loctrkd.git/blobdiff - gps303/__main__.py
implement `inline_response()`
[loctrkd.git] / gps303 / __main__.py
index e3fd84a2460271a69fb65acfee1485e406e06a89..5e9a93547daef39425bf9befae0a484ab6f68938 100755 (executable)
@@ -1,13 +1,11 @@
-from getopt import getopt
-from logging import getLogger, StreamHandler, DEBUG, INFO
-from logging.handlers import SysLogHandler
+from logging import getLogger
 from select import poll, POLLIN, POLLERR, POLLHUP, POLLPRI
 from socket import socket, AF_INET, SOCK_STREAM, SOL_SOCKET, SO_REUSEADDR
 import sys
 from time import time
 
-from .config import readconfig
-from .GT06mod import handle_packet, make_response, LOGIN, set_config
+from . import common
+from .gps303proto import handle_packet, make_response, LOGIN
 from .evstore import initdb, stow
 from .lookaside import prepare_response
 
@@ -15,24 +13,12 @@ CONF = "/etc/gps303.conf"
 
 log = getLogger("gps303")
 
-if __name__.endswith("__main__"):
-    opts, _ = getopt(sys.argv[1:], "c:d")
-    opts = dict(opts)
-    conf = readconfig(opts["-c"] if "-c" in opts else CONF)
-
-    if sys.stdout.isatty():
-        log.addHandler(StreamHandler(sys.stderr))
-    else:
-        log.addHandler(SysLogHandler(address="/dev/log"))
-    log.setLevel(DEBUG if "-d" in opts else INFO)
-    log.info("starting with options: %s", opts)
-
-    initdb(conf.get("daemon", "dbfn"))
-    set_config(conf)
+def runserver(conf):
+    initdb(conf.get("storage", "dbfn"))
 
     ctlsock = socket(AF_INET, SOCK_STREAM)
     ctlsock.setsockopt(SOL_SOCKET, SO_REUSEADDR, 1)
-    ctlsock.bind(("", conf.getint("daemon", "port")))
+    ctlsock.bind(("", conf.getint("collector", "port")))
     ctlsock.listen(5)
     ctlfd = ctlsock.fileno()
     pollset = poll()
@@ -69,7 +55,7 @@ if __name__.endswith("__main__"):
                     packet = clntsock.recv(4096)
                     when = time()
                     if packet:
-                        msg = handle_packet(packet, clntaddr, when)
+                        msg = handle_packet(packet)
                         log.debug("%s from %s fd %d", msg, clntaddr, fd)
                         if isinstance(msg, LOGIN):
                             imei = msg.imei
@@ -79,7 +65,7 @@ if __name__.endswith("__main__"):
                             when,
                             imei,
                             msg.length,
-                            msg.proto,
+                            msg.PROTO,
                             msg.payload,
                         )
                         kwargs = prepare_response(conf, msg)
@@ -98,3 +84,6 @@ if __name__.endswith("__main__"):
                         del clnt_dict[fd]
                 if ev & ~POLLIN:
                     log.warning("unexpected event", ev, "on fd", fd)
+
+if __name__.endswith("__main__"):
+    runserver(common.init(log))