예제 #1
0
    def __init__(self):
        # read configuration from file (defaults included)
        config = ConfigParser({
            'loglevel': 'INFO',
            'logfile': APPNAME + 'log',
            'addr': '127.0.0.1',
            'port': 5000,
            'cryptokey': 'default'
        })
        config.read([CONFFILE])

        # set tunables
        self.loglevel = config.get(APPNAME, 'loglevel')
        self.logfile = config.get(APPNAME, 'logfile')
        self.addr = config.get(APPNAME, 'addr')
        self.port = config.getint(APPNAME, 'port')
        self.cryptokey = config.get(APPNAME, 'cryptokey')

        # set local variables
        self.filterlist = ()
        self.pktcount = 0
        self.handler = DNSFlowHandler
        self.server = ThreadingUDPServer((self.addr, self.port), self.handler)
        self.server.queue = Queue()

        # initialize and setup logging
        logging.basicConfig(filename=self.logfile, format=LOGFMT)
        self.log = logging.getLogger(APPNAME)
        if self.loglevel in LOGLEVELS:
            self.log.setLevel(LOGLEVELS[self.loglevel])

        # crypto stuff -- choose AES128 CBC
        self.server.cryptocipher = AES.new
        self.server.cryptomode = AES.MODE_CBC
        self.server.cryptoblocksize = AES.block_size
        self.server.cryptokey = self._pad_pkcs7_block(
            self.cryptokey, self.server.cryptoblocksize)

        # build a list of DNS IDS filter functions
        callable = lambda i: hasattr(i, '__call__')
        isfilter = lambda o, i: callable(getattr(o, i)) \
                and i[:7] == 'filter_'
        self.filterlist = [
            getattr(sniff_filters, i) for i in dir(sniff_filters)
            if isfilter(sniff_filters, i)
        ]

        # start listening/analysing service
        self.log.info('Started %s @ %s' % (APPNAME, time.asctime()))
        thread.start_new_thread(self.process_flow, ())
        self.server.serve_forever()
예제 #2
0
def main():
    server = ThreadingUDPServer((HOST, PORT), ThreadedUDPRequestHandler)
    server_thread = threading.Thread(target=server.serve_forever)
    server_thread.daemon = True

    try:
        server_thread.start()
        logger = logging.getLogger("app")
        logger.info("Server started at {} port {}".format(HOST, PORT))
        # 一个死循环
        while True:
            time.sleep(100)
    except (KeyboardInterrupt, SystemExit):
        server.shutdown()
        server.server_close()
        exit()
예제 #3
0
    def start_udp(self, port):
        """Create a UDP server and start listening for data. Put any input data
        on the inq for listen to read, and send any data on the outq. The
        drvAsynIPPortConfigure should connect to localhost:port if the
        simulation is on the same machine as the IOC."""
        if self.started:
            self.diagnostic("Server already started")
        else:
            self.inq, self.outq = Queue.Queue(), Queue.Queue()
            self.started = True
            self.udp = True
            # store the request to respond to
            self.outreq = None

            def MakeHandler(device):
                # make a basic tcp handler that puts messages on a queue
                class ProxyHandler(BaseRequestHandler):
                    def setup(self):
                        BaseRequestHandler.setup(self)
                        device.onHandlerSetup(self)

                    def finish(self):
                        BaseRequestHandler.finish(self)
                        device.onHandlerFinish(self)

                    def handle(self):
                        if self.request != None:
                            data = "nothing yet"
                            device.outreq = (self.request[1],
                                             self.client_address)
                            device.inq.put(self.request[0])

                return ProxyHandler

            self.server = ThreadingUDPServer(("", port), MakeHandler(self))
            # start to listen on the master port
            self.__daemon(self.server.serve_forever)
            # start to respond to any messages put on the outq
            self.__daemon(self.__ip_out)
            # start the worker thread
            self.__daemon(self.__process)
예제 #4
0
파일: main.py 프로젝트: HST94/SLAM
 def __init__(self):
     threading.Thread.__init__(self)
     self.server = ThreadingUDPServer(('192.168.20.136', 20000), Handler)
예제 #5
0
 def __init__(self):
     threading.Thread.__init__(self)
     self.server = ThreadingUDPServer(('', 20000), Handler)
예제 #6
0
        else:
            conf = mwconf.dbpc
            dbpc_sender = dbpc(conf.host,
                            int(conf.port),
                            conf.service,
                            conf.component_prefix + MODULE_NAME,
                            logger,
                            int(conf.heartbeat_interval))
            dbpc_sender.start()
            logger.info('dbpc thread started. host is %s, port is %s' % (conf.host, conf.port))

    try:
        saver = threading.Thread(target=event_saver)
        saver.setDaemon(True)
        saver.start()
        logger.info('cache saver thread running....')

        logger.info("UDP Server start, host is %s, port is %d" %
                      (bind_host, bind_port))
        server = ThreadingUDPServer((bind_host, bind_port), RequestHandler)
        server.serve_forever()

        saver.join()
    except:
        logger.error(
            "catch unhandler exception, I will exit",  exc_info=True)
        # program exit. It's easy to be found
        time.sleep(1)
        os._exit(1)

 def __init__(self):
     super(ReceiveDataUDPServer, self).__init__()
     self.daemon = True
     # Setup threading UDP server
     host, port = "", 9767
     self.server = ThreadingUDPServer((host, port), ReceiveDataUDPHandler)