diff --git a/ennstatus/api/functions.py b/ennstatus/api/functions.py --- a/ennstatus/api/functions.py +++ b/ennstatus/api/functions.py @@ -23,9 +23,21 @@ DATE_FORMAT = '%d-%m-%Y %H:%M:%S' gi4 = pygeoip.GeoIP('/usr/share/GeoIP/GeoIP.dat', pygeoip.MEMORY_CACHE) +def check_bridge(key, server): + + if key not in server: + raise ValueError('%s key not present!\n' % key) + else: + if server[key] not in ('True', 'False'): + error_message = ('%s has not the right content!' + ' is: %s must be one of: True or False\n') \ + % (key, server[key]) + raise ValueError(error_message) + + def check_json_format(server): - for key in ('server_type', 'server_name', 'tor_status'): + for key in ('server_type', 'server_name', 'tor_status', 'fingerprint'): if key not in server: raise ValueError('%s key not present!\n' % key) @@ -40,22 +52,12 @@ def check_json_format(server): ' is: %s must be one of: Online or Offline\n') \ % server['tor_status'] - if server['server_type'] in ('Exit', 'Relay'): - if 'fingerprint' not in server: - raise ValueError('fingerprint key not present!\n') - else: - if FINGERPRINT_REGEX.match(server['fingerprint']) is None: - raise ValueError('fingerprint has not the right format!\n') + if FINGERPRINT_REGEX.match(server['fingerprint']) is None: + raise ValueError('fingerprint has not the right format!\n') - else: - if 'obfs' not in server: - raise ValueError('obfs key not present!\n') - else: - if server['obfs'] not in ('True', 'False'): - error_message = ('obfs has not the right content!' - ' is: %s must be one of: True or False\n') \ - % server['obfs'] - raise ValueError(error_message) + if server['server_type'] == 'bridge': + for key in ('obfs', 'fteproxy'): + check_bridge(key, server) if 'ip' in server: if IP_REGEX.match(server['ip']) is None: @@ -74,6 +76,7 @@ def update_server(server, ip): if server['server_type'] == 'Bridge': server['obfs'] = literal_eval(server['obfs']) + server['fteproxy'] = literal_eval(server['fteproxy']) if 'ip' in server: del server['ip'] diff --git a/ennstatus/templates/api/export/xml/server.xml b/ennstatus/templates/api/export/xml/server.xml --- a/ennstatus/templates/api/export/xml/server.xml +++ b/ennstatus/templates/api/export/xml/server.xml @@ -5,13 +5,11 @@ {{ server['tor_status'] }} {{ server['country'] }} {{ server['last_updated'] }} - {% if 'ip' in server %} + {{ server['fingerprint'] }} + {% if server['server_type'] == 'bridge' %} + {{ server['obfs'] }} + {{ server['fteproxy'] }} + {% else %} {{ server['ip'] }} {% endif %} - {% if 'fingerprint' in server %} - {{ server['fingerprint'] }} - {% endif %} - {% if 'obfs' in server %} - {{ server['obfs'] }} - {% endif %} diff --git a/ennstatus/templates/status/macros.html b/ennstatus/templates/status/macros.html --- a/ennstatus/templates/status/macros.html +++ b/ennstatus/templates/status/macros.html @@ -38,9 +38,9 @@ {% macro create_server_table(server_type, servers) %} {% if server_type in ('Exit', 'Relay') %} - {% set headers = ['#', 'Name', 'IP', 'Server Status', 'Tor Status', 'Country', 'Fingerprint', 'Last Updated (UTC)'] %} + {% set headers = ('#', 'Name', 'IP', 'Server Status', 'Tor Status', 'Country', 'Fingerprint', 'Last Updated (UTC)') %} {% else %} - {% set headers = ['#', 'Name', 'Server Status', 'Tor Status', 'Country', 'Fingerprint', 'OBFS', 'Last Updated (UTC)'] %} + {% set headers = ('#', 'Name', 'Server Status', 'Tor Status', 'Country', 'Fingerprint', 'OBFS', 'FTEProxy', 'Last Updated (UTC)') %} {% endif %}

{{ server_type }}

@@ -57,19 +57,18 @@ {% if server_type in ('Exit', 'Relay') %} + {% else %} {% endif %} - {% if server_type in ('Exit', 'Relay') %} - - {% endif %} - {% for status in [server['server_status'], server['tor_status']] %} + {% for status in (server['server_status'], server['tor_status']) %} {% endfor %} {% if server_type == 'Bridge' %} + {% endif %}
{{ loop.index }}{{ create_name(server['server_name']) }}{{ server['ip'] }}{{ server['server_name'] }}{{ server['ip'] }}{{ colorize_status(status) }}{{ create_country(server['country']) }} {{ create_fingerprint(server['fingerprint'], server['server_type']) }}{{ colorize_obfs(server['obfs']) }}{{ colorize_obfs(server['fteproxy']) }}{{ server['last_updated'] }}