X-Git-Url: http://average.org/gitweb/?a=blobdiff_plain;f=gps303%2F__main__.py;h=e3fd84a2460271a69fb65acfee1485e406e06a89;hb=45e5cd8ce6f931b3bfb291394336cf8d94d895c3;hp=c8c5a28c4a265096bc12f3aee7056355c5299a05;hpb=5d6f5033cfe12dff6bfd26110d1b67efcb249f53;p=loctrkd.git diff --git a/gps303/__main__.py b/gps303/__main__.py index c8c5a28..e3fd84a 100755 --- a/gps303/__main__.py +++ b/gps303/__main__.py @@ -7,26 +7,28 @@ import sys from time import time from .config import readconfig -from .GT06mod import handle_packet, make_response, LOGIN +from .GT06mod import handle_packet, make_response, LOGIN, set_config from .evstore import initdb, stow +from .lookaside import prepare_response CONF = "/etc/gps303.conf" log = getLogger("gps303") if __name__.endswith("__main__"): - opts, _ = getopt(sys.argv[1:], "c:p:") + opts, _ = getopt(sys.argv[1:], "c:d") opts = dict(opts) - conf = readconfig(opts["c"] if "c" in opts else CONF) + conf = readconfig(opts["-c"] if "-c" in opts else CONF) if sys.stdout.isatty(): log.addHandler(StreamHandler(sys.stderr)) - log.setLevel(DEBUG) else: log.addHandler(SysLogHandler(address="/dev/log")) - log.setLevel(INFO) + log.setLevel(DEBUG if "-d" in opts else INFO) + log.info("starting with options: %s", opts) initdb(conf.get("daemon", "dbfn")) + set_config(conf) ctlsock = socket(AF_INET, SOCK_STREAM) ctlsock.setsockopt(SOL_SOCKET, SO_REUSEADDR, 1) @@ -68,12 +70,20 @@ if __name__.endswith("__main__"): when = time() if packet: msg = handle_packet(packet, clntaddr, when) - log.debug("%s from %s fd %d'", msg, clntaddr, fd) + log.debug("%s from %s fd %d", msg, clntaddr, fd) if isinstance(msg, LOGIN): imei = msg.imei clnt_dict[fd] = (clntsock, clntaddr, imei) - stow(clntaddr, when, imei, msg.proto, msg.payload) - response = make_response(msg) + stow( + clntaddr, + when, + imei, + msg.length, + msg.proto, + msg.payload, + ) + kwargs = prepare_response(conf, msg) + response = make_response(msg, **kwargs) if response: try: # Ignore possibility of blocking @@ -81,6 +91,7 @@ if __name__.endswith("__main__"): except OSError as e: log.debug("sending to fd %d error %s", fd, e) else: + # TODO: Also disconnect on HIBERNATION log.info("disconnect fd %d imei %s", fd, imei) pollset.unregister(fd) clntsock.close()