gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[GNUnet-SVN] [taler-donations] 03/04: bootstrap/wsgi/launcher


From: gnunet
Subject: [GNUnet-SVN] [taler-donations] 03/04: bootstrap/wsgi/launcher
Date: Fri, 24 Nov 2017 17:43:05 +0100

This is an automated email from the git hooks/post-receive script.

marcello pushed a commit to branch master
in repository donations.

commit e103f75919721af3bd02d40e5b022a6426d4c460
Author: Marcello Stanisci <address@hidden>
AuthorDate: Fri Nov 24 17:33:01 2017 +0100

    bootstrap/wsgi/launcher
---
 bootstrap                   | 12 +++++++
 frontend-donations.wsgi.in  | 21 ++++++++++++
 taler-merchant-donations.in | 82 +++++++++++++++++++++++++++++++++++++++++++++
 3 files changed, 115 insertions(+)

diff --git a/bootstrap b/bootstrap
new file mode 100755
index 0000000..373e5f5
--- /dev/null
+++ b/bootstrap
@@ -0,0 +1,12 @@
+#!/bin/sh
+
+if ! git --version >/dev/null; then
+  echo "git not installed"
+  exit 1
+fi
+
+echo "$0: Updating submodules"
+echo | git submodule update --init
+
+echo "$0: Running autoreconf"
+autoreconf -if
diff --git a/frontend-donations.wsgi.in b/frontend-donations.wsgi.in
new file mode 100644
index 0000000..8007866
--- /dev/null
+++ b/frontend-donations.wsgi.in
@@ -0,0 +1,21 @@
+import sys
+
+if sys.version_info.major < 3:
+    print("The taler bank needs to run with Python>=3.4")
+    sys.exit(1)
+
+import site
+import os
+import logging
+
+logging.basicConfig(level=logging.INFO)
+
+os.environ.setdefault("TALER_PREFIX", "@prefix@")
+site.addsitedir("%s/lib/python%d.%d/site-packages" % (
+    "@prefix@", 
+    sys.version_info.major,
+    sys.version_info.minor))
+
+import talerdonations.donations
+
+application = talerdonations.donations.app
diff --git a/taler-merchant-donations.in b/taler-merchant-donations.in
new file mode 100644
index 0000000..8613d43
--- /dev/null
+++ b/taler-merchant-donations.in
@@ -0,0 +1,82 @@
+#!/usr/bin/env python3
+
+"""
+Stand-alone script to manage the GNU Taler donations frontend.
+"""
+
+import argparse
+import sys
+import os
+import site
+
+
+os.environ.setdefault("TALER_PREFIX", "@prefix@")
+site.addsitedir("%s/lib/python%d.%d/site-packages" % (
+    "@prefix@", 
+    sys.version_info.major,
+    sys.version_info.minor))
+
+from talerdonations.talerconfig import TalerConfig
+import logging
+logger = logging.getLogger(__name__)
+
+# No perfect match to our logging format, but good enough ...
+uwsgi_logfmt = "%(ltime) %(proto) %(method) %(uri) %(proto) => %(status)"
+
+def handle_serve_http(args):
+    tc = TalerConfig.from_file(os.environ.get("TALER_CONFIG_FILE"))
+    port = args.port
+    if port is None:
+        port = tc["donations"]["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-donations.wsgi")
+
+def handle_serve_uwsgi(args):
+    tc = TalerConfig.from_file(os.environ.get("TALER_CONFIG_FILE"))
+    serve_uwsgi = 
tc["donations"]["uwsgi_serve"].value_string(required=True).lower()
+    params = ["uwsgi", "uwsgi",
+        "--master",
+        "--die-on-term",
+        "--log-format", uwsgi_logfmt,
+        "--wsgi-file", "@prefix@/share/taler/frontend-donations.wsgi"]
+    if serve_uwsgi == "tcp":
+        port = tc["donations"]["uwsgi_port"].value_int(required=True)
+        spec = ":%d" % (port,)
+        params.extend(["--socket", spec])
+    elif serve_uwsgi == "unix":
+        spec = tc["donations"]["uwsgi_unixpath"].value_filename(required=True)
+        mode = 
tc["donations"]["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)
+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)

-- 
To stop receiving notification emails like this one, please contact
address@hidden



reply via email to

[Prev in Thread] Current Thread [Next in Thread]