remove seedless
This commit is contained in:
@ -1,60 +0,0 @@
|
|||||||
package net.i2p.zzzot;
|
|
||||||
/*
|
|
||||||
* Copyright 2010 zzz (zzz@mail.i2p)
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
import java.io.IOException;
|
|
||||||
import java.io.OutputStream;
|
|
||||||
|
|
||||||
import net.i2p.I2PAppContext;
|
|
||||||
import net.i2p.client.streaming.I2PSocketEepGet;
|
|
||||||
import net.i2p.client.streaming.I2PSocketManager;
|
|
||||||
import net.i2p.data.Base64;
|
|
||||||
import net.i2p.i2ptunnel.TunnelController;
|
|
||||||
import net.i2p.util.EepGet;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Announce to seedless
|
|
||||||
* @since 0.6
|
|
||||||
*/
|
|
||||||
public class SeedlessAnnouncer {
|
|
||||||
|
|
||||||
private static final String SPONGE =
|
|
||||||
"VG4Bd~q1RA3BdoF3z5fSR7p0xe1CTVgDMWVGyFchA9Wm2iXUkIR35G45XE31Uc9~IOt-ktNLL2~TYQZ13Vl8udosngDn8RJG1NtVASH4khsbgkkoFLWd6UuvuOjQKBFKjaEPJgxOzh0kxolRPPNHhFuuAGzNLKvz~LI2MTf0P6nwmRg1lBoRIUpSVocEHY4X306nT2VtY07FixbJcPCU~EeRin24yNoiZop-C3Wi1SGwJJK-NS7mnkNzd8ngDJXDJtR-wLP1vNyyBY6NySgqPiIhENHoVeXd5krlR42HORCxEDb4jhoqlbyJq-PrhTJ5HdH4-~gEq09B~~NIHzy7X02XgmBXhTYRtl6HbLMXs6SI5fq9OFgVp5YZWYUklJjMDI7jOrGrEZGSHhnJK9kT6D3CqVIM0cYEhe4ttmTegbZvC~J6DrRTIAX422qRQJBPsTUnv4iFyuJE-8SodP6ikTjRH21Qx73SxqOvmrOiu7Bsp0lvVDa84aoaYLdiGv87AAAA";
|
|
||||||
|
|
||||||
private static final String ANNOUNCE = "announce " + Base64.encode("seedless,eepsite,torrent");
|
|
||||||
|
|
||||||
public void announce(TunnelController controller) {
|
|
||||||
// get the I2PTunnel from the controller (no method now)
|
|
||||||
|
|
||||||
// get the I2PTunnelTask from I2PTunnel
|
|
||||||
|
|
||||||
// cast to an I2PTunnelServer
|
|
||||||
|
|
||||||
// get the SocketManager from the server (no method now)
|
|
||||||
I2PSocketManager mgr = null;
|
|
||||||
|
|
||||||
I2PAppContext ctx = I2PAppContext.getGlobalContext();
|
|
||||||
String url = "http://" + SPONGE + "/Seedless/seedless";
|
|
||||||
EepGet get = new I2PSocketEepGet(ctx, mgr, 1, -1, 1024, null, new DummyOutputStream(), url);
|
|
||||||
get.addHeader("X-Seedless", ANNOUNCE);
|
|
||||||
get.fetch();
|
|
||||||
}
|
|
||||||
|
|
||||||
private static class DummyOutputStream extends OutputStream {
|
|
||||||
public void write(int b) {}
|
|
||||||
}
|
|
||||||
}
|
|
@ -17,86 +17,7 @@
|
|||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
String req = request.getHeader("X-Seedless");
|
|
||||||
// extension for ease of eepget and browser
|
|
||||||
if (req == null)
|
|
||||||
req = request.getParameter("X-Seedless");
|
|
||||||
// we should really put in our own b32
|
|
||||||
String me = request.getHeader("Host");
|
|
||||||
if (me == null)
|
|
||||||
me = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.b32.i2p";
|
|
||||||
// unused, we don't accept announces
|
|
||||||
String him = request.getHeader("X-I2P-DestB32");
|
|
||||||
if (him == null)
|
|
||||||
him = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.b32.i2p";
|
|
||||||
String xff = request.getHeader("X-Forwarded-For");
|
|
||||||
String xfs = request.getHeader("X-Forwarded-Server");
|
|
||||||
|
|
||||||
response.setContentType("text/plain");
|
|
||||||
response.setHeader("X-Seedless", him);
|
|
||||||
|
|
||||||
final int US_MINUTES = 360;
|
|
||||||
final int PEER_MINUTES = 60;
|
|
||||||
|
|
||||||
if (xff != null || xfs != null) {
|
|
||||||
String msg = "Non-I2P access denied";
|
|
||||||
//response.setStatus(403, msg);
|
|
||||||
response.setStatus(403);
|
|
||||||
out.println(msg);
|
|
||||||
} else if (req == null) {
|
|
||||||
// probe
|
|
||||||
out.println("tracker " + US_MINUTES);
|
|
||||||
out.println("eepsite " + US_MINUTES);
|
|
||||||
out.println("seedless " + US_MINUTES);
|
|
||||||
} else if (req.startsWith("announce")) {
|
|
||||||
out.println("thanks");
|
|
||||||
} else if (req.startsWith("locate c2VlZGxlc")) { // locate b64(seedless)
|
|
||||||
// ignore the search string, if any, in the request
|
|
||||||
// us
|
|
||||||
out.println(Base64.encode(me + ' ' + US_MINUTES + " tracker"));
|
|
||||||
out.println(Base64.encode(me + ' ' + US_MINUTES + " seedless"));
|
|
||||||
out.println(Base64.encode(me + ' ' + US_MINUTES + " eepsite"));
|
|
||||||
} else if (req.startsWith("locate ZWVwc2l0Z")) { // locate b64(eepsite)
|
|
||||||
// ignore the search string, if any, in the request
|
|
||||||
// us
|
|
||||||
out.println(Base64.encode(me + ' ' + US_MINUTES + " zzzot"));
|
|
||||||
} else if (req.startsWith("locate dG9ycmVud")) { // locate b64(torrent)
|
|
||||||
// all the peers
|
|
||||||
Torrents torrents = ZzzOTController.getTorrents();
|
|
||||||
if (torrents == null) {
|
|
||||||
//response.setStatus(503, "Down");
|
|
||||||
response.setStatus(503);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
for (InfoHash ihash : torrents.keySet()) {
|
|
||||||
Peers peers = torrents.get(ihash);
|
|
||||||
if (peers == null)
|
|
||||||
continue;
|
|
||||||
for (Peer p : peers.values()) {
|
|
||||||
// dest to b32
|
|
||||||
String ip = (String) p.get("ip");
|
|
||||||
if (ip.endsWith(".i2p"))
|
|
||||||
ip = ip.substring(0, ip.length() - 4);
|
|
||||||
String b32 = Base32.encode(SHA256Generator.getInstance().calculateHash(Base64.decode(ip)).getData()) + ".b32.i2p ";
|
|
||||||
// service type
|
|
||||||
String role;
|
|
||||||
if (p.isSeed())
|
|
||||||
role = "seed";
|
|
||||||
else
|
|
||||||
role = "leech";
|
|
||||||
// spg wants UTF-8 but all we have is binary data, so hex it
|
|
||||||
String ihs = DataHelper.toHexString(ihash.getData());
|
|
||||||
String ids = DataHelper.toHexString((byte[])p.get("peer id"));
|
|
||||||
out.println(Base64.encode(b32 + PEER_MINUTES + ihs + '\n' +
|
|
||||||
ids + '\n' +
|
|
||||||
role));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
// error code
|
|
||||||
//response.setStatus(406, "Bad request");
|
|
||||||
response.setStatus(406);
|
response.setStatus(406);
|
||||||
out.println("SC_NOT_ACCEPTABLE");
|
out.println("SC_NOT_ACCEPTABLE");
|
||||||
}
|
|
||||||
|
|
||||||
%>
|
%>
|
Reference in New Issue
Block a user