diff --git a/requirements.txt b/requirements.txt index a2e9314..8927730 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,11 +1,11 @@ fastapi == 0.52.0 httpx[http2] >= 0.21.1 oauth2client >= 4.1.3 pydantic >= 1.4 pyinotify >= 0.9.6 requests >= 2.23.0 -systemd >= 0.16.1 -uvicorn == 0.11.8 +cysystemd >= 1.5.3 +uvicorn >= 0.11.8 #firebase-admin cassandra-driver == 3.24.0 -python3-application @ git+https://github.com/AGProjects/python3-application@6d96bef554473efd4dae39dec1034cb0ddc46fa8 +python3-application @ git+https://github.com/AGProjects/python3-application@release-3.0.4 diff --git a/sylk-pushserver b/sylk-pushserver index 90ac46c..be51d15 100755 --- a/sylk-pushserver +++ b/sylk-pushserver @@ -1,139 +1,139 @@ #!/usr/bin/env python3 import argparse import datetime import logging import os import sys import uvicorn from pushserver import __info__ as package_info from application.process import process from application import log from pushserver.resources import settings from pushserver.resources.utils import (log_event, resources_available, ssl_cert, try_again) name = 'sylk-pushserver' fullname = "Sylk Pushserver" logging.getLogger("uvicorn").setLevel(logging.WARN) default_dir = '/etc/sylk-pushserver' parser = argparse.ArgumentParser(add_help=False) parser.add_argument('-h', '--help', action='help', default=argparse.SUPPRESS, help='Show this help message and exit.') parser.add_argument("--ip", default='', help="If set, server will run in its address") parser.add_argument("--port", default='', help="If set, server will run in its address") parser.add_argument("--config_dir", default=None, metavar='PATH', help="Specify a config directory that contains " "general.ini, applications.ini and " "the credentials directory, " "Default it uses '/etc/sylk-pushserver'") parser.add_argument('--no-fork', action='store_false', dest='fork', help='log and run in the foreground') parser.add_argument("--debug", action="store_true", default=False, help="If set, log headers and body requests to log file.") args = parser.parse_args() if args.fork: try: - from systemd.journal import JournaldLogHandler + from cysystemd.journal import JournaldLogHandler except ImportError: - from systemd.journal import JournalHandler + from systemd.journal import JournalHandler try: journal_handler = JournaldLogHandler() except NameError: journal_handler = JournalHandler(SYSLOG_IDENTIFIER='sylk-pushserver') log.set_handler(journal_handler) log.capture_output() root_logger = log.get_logger() root_logger.name = name if not args.fork: console_formatter = logging.Formatter('%(asctime)s %(levelname)-8s %(message)s', datefmt='%Y-%m-%d %H:%M:%S') log.set_default_formatter(console_formatter) log.info('Starting %s %s' % (fullname, package_info.__version__)) config_dir = default_dir if args.config_dir is not None: if not os.path.exists(f'{args.config_dir}'): log.info(f'Specified config directory does not exist') sys.exit(1) config_dir = args.config_dir settings.init(config_dir, args.debug, args.ip, args.port) # Since TokenStorage config relies on the config_dir it has to be imported here process.configuration.local_directory = config_dir from pushserver.resources.storage import TokenStorage if __name__ == '__main__': if not settings.params.dir['error'] or 'default' in settings.params.dir['error']: storage = TokenStorage() storage.load() sock_available = False while not sock_available: host = settings.params.server['host'] port = int(settings.params.server['port']) tls_cert = settings.params.server['tls_cert'] sock_available = resources_available(host, port) if sock_available: if tls_cert: if ssl_cert(tls_cert): msg = f'Starting app over SSL...' print(msg) log_event(loggers=settings.params.loggers, msg=msg, level='info') uvicorn.run('pushserver.resources.app:app', host=host, port=port, ssl_certfile=tls_cert, acces_log=False, log_level='error') break else: msg = f'{tls_cert} is not a valid ssl cert, app will be run without it' print(msg) log_event(loggers=settings.params.loggers, msg=msg, level='deb') uvicorn.run('pushserver.resources.server:server', host=host, port=port, access_log=False, log_level='error') break else: uvicorn.run('pushserver.resources.server:server', host=host, port=port, access_log=False, log_level='error') break else: try_again(timer=30, host=host, port=port, start_error=settings.params.dir['error'], loggers=settings.params.loggers) else: log_event(loggers=settings.params.loggers, msg=settings.params.dir['error'], level='error') print(settings.params.dir['error'])