summaryrefslogtreecommitdiff
path: root/taler-merchant-backoffice.in
diff options
context:
space:
mode:
authorMarcello Stanisci <stanisci.m@gmail.com>2018-01-05 12:06:34 +0100
committerMarcello Stanisci <stanisci.m@gmail.com>2018-01-05 12:06:34 +0100
commit8291b60dcde71177436189494b0576612bef1340 (patch)
tree5fe52d9d646f4fb5f1156dc51f8a2e4c5fac6536 /taler-merchant-backoffice.in
parentb10a0524ec4248229608aed5891908e85f691864 (diff)
downloadbackoffice-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.in89
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)