I2P Address: [http://git.idk.i2p]

Skip to content
Snippets Groups Projects
Unverified Commit 72e21619 authored by zzz's avatar zzz
Browse files

CLI: Add NewsHandler CLI to fetch news from servers

parent 7bd220ad
No related branches found
No related tags found
No related merge requests found
...@@ -18,7 +18,8 @@ public class CommandLine extends net.i2p.router.CommandLine { ...@@ -18,7 +18,8 @@ public class CommandLine extends net.i2p.router.CommandLine {
protected static final List<String> NCLASSES = Arrays.asList(new String[] { protected static final List<String> NCLASSES = Arrays.asList(new String[] {
"com.vuze.plugins.mlab.MLabRunner", "com.vuze.plugins.mlab.MLabRunner",
"net.i2p.router.news.BlocklistEntries", "net.i2p.router.news.BlocklistEntries",
"net.i2p.router.news.NewsXMLParser" "net.i2p.router.news.NewsXMLParser",
"net.i2p.router.update.NewsHandler"
}); });
protected CommandLine() {} protected CommandLine() {}
......
package net.i2p.router.update; package net.i2p.router.update;
import java.io.File;
import java.net.URI; import java.net.URI;
import java.net.URISyntaxException; import java.net.URISyntaxException;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import gnu.getopt.Getopt;
import net.i2p.I2PAppContext;
import net.i2p.crypto.SU3File;
import net.i2p.router.RouterContext; import net.i2p.router.RouterContext;
import net.i2p.router.web.ConfigUpdateHelper; import net.i2p.router.web.ConfigUpdateHelper;
import net.i2p.util.EepGet;
import net.i2p.update.*; import net.i2p.update.*;
import static net.i2p.update.UpdateType.*; import static net.i2p.update.UpdateType.*;
import static net.i2p.update.UpdateMethod.*; import static net.i2p.update.UpdateMethod.*;
...@@ -17,9 +23,9 @@ import static net.i2p.update.UpdateMethod.*; ...@@ -17,9 +23,9 @@ import static net.i2p.update.UpdateMethod.*;
* *
* Overrides UpdateRunner for convenience, this is not an Updater * Overrides UpdateRunner for convenience, this is not an Updater
* *
* @since 0.9.4 moved from NewsFetcher * @since 0.9.4 moved from NewsFetcher, public since 0.9.57 for CLI only
*/ */
class NewsHandler extends UpdateHandler implements Checker { public class NewsHandler extends UpdateHandler implements Checker {
/** /**
* NOTE: If you change, also change in Android: * NOTE: If you change, also change in Android:
...@@ -64,4 +70,91 @@ class NewsHandler extends UpdateHandler implements Checker { ...@@ -64,4 +70,91 @@ class NewsHandler extends UpdateHandler implements Checker {
UpdateRunner update = new NewsFetcher(_context, _mgr, updateSources); UpdateRunner update = new NewsFetcher(_context, _mgr, updateSources);
return update; return update;
} }
/**
* CLI fetch
*
* @since 0.9.57
*/
public static void main(String[] args) {
I2PAppContext ctx = I2PAppContext.getGlobalContext();
String url = ConfigUpdateHelper.getNewsURL(ctx);
String proxyHost = "127.0.0.1";
int proxyPort = 4444;
String lang = null;
boolean custom = false;
boolean error = false;
Getopt g = new Getopt("newshandler", args, "p:l:u:");
int c;
while ((c = g.getopt()) != -1) {
switch (c) {
case 'p':
String s = g.getOptarg();
int colon = s.indexOf(':');
if (colon >= 0) {
if (colon > 0)
proxyHost = s.substring(0, colon);
String port = s.substring(colon + 1);
proxyPort = Integer.parseInt(port);
} else {
proxyHost = s;
}
break;
case 'l':
lang = g.getOptarg();
break;
case 'u':
url = g.getOptarg();
custom = true;
break;
default:
error = true;
break;
}
}
if (error || args.length - g.getOptind() != 0) {
System.err.println("Usage: newshandler [-p 127.0.0.1[:4444]] [-l en] [-u url]");
System.exit(1);
}
if (lang != null)
url = url + "?lang=" + lang;
File file = new File("news-primary.su3");
System.out.println("Fetching news from primary server at " + url);
test(ctx, proxyHost, proxyPort, url, file);
if (!custom) {
url = DEFAULT_BACKUP_NEWS_URL_SU3;
if (lang != null)
url = url + "?lang=" + lang;
file = new File("news-backup.su3");
System.out.println("Fetching news from backup server at " + url);
test(ctx, proxyHost, proxyPort, url, file);
}
}
/**
* CLI fetch
*
* @since 0.9.57
*/
private static void test(I2PAppContext ctx, String phost, int pport, String url, File file) {
file.delete();
String path = file.getAbsolutePath();
EepGet get = new EepGet(ctx, phost, pport, 0, file.getAbsolutePath(), url);
if (get.fetch()) {
int status = get.getStatusCode();
if (status == 200) {
SU3File.main(new String[] {"showversion", path} );
SU3File.main(new String[] {"extract", "-x", path} );
} else {
System.out.println("Failed to fetch, status " + status + " for " + url);
}
} else {
System.out.println("Failed to fetch " + url);
}
}
} }
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment