Skip to content

Commit

Permalink
Fixed some HTML validation errors : Illegal character in query
Browse files Browse the repository at this point in the history
Now encode space characters in URLs query part.
  • Loading branch information
luccioman committed Sep 30, 2016
1 parent a76a46a commit 60df09f
Show file tree
Hide file tree
Showing 4 changed files with 28 additions and 6 deletions.
2 changes: 1 addition & 1 deletion htroot/yacysearch.html
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
<head>
<title>#[former]# - YaCy '#[clientname]#': Search Page</title>
#%env/templates/metas.template%#
<link rel="alternate" type="application/rss+xml" title="Search for #[former]#" href="yacysearch.rss?query=#[former]#" />
<link rel="alternate" type="application/rss+xml" title="Search for #[former]#" href="yacysearch.rss?query=#[formerEncoded]#" />
<link rel="search" type="application/opensearchdescription+xml" title="YaCy '#[clientname]#'" href="http://#[thisaddress]#/opensearchdescription.xml" />
<link rel="stylesheet" type="text/css" media="screen" href="env/highslide.css" />
<script type="text/javascript" src="js/ajax.js"></script>
Expand Down
16 changes: 15 additions & 1 deletion htroot/yacysearch.java
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,9 @@
// if the shell's current path is HTROOT

import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.Collection;
import java.util.ConcurrentModificationException;
Expand Down Expand Up @@ -852,7 +855,14 @@ public static serverObjects respond(
}
prop.put("focus", focus ? 1 : 0); // focus search field
prop.put("searchagain", global ? "1" : "0");
prop.putHTML("former", originalquerystring.replaceAll(Segment.catchallString, "*"));
String former = originalquerystring.replaceAll(Segment.catchallString, "*");
prop.putHTML("former", former);
try {
prop.put("formerEncoded", URLEncoder.encode(former, StandardCharsets.UTF_8.name()));
} catch (UnsupportedEncodingException e) {
ConcurrentLog.warn("LOCAL_SEARCH", "Unsupported UTF-8 encoding!");
prop.put("formerEncoded", former);
}
prop.put("count", itemsPerPage);
prop.put("offset", startRecord);
prop.put("resource", global ? "global" : "local");
Expand All @@ -877,4 +887,8 @@ public static serverObjects respond(
// return rewrite properties
return prop;
}

public static void main(String args[]) throws UnsupportedEncodingException {
System.out.println(URLEncoder.encode("aao?+ bbibu", StandardCharsets.UTF_8.name()));
}
}
5 changes: 3 additions & 2 deletions htroot/yacysearchtrailer.java
Original file line number Diff line number Diff line change
Expand Up @@ -110,7 +110,8 @@ public static serverObjects respond(final RequestHeader header, final serverObje
name = navigatorIterator.next();
count = theSearch.namespaceNavigator.get(name);
if (count == 0) break;
nav = "inurl%3A" + name;
/* We use ':' character here, it will be percent encoded later, in QueryParams.navurl() function*/
nav = "inurl:" + name;
if (!theSearch.query.modifier.toString().contains("inurl:"+name)) {
pos++;
prop.put("nav-namespace_element_" + i + "_on", 1);
Expand Down Expand Up @@ -317,7 +318,7 @@ public static serverObjects respond(final RequestHeader header, final serverObje
prop.put("nav-topics_element_" + i + "_on", 1);
prop.put(fileType, "nav-topics_element_" + i + "_modifier", name);
prop.put(fileType, "nav-topics_element_" + i + "_name", name);
prop.put(fileType, "nav-topics_element_" + i + "_url", QueryParams.navurl(fileType, 0, theSearch.query, name, false).toString());
prop.put("nav-topics_element_" + i + "_url", QueryParams.navurl(fileType, 0, theSearch.query, name, false).toString());
prop.put("nav-topics_element_" + i + "_count", count);
int fontsize = TOPWORDS_MINSIZE + (TOPWORDS_MAXSIZE - TOPWORDS_MINSIZE) * (count - mincount) / (1 + maxcount - mincount);
fontsize = Math.max(TOPWORDS_MINSIZE, fontsize - (name.length() - 5));
Expand Down
11 changes: 9 additions & 2 deletions source/net/yacy/search/query/QueryParams.java
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,9 @@

package net.yacy.search.query;

import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Date;
Expand Down Expand Up @@ -702,15 +705,19 @@ public static StringBuilder navurlBase(final RequestHeader.FileType ext, final Q
if (!newModifier.isEmpty()) {
if (!theQuery.modifier.isEmpty()) sb.append("+" + theQuery.modifier.toString());
if (newModifierReplacesOld) {
int nmpi = newModifier.indexOf("%3A");
int nmpi = newModifier.indexOf(":");
if (nmpi > 0) {
String nmp = newModifier.substring(0, nmpi) + ":";
int i = sb.indexOf(nmp);
if (i > 0) sb = new StringBuilder(sb.substring(0, i).trim());
if (sb.charAt(sb.length() - 1) == '+') sb.setLength(sb.length() - 1);
}
}
sb.append("+" + newModifier);
try {
sb.append("+" + URLEncoder.encode(newModifier, StandardCharsets.UTF_8.name()));
} catch (final UnsupportedEncodingException e) {
sb.append("+" + newModifier);
}
}
}

Expand Down

0 comments on commit 60df09f

Please sign in to comment.