From 063e68ec063ea29e32da920de83dbdad3fec185e Mon Sep 17 00:00:00 2001 From: Christian Grothoff Date: Sun, 23 Aug 2020 11:58:15 +0200 Subject: fix #6510 --- bin/taler-merchant-demos | 26 +++++++++++++++++--------- 1 file changed, 17 insertions(+), 9 deletions(-) (limited to 'bin/taler-merchant-demos') diff --git a/bin/taler-merchant-demos b/bin/taler-merchant-demos index b4ac156..098416a 100755 --- a/bin/taler-merchant-demos +++ b/bin/taler-merchant-demos @@ -59,7 +59,11 @@ def handle_serve_uwsgi(config, whichShop): 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) + try: + os.execlp(*params) + except: + echo "Failed to start uwsgi. Please make sure to install uwsgi for Python3." + sys.exit(1) ## # This function interprets the 'serve-http' subcommand. @@ -70,12 +74,16 @@ def handle_serve_http(config, whichShop, port=None): if port is None: port = config[whichShop]["http_port"].value_int(required=True) spec = ":%d" % (port,) - os.execlp("uwsgi", "uwsgi", - "--master", - "--die-on-term", - "--log-format", UWSGI_LOGFMT, - "--http", spec, - "--module", "talermerchantdemos.{}:app".format(whichShop)) + try: + os.execlp("uwsgi", "uwsgi", + "--master", + "--die-on-term", + "--log-format", UWSGI_LOGFMT, + "--http", spec, + "--module", "talermerchantdemos.{}:app".format(whichShop)) + except: + echo "Failed to start uwsgi. Please make sure to install uwsgi for Python3." + sys.exit(1) @click.command("Global shop launcher") @click.option("--config", help="Configuration file", required=False) @@ -92,7 +100,7 @@ def demos(config, serve_http, port, serve_uwsgi, which_shop): config_obj = TalerConfig.from_file(os.environ.get("TALER_CONFIG_FILE")) if serve_http: # port was given handle_serve_http(config_obj, which_shop, port) - return - handle_serve_uwsgi(config_obj, which_shop) + else: + handle_serve_uwsgi(config_obj, which_shop) demos() -- cgit v1.2.3 From fd74c419ac1b308f314dd9d47c7dd98103aa0e80 Mon Sep 17 00:00:00 2001 From: Christian Grothoff Date: Sun, 23 Aug 2020 12:10:06 +0200 Subject: generate proper error message on configuration error (fixes #6512) --- bin/taler-merchant-demos | 4 ++-- talermerchantdemos/blog/blog.py | 13 +++++++++---- talermerchantdemos/donations/donations.py | 13 +++++++++---- talermerchantdemos/survey/survey.py | 14 ++++++++++---- 4 files changed, 30 insertions(+), 14 deletions(-) (limited to 'bin/taler-merchant-demos') diff --git a/bin/taler-merchant-demos b/bin/taler-merchant-demos index 098416a..9cc7516 100755 --- a/bin/taler-merchant-demos +++ b/bin/taler-merchant-demos @@ -62,7 +62,7 @@ def handle_serve_uwsgi(config, whichShop): try: os.execlp(*params) except: - echo "Failed to start uwsgi. Please make sure to install uwsgi for Python3." + sys.stderr.write("Failed to start uwsgi. Please make sure to install uwsgi for Python3.") sys.exit(1) ## @@ -82,7 +82,7 @@ def handle_serve_http(config, whichShop, port=None): "--http", spec, "--module", "talermerchantdemos.{}:app".format(whichShop)) except: - echo "Failed to start uwsgi. Please make sure to install uwsgi for Python3." + sys.stderr.write("Failed to start uwsgi. Please make sure to install uwsgi for Python3.") sys.exit(1) @click.command("Global shop launcher") diff --git a/talermerchantdemos/blog/blog.py b/talermerchantdemos/blog/blog.py index cf14acb..2526c80 100644 --- a/talermerchantdemos/blog/blog.py +++ b/talermerchantdemos/blog/blog.py @@ -26,8 +26,9 @@ import base64 import flask import lxml.etree import time +import sys from urllib.parse import urljoin, urlencode, urlparse -from taler.util.talerconfig import TalerConfig +from taler.util.talerconfig import TalerConfig, ConfigurationError from ..blog.content import ARTICLES, get_article_file, get_image_file from talermerchantdemos.httpcommon import backend_get, backend_post @@ -43,9 +44,13 @@ app.secret_key = base64.b64encode(os.urandom(64)).decode("utf-8") LOGGER = logging.getLogger(__name__) TC = TalerConfig.from_env() -BACKEND_BASE_URL = TC["frontends"]["backend"].value_string(required=True) -CURRENCY = TC["taler"]["currency"].value_string(required=True) -APIKEY = TC["frontends"]["backend_apikey"].value_string(required=True) +try: + BACKEND_BASE_URL = TC["frontends"]["backend"].value_string(required=True) + CURRENCY = TC["taler"]["currency"].value_string(required=True) + APIKEY = TC["frontends"]["backend_apikey"].value_string(required=True) +except ConfigurationError as ce: + print(ce) + exit(1) ARTICLE_AMOUNT = CURRENCY + ":0.5" BACKEND_URL = urljoin(BACKEND_BASE_URL, "instances/blog/") diff --git a/talermerchantdemos/donations/donations.py b/talermerchantdemos/donations/donations.py index d02bfa3..614f730 100644 --- a/talermerchantdemos/donations/donations.py +++ b/talermerchantdemos/donations/donations.py @@ -25,9 +25,10 @@ import os import time import traceback import urllib -from taler.util.talerconfig import TalerConfig +from taler.util.talerconfig import TalerConfig, ConfigurationError from urllib.parse import urljoin from ..httpcommon import backend_post, backend_get +import sys if not sys.version_info.major == 3 and sys.version_info.minor >= 6: print("Python 3.6 or higher is required.") @@ -43,9 +44,13 @@ app.debug = True app.secret_key = base64.b64encode(os.urandom(64)).decode("utf-8") TC = TalerConfig.from_env() -BACKEND_BASE_URL = TC["frontends"]["backend"].value_string(required=True) -CURRENCY = TC["taler"]["currency"].value_string(required=True) -APIKEY = TC["frontends"]["backend_apikey"].value_string(required=True) +try: + BACKEND_BASE_URL = TC["frontends"]["backend"].value_string(required=True) + CURRENCY = TC["taler"]["currency"].value_string(required=True) + APIKEY = TC["frontends"]["backend_apikey"].value_string(required=True) +except ConfigurationError as ce: + print(ce) + exit(1) app.config.from_object(__name__) diff --git a/talermerchantdemos/survey/survey.py b/talermerchantdemos/survey/survey.py index ef8e946..562b817 100644 --- a/talermerchantdemos/survey/survey.py +++ b/talermerchantdemos/survey/survey.py @@ -24,8 +24,9 @@ import logging from urllib.parse import urljoin import flask import traceback -from taler.util.talerconfig import TalerConfig +from taler.util.talerconfig import TalerConfig, ConfigurationError from ..httpcommon import backend_get, backend_post +import sys if not sys.version_info.major == 3 and sys.version_info.minor >= 6: print("Python 3.6 or higher is required.") @@ -37,9 +38,14 @@ app = flask.Flask(__name__, template_folder=BASE_DIR) app.debug = True app.secret_key = base64.b64encode(os.urandom(64)).decode('utf-8') TC = TalerConfig.from_env() -BACKEND_URL = TC["frontends"]["backend"].value_string(required=True) -CURRENCY = TC["taler"]["currency"].value_string(required=True) -APIKEY = TC["frontends"]["backend_apikey"].value_string(required=True) +try: + BACKEND_URL = TC["frontends"]["backend"].value_string(required=True) + CURRENCY = TC["taler"]["currency"].value_string(required=True) + APIKEY = TC["frontends"]["backend_apikey"].value_string(required=True) +except ConfigurationError as ce: + print(ce) + exit(1) + app.config.from_object(__name__) LOGGER = logging.getLogger(__name__) INSTANCED_URL = urljoin(BACKEND_URL, f"instances/survey/") -- cgit v1.2.3 From 78e7715cde06aa3ee3dee853f8bc6ea12a350db0 Mon Sep 17 00:00:00 2001 From: Christian Grothoff Date: Sun, 23 Aug 2020 12:15:10 +0200 Subject: fix #6507 --- bin/taler-merchant-demos | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'bin/taler-merchant-demos') diff --git a/bin/taler-merchant-demos b/bin/taler-merchant-demos index 9cc7516..780582c 100755 --- a/bin/taler-merchant-demos +++ b/bin/taler-merchant-demos @@ -27,7 +27,7 @@ import argparse import sys import os import site -from taler.util.talerconfig import TalerConfig +from taler.util.talerconfig import TalerConfig, ConfigurationError LOGGER = logging.getLogger(__name__) # No perfect match to our logging format, but good enough ... @@ -72,7 +72,11 @@ def handle_serve_uwsgi(config, whichShop): # @param args command line options. def handle_serve_http(config, whichShop, port=None): if port is None: - port = config[whichShop]["http_port"].value_int(required=True) + try: + port = config[whichShop]["http_port"].value_int(required=True) + except ConfigurationError as ce: + print(ce) + exit(1) spec = ":%d" % (port,) try: os.execlp("uwsgi", "uwsgi", -- cgit v1.2.3