[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]
[tor-commits] [metrics-web/release] Integrate ExoneraTor as its own web page.
commit b60cf28654a880bd0bc68288d0af36d4a460e857
Author: Karsten Loesing <karsten.loesing@xxxxxxx>
Date: Fri Aug 10 09:35:50 2018 +0200
Integrate ExoneraTor as its own web page.
Implements #23549.
---
build.xml | 5 ++
.../metrics/web/ExoneraTorWrapperServlet.java | 35 ++++++++++++++
src/main/resources/web.xml | 11 +++++
src/main/resources/web/jsps/exonerator.jsp | 23 +++++++++
src/main/resources/web/jsps/services.jsp | 2 +-
.../resources/web/properties/ExoneraTor.properties | 54 ++++++++++++++++++++++
.../web/properties/ExoneraTor_de.properties | 52 +++++++++++++++++++++
.../web/properties/ExoneraTor_fr.properties | 52 +++++++++++++++++++++
.../web/properties/ExoneraTor_ro.properties | 52 +++++++++++++++++++++
.../web/properties/ExoneraTor_sv.properties | 52 +++++++++++++++++++++
10 files changed, 337 insertions(+), 1 deletion(-)
diff --git a/build.xml b/build.xml
index 2f06209..423bfe3 100644
--- a/build.xml
+++ b/build.xml
@@ -10,6 +10,7 @@
<property name="implementation-title" value="metrics-web" />
<property name="release.version" value="1.1.0-dev" />
<property name="metricslibversion" value="2.4.0" />
+ <property name="exoneratorversion" value="3.0.0" />
<property name="jetty.version" value="-9.2.21.v20170120" />
<property name="warfile"
value="metrics-web-${release.version}.war"/>
@@ -64,6 +65,7 @@
</patternset>
<patternset id="web" >
+ <include name="exonerator-${exoneratorversion}-thin.jar" />
<include name="jetty9-annotations${jetty.version}.jar"/>
<include name="jetty9-server${jetty.version}.jar"/>
<include name="jetty9-servlet${jetty.version}.jar"/>
@@ -194,6 +196,9 @@
prefix="WEB-INF/json"
includes="metrics.json categories.json news.json"/>
+ <zipfileset dir="${resources}/web/properties"
+ includes="*.properties"/>
+
<zipfileset dir="${basedir}/src/submods/metrics-lib/generated/javadoc"
prefix="metrics-lib" />
<zipfileset dir="${libs}" prefix="WEB-INF/lib" >
diff --git a/src/main/java/org/torproject/metrics/web/ExoneraTorWrapperServlet.java b/src/main/java/org/torproject/metrics/web/ExoneraTorWrapperServlet.java
new file mode 100644
index 0000000..fc817e2
--- /dev/null
+++ b/src/main/java/org/torproject/metrics/web/ExoneraTorWrapperServlet.java
@@ -0,0 +1,35 @@
+/* Copyright 2018 The Tor Project
+ * See LICENSE for licensing information */
+
+package org.torproject.metrics.web;
+
+import org.torproject.metrics.exonerator.ExoneraTorServlet;
+
+import java.io.IOException;
+
+import javax.servlet.ServletConfig;
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+public class ExoneraTorWrapperServlet extends AnyServlet {
+
+ private ExoneraTorServlet exoneraTorServlet;
+
+ public ExoneraTorWrapperServlet() {
+ this.exoneraTorServlet = new ExoneraTorServlet();
+ }
+
+ @Override
+ public void init(ServletConfig config) throws ServletException {
+ super.init(config);
+ this.exoneraTorServlet.init(config);
+ }
+
+ @Override
+ public void doGet(HttpServletRequest request, HttpServletResponse response)
+ throws IOException, ServletException {
+ request.setAttribute("categories", this.categories);
+ this.exoneraTorServlet.doGet(request, response);
+ }
+}
diff --git a/src/main/resources/web.xml b/src/main/resources/web.xml
index 154a64e..ae252da 100644
--- a/src/main/resources/web.xml
+++ b/src/main/resources/web.xml
@@ -384,6 +384,17 @@
<url-pattern>/rs.html</url-pattern>
</servlet-mapping>
+ <servlet>
+ <servlet-name>ExoneraTor</servlet-name>
+ <servlet-class>
+ org.torproject.metrics.web.ExoneraTorWrapperServlet
+ </servlet-class>
+ </servlet>
+ <servlet-mapping>
+ <servlet-name>ExoneraTor</servlet-name>
+ <url-pattern>/exonerator.html</url-pattern>
+ </servlet-mapping>
+
<welcome-file-list>
<welcome-file>index.html</welcome-file>
</welcome-file-list>
diff --git a/src/main/resources/web/jsps/exonerator.jsp b/src/main/resources/web/jsps/exonerator.jsp
new file mode 100644
index 0000000..f8b9341
--- /dev/null
+++ b/src/main/resources/web/jsps/exonerator.jsp
@@ -0,0 +1,23 @@
+<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
+<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
+<jsp:include page="top.jsp">
+ <jsp:param name="pageTitle" value="ExoneraTor – Tor Metrics"/>
+ <jsp:param name="navActive" value="Services"/>
+</jsp:include>
+
+<div class="container">
+ <ul class="breadcrumb">
+ <li><a href="/">Home</a></li>
+ <li><a href="/services.html">Services</a></li>
+ <li class="active">ExoneraTor</li>
+ </ul>
+</div>
+
+<div class="container">
+ <h1>ExoneraTor</h1>
+</div>
+
+${body}
+
+<jsp:include page="bottom.jsp"/>
+
diff --git a/src/main/resources/web/jsps/services.jsp b/src/main/resources/web/jsps/services.jsp
index 2283dbe..ead3b03 100644
--- a/src/main/resources/web/jsps/services.jsp
+++ b/src/main/resources/web/jsps/services.jsp
@@ -21,7 +21,7 @@
<h2>Network archive <a href="#archive" name="archive" class="anchor">#</a></h2>
<p>The following tool lets you browse the network archive for relays running in the past.</p>
<ul>
- <li><a href="https://exonerator.torproject.org/" target="_blank">ExoneraTor</a> tells you if an IP was used by a Tor relay on a given date.</li>
+ <li><a href="/exonerator.html">ExoneraTor</a> tells you if an IP was used by a Tor relay on a given date.</li>
</ul>
</div>
diff --git a/src/main/resources/web/properties/ExoneraTor.properties b/src/main/resources/web/properties/ExoneraTor.properties
new file mode 100644
index 0000000..936754a
--- /dev/null
+++ b/src/main/resources/web/properties/ExoneraTor.properties
@@ -0,0 +1,54 @@
+form.explanation=Enter an IP address and date to find out whether that address was used as a Tor relay:
+form.ip.label=IP address
+form.timestamp.label=Date
+form.search.label=Search
+summary.heading=Summary
+summary.serverproblem.dbnoconnect.title=Server problem
+summary.serverproblem.dbnoconnect.body.text=Unable to connect to the database. Please try again later. If this problem persists, please %s!
+summary.serverproblem.dbnoconnect.body.link=let us know
+summary.serverproblem.dbempty.title=Server problem
+summary.serverproblem.dbempty.body.text=The database appears to be empty. Please try again later. If this problem persists, please %s!
+summary.serverproblem.dbempty.body.link=let us know
+summary.invalidparams.notimestamp.title=No date parameter given
+summary.invalidparams.notimestamp.body=Sorry, you also need to provide a date parameter.
+summary.invalidparams.noip.title=No IP address parameter given
+summary.invalidparams.noip.body=Sorry, you also need to provide an IP address parameter.
+summary.invalidparams.timestamprange.title=Date parameter out of range
+summary.invalidparams.timestamprange.body=Sorry, the database does not contain any data from %s. Please pick a date between %s and %s.
+summary.invalidparams.invalidip.title=Invalid IP address parameter
+summary.invalidparams.invalidip.body=Sorry, %s is not a valid IP address. The expected IP address formats are %s or %s.
+summary.invalidparams.invalidtimestamp.title=Invalid date parameter
+summary.invalidparams.invalidtimestamp.body=Sorry, %s is not a valid date. The expected date format is %s.
+summary.invalidparams.timestamptoorecent.title=Date parameter too recent
+summary.invalidparams.timestamptoorecent.body=The database may not yet contain enough data to correctly answer this request. The latest accepted data is the day before yesterday. Please repeat your search on another day.
+summary.serverproblem.nodata.title=Server problem
+summary.serverproblem.nodata.body.text=The database does not contain any data for the requested date. Please try again later. If this problem persists, please %s!
+summary.serverproblem.nodata.body.link=let us know
+summary.negativesamenetwork.title=Result is negative
+summary.negativesamenetwork.body=We did not find IP address %s on or within a day of %s. But we did find other IP addresses of Tor relays in the same /%d network around the time:
+summary.positive.title=Result is positive
+summary.positive.body=We found one or more Tor relays on IP address %s on or within a day of %s that Tor clients were likely to know.
+summary.negative.title=Result is negative
+summary.negative.body=We did not find IP address %s on or within a day of %s.
+technicaldetails.heading=Technical details
+technicaldetails.pre=Looking up IP address %s on or within one day of %s. Tor clients could have selected this or these Tor relays to build circuits.
+technicaldetails.colheader.timestamp=Timestamp (UTC)
+technicaldetails.colheader.ip=IP address(es)
+technicaldetails.colheader.fingerprint=Identity fingerprint
+technicaldetails.colheader.nickname=Nickname
+technicaldetails.colheader.exit=Exit relay
+technicaldetails.nickname.unknown=Unknown
+technicaldetails.exit.unknown=Unknown
+technicaldetails.exit.yes=Yes
+technicaldetails.exit.no=No
+permanentlink.heading=Permanent link
+footer.abouttor.heading=About Tor
+footer.abouttor.body.text=Tor is an international software project to anonymize Internet traffic by %s. Therefore, if you see traffic from a Tor relay, this traffic usually originates from someone using Tor, rather than from the relay operator. The Tor Project and Tor relay operators have no records of the traffic that passes over the network and therefore cannot provide any information about its origin. Be sure to %s, and don't hesitate to %s for more information.
+footer.abouttor.body.link1=encrypting packets and sending them through a series of hops before they reach their destination
+footer.abouttor.body.link2=learn more about Tor
+footer.abouttor.body.link3=contact The Tor Project, Inc.
+footer.aboutexonerator.heading=About ExoneraTor
+footer.aboutexonerator.body=The ExoneraTor service maintains a database of IP addresses that have been part of the Tor network. It answers the question whether there was a Tor relay running on a given IP address on a given date. ExoneraTor may store more than one IP address per relay if relays use a different IP address for exiting to the Internet than for registering in the Tor network, and it stores whether a relay permitted transit of Tor traffic to the open Internet at that time.
+footer.language.name=English
+footer.language.text=This page is also available in the following languages:
+
diff --git a/src/main/resources/web/properties/ExoneraTor_de.properties b/src/main/resources/web/properties/ExoneraTor_de.properties
new file mode 100644
index 0000000..d830e31
--- /dev/null
+++ b/src/main/resources/web/properties/ExoneraTor_de.properties
@@ -0,0 +1,52 @@
+form.explanation=Geben Sie eine IP-Adresse und ein Datum ein um herauszufinden, ob diese IP-Adresse von einem Tor-Server verwendet wurde:
+form.ip.label=IP-Adresse
+form.timestamp.label=Datum
+form.search.label=Suchen
+summary.heading=Zusammenfassung
+summary.serverproblem.dbnoconnect.title=Server-Problem
+summary.serverproblem.dbnoconnect.body.text=Es kann keine Verbindung zur Datenbank hergestellt werden. Bitte versuchen Sie es sp\u00e4ter noch einmal. Sollte dieses Problem weiterhin bestehen %s.
+summary.serverproblem.dbnoconnect.body.link=lassen Sie es uns bitte wissen
+summary.serverproblem.dbempty.title=Server-Problem
+summary.serverproblem.dbempty.body.text=Die Datenbank scheint leer zu sein. Bitte versuchen Sie es sp\u00e4ter noch einmal. Sollte dieses Problem weiterhin bestehen %s.
+summary.serverproblem.dbempty.body.link=lassen Sie es uns bitte wissen
+summary.invalidparams.notimestamp.title=Kein Datum angegeben
+summary.invalidparams.notimestamp.body=Sie m\u00fcssen ein Datum angeben.
+summary.invalidparams.noip.title=Keine IP-Adresse angegeben.
+summary.invalidparams.noip.body=Sie m\u00fcssen eine IP-Adresse angeben.
+summary.invalidparams.timestamprange.title=Datum au\u00dferhalb des zul\u00e4ssigen Bereichs
+summary.invalidparams.timestamprange.body=Die Datenbank enth\u00e4lt keine Daten vom %s. Bitte w\u00e4hlen Sie ein Datum zwischen %s und %s aus.
+summary.invalidparams.invalidip.title=Ung\u00fcltige IP-Adresse
+summary.invalidparams.invalidip.body=%s ist keine g\u00fcltige IP-Adresse. Zul\u00e4ssige IP-Adress-Formate sind %s oder %s.
+summary.invalidparams.invalidtimestamp.title=Ung\u00fcltiges Datum
+summary.invalidparams.invalidtimestamp.body=%s ist kein g\u00fcltiges Datum. Das zul\u00e4ssige Datumsformat ist %s.
+summary.serverproblem.nodata.title=Server-Problem
+summary.serverproblem.nodata.body.text=Die Datenbank enth\u00e4lt keine Daten f\u00fcr das angegebene Datum. Bitte versuchen Sie es sp\u00e4ter noch einmal. Sollte dieses Problem weiterhin bestehen %s.
+summary.serverproblem.nodata.body.link=lassen Sie es uns bitte wissen
+summary.negativesamenetwork.title=Keine \u00dcbereinstimmungen gefunden
+summary.negativesamenetwork.body=Es wurde kein Tor-Server mit der IP-Adresse %s am %s bzw. am Tag vorher oder nachher gefunden. Es wurden jedoch benachbarte IP-Adressen im selben /%d-Netzwerk an diesen Tagen gefunden:
+summary.positive.title=\u00dcbereinstimmungen gefunden
+summary.positive.body=Es wurde ein oder mehrere Tor-Server mit IP-Adresse %s am %s bzw. am Tag vorher oder nachher gefunden, die den Tor-Clients bekannt waren.
+summary.negative.title=Keine \u00dcbereinstimmungen gefunden
+summary.negative.body=Es wurde kein Tor-Server mit der IP-Adresse %s am %s bzw. am Tag vorher oder nachher gefunden.
+technicaldetails.heading=Technische Details
+technicaldetails.pre=Es wird nach Tor-Servern mit IP-Adresse %s am %s bzw. am Tag vorher oder nachher gesucht. Tor-Clients konnten diese Tor-Server verwenden, um Verbindungen aufzubauen.
+technicaldetails.colheader.timestamp=Datum/Uhrzeit (UTC)
+technicaldetails.colheader.ip=IP-Adresse(n)
+technicaldetails.colheader.fingerprint=Identit\u00e4tsschl\u00fcssel
+technicaldetails.colheader.nickname=Spitzname
+technicaldetails.colheader.exit=Exit-Server
+technicaldetails.nickname.unknown=Unbekannt
+technicaldetails.exit.unknown=Unbekannt
+technicaldetails.exit.yes=Ja
+technicaldetails.exit.no=Nein
+permanentlink.heading=Dauerhafter Link
+footer.abouttor.heading=\u00dcber Tor
+footer.abouttor.body.text=Tor ist ein internationales Softwareprojekt, um Internetverbindungen zu anonymisieren indem %s. Wenn Sie eine Internetverbindung sehen, die von einem Tor-Server kommt, stammt diese in der Regel von jemandem, der Tor benutzt, und nicht vom Betreiber des Tor-Servers selbst. Weder The Tor Project, Inc. noch die Tor-Server-Betreiber besitzen Aufzeichnungen \u00fcber die Internetverbindungen im Tor-Netzwerk und k\u00f6nnen daher keine Auskunft \u00fcber den Ursprung der Internetverbindung geben. Mehr Informationen \u00fcber Tor erhalten Sie %s. The Tor Project, Inc. steht Ihnen jederzeit f\u00fcr %s zur Verf\u00fcgung.
+footer.abouttor.body.link1=Datenpakete verschl\u00fcsselt und \u00fcber eine Reihe von Stationen geleitet werden, bevor diese ihr Ziel erreichen
+footer.abouttor.body.link2=hier
+footer.abouttor.body.link3=Fragen
+footer.aboutexonerator.heading=\u00dcber ExoneraTor
+footer.aboutexonerator.body=Der ExoneraTor-Dienst basiert auf einer Datenbank von IP-Adressen, die Teil des Tor-Netzwerks sind oder waren. Dieser Dienst beantwortet die Frage, ob es an einem bestimmten Tag einen Tor-Server mit einer bestimmten IP-Adresse gegeben hat. ExoneraTor kann in einigen F\u00e4llen mehr als nur eine IP-Adresse pro Tor-Server ausgeben, falls ein Tor-Server verschiedene IP-Adressen f\u00fcr ausgehende Verbindungen und die Registrierung im Tor-Netzwerk verwendet hat. ExoneraTor speichert au\u00dferdem, ob ein Tor-Server Verbindungen ins offene Internet zugelassen hat oder nicht.
+footer.language.name=Deutsch
+footer.language.text=Diese Seite gibt es auch in den folgenden Sprachen:
+
diff --git a/src/main/resources/web/properties/ExoneraTor_fr.properties b/src/main/resources/web/properties/ExoneraTor_fr.properties
new file mode 100644
index 0000000..70d4d2f
--- /dev/null
+++ b/src/main/resources/web/properties/ExoneraTor_fr.properties
@@ -0,0 +1,52 @@
+form.explanation=Saisir une adresse IP et une date afin de savoir si l'adresse a \u00e9t\u00e9 utilis\u00e9e comme relais Tor \:
+form.ip.label=Adresse IP
+form.timestamp.label=Date
+form.search.label=Rechercher
+summary.heading=R\u00e9sum\u00e9
+summary.serverproblem.dbnoconnect.title=Probl\u00e8me de serveur
+summary.serverproblem.dbnoconnect.body.text=Impossible de se connecter \u00e0 la base de donn\u00e9es. Veuillez ressayer ult\u00e9rieurement. Si ce probl\u00e8me perdure, veuillez %s \!
+summary.serverproblem.dbnoconnect.body.link=nous en informer
+summary.serverproblem.dbempty.title=Probl\u00e8me de serveur
+summary.serverproblem.dbempty.body.text=La base de donn\u00e9es semble \u00eatre vide. Veuillez ressayer ult\u00e9rieurement. Si ce probl\u00e8me perdure, veuillez %s \!
+summary.serverproblem.dbempty.body.link=nous en informer
+summary.invalidparams.notimestamp.title=Aucune date n'a \u00e9t\u00e9 donn\u00e9e en param\u00e8tre
+summary.invalidparams.notimestamp.body=D\u00e9sol\u00e9, vous devez aussi pr\u00e9ciser une date.
+summary.invalidparams.noip.title=Aucune adresse IP n'a \u00e9t\u00e9 donn\u00e9e en param\u00e8tre
+summary.invalidparams.noip.body=D\u00e9sol\u00e9, vous devez aussi fournir une adresse IP.
+summary.invalidparams.timestamprange.title=Date hors p\u00e9riode couverte
+summary.invalidparams.timestamprange.body=D\u00e9sol\u00e9, la base de donn\u00e9es ne contient aucune donn\u00e9e de %s. Veuillez choisir une date entre %s et %s.
+summary.invalidparams.invalidip.title=Adresse IP invalide
+summary.invalidparams.invalidip.body=D\u00e9sol\u00e9, %s n'est pas une adresse IP valide. Les formats d'adresse IP attendus sont %s ou %s.
+summary.invalidparams.invalidtimestamp.title=Date invalide
+summary.invalidparams.invalidtimestamp.body=D\u00e9sol\u00e9, %s n'est pas une date valide. Le format de date attendu est %s.
+summary.serverproblem.nodata.title=Probl\u00e8me de serveur
+summary.serverproblem.nodata.body.text=La base de donn\u00e9es ne contient aucune donn\u00e9e pour la date demand\u00e9e. Veuillez ressayer ult\u00e9rieurement. Si le probl\u00e8me perdure, veuillez %s \!
+summary.serverproblem.nodata.body.link=nous en informer
+summary.negativesamenetwork.title=R\u00e9sultat n\u00e9gatif
+summary.negativesamenetwork.body=Nous n'avons pas trouv\u00e9 l'adresse IP %s, le %s ou \u00e0 un jour pr\u00e8s. Mais nous avons trouv\u00e9 d'autres adresses IP de relais Tor dans le m\u00eame r\u00e9seau /%d aux alentours de cette date \:
+summary.positive.title=R\u00e9sultat positif
+summary.positive.body=Nous avons trouv\u00e9 un ou plusieurs relais Tor \u00e0 l'adresse IP %s probablement connus des clients Tor le %s ou \u00e0 un jour pr\u00e8s.
+summary.negative.title=R\u00e9sultat n\u00e9gatif
+summary.negative.body=Nous n'avons pas trouv\u00e9 l'adresse IP %s, le %s ou \u00e0 un jour pr\u00e8s.
+technicaldetails.heading=D\u00e9tails techniques
+technicaldetails.pre=Recherche de l'adresse IP %s, le %s ou \u00e0 un jour pr\u00e8s. Des clients Tor pourraient avoir choisi ce ou ces relais Tor pour construire des circuits.
+technicaldetails.colheader.timestamp=Date et heure (UTC)
+technicaldetails.colheader.ip=Adresse(s) IP
+technicaldetails.colheader.fingerprint=Empreinte
+technicaldetails.colheader.nickname=Pseudonyme
+technicaldetails.colheader.exit=Relais de sortie
+technicaldetails.nickname.unknown=Inconnu
+technicaldetails.exit.unknown=Inconnu
+technicaldetails.exit.yes=Oui
+technicaldetails.exit.no=Non
+permanentlink.heading=Lien permanent
+footer.abouttor.heading=\u00c0 propos de Tor
+footer.abouttor.body.text=Tor est un projet international d\u00e9veloppant des logiciels pour anonymiser le trafic Internet en %s. Par cons\u00e9quent, si vous voyez du trafic en provenance d'un relais Tor, ce trafic provient habituellement de quelqu'un qui utilise Tor, plut\u00f4t que de l'op\u00e9rateur du relais. Le projet Tor et les op\u00e9rateurs de relais Tor n'ont aucune trace du trafic relay\u00e9 par le r\u00e9seau et ne peuvent donc fournir aucune information sur son origine. N'h\u00e9sitez pas \u00e0 vous %s et n'h\u00e9sitez pas \u00e0 %s pour obtenir d'avantage d'informations.
+footer.abouttor.body.link1=chiffrant les paquets et en les faisant transiter par une s\u00e9rie de relais avant qu'ils n'atteignent leur destination
+footer.abouttor.body.link2=renseigner d'avantage au sujet de Tor
+footer.abouttor.body.link3=contacter \u00ab\u00a0The Tor Project, Inc.\u00a0\u00bb
+footer.aboutexonerator.heading=\u00c0 propos d'ExoneraTor
+footer.aboutexonerator.body=Le service ExoneraTor g\u00e8re une base de donn\u00e9es d'adresses IP qui ont fait partie du r\u00e9seau Tor. Il permet de savoir si un relais Tor fonctionnait pour une adresse IP donn\u00e9e \u00e0 une date pr\u00e9cise. ExoneraTor peut enregistrer plus d'une adresse IP par relais si ces derniers utilisent une adresse IP diff\u00e9rente pour se connecter \u00e0 Internet de celle utilis\u00e9e pour s'enregistrer sur le r\u00e9seau Tor. ExoneraTor enregistre \u00e9galement les dates et heures auxquelles un relais a permis de faire transiter du trafic en provenance de Tor vers Internet.
+footer.language.name=fran\u00e7ais
+footer.language.text=Cette page est aussi disponible dans les langues suivantes :
+
diff --git a/src/main/resources/web/properties/ExoneraTor_ro.properties b/src/main/resources/web/properties/ExoneraTor_ro.properties
new file mode 100644
index 0000000..3663c06
--- /dev/null
+++ b/src/main/resources/web/properties/ExoneraTor_ro.properties
@@ -0,0 +1,52 @@
+form.explanation=Introduce\u021bi o adres\u0103 IP si o dat\u0103 pentru a afla dac\u0103 respectiva adresa a fost folosita de un nod Tor.
+form.ip.label=Adres\u0103 IP
+form.timestamp.label=Dat\u0103
+form.search.label=Caut\u0103
+summary.heading=Sumar
+summary.serverproblem.dbnoconnect.title=Problem\u0103 de server
+summary.serverproblem.dbnoconnect.body.text=Imposibil de conectat la baza de date. V\u0103 rug\u0103m s\u0103 re\u00eencerca\u021bi mai t\u00eerziu. Dac\u0103 problema persist\u0103, v\u0103 rug\u0103m %s\!
+summary.serverproblem.dbnoconnect.body.link=Informa\u021bi-ne
+summary.serverproblem.dbempty.title=Problem\u0103 de server
+summary.serverproblem.dbempty.body.text=Baza de date pare a fi goal\u0103. V\u0103 rug\u0103m s\u0103 re\u00eencerca\u021bi mai t\u00eerziu. Dac\u0103 problema persist\u0103, v\u0103 rug\u0103m %s\!
+summary.serverproblem.dbempty.body.link=Informa\u021bi-ne
+summary.invalidparams.notimestamp.title=Lips\u0103 parametru dat\u0103
+summary.invalidparams.notimestamp.body=Ne pare r\u0103u, dar trebuie s\u0103 introduce\u021bi un parametru dat\u0103.
+summary.invalidparams.noip.title=Lips\u0103 parametru adres\u0103 IP
+summary.invalidparams.noip.body=Ne pare r\u0103u, trebuie de asemenea s\u0103 introduce\u021bi adresa IP.
+summary.invalidparams.timestamprange.title=Parametrul de dat\u0103 este in afara intervalului
+summary.invalidparams.timestamprange.body=Ne pare r\u0103u, baza de date nu con\u021bine informa\u021bii de la %s. V\u0103 rug\u0103m s\u0103 alege\u021bi o dat\u0103 \u00eentre %s \u0219i %s.
+summary.invalidparams.invalidip.title=Parametrul adresei IP este incorect
+summary.invalidparams.invalidip.body=Ne pare r\u0103u, %s nu este o adres\u0103 IP valid\u0103. Formatele corecte ale unei adresei IP sunt %s sau %s.
+summary.invalidparams.invalidtimestamp.title=Parametru dat\u0103 incorect
+summary.invalidparams.invalidtimestamp.body=Ne pare r\u0103u, %s nu este o dat\u0103 valid\u0103. Formatul corect al datei este %s.
+summary.serverproblem.nodata.title=Problem\u0103 de server
+summary.serverproblem.nodata.body.text=Baza de date nu con\u021bine informatii pentru data solicitat\u0103. V\u0103 rug\u0103m \u00eencerca\u021bi mai t\u00e2rziu. Dac\u0103 problema persist\u0103, va rug\u0103m %s\!
+summary.serverproblem.nodata.body.link=Informa\u021bi-ne
+summary.negativesamenetwork.title=Rezultatul este negativ
+summary.negativesamenetwork.body=Nu am g\u0103sit adresa IP %s la data de %s sau la o zi distan\u021b\u0103. Dar am g\u0103sit alte adrese IP folosite de noduri Tor \u00een aceea\u0219i /%d re\u021bea \u00een jurul orei\:
+summary.positive.title=Rezultatul este pozitiv
+summary.positive.body=Am g\u0103sit unul sau mai multe noduri Tor care au folosit adresa IP %s la data de %s sau la o zi distan\u021b\u0103 care puteau fi cunoscute de clien\u021bii Tor.
+summary.negative.title=Rezultatul este negativ
+summary.negative.body=Nu am g\u0103sit adresa IP %s la data de %s sau la o zi distan\u021b\u0103.
+technicaldetails.heading=Detalii tehnice
+technicaldetails.pre=C\u0103utare adresa IP %s la data de %s sau la o zi distan\u021b\u0103. Clien\u021bii Tor ar fi putut alege acest sau aceste noduri Tor pentru a construi circuite.
+technicaldetails.colheader.timestamp=Dat\u0103(fus UTC)
+technicaldetails.colheader.ip=Adres\u0103/Adrese IP
+technicaldetails.colheader.fingerprint=Amprenta digital\u0103 de identificare a nodului
+technicaldetails.colheader.nickname=Pseudonim
+technicaldetails.colheader.exit=Nod de ie\u0219ire
+technicaldetails.nickname.unknown=Necunoscut
+technicaldetails.exit.unknown=Necunoscut
+technicaldetails.exit.yes=Da
+technicaldetails.exit.no=Nu
+permanentlink.heading=Link permanent
+footer.abouttor.heading=Despre Tor
+footer.abouttor.body.text=Tor este un proiect software interna\u021bional pentru anonimizarea traficului de internet prin %s. De aceea, dac\u0103 vede\u021bi trafic de la un nod Tor, acest trafic provine mai degrab\u0103 de la un client care folose\u0219te Tor, nu de la operatorul releului. The Tor Project, Inc. (organiza\u021bia) \u0219i operatorii nodurilor Tor nu de\u021bin informa\u021bii referitoare la traficul care trece prin re\u021bea \u0219i, implicit, prin nodurile operate de ace\u0219tia, de aceea nu pot furniza informa\u021bii despre originea acestuia. Asigura\u021bi-v\u0103 c\u0103 %s \u0219i nu ezita\u021bi s\u0103 %s pentru mai multe informa\u021bii.
+footer.abouttor.body.link1=criptarea pachetelor de date \u0219i transmiterea acestora printr-o serie de hop-uri \u00eenainte ca ele s\u0103 ajung\u0103 la destina\u021bie
+footer.abouttor.body.link2=Afla\u021bi mai multe despre Tor
+footer.abouttor.body.link3=contacta\u021bi The Tor Project, Inc.
+footer.aboutexonerator.heading=Despre ExoneraTor
+footer.aboutexonerator.body=Serviciul ExoneraTor opereaz\u0103 o baz\u0103 de date de adrese IP care au fost parte din re\u021belaua Tor la un anumit moment. Acest serviciu r\u0103spunde la \u00eentrebarea dac\u0103 a existat un nod Tor care a func\u021bionat pe o anumit\u0103 adres\u0103 IP la o anumit\u0103 dat\u0103. ExoneraTor poate stoca mai mult de o adresa IP per nod dac\u0103 nodurile folosesc o alt\u0103 adres\u0103 IP pentru a ie\u0219i pe internet dec\u00e2t cea folosit\u0103 pentru \u00eenregistrarea \u00een re\u021beaua Tor \u0219i stocheaz\u0103 dac\u0103 un nod a permis tranzitarea de trafic din re\u021beaua Tor catre internetul public la acea dat\u0103.
+footer.language.name=rom\u00e2n\u0103
+footer.language.text=Aceast\u0103 pagin\u0103 mai este disponibil\u0103 \u00een urm\u0103toarele limbi:
+
diff --git a/src/main/resources/web/properties/ExoneraTor_sv.properties b/src/main/resources/web/properties/ExoneraTor_sv.properties
new file mode 100644
index 0000000..277a5b8
--- /dev/null
+++ b/src/main/resources/web/properties/ExoneraTor_sv.properties
@@ -0,0 +1,52 @@
+form.explanation=Ange en IP-adress och ett datum f\u00f6r att f\u00e5 reda p\u00e5 om adressen anv\u00e4ndes av ett Tor-rel\u00e4\:
+form.ip.label=IP-adress
+form.timestamp.label=Datum
+form.search.label=S\u00f6k
+summary.heading=Sammanfattning
+summary.serverproblem.dbnoconnect.title=Serverproblem
+summary.serverproblem.dbnoconnect.body.text=Kunde inte ansluta till databasen. V\u00e4nligen f\u00f6rs\u00f6k igen senare. Om problemet kvarst\u00e5r, v\u00e4nligen %s\!
+summary.serverproblem.dbnoconnect.body.link=l\u00e5t oss f\u00e5 veta
+summary.serverproblem.dbempty.title=Serverproblem
+summary.serverproblem.dbempty.body.text=Databasen verkar vara tom. V\u00e4nligen f\u00f6rs\u00f6k igen senare. Om problemet kvarst\u00e5r, v\u00e4nligen %s\!
+summary.serverproblem.dbempty.body.link=l\u00e5t oss f\u00e5 veta
+summary.invalidparams.notimestamp.title=Inget datum angivet
+summary.invalidparams.notimestamp.body=Datum m\u00e5ste anges.
+summary.invalidparams.noip.title=Ingen IP-adress angiven
+summary.invalidparams.noip.body=IP-adress m\u00e5ste anges.
+summary.invalidparams.timestamprange.title=Ogiltigt datum
+summary.invalidparams.timestamprange.body=Databasen inneh\u00e5ller inte n\u00e5got data f\u00f6r %s. V\u00e4nligen v\u00e4lj ett datum mellan %s och %s.
+summary.invalidparams.invalidip.title=Felaktig IP-adress
+summary.invalidparams.invalidip.body=%s \u00e4r inte en giltig IP-adress. F\u00f6rv\u00e4ntat format p\u00e5 IP-adresser \u00e4r %s eller %s.
+summary.invalidparams.invalidtimestamp.title=Ogiltigt datum.
+summary.invalidparams.invalidtimestamp.body=%s \u00e4r inte ett giltigt datum. F\u00f6rv\u00e4ntat datumformat \u00e4r %s.
+summary.serverproblem.nodata.title=Serverproblem
+summary.serverproblem.nodata.body.text=Databasen inneh\u00e5ller inte n\u00e5got data f\u00f6r det efterfr\u00e5gade datumet. V\u00e4nligen f\u00f6rs\u00f6k igen senare. Om problemet kvarst\u00e5r, v\u00e4nligen %s\!
+summary.serverproblem.nodata.body.link=l\u00e5t oss f\u00e5 veta
+summary.negativesamenetwork.title=Resultatet \u00e4r negativt
+summary.negativesamenetwork.body=Vi kunde inte hitta IP-adress %s p\u00e5 eller inom en dag fr\u00e5n %s. Men vi hittade andra IP-adresser som anv\u00e4ndes av Tor-rel\u00e4n i samma /%d-n\u00e4tverk runt den tiden\:
+summary.positive.title=Resultatet \u00e4r positivt
+summary.positive.body=Vi hittade ett eller flera Tor-rel\u00e4n p\u00e5 IP-adress %s p\u00e5 eller inom en dag fr\u00e5n %s som Tor-klienter f\u00f6rmodligen k\u00e4nde till.
+summary.negative.title=Resultatet \u00e4r negativt
+summary.negative.body=Vi kunde inte hitta IP-adress %s p\u00e5 eller inom en dag fr\u00e5n %s.
+technicaldetails.heading=Tekniska detaljer
+technicaldetails.pre=Letar upp IP-adress %s p\u00e5 eller inom en dag fr\u00e5n %s. Tor-klienter kan ha valt denna eller dessa Tor-rel\u00e4n vid anslutning via Tor.
+technicaldetails.colheader.timestamp=Tidsst\u00e4mpel (UTC)
+technicaldetails.colheader.ip=IP adress(er)
+technicaldetails.colheader.fingerprint=Identitet ("fingerprint")
+technicaldetails.colheader.nickname=Namn
+technicaldetails.colheader.exit=Exit-rel\u00e4
+technicaldetails.nickname.unknown=Ok\u00e4nd
+technicaldetails.exit.unknown=Ok\u00e4nd
+technicaldetails.exit.yes=Ja
+technicaldetails.exit.no=Nej
+permanentlink.heading=Permanent l\u00e4nk
+footer.abouttor.heading=Om Tor
+footer.abouttor.body.text=Tor \u00e4r ett internationellt mjukvaruprojekt f\u00f6r att anonymisera internettrafik genom att %s. Om du ser trafik fr\u00e5n ett Tor-rel\u00e4 s\u00e5 kommer den trafiken oftast fr\u00e5n n\u00e5gon som anv\u00e4nder sig av Tor snarare \u00e4n fr\u00e5n sj\u00e4lva rel\u00e4operat\u00f6ren. Vare sig Tor-projektet eller Tor-rel\u00e4operat\u00f6rer har n\u00e5gon historik \u00f6ver trafiken som passerar genom n\u00e4tverket och kan d\u00e4rf\u00f6r inte ge n\u00e5gon information om dess ursprung. Se till att %s och tveka inte att %s f\u00f6r ytterligare information.
+footer.abouttor.body.link1=kryptera datat och skicka det genom flera hopp innan det n\u00e5r sin destination
+footer.abouttor.body.link2=l\u00e4sa p\u00e5 om Tor
+footer.abouttor.body.link3=kontakta Tor-projektet
+footer.aboutexonerator.heading=Om ExoneraTor
+footer.aboutexonerator.body=Tj\u00e4nsten ExoneraTor uppr\u00e4tth\u00e5ller en databas \u00f6ver IP-adresser som har varit en del av Tor-n\u00e4tverket. Den ger svar p\u00e5 fr\u00e5gan om det var ett Tor-rel\u00e4 som anv\u00e4nde en viss IP-adress vid ett givet datum. ExoneraTor kan komma att lagra fler \u00e4n en IP-adress per rel\u00e4 f\u00f6r rel\u00e4n som anv\u00e4nder en annan IP-adress f\u00f6r att ansluta till internet \u00e4n den som anv\u00e4ndes f\u00f6r att registrera sig i Tor-n\u00e4tverket. Huruvida ett rel\u00e4 har till\u00e5tit Tor-trafik ut mot internet vid tidpunkten eller ej lagras ocks\u00e5.
+footer.language.name=svenska
+footer.language.text=Denna sida finns \u00e4ven p\u00e5 f\u00f6ljande spr\u00e5k:
+
_______________________________________________
tor-commits mailing list
tor-commits@xxxxxxxxxxxxxxxxxxxx
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits