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