[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[taler-taler-merchant-demos] branch master updated (c37c10e -> a80b6a5)
From: |
gnunet |
Subject: |
[taler-taler-merchant-demos] branch master updated (c37c10e -> a80b6a5) |
Date: |
Wed, 02 Nov 2022 11:21:05 +0100 |
This is an automated email from the git hooks/post-receive script.
ms pushed a change to branch master
in repository taler-merchant-demos.
from c37c10e drop /demobank/default from landing link
new 106f4ef fix unsupported payment page
new a80b6a5 i18n
The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails. The revisions
listed as "add" were already present in the repository and have only
been added to this reference.
Summary of changes:
talermerchantdemos/blog/blog.py | 10 ++++++++++
talermerchantdemos/donations/donations.py | 12 +++++++++++-
talermerchantdemos/httpcommon/__init__.py | 9 +++++++++
talermerchantdemos/landing/landing.py | 10 +++++++++-
talermerchantdemos/survey/survey.py | 9 +++++++++
5 files changed, 48 insertions(+), 2 deletions(-)
diff --git a/talermerchantdemos/blog/blog.py b/talermerchantdemos/blog/blog.py
index 90ef3b9..263c7cf 100644
--- a/talermerchantdemos/blog/blog.py
+++ b/talermerchantdemos/blog/blog.py
@@ -164,6 +164,16 @@ def favicon():
# @return response object of the index page.
@app.route("/<lang>/")
def start(lang):
+
+ # get_locale defaults to english, hence the
+ # condition below happens only when lang is
+ # wrong or unsupported, respond 404.
+ if lang != get_locale():
+ err_abort(
+ 404,
+ message="Language {} not found".format(lang),
+ )
+
if lang in ARTICLES:
translated = ARTICLES[lang]
else:
diff --git a/talermerchantdemos/donations/donations.py
b/talermerchantdemos/donations/donations.py
index eb84044..ea7138b 100644
--- a/talermerchantdemos/donations/donations.py
+++ b/talermerchantdemos/donations/donations.py
@@ -175,6 +175,16 @@ def index():
# @return response object of the index page.
@app.route("/<lang>/")
def start(lang):
+
+ # get_locale defaults to english, hence the
+ # condition below happens only when lang is
+ # wrong or unsupported, respond 404.
+ if lang != get_locale():
+ err_abort(
+ 404,
+ message=f"Language {lang} not found",
+ )
+
return flask.render_template(
"donations-index.html.j2",
page_title=gettext("GNU Taler Demo: Donations"),
@@ -230,7 +240,7 @@ def donate(lang):
donation_donor = expect_parameter("donation_donor")
payment_system = expect_parameter("payment_system")
if payment_system != "taler":
- return flask.redirect(flask.url_for("provider_not_supported"))
+ return flask.redirect(flask.url_for("provider_not_supported",
lang=lang))
fulfillment_url = flask.url_for(
"fulfillment",
timestamp=str(time.time()),
diff --git a/talermerchantdemos/httpcommon/__init__.py
b/talermerchantdemos/httpcommon/__init__.py
index 0b76111..56cfeda 100644
--- a/talermerchantdemos/httpcommon/__init__.py
+++ b/talermerchantdemos/httpcommon/__init__.py
@@ -5,6 +5,7 @@ from flask import request, url_for
from datetime import datetime
import time
from flask_babel import gettext
+import babel # used for lang sanity check
import os
import re
import logging
@@ -99,6 +100,14 @@ def get_locale():
# Totally unexpected path format, do not localize
return "en"
lang = parts[1]
+
+ # Sanity check on the language code.
+ try:
+ babel.core.Locale.parse(lang)
+ except Exception as err:
+ # Not a locale, default to english.
+ LOGGER.error(f"language {lang} did not parse, default to english")
+ return "en"
if lang == "static":
# Static resource, not a language indicator.
# Do not localize then.
diff --git a/talermerchantdemos/landing/landing.py
b/talermerchantdemos/landing/landing.py
index b5142d6..23d11e8 100644
--- a/talermerchantdemos/landing/landing.py
+++ b/talermerchantdemos/landing/landing.py
@@ -23,6 +23,7 @@ import base64
import logging
import flask
import uwsgi
+import werkzeug
from flask import request, url_for
from flask_babel import Babel
from flask_babel import refresh
@@ -128,6 +129,12 @@ def index():
@app.route("/<lang>/", methods=["GET"])
def start(lang):
+ # get_locale defaults to english, hence the
+ # condition below happens only when lang is
+ # wrong or unsupported, respond 404.
+ if lang != get_locale():
+ raise werkzeug.exceptions.NotFound()
+
if x := os.environ.get("TALER_ENV_URL_BANK"):
bank_url = "/".join([x.strip("/"), f"?lang={lang}"])
bank_register_url = bank_url
@@ -162,7 +169,8 @@ def start(lang):
)
-@app.errorhandler(404)
+@app.errorhandler(404) # How to trigger this?
+@app.errorhandler(werkzeug.exceptions.NotFound)
def handler_404(e):
return flask.render_template(
"landing-error.html.j2",
diff --git a/talermerchantdemos/survey/survey.py
b/talermerchantdemos/survey/survey.py
index fbdbf25..1f0fffb 100644
--- a/talermerchantdemos/survey/survey.py
+++ b/talermerchantdemos/survey/survey.py
@@ -22,6 +22,7 @@ import datetime
import base64
import uwsgi
import logging
+import werkzeug
from urllib.parse import urljoin
import flask
from flask import request
@@ -159,6 +160,13 @@ def index():
@app.route("/<lang>/", methods=["GET"])
def start(lang):
LOGGER.info("Serving main page. Currency: {}".format(CURRENCY))
+
+ # get_locale defaults to english, hence the
+ # condition below happens only when lang is
+ # wrong or unsupported, respond 404.
+ if lang != get_locale():
+ raise werkzeug.exceptions.NotFound()
+
return flask.render_template(
"survey-index.html.j2",
page_title=gettext("GNU Taler Demo: Survey"),
@@ -167,6 +175,7 @@ def start(lang):
@app.errorhandler(404)
+@app.errorhandler(werkzeug.exceptions.NotFound)
def handler_404(e):
return flask.render_template(
"survey-error.html.j2",
--
To stop receiving notification emails like this one, please contact
gnunet@gnunet.org.
- [taler-taler-merchant-demos] branch master updated (c37c10e -> a80b6a5),
gnunet <=