diff --git a/apps/i2psnark/java/build.xml b/apps/i2psnark/java/build.xml
index 3065ed9bc..94dd809b6 100644
--- a/apps/i2psnark/java/build.xml
+++ b/apps/i2psnark/java/build.xml
@@ -99,14 +99,10 @@
-
-
-
-
@@ -119,7 +115,7 @@
-
+
diff --git a/apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java b/apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java
index 5e3aa5f2d..24094515c 100644
--- a/apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java
+++ b/apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java
@@ -158,6 +158,8 @@ public class I2PSnarkServlet extends Default {
resp.setCharacterEncoding("UTF-8");
resp.setContentType("text/html; charset=UTF-8");
PrintWriter out = resp.getWriter();
+ //if (_log.shouldLog(Log.DEBUG))
+ // _manager.addMessage((_context.clock().now() / 1000) + " xhr1 p=" + req.getParameter("p"));
writeMessages(out);
writeTorrents(out, req);
return;
@@ -204,7 +206,8 @@ public class I2PSnarkServlet extends Default {
String peerParam = req.getParameter("p");
String peerString;
- if (peerParam == null || !_manager.util().connected()) {
+ if (peerParam == null || (!_manager.util().connected()) ||
+ peerParam.replaceAll("[a-zA-Z0-9~=-]", "").length() > 0) { // XSS
peerString = "";
} else {
peerString = "?p=" + peerParam;
@@ -223,15 +226,20 @@ public class I2PSnarkServlet extends Default {
int delay = 0;
if (!isConfigure) {
delay = _manager.getRefreshDelaySeconds();
- if (delay > 0)
+ if (delay > 0) {
//out.write("\n");
- out.write("\n");
+ out.write("\n" +
+ "\n");
+ }
}
out.write(HEADER_A + _themePath + HEADER_B + "\n");
if (isConfigure || delay <= 0)
out.write("");
else
- out.write("");
+ out.write("");
out.write("");
if (isConfigure) {
out.write("\n");
@@ -418,6 +425,7 @@ public class I2PSnarkServlet extends Default {
out.write(" ");
}
out.write("\n");
+ String uri = "/i2psnark/";
for (int i = 0; i < snarks.size(); i++) {
Snark snark = (Snark)snarks.get(i);
boolean showDebug = "2".equals(peerParam);
diff --git a/apps/i2psnark/js/i2psnark.js b/apps/routerconsole/jsp/js/ajax.js
similarity index 71%
rename from apps/i2psnark/js/i2psnark.js
rename to apps/routerconsole/jsp/js/ajax.js
index ba0e3f911..dab3164a0 100644
--- a/apps/i2psnark/js/i2psnark.js
+++ b/apps/routerconsole/jsp/js/ajax.js
@@ -1,9 +1,8 @@
-//var page = "home";
-function ajax(url,target) {
+function ajax(url, target, refresh) {
// native XMLHttpRequest object
if (window.XMLHttpRequest) {
req = new XMLHttpRequest();
- req.onreadystatechange = function() {ajaxDone(target);};
+ req.onreadystatechange = function() {ajaxDone(url, target, refresh);};
req.open("GET", url, true);
req.send(null);
// IE/Windows ActiveX version
@@ -15,10 +14,9 @@ function ajax(url,target) {
req.send(null);
}
}
- //setTimeout("ajax(page,'scriptoutput')", 5000);
}
-function ajaxDone(target) {
+function ajaxDone(url, target, refresh) {
// only if req is "loaded"
if (req.readyState == 4) {
// only if "OK"
@@ -30,8 +28,6 @@ function ajaxDone(target) {
document.getElementById(target).innerHTML="Router is down";
document.getElementById("lowersection").style.display="none";
}
+ setTimeout(function() {ajax(url, target, refresh);}, refresh);
}
}
-
-function requestAjax1() { ajax("/i2psnark/.ajax/xhr1.html", "mainsection"); }
-function initAjax(delayMs) { setInterval(requestAjax1, delayMs); }