X-Git-Url: http://average.org/gitweb/?a=blobdiff_plain;f=gps303%2Fcollector.py;h=e63da322f6ef1fb7c5f5da11d945c610aa135958;hb=5e1e7a4d37a1e149d5e899dada7b55a863cd8e64;hp=8bcca303a627e75b9220fa89d0cdf5f81f761357;hpb=faa8ce9d87530105ec2ad2f4809a9ace581a2ad6;p=loctrkd.git diff --git a/gps303/collector.py b/gps303/collector.py index 8bcca30..e63da32 100644 --- a/gps303/collector.py +++ b/gps303/collector.py @@ -1,6 +1,7 @@ """ TCP server that communicates with terminals """ from logging import getLogger +from os import umask from socket import socket, AF_INET6, SOCK_STREAM, SOL_SOCKET, SO_REUSEADDR from time import time from struct import pack @@ -140,9 +141,11 @@ class Clients: def runserver(conf): zctx = zmq.Context() zpub = zctx.socket(zmq.PUB) - zpub.bind(conf.get("collector", "publishurl")) zpull = zctx.socket(zmq.PULL) + oldmask = umask(0o117) + zpub.bind(conf.get("collector", "publishurl")) zpull.bind(conf.get("collector", "listenurl")) + umask(oldmask) tcpl = socket(AF_INET6, SOCK_STREAM) tcpl.setsockopt(SOL_SOCKET, SO_REUSEADDR, 1) tcpl.bind(("", conf.getint("collector", "port"))) @@ -163,7 +166,16 @@ def runserver(conf): while True: try: msg = zpull.recv(zmq.NOBLOCK) - tosend.append(Resp(msg)) + zmsg = Resp(msg) + zpub.send( + Bcast( + is_incoming=False, + proto=proto_of_message(zmsg.packet), + imei=zmsg.imei, + packet=zmsg.packet, + ).packed + ) + tosend.append(zmsg) except zmq.Again: break elif sk == tcpfd: