mirror of https://github.com/zlatinb/muwire
send regex queries from the web UI
parent
bab689d15e
commit
1f58ff6aba
|
@ -8,7 +8,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: I2P MuWire\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2021-10-14 16:54+0000\n"
|
||||
"POT-Creation-Date: 2022-02-07 01:30+0000\n"
|
||||
"Language: en\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
|
@ -207,8 +207,8 @@ msgstr ""
|
|||
#: build/tmp_jsp/com/muwire/webui/TrustUsers_jsp.java:200
|
||||
#: build/tmp_jsp/com/muwire/webui/Uploads_jsp.java:219
|
||||
#: build/tmp_jsp/com/muwire/webui/Uploads_jsp.java:221
|
||||
#: src/main/java//com/muwire/webui/SearchServlet.java:265
|
||||
#: src/main/java//com/muwire/webui/SearchServlet.java:266
|
||||
#: src/main/java//com/muwire/webui/SearchServlet.java:267
|
||||
#: src/main/java//com/muwire/webui/SearchServlet.java:268
|
||||
msgid "B/sec"
|
||||
msgstr ""
|
||||
|
||||
|
@ -1239,18 +1239,22 @@ msgid "MuWire is initializing, please wait"
|
|||
msgstr ""
|
||||
|
||||
#: src/main/java//com/muwire/webui/SearchServlet.java:43
|
||||
#: src/main/java//com/muwire/webui/SearchServlet.java:75
|
||||
#: src/main/java//com/muwire/webui/SearchServlet.java:94
|
||||
#: src/main/java//com/muwire/webui/SearchServlet.java:130
|
||||
#: src/main/java//com/muwire/webui/SearchServlet.java:172
|
||||
#: src/main/java//com/muwire/webui/SearchServlet.java:211
|
||||
#: src/main/java//com/muwire/webui/SearchServlet.java:260
|
||||
#: src/main/java//com/muwire/webui/SearchServlet.java:77
|
||||
#: src/main/java//com/muwire/webui/SearchServlet.java:96
|
||||
#: src/main/java//com/muwire/webui/SearchServlet.java:132
|
||||
#: src/main/java//com/muwire/webui/SearchServlet.java:174
|
||||
#: src/main/java//com/muwire/webui/SearchServlet.java:213
|
||||
#: src/main/java//com/muwire/webui/SearchServlet.java:262
|
||||
msgid ""
|
||||
"MuWire failed to initialize. Please close the browser window and restart "
|
||||
"the plugin"
|
||||
msgstr ""
|
||||
|
||||
#: src/main/java//com/muwire/webui/SearchServlet.java:54
|
||||
#: src/main/java//com/muwire/webui/SearchServlet.java:52
|
||||
msgid "Invalid regular expression"
|
||||
msgstr ""
|
||||
|
||||
#: src/main/java//com/muwire/webui/SearchServlet.java:56
|
||||
msgid "Please enter a search keyword or file hash"
|
||||
msgstr ""
|
||||
|
||||
|
|
|
@ -7,6 +7,7 @@ import java.util.HashSet;
|
|||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.UUID;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
import com.muwire.core.Core;
|
||||
import com.muwire.core.SplitPattern;
|
||||
|
@ -21,6 +22,7 @@ import net.i2p.data.Signature;
|
|||
|
||||
class SearchManager {
|
||||
|
||||
static final UUID INVALID_REGEX_UUID = UUID.randomUUID();
|
||||
|
||||
private final Core core;
|
||||
|
||||
|
@ -37,8 +39,6 @@ class SearchManager {
|
|||
else {
|
||||
UUID uuid = UUID.randomUUID();
|
||||
|
||||
SearchResults searchResults = new SearchResults(uuid, search);
|
||||
results.put(uuid, searchResults);
|
||||
|
||||
boolean hashSearch = false;
|
||||
byte [] root = null;
|
||||
|
@ -50,18 +50,40 @@ class SearchManager {
|
|||
// not a hash search
|
||||
}
|
||||
}
|
||||
|
||||
boolean regexSearch = false;
|
||||
if (search.length() > 1 && search.startsWith("/") && search.endsWith("/")) {
|
||||
search = search.substring(1, search.length() - 1);
|
||||
try {
|
||||
Pattern.compile(search);
|
||||
regexSearch = true;
|
||||
} catch (Exception e) {
|
||||
// not a valid regex
|
||||
return INVALID_REGEX_UUID;
|
||||
}
|
||||
}
|
||||
|
||||
SearchResults searchResults = new SearchResults(uuid, search);
|
||||
results.put(uuid, searchResults);
|
||||
SearchEvent searchEvent = new SearchEvent();
|
||||
searchEvent.setOobInfohash(true);
|
||||
searchEvent.setCompressedResults(true);
|
||||
searchEvent.setPersona(core.getMe());
|
||||
searchEvent.setUuid(uuid);
|
||||
searchEvent.setRegex(regexSearch);
|
||||
byte[] payload;
|
||||
if (hashSearch) {
|
||||
searchEvent.setSearchHash(root);
|
||||
payload = root;
|
||||
} else {
|
||||
String[] nonEmpty = SplitPattern.termify(search);
|
||||
payload = String.join(" ", nonEmpty).getBytes(StandardCharsets.UTF_8);
|
||||
String[] nonEmpty;
|
||||
if (regexSearch) {
|
||||
nonEmpty = new String[] { search };
|
||||
payload = search.getBytes(StandardCharsets.UTF_8);
|
||||
} else {
|
||||
nonEmpty = SplitPattern.termify(search);
|
||||
payload = String.join(" ", nonEmpty).getBytes(StandardCharsets.UTF_8);
|
||||
}
|
||||
searchEvent.setSearchTerms(Arrays.asList(nonEmpty));
|
||||
searchEvent.setSearchComments(core.getMuOptions().getSearchComments());
|
||||
searchEvent.setCollections(core.getMuOptions().getSearchCollections());
|
||||
|
|
|
@ -48,7 +48,9 @@ public class SearchServlet extends HttpServlet {
|
|||
if (action.equals("start")) {
|
||||
String search = req.getParameter("search");
|
||||
UUID newUUID = searchManager.newSearch(search);
|
||||
if (newUUID != null)
|
||||
if (newUUID == SearchManager.INVALID_REGEX_UUID)
|
||||
resp.sendError(403, _t("Invalid regular expression"));
|
||||
else if (newUUID != null)
|
||||
resp.sendRedirect("/MuWire/Home?uuid=" + newUUID.toString());
|
||||
else
|
||||
resp.sendError(403, _t("Please enter a search keyword or file hash"));
|
||||
|
|
Loading…
Reference in New Issue