Compare commits
2 Commits
Author | SHA1 | Date | |
---|---|---|---|
66667de240 | |||
eda5699f38 |
@@ -11,7 +11,7 @@
|
|||||||
<delete file="plugin/i2ptunnel.config" />
|
<delete file="plugin/i2ptunnel.config" />
|
||||||
<!-- get version number -->
|
<!-- get version number -->
|
||||||
<buildnumber file="scripts/build.number" />
|
<buildnumber file="scripts/build.number" />
|
||||||
<property name="release.number" value="0.2" />
|
<property name="release.number" value="0.3" />
|
||||||
|
|
||||||
<!-- make the update xpi2p -->
|
<!-- make the update xpi2p -->
|
||||||
<!-- this contains everything except i2ptunnel.config -->
|
<!-- this contains everything except i2ptunnel.config -->
|
||||||
|
@@ -10,7 +10,6 @@
|
|||||||
<pathelement location="${i2plib}/i2p.jar" />
|
<pathelement location="${i2plib}/i2p.jar" />
|
||||||
<pathelement location="${i2plib}/i2ptunnel.jar" />
|
<pathelement location="${i2plib}/i2ptunnel.jar" />
|
||||||
<pathelement location="${i2plib}/i2psnark.jar" />
|
<pathelement location="${i2plib}/i2psnark.jar" />
|
||||||
<pathelement location="${i2plib}/routerconsole.jar" />
|
|
||||||
<pathelement location="${jettylib}/ant.jar"/>
|
<pathelement location="${jettylib}/ant.jar"/>
|
||||||
<pathelement location="${jettylib}/org.mortbay.jetty.jar"/>
|
<pathelement location="${jettylib}/org.mortbay.jetty.jar"/>
|
||||||
<pathelement location="${jettylib}/jasper-compiler.jar" />
|
<pathelement location="${jettylib}/jasper-compiler.jar" />
|
||||||
|
@@ -28,6 +28,7 @@
|
|||||||
// would be nice to make these configurable
|
// would be nice to make these configurable
|
||||||
final int MAX_RESPONSES = 25;
|
final int MAX_RESPONSES = 25;
|
||||||
final int INTERVAL = 27*60;
|
final int INTERVAL = 27*60;
|
||||||
|
final boolean ALLOW_IP_MISMATCH = false;
|
||||||
|
|
||||||
// so the chars will turn into bytes correctly
|
// so the chars will turn into bytes correctly
|
||||||
request.setCharacterEncoding("ISO-8859-1");
|
request.setCharacterEncoding("ISO-8859-1");
|
||||||
@@ -47,14 +48,15 @@
|
|||||||
String event = request.getParameter("event");
|
String event = request.getParameter("event");
|
||||||
String ip = request.getParameter("ip");
|
String ip = request.getParameter("ip");
|
||||||
String numwant = request.getParameter("numwant");
|
String numwant = request.getParameter("numwant");
|
||||||
// ignored, use someday to enforce destination
|
// use to enforce destination
|
||||||
String him = request.getHeader("X-I2P-DestB32");
|
String him = request.getHeader("X-I2P-DestB64");
|
||||||
String xff = request.getHeader("X-Forwarded-For");
|
String xff = request.getHeader("X-Forwarded-For");
|
||||||
|
String xfs = request.getHeader("X-Forwarded-Server");
|
||||||
|
|
||||||
boolean fail = false;
|
boolean fail = false;
|
||||||
String msg = "bad announce";
|
String msg = "bad announce";
|
||||||
|
|
||||||
if (xff != null) {
|
if (xff != null || xfs != null) {
|
||||||
fail = true;
|
fail = true;
|
||||||
msg = "Non-I2P access denied";
|
msg = "Non-I2P access denied";
|
||||||
response.setStatus(403, msg);
|
response.setStatus(403, msg);
|
||||||
@@ -134,6 +136,14 @@
|
|||||||
want = 0;
|
want = 0;
|
||||||
} catch (NumberFormatException nfe) {};
|
} catch (NumberFormatException nfe) {};
|
||||||
|
|
||||||
|
// spoof check
|
||||||
|
// if him == null, we are not using the I2P HTTP server tunnel, or something is wrong
|
||||||
|
boolean matchIP = ALLOW_IP_MISMATCH || him == null || ip.equals(him);
|
||||||
|
if (want <= 0 && (!matchIP) && !fail) {
|
||||||
|
fail = true;
|
||||||
|
msg = "ip mismatch";
|
||||||
|
}
|
||||||
|
|
||||||
long left = 0;
|
long left = 0;
|
||||||
if (!"completed".equals(event)) {
|
if (!"completed".equals(event)) {
|
||||||
try {
|
try {
|
||||||
@@ -149,7 +159,7 @@
|
|||||||
m.put("failure reason", msg);
|
m.put("failure reason", msg);
|
||||||
} else if ("stopped".equals(event)) {
|
} else if ("stopped".equals(event)) {
|
||||||
Peers peers = torrents.get(ih);
|
Peers peers = torrents.get(ih);
|
||||||
if (peers != null)
|
if (matchIP && peers != null)
|
||||||
peers.remove(pid);
|
peers.remove(pid);
|
||||||
m.put("interval", Integer.valueOf(INTERVAL));
|
m.put("interval", Integer.valueOf(INTERVAL));
|
||||||
} else {
|
} else {
|
||||||
@@ -165,11 +175,16 @@
|
|||||||
Peer p = peers.get(pid);
|
Peer p = peers.get(pid);
|
||||||
if (p == null) {
|
if (p == null) {
|
||||||
p = new Peer(pid.getData(), d);
|
p = new Peer(pid.getData(), d);
|
||||||
Peer p2 = peers.putIfAbsent(pid, p);
|
// don't add if spoofed
|
||||||
if (p2 != null)
|
if (matchIP) {
|
||||||
p = p2;
|
Peer p2 = peers.putIfAbsent(pid, p);
|
||||||
|
if (p2 != null)
|
||||||
|
p = p2;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
p.setLeft(left);
|
// don't update if spoofed
|
||||||
|
if (matchIP)
|
||||||
|
p.setLeft(left);
|
||||||
|
|
||||||
m.put("interval", Integer.valueOf(INTERVAL));
|
m.put("interval", Integer.valueOf(INTERVAL));
|
||||||
int size = peers.size();
|
int size = peers.size();
|
||||||
|
@@ -33,11 +33,12 @@
|
|||||||
response.setHeader("Pragma", "no-cache");
|
response.setHeader("Pragma", "no-cache");
|
||||||
String info_hash = request.getParameter("info_hash");
|
String info_hash = request.getParameter("info_hash");
|
||||||
String xff = request.getHeader("X-Forwarded-For");
|
String xff = request.getHeader("X-Forwarded-For");
|
||||||
|
String xfs = request.getHeader("X-Forwarded-Server");
|
||||||
|
|
||||||
boolean fail = false;
|
boolean fail = false;
|
||||||
String msg = "bad";
|
String msg = "bad";
|
||||||
|
|
||||||
if (xff != null) {
|
if (xff != null || xfs != null) {
|
||||||
fail = true;
|
fail = true;
|
||||||
msg = "Non-I2P access denied";
|
msg = "Non-I2P access denied";
|
||||||
response.setStatus(403, msg);
|
response.setStatus(403, msg);
|
||||||
|
@@ -28,6 +28,7 @@
|
|||||||
// unused, we don't accept announces
|
// unused, we don't accept announces
|
||||||
String him = request.getHeader("X-I2P-DestB32");
|
String him = request.getHeader("X-I2P-DestB32");
|
||||||
String xff = request.getHeader("X-Forwarded-For");
|
String xff = request.getHeader("X-Forwarded-For");
|
||||||
|
String xfs = request.getHeader("X-Forwarded-Server");
|
||||||
|
|
||||||
response.setContentType("text/plain");
|
response.setContentType("text/plain");
|
||||||
response.setHeader("X-Seedless", me);
|
response.setHeader("X-Seedless", me);
|
||||||
@@ -35,7 +36,7 @@
|
|||||||
final int US_MINUTES = 360;
|
final int US_MINUTES = 360;
|
||||||
final int PEER_MINUTES = 60;
|
final int PEER_MINUTES = 60;
|
||||||
|
|
||||||
if (xff != null) {
|
if (xff != null || xfs != null) {
|
||||||
String msg = "Non-I2P access denied";
|
String msg = "Non-I2P access denied";
|
||||||
response.setStatus(403, msg);
|
response.setStatus(403, msg);
|
||||||
out.println(msg);
|
out.println(msg);
|
||||||
|
Reference in New Issue
Block a user