Exemple #1
0
def get_authenticator(auth):
    if auth.endswith('.json'):
        return json.Authenticator(auth)
    elif auth == 'env':
        return env.Authenticator()
    elif auth.startswith("mongo"):
        return mongo.Authenticator(auth)
    return sqlite.Authenticator('sqlite.db')
Exemple #2
0
def main():
    parser = argparse.ArgumentParser(description='Run a hpfeeds broker')
    parser.add_argument('--bind', default='0.0.0.0:20000', action='store')
    parser.add_argument('--exporter', default='', action='store')
    parser.add_argument('--name', default='hpfeeds', action='store')
    parser.add_argument('--debug', default=False, action='store_true')
    parser.add_argument('--auth', default='mongodb', action='store')
    parser.add_argument('--mongo_host', default="mongodb", action='store')
    parser.add_argument('--mongo_port', default=27017, action='store')
    parser.add_argument('--tlscert', default=None, action='store')
    parser.add_argument('--tlskey', default=None, action='store')
    args = parser.parse_args()

    if (args.tlscert and not args.tlskey) or (args.tlskey and not args.tlscert):
        parser.error('Must specify --tlskey AND --tlscert')
        return

    logging.basicConfig(
        level=logging.DEBUG if args.debug else logging.INFO,
    )

    if args.auth == 'mongodb':
        logging.info("Opening connection to MongoDB at %s:%s", args.mongo_host, args.mongo_port)
        auth = mongodb.Authenticator(args.mongo_host, args.mongo_port)
    elif args.auth == 'env':
        auth = env.Authenticator()
    else:
        auth = sqlite.Authenticator('sqlite.db')

    ssl_context = None
    if args.tlscert:
        ssl_context = ssl.create_default_context(ssl.Purpose.CLIENT_AUTH)
        ssl_context.load_cert_chain(args.tlscert, args.tlskey)

    broker = Server(
        auth=auth,
        bind=args.bind,
        exporter=args.exporter,
        name=args.name,
        ssl=ssl_context,
    )

    return aiorun.run(broker.serve_forever())