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)) 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) stop_if_not_write_workdir(self.work_dir) logger.info('Server started.') gevent.joinall(self.greenlets)
def start(self): """ Starts services. """ # greenlet to consume the provided sessions self._session_consumer = Consumer(self._sessions, self.honeypot_ip, self.config) Greenlet.spawn(self._session_consumer.start) # protocol handlers for c in handlerbase.HandlerBase.__subclasses__(): cap_name = c.__name__.lower() if cap_name in self.config['capabilities']: port = self.config['capabilities'][cap_name]['port'] # carve out the options for this specific service options = self.config['capabilities'][cap_name] cap = c(self._sessions, options, self.work_dir) try: # Convention: All capability names which end in 's' will be wrapped in ssl. if cap_name.endswith('s'): server = StreamServer(('0.0.0.0', port), cap.handle_session, keyfile=self.key, certfile=self.cert) else: server = StreamServer(('0.0.0.0', port), cap.handle_session) logger.debug( 'Adding {0} capability with options: {1}'.format( cap_name, options)) self._servers.append(server) server_greenlet = Greenlet(server.start()) self._server_greenlets.append(server_greenlet) except _socket.error as ex: logger.error( "Could not start {0} server on port {1}. Error: {2}". format(c.__name__, port, ex)) else: logger.info( 'Started {0} capability listening on port {1}'.format( c.__name__, port)) stop_if_not_write_workdir(self.work_dir) logger.info("Honeypot running.") gevent.joinall(self._server_greenlets)
def start(self): """ Starts the BeeSwarm server. """ self.started = True if self.app: web_port = self.config['network']['web_port'] logger.info('Starting server listening on port {0}'.format(web_port)) key_file = os.path.join(self.work_dir, 'server.key') cert_file = os.path.join(self.work_dir, 'server.crt') http_server = WSGIServer(('', web_port), self.app, keyfile=key_file, certfile=cert_file) http_server_greenlet = gevent.spawn(http_server.serve_forever) self.greenlets.append(http_server_greenlet) stop_if_not_write_workdir(self.work_dir) logger.info('Server started.') gevent.joinall(self.greenlets)
def start(self): """ Starts the BeeSwarm server. """ self.started = True if self.app: web_port = self.config['network']['web_port'] logger.info( 'Starting server listening on port {0}'.format(web_port)) key_file = os.path.join(self.work_dir, 'server.key') cert_file = os.path.join(self.work_dir, 'server.crt') http_server = WSGIServer(('', web_port), self.app, keyfile=key_file, certfile=cert_file) http_server_greenlet = gevent.spawn(http_server.serve_forever) self.greenlets.append(http_server_greenlet) stop_if_not_write_workdir(self.work_dir) logger.info('Server started.') 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)) 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) stop_if_not_write_workdir(self.work_dir) logger.info('Server started.') gevent.joinall(self.greenlets)
def start(self): """ Starts services. """ # greenlet to consume the provided sessions self._session_consumer = Consumer(self._sessions, self.honeypot_ip, self.config) Greenlet.spawn(self._session_consumer.start) # protocol handlers for c in handlerbase.HandlerBase.__subclasses__(): cap_name = c.__name__.lower() if cap_name in self.config['capabilities']: port = self.config['capabilities'][cap_name]['port'] # carve out the options for this specific service options = self.config['capabilities'][cap_name] cap = c(self._sessions, options, self.work_dir) try: # Convention: All capability names which end in 's' will be wrapped in ssl. if cap_name.endswith('s'): server = StreamServer(('0.0.0.0', port), cap.handle_session, keyfile=self.key, certfile=self.cert) else: server = StreamServer(('0.0.0.0', port), cap.handle_session) logger.debug('Adding {0} capability with options: {1}'.format(cap_name, options)) self._servers.append(server) server_greenlet = Greenlet(server.start()) self._server_greenlets.append(server_greenlet) except _socket.error as ex: logger.error("Could not start {0} server on port {1}. Error: {2}".format(c.__name__, port, ex)) else: logger.info('Started {0} capability listening on port {1}'.format(c.__name__, port)) stop_if_not_write_workdir(self.work_dir) logger.info("Honeypot running.") gevent.joinall(self._server_greenlets)