Пример #1
0
    def start(self):
        """
            Starts sending client bees to the configured Honeypot.
        """
        logger.info('Starting client.')

        sessions = {}

        #greenlet to consume and maintain data in sessions list
        self.sessions_consumer = consumer.Consumer(sessions, self.config, self.status)
        gevent.spawn(self.sessions_consumer.start_handling)

        capabilities = []
        for b in clientbase.ClientBase.__subclasses__():
            capability_name = b.__name__.lower()

            if capability_name not in self.config['capabilities']:
                logger.warning(
                    "Not loading {0} bee because it has no option in configuration file.".format(b.__name__))
                continue
                #skip loading if disabled
            if not self.config['capabilities'][capability_name]['enabled']:
                logger.warning(
                    "Not loading {0} bee because it is disabled in the configuration file.".format(b.__name__))
                continue

            options = self.config['capabilities'][capability_name]
            bee = b(sessions, options)
            capabilities.append(bee)
            self.status['enabled_bees'].append(capability_name)
            logger.debug('Adding {0} as a capability'.format(bee.__class__.__name__))

        self.dispatcher_greenlets = []
        for bee in capabilities:
            dispatcher = BeeDispatcher(self.config, bee, self.my_ip)
            self.dispatchers[bee.__class__.__name__] = dispatcher
            current_greenlet = Greenlet(dispatcher.start)
            self.dispatcher_greenlets.append(current_greenlet)
            current_greenlet.start()

        drop_privileges()
        gevent.joinall(self.dispatcher_greenlets)
Пример #2
0
    def start(self, port=5000, maintenance=True):
        """
            Starts the Beekeeper web-app on the specified port.
            Beekeeper is the maintenance interface.

        :param port: The port on which the web-app is to run.
        """
        self.started = True
        logger.info('Starting Beekeeper listening on port {0}'.format(port))

        http_server = WSGIServer(('', 5000), self.app, keyfile='beekeeper.key', certfile='beekeeper.crt')
        http_server_greenlet = gevent.spawn(http_server.serve_forever)
        self.servers['http'] = http_server
        self.greenlets.append(http_server_greenlet)

        if maintenance:
            maintenance_greenlet = gevent.spawn(self.start_maintenance_tasks)
            self.servers['maintenance'] = maintenance_greenlet
            self.greenlets.append(maintenance_greenlet)

        drop_privileges()
        gevent.joinall(self.greenlets)
Пример #3
0
    def start(self, maintenance=True):
        """
            Starts the BeeSwarm server.

        :param port: The port on which the web-app is to run.
        """
        self.started = True
        web_port = self.config['network']['web_port']
        logger.info('Starting server listening on port {0}'.format(web_port))
        print web_port
        http_server = WSGIServer(('', web_port), self.app, keyfile='server.key', certfile='server.crt')
        http_server_greenlet = gevent.spawn(http_server.serve_forever)
        self.workers['http'] = http_server
        self.greenlets.append(http_server_greenlet)

        if maintenance:
            maintenance_greenlet = gevent.spawn(self.start_maintenance_tasks)
            self.workers['maintenance'] = maintenance_greenlet
            self.greenlets.append(maintenance_greenlet)

        drop_privileges()
        logger.info('Server started and priviliges dropped.')
        gevent.joinall(self.greenlets)