def makeService(configuration): settings = Config(['']) settings.load(configuration) if not settings.header: sys.exit(1) # # Setup Logging # root_logger = reflogging.RootLogger() root_logger.set_app_name('network') # accuire root log_level log_level = settings.headerGetInt('/server/logging/@log_level') or 30 if 'LOG_LEVEL' in os.environ: log_level = int(os.environ['LOG_LEVEL']) if log_level not in (10, 20, 30, 40, 50): raise ValueError( "Unsupported log level %d. Supported log levels " "are DEBUG(10), INFO(20), WARNING(30), ERROR(40), CRITICAL(50)." % (log_level,) ) root_logger.set_level(log_level) for node in settings.header.xpathEval('/server/logging/*'): _name = node.name _log_level_node = node.xpathEval('@log_level') _log_level = int(_log_level_node[0].content) if _log_level_node else 30 if _name in ('stream', 'colorstream'): _output_node = node.xpathEval('@output') _output = _output_node[0].content if _output_node else 'stdout' if _output in ('stdout', '-'): _output = orig_stdout elif _output == 'stderr': _output = orig_stderr else: if _output.startswith('-'): _output = open(_output[1:], 'w') else: _output = open(_output, 'a') if _name == 'stream': _handler = StreamHandler(_output) elif _name == 'colorstream': _handler = ColorStreamHandler(_output) if _name == 'gelf': _host_node = node.xpathEval('@host') _port_node = node.xpathEval('@port') _host = _host_node[0].content if _host_node else 'localhost' _port = _port_node[0].content if _port_node else 12201 _handler = GELFHandler(_host, _port) if _name == 'syslog': _handler = SyslogHandler('pokernetwork', 0) _handler.set_level(_log_level) root_logger.add_handler(_handler) serviceCollection = service.MultiService() poker_service = PokerService(settings) poker_service.setServiceParent(serviceCollection) poker_factory = IPokerFactory(poker_service) # # Poker protocol (with or without SSL) # tcp_port = settings.headerGetInt("/server/listen/@tcp") internet.TCPServer(tcp_port, poker_factory).setServiceParent(serviceCollection) tcp_ssl_port = settings.headerGetInt("/server/listen/@tcp_ssl") if HAS_OPENSSL and tcp_ssl_port: internet.SSLServer(tcp_ssl_port, poker_factory, SSLContextFactory(settings)).setServiceParent(serviceCollection) rest_site = PokerSite(settings, PokerRestTree(poker_service)) # # HTTP (with or without SLL) that implements REST # rest_port = settings.headerGetInt("/server/listen/@rest") if rest_port: internet.TCPServer(rest_port, rest_site).setServiceParent(serviceCollection) rest_ssl_port = settings.headerGetInt("/server/listen/@rest_ssl") if HAS_OPENSSL and rest_ssl_port: internet.SSLServer(rest_ssl_port, rest_site, SSLContextFactory(settings)).setServiceParent(serviceCollection) http_site = server.Site(PokerTree(poker_service)) # # HTTP (with or without SLL) that implements XML-RPC and SOAP # http_port = settings.headerGetInt("/server/listen/@http") if http_port: internet.TCPServer(http_port, http_site).setServiceParent(serviceCollection) http_ssl_port = settings.headerGetInt("/server/listen/@http_ssl") if HAS_OPENSSL and http_ssl_port: internet.SSLServer(http_ssl_port, http_site, SSLContextFactory(settings)).setServiceParent(serviceCollection) # # SSh twisted.conch.manhole # manhole_port = settings.headerGetInt("/server/listen/@manhole") if manhole_port: manhole_service = makeManholeService(manhole_port, { 'poker_service': poker_service, 'poker_site': rest_site }) manhole_service.name = 'manhole' manhole_service.setServiceParent(serviceCollection) log.warn( "PokerManhole: manhole is useful for debugging, however, " "it can be a security risk and should be used only during debugging" ) return serviceCollection
def makeService(configuration): settings = Config(['']) settings.load(configuration) if not settings.header: sys.exit(1) # # Setup Logging # root_logger = reflogging.RootLogger() root_logger.set_app_name('network') # acquire root log_level log_level = settings.headerGetInt('/server/logging/@log_level') or 30 if 'LOG_LEVEL' in os.environ: log_level = int(os.environ['LOG_LEVEL']) if log_level not in (10, 20, 30, 40, 50): raise ValueError( "Unsupported log level %d. Supported log levels " "are DEBUG(10), INFO(20), WARNING(30), ERROR(40), CRITICAL(50)." % (log_level,) ) root_logger.set_level(log_level) for node in settings.header.xpathEval('/server/logging/*'): _name = node.name _log_level_node = node.xpathEval('@log_level') _log_level = int(_log_level_node[0].content) if _log_level_node else 30 if _name in ('stream', 'colorstream'): _output_node = node.xpathEval('@output') _output = _output_node[0].content if _output_node else 'stdout' if _output in ('stdout', '-'): _output = orig_stdout elif _output == 'stderr': _output = orig_stderr else: if _output.startswith('-'): _output = open(_output[1:], 'w') else: _output = open(_output, 'a') if _name == 'stream': _handler = StreamHandler(_output) elif _name == 'colorstream': _handler = ColorStreamHandler(_output) if _name == 'gelf': _host_node = node.xpathEval('@host') _port_node = node.xpathEval('@port') _host = _host_node[0].content if _host_node else 'localhost' _port = _port_node[0].content if _port_node else 12201 _handler = GELFHandler(_host, _port) if _name == 'syslog': f = node.xpathEval('@facility') facility = { 'user': syslog.LOG_USER, 'daemon': syslog.LOG_DAEMON, 'cron': syslog.LOG_CRON, 'local0': syslog.LOG_LOCAL0, 'local1': syslog.LOG_LOCAL1, 'local2': syslog.LOG_LOCAL2, 'local3': syslog.LOG_LOCAL3, 'local4': syslog.LOG_LOCAL4, 'local5': syslog.LOG_LOCAL5, 'local6': syslog.LOG_LOCAL6, 'local7': syslog.LOG_LOCAL7, }[f[0].content if f else 'user'] _handler = SyslogHandler('pokernetwork', 0, facility=facility) _handler.set_level(_log_level) root_logger.add_handler(_handler) serviceCollection = service.MultiService() poker_service = PokerService(settings) poker_service.setServiceParent(serviceCollection) # # Poker protocol (with or without SSL) # poker_factory = IPokerFactory(poker_service) tcp_port = settings.headerGetInt("/server/listen/@tcp") internet.TCPServer(tcp_port, poker_factory).setServiceParent(serviceCollection) tcp_ssl_port = settings.headerGetInt("/server/listen/@tcp_ssl") if HAS_OPENSSL and tcp_ssl_port: internet.SSLServer(tcp_ssl_port, poker_factory, SSLContextFactory(settings)).setServiceParent(serviceCollection) # # msgpack protocol # msgpack_port = settings.headerGetInt("/server/listen/@msgpack") if msgpack_port: msgpack_factory = IPokerFactory(poker_service) msgpack_factory.setProtocol(ServerMsgpackProtocol) internet.TCPServer(msgpack_port, msgpack_factory).setServiceParent(serviceCollection) # # HTTP (with or without SLL) that implements REST # rest_site = PokerSite(settings, PokerRestTree(poker_service)) rest_port = settings.headerGetInt("/server/listen/@rest") if rest_port: internet.TCPServer(rest_port, rest_site).setServiceParent(serviceCollection) rest_ssl_port = settings.headerGetInt("/server/listen/@rest_ssl") if HAS_OPENSSL and rest_ssl_port: internet.SSLServer(rest_ssl_port, rest_site, SSLContextFactory(settings)).setServiceParent(serviceCollection) # # SSh twisted.conch.manhole # manhole_port = settings.headerGetInt("/server/listen/@manhole") if manhole_port: manhole_service = makeManholeService(manhole_port, { 'poker_service': poker_service, 'poker_site': rest_site }) manhole_service.name = 'manhole' manhole_service.setServiceParent(serviceCollection) # # Pub/Sub # pub_port = settings.headerGetInt("/server/listen/@pub") if pub_port: pub_service = internet.TCPServer(pub_port, PubService(poker_service)) pub_service.name = 'pub' pub_service.setServiceParent(serviceCollection) return serviceCollection
def makeService(configuration): settings = pokernetworkconfig.Config(['']) settings.load(configuration) # Setup Logging root_logger = reflogging.RootLogger() root_logger.set_app_name('bot') log_level = settings.headerGetInt('/settings/logging/@log_level') or 30 if 'LOG_LEVEL' in os.environ: log_level = int(os.environ['LOG_LEVEL']) if log_level not in (10, 20, 30, 40, 50): raise ValueError( "Unsupported log level %d. Supported log levels " "are DEBUG(10), INFO(20), WARNING(30), ERROR(40), CRITICAL(50)." % (log_level,) ) root_logger.set_level(log_level) for node in settings.header.xpathEval('/settings/logging/*'): _name = node.name _log_level_node = node.xpathEval('@log_level') _log_level = int(_log_level_node[0].content) if _log_level_node else 30 if _name in ('stream', 'colorstream'): _output_node = node.xpathEval('@output') _output = _output_node[0].content if _output_node else 'stdout' if _output in ('stdout', '-'): _output = orig_stdout elif _output == 'stderr': _output = orig_stderr else: if _output.startswith('-'): _output = open(_output[1:], 'w') else: _output = open(_output, 'a') if _name == 'stream': _handler = StreamHandler(_output) elif _name == 'colorstream': _handler = ColorStreamHandler(_output) if _name == 'gelf': _host_node = node.xpathEval('@host') _port_node = node.xpathEval('@port') _host = _host_node[0].content if _host_node else 'localhost' _port = _port_node[0].content if _port_node else 12201 _handler = GELFHandler(_host, _port) if _name == 'syslog': _handler = SyslogHandler('pokernetwork', 0) _handler.set_level(_log_level) root_logger.add_handler(_handler) PokerBotFactory.string_generator = StringGenerator(settings.headerGet("/settings/@name_prefix")) PokerBot.note_generator = NoteGenerator(settings.headerGet("/settings/currency")) host, port = settings.headerGet("/settings/servers").split(':') port = int(port) services = Bots() services.setSettings(settings) def bot_serial_generator(): serial = 0 while True: serial += 1 yield serial def create_bot(*args, **kwargs): factory = PokerBotFactory(*args, **kwargs) bot = Bot(host, port, factory) factory.bot = bot bot.setServiceParent(services) bot_serial = bot_serial_generator() for table in settings.headerGetProperties("/settings/table"): table['tournament'] = False if 'count' in table: for _i in xrange(0, int(table["count"])): create_bot(settings=settings, join_info=table, serial=bot_serial.next()) else: for bot in settings.headerGetProperties("/settings/table[@name=\"%s\"]/bot" % table['name']): create_bot(settings=settings, join_info=table, serial=bot_serial.next(), name=bot['name'], password=bot['password']) for tournament in settings.headerGetProperties("/settings/tournament"): tournament['tournament'] = True if 'count' in tournament: for _i in xrange(0, int(tournament["count"])): create_bot(settings=settings, join_info=tournament, serial=bot_serial.next()) else: for bot in settings.headerGetProperties("/settings/tournament[@name=\"%s\"]/bot" % tournament['name']): create_bot(settings=settings, join_info=tournament, serial=bot_serial.next(), name=bot['name'], password=bot['password']) return services
def makeService(configuration): settings = Config(['']) settings.load(configuration) if not settings.header: sys.exit(1) # # Setup Logging # root_logger = reflogging.RootLogger() root_logger.set_app_name('network') # accuire root log_level log_level = settings.headerGetInt('/server/logging/@log_level') or 30 if 'LOG_LEVEL' in os.environ: log_level = int(os.environ['LOG_LEVEL']) if log_level not in (10, 20, 30, 40, 50): raise ValueError( "Unsupported log level %d. Supported log levels " "are DEBUG(10), INFO(20), WARNING(30), ERROR(40), CRITICAL(50)." % (log_level, )) root_logger.set_level(log_level) for node in settings.header.xpathEval('/server/logging/*'): _name = node.name _log_level_node = node.xpathEval('@log_level') _log_level = int(_log_level_node[0].content) if _log_level_node else 30 if _name in ('stream', 'colorstream'): _output_node = node.xpathEval('@output') _output = _output_node[0].content if _output_node else 'stdout' if _output in ('stdout', '-'): _output = orig_stdout elif _output == 'stderr': _output = orig_stderr else: if _output.startswith('-'): _output = open(_output[1:], 'w') else: _output = open(_output, 'a') if _name == 'stream': _handler = StreamHandler(_output) elif _name == 'colorstream': _handler = ColorStreamHandler(_output) if _name == 'gelf': _host_node = node.xpathEval('@host') _port_node = node.xpathEval('@port') _host = _host_node[0].content if _host_node else 'localhost' _port = _port_node[0].content if _port_node else 12201 _handler = GELFHandler(_host, _port) if _name == 'syslog': _handler = SyslogHandler('pokernetwork', 0) _handler.set_level(_log_level) root_logger.add_handler(_handler) serviceCollection = service.MultiService() poker_service = PokerService(settings) poker_service.setServiceParent(serviceCollection) poker_factory = IPokerFactory(poker_service) # # Poker protocol (with or without SSL) # tcp_port = settings.headerGetInt("/server/listen/@tcp") internet.TCPServer(tcp_port, poker_factory).setServiceParent(serviceCollection) tcp_ssl_port = settings.headerGetInt("/server/listen/@tcp_ssl") if HAS_OPENSSL and tcp_ssl_port: internet.SSLServer( tcp_ssl_port, poker_factory, SSLContextFactory(settings)).setServiceParent(serviceCollection) rest_site = PokerSite(settings, PokerRestTree(poker_service)) # # HTTP (with or without SLL) that implements REST # rest_port = settings.headerGetInt("/server/listen/@rest") if rest_port: internet.TCPServer(rest_port, rest_site).setServiceParent(serviceCollection) rest_ssl_port = settings.headerGetInt("/server/listen/@rest_ssl") if HAS_OPENSSL and rest_ssl_port: internet.SSLServer( rest_ssl_port, rest_site, SSLContextFactory(settings)).setServiceParent(serviceCollection) http_site = server.Site(PokerTree(poker_service)) # # HTTP (with or without SLL) that implements XML-RPC and SOAP # http_port = settings.headerGetInt("/server/listen/@http") if http_port: internet.TCPServer(http_port, http_site).setServiceParent(serviceCollection) http_ssl_port = settings.headerGetInt("/server/listen/@http_ssl") if HAS_OPENSSL and http_ssl_port: internet.SSLServer( http_ssl_port, http_site, SSLContextFactory(settings)).setServiceParent(serviceCollection) # # SSh twisted.conch.manhole # manhole_port = settings.headerGetInt("/server/listen/@manhole") if manhole_port: manhole_service = makeManholeService(manhole_port, { 'poker_service': poker_service, 'poker_site': rest_site }) manhole_service.name = 'manhole' manhole_service.setServiceParent(serviceCollection) log.warn( "PokerManhole: manhole is useful for debugging, however, " "it can be a security risk and should be used only during debugging" ) return serviceCollection