diff --git a/CHANGELOG b/CHANGELOG index 163fc6cb74fcc8f7e7e02508b3ae949a7de4bd0e..b0e827590a7bd62f596f90f7ddcd6e056733b598 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,3 +1,8 @@ + * FIXES https://bugs.torproject.org/33008 + Add an info page, available at bridges.torproject.org/info. Relay + Search links to this info page to explain to bridge operators what their + bridge distribution mechanism means. + Changes in version 0.9.4 - 2020-02-19 * FIXES https://bugs.torproject.org/30946 diff --git a/bridgedb/distributors/https/server.py b/bridgedb/distributors/https/server.py index 503744e4804d803c6a5a9b80130282ec8986b4aa..be9926249f0eedef11ca9481d160879c11b6c9f7 100644 --- a/bridgedb/distributors/https/server.py +++ b/bridgedb/distributors/https/server.py @@ -389,13 +389,14 @@ class TranslatedTemplateResource(CustomErrorHandlingResource, CSPResource): """ isLeaf = True - def __init__(self, template=None): + def __init__(self, template=None, showFaq=True): """Create a new :api:`Resource ` for a Mako-templated webpage. """ gettext.install("bridgedb") CSPResource.__init__(self) self.template = template + self.showFaq = showFaq def render_GET(self, request): self.setCSPHeader(request) @@ -409,7 +410,8 @@ class TranslatedTemplateResource(CustomErrorHandlingResource, CSPResource): getSortedLangList(), rtl=rtl, lang=langs[0], - langOverride=translations.isLangOverridden(request)) + langOverride=translations.isLangOverridden(request), + showFaq=self.showFaq) except Exception as err: # pragma: no cover rendered = replaceErrorPage(request, err) request.setHeader("Content-Type", "text/html; charset=utf-8") @@ -435,6 +437,11 @@ class OptionsResource(TranslatedTemplateResource): TranslatedTemplateResource.__init__(self, 'options.html') +class InfoResource(TranslatedTemplateResource): + def __init__(self): + TranslatedTemplateResource.__init__(self, 'info.html', showFaq=False) + + class HowtoResource(TranslatedTemplateResource): """A resource which explains how to use bridges.""" @@ -1133,6 +1140,7 @@ def addWebServer(config, distributor): index = IndexResource() options = OptionsResource() howto = HowtoResource() + info = InfoResource() robots = static.File(os.path.join(TEMPLATE_DIR, 'robots.txt')) assets = static.File(os.path.join(TEMPLATE_DIR, 'assets/')) keys = static.Data(strings.BRIDGEDB_OPENPGP_KEY.encode('utf-8'), 'text/plain') @@ -1148,6 +1156,7 @@ def addWebServer(config, distributor): root.putChild(b'assets', assets) root.putChild(b'options', options) root.putChild(b'howto', howto) + root.putChild(b'info', info) root.putChild(b'maintenance', maintenance) root.putChild(b'error', resource500) root.putChild(CSPResource.reportURI, csp) diff --git a/bridgedb/distributors/https/templates/base.html b/bridgedb/distributors/https/templates/base.html index fb54e81208a8c1846aa3e4ae7dfeecf57aae3b7b..b42d252567968f835fafa9b83e2922e34d236fdc 100644 --- a/bridgedb/distributors/https/templates/base.html +++ b/bridgedb/distributors/https/templates/base.html @@ -1,7 +1,7 @@ ## -*- coding: utf-8 -*- <%namespace name="base" file="base.html" inheritable="True"/> -<%page args="strings, langs, rtl=False, lang='en', langOverride=False, **kwargs"/> +<%page args="strings, langs, rtl=False, lang='en', langOverride=False, showFaq=True, **kwargs"/> @@ -59,6 +59,7 @@ ${next.body(strings, langs, rtl=rtl, lang=lang, langOverride=langOverride, **kwargs)} + % if showFaq:
@@ -84,6 +85,7 @@ ${next.body(strings, langs, rtl=rtl, lang=lang, langOverride=langOverride, **kwa

+ % endif