Files
i2p.i2p/installer/java/src/FetchSeeds.java
jrandom 1669d174e1 use mihi's template engine to set a random timestamper password so people dont need to think about that stuff
don't use the dyndns anymore for seeding (use dev.i2p.net/i2pdb)
2004-07-10 02:36:27 +00:00

100 lines
3.3 KiB
Java

/*
* $Id $
* Copyright (c) 2003 mihi
* Licensed under the GNU Public License (GPL) as published by the
* Free Software Foundation, using version 2 or later of the GPL. You
* should have recieved the GPL with this source code, otherwise see
* http://www.fsf.org/copyleft/
*/
import java.io.BufferedReader;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.URL;
import java.net.URLConnection;
public class FetchSeeds {
/**
* Fetch seednodes.
*
* @param destination the dir to store the seednodes to
* @param sourceURL the URL to fetch the seednode from - must end
* with a slash
* @return whether new seed nodes could be fetched
*/
public static boolean fetchSeeds(File destination, String sourceURL) {
InputStream in = null;
try {
URL source = new URL(sourceURL);
URLConnection con = source.openConnection();
in = con.getInputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(in));
String line;
while ((line = br.readLine()) != null) {
int pos = line.indexOf(" <a href=\"routerInfo-");
if (pos == -1) continue;
line = line.substring(pos + 10);
pos = line.indexOf("\"");
if (pos == -1) continue;
line = line.substring(0, pos);
fetchFile(new File(destination, line), sourceURL + line);
System.out.println(line);
}
br.close();
return true;
} catch (IOException ex) {
System.err.println("Unable to fetch seeds from " + sourceURL + ": " + ex.getMessage());
//ex.printStackTrace();
return false;
} finally {
if (in != null) try {
in.close();
} catch (IOException ioe) {
}
}
}
public static void fetchFile(File destFile, String fileURL) throws IOException {
URL url = new URL(fileURL);
InputStream in = url.openStream();
OutputStream out = new FileOutputStream(destFile);
byte[] buf = new byte[1024];
int len;
while ((len = in.read(buf)) != -1) {
out.write(buf, 0, len);
}
in.close();
out.flush();
out.close();
}
/**
* test main method.
*/
public static void main(String[] args) {
switch (args.length) {
case 1:
fetchSeeds(new File(args[0]), "http://dev.i2p.net/i2pdb/");
return;
case 2:
fetchSeeds(new File(args[0]), args[1]);
return;
case 3:
while (true) {
fetchSeeds(new File(args[0]), args[1]);
try { Thread.sleep(Integer.parseInt(args[2])*1000); } catch (Throwable t) {}
}
default:
System.out.println("Usage: FetchSeeds <outDir>");
System.out.println(" or FetchSeeds <outDir> <seedURL>");
System.out.println(" or FetchSeeds <outDir> <seedURL> <secondsBetweenFetch>");
System.out.println("The default seedURL is http://dev.i2p.net/i2pdb/");
return;
}
}
}