diff options
author | Marcello Stanisci <stanisci.m@gmail.com> | 2018-01-05 12:06:34 +0100 |
---|---|---|
committer | Marcello Stanisci <stanisci.m@gmail.com> | 2018-01-05 12:06:34 +0100 |
commit | 8291b60dcde71177436189494b0576612bef1340 (patch) | |
tree | 5fe52d9d646f4fb5f1156dc51f8a2e4c5fac6536 /taler-merchant-backoffice.in | |
parent | b10a0524ec4248229608aed5891908e85f691864 (diff) | |
download | backoffice-8291b60dcde71177436189494b0576612bef1340.tar.gz backoffice-8291b60dcde71177436189494b0576612bef1340.tar.bz2 backoffice-8291b60dcde71177436189494b0576612bef1340.zip |
gitignore + adding --frontend argument
Diffstat (limited to 'taler-merchant-backoffice.in')
-rw-r--r-- | taler-merchant-backoffice.in | 89 |
1 files changed, 89 insertions, 0 deletions
diff --git a/taler-merchant-backoffice.in b/taler-merchant-backoffice.in new file mode 100644 index 0000000..976c5f2 --- /dev/null +++ b/taler-merchant-backoffice.in @@ -0,0 +1,89 @@ +#!/usr/bin/env python3 + +""" +Stand-alone script to manage the GNU Taler blog frontend. +""" + +import logging +import argparse +import sys +import os +import site +from talerbackoffice.talerconfig import TalerConfig + + +os.environ.setdefault("TALER_PREFIX", "@prefix@") +site.addsitedir("%s/lib/python%d.%d/site-packages" % ( + "@prefix@", + sys.version_info.major, + sys.version_info.minor)) + +LOGGER = logging.getLogger(__name__) +TC = TalerConfig.from_file(os.environ.get("TALER_CONFIG_FILE")) + +# No perfect match to our logging format, but good enough ... +UWSGI_LOGFMT = "%(ltime) %(proto) %(method) %(uri) %(proto) => %(status)" + +def handle_serve_http(args): + port = args.port + if port is None: + port = TC["backoffice-%s" % args.frontend]["http_port"].value_int(required=True) + spec = ":%d" % (port,) + os.execlp("uwsgi", "uwsgi", + "--master", + "--die-on-term", + "--log-format", UWSGI_LOGFMT, + "--http", spec, + "--wsgi-file", "@prefix@/share/taler/frontend-blog.wsgi") + +def handle_serve_uwsgi(args): + del args # pacify PEP checkers + serve_uwsgi = TC["backoffice-%s" % args.frontend]["uwsgi_serve"].value_string(required=True).lower() + params = ["uwsgi", "uwsgi", + "--master", + "--die-on-term", + "--log-format", UWSGI_LOGFMT, + "--wsgi-file", "@prefix@/share/taler/frontend-blog.wsgi"] + if serve_uwsgi == "tcp": + port = TC["backoffice-%s" args.frontend]["uwsgi_port"].value_int(required=True) + spec = ":%d" % (port,) + params.extend(["--socket", spec]) + elif serve_uwsgi == "unix": + spec = TC["backoffice-%s" % args.frontend]["uwsgi_unixpath"].value_filename(required=True) + mode = TC["backoffice-%s" % args.frontend]["uwsgi_unixpath_mode"].value_filename(required=True) + params.extend(["--socket", spec]) + params.extend(["--chmod-socket="+mode]) + os.makedirs(os.path.dirname(spec), exist_ok=True) + logging.info("launching uwsgi with argv %s", params[1:]) + os.execlp(*params) + + +PARSER = argparse.ArgumentParser() +PARSER.set_defaults(func=None) +PARSER.add_argument('--config', '-c', + help="configuration file to use", + metavar="CONFIG", type=str, + dest="config", default=None) +PARSER.add_argument('--frontend', '-f', + help="fetch config values from [backoffice-<FRONTEND>] section", + metavar="FRONTEND", type=str, + dest="frontend", default=None) +SUB = PARSER.add_subparsers() + +P = SUB.add_parser('serve-http', help="Serve over HTTP") +P.add_argument("--port", "-p", dest="port", + type=int, default=None, metavar="PORT") +P.set_defaults(func=handle_serve_http) + +P = SUB.add_parser('serve-uwsgi', help="Serve over UWSGI") +P.set_defaults(func=handle_serve_uwsgi) + +ARGS = PARSER.parse_args() +if getattr(ARGS, 'func', None) is None: + PARSER.print_help() + sys.exit(1) + +if ARGS.config is not None: + os.environ["TALER_CONFIG_FILE"] = ARGS.config + +ARGS.func(ARGS) |