[tor-commits] [onionoo/master] Fix searches with multiple search terms.
karsten at torproject.org
karsten at torproject.org
Wed Mar 18 21:16:55 UTC 2015
commit ee394f9fed58e2b3e8afd85eab0019cd9e61cc24
Author: Karsten Loesing <karsten.loesing at gmx.net>
Date: Mon Mar 16 09:29:17 2015 +0100
Fix searches with multiple search terms.
Searches with multiple search terms were either broken in c13da0e or
when switching from Tomcat to Jetty.
Fixes #15267.
---
.../java/org/torproject/onionoo/server/ResourceServlet.java | 10 +++-------
.../org/torproject/onionoo/server/ResourceServletTest.java | 6 ++++++
2 files changed, 9 insertions(+), 7 deletions(-)
diff --git a/src/main/java/org/torproject/onionoo/server/ResourceServlet.java b/src/main/java/org/torproject/onionoo/server/ResourceServlet.java
index 6182704..8589e13 100644
--- a/src/main/java/org/torproject/onionoo/server/ResourceServlet.java
+++ b/src/main/java/org/torproject/onionoo/server/ResourceServlet.java
@@ -360,7 +360,7 @@ public class ResourceServlet extends HttpServlet {
private static Pattern searchQueryStringPattern =
Pattern.compile("(?:.*[\\?&])*?" // lazily skip other parameters
- + "search=([0-9a-zA-Z+/\\.: \\$\\[\\]]+)" // capture parameter
+ + "search=([0-9a-zA-Z+/\\.: \\$\\[\\]%]+)" // capture parameter
+ "(?:&.*)*"); // skip remaining parameters
private static Pattern searchParameterPattern =
Pattern.compile("^\\$?[0-9a-fA-F]{1,40}$|" /* Hex fingerprint. */
@@ -376,12 +376,8 @@ public class ResourceServlet extends HttpServlet {
return null;
}
String parameter = searchQueryStringMatcher.group(1);
- String[] searchParameters;
- if (parameter.contains(" ")) {
- searchParameters = parameter.split(" ");
- } else {
- searchParameters = new String[] { parameter };
- }
+ String[] searchParameters =
+ parameter.replaceAll("%20", " ").split(" ");
for (String searchParameter : searchParameters) {
if (!searchParameterPattern.matcher(searchParameter).matches()) {
/* Illegal search term. */
diff --git a/src/test/java/org/torproject/onionoo/server/ResourceServletTest.java b/src/test/java/org/torproject/onionoo/server/ResourceServletTest.java
index 83ffa5f..c6ef9c8 100644
--- a/src/test/java/org/torproject/onionoo/server/ResourceServletTest.java
+++ b/src/test/java/org/torproject/onionoo/server/ResourceServletTest.java
@@ -795,6 +795,12 @@ public class ResourceServletTest {
}
@Test()
+ public void testSearchTorkaZEscapedSpaceTypeRelay() {
+ this.assertSummaryDocument("/summary?search=TorkaZ%20type:relay", 1,
+ new String[] { "TorkaZ" }, 0, null);
+ }
+
+ @Test()
public void testSearchTypeRelayTypeDirectory() {
this.assertSummaryDocument(
"/summary?search=type:relay type:directory", 3, null, 0, null);
More information about the tor-commits
mailing list