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)
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)
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)