2006-02-16 jrandom

* Bugfix to the I2PTunnel web config to properly accept i2cp port settings
    * Initial sucker refactoring to simplify reuse of the html parsing
    * Beginnings of hooks to push imported rss/atom out to remote syndie
      archives automatically (though not enabled currently)
    * Further SSU peer test cleanup
This commit is contained in:
jrandom
2006-02-16 08:36:22 +00:00
committed by zzz
parent 79f934fe17
commit fb17e70f12
2 changed files with 47 additions and 6 deletions

View File

@ -1,10 +1,10 @@
package net.i2p.syndie;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.*;
import net.i2p.I2PAppContext;
import net.i2p.client.naming.PetName;
import net.i2p.client.naming.PetNameDB;
import net.i2p.util.Log;
import net.i2p.syndie.web.RemoteArchiveBean;
@ -15,6 +15,8 @@ public class Updater {
private long _lastUpdate;
private static boolean _woken;
private static boolean ALLOW_REMOTE_PUSH = false;
public void update() {
BlogManager bm = BlogManager.instance();
if (_lastUpdate + bm.getUpdateDelay()*60*60*1000 > System.currentTimeMillis()) {
@ -31,17 +33,56 @@ public class Updater {
}
_log.debug("Done fetching archives");
List rssFeeds = bm.getRssFeeds();
List allEntries = new ArrayList();
Iterator iter = rssFeeds.iterator();
while(iter.hasNext()) {
String args[] = (String[])iter.next();
_log.debug("rss feed begin: " + args[0]);
Sucker sucker = new Sucker(args);
sucker.suck();
allEntries.addAll(sucker.suck());
_log.debug("rss feed end: " + args[0]);
}
if (ALLOW_REMOTE_PUSH && (allEntries.size() > 0) ) {
String pushedRemoteArchive = getAutomaticallyPushedArchive();
if (pushedRemoteArchive != null) {
_log.debug("Pushing all of the new entries to " + pushedRemoteArchive + ": " + allEntries);
// push all of the new entries to the configured default archive
User user = new User();
RemoteArchiveBean rab = new RemoteArchiveBean();
rab.fetchIndex(user, "web", pushedRemoteArchive, bm.getDefaultProxyHost(), bm.getDefaultProxyPort(), true);
if (rab.getRemoteIndex() != null) {
rab.postSelectedEntries(user, allEntries, pushedRemoteArchive);
_log.debug(rab.getStatus());
}
}
}
_log.debug("Done with all updating");
}
/**
* Pick the archive to which any posts imported from a feed should be pushed to,
* beyond the local archive. This currently pushes it to the first (alphabetically)
* syndie archive in the default user's addressbook that is marked as 'public'.
*
* @return archive location, or null if no archive should be used
*/
private String getAutomaticallyPushedArchive() {
BlogManager bm = BlogManager.instance();
User user = bm.getDefaultUser();
PetNameDB db = user.getPetNameDB();
for (Iterator iter = db.getNames().iterator(); iter.hasNext(); ) {
String name = (String)iter.next();
PetName pn = db.getByName(name);
String proto = pn.getProtocol();
if ( (proto != null) && ("syndiearchive".equals(proto)) )
if (pn.getIsPublic())
return pn.getLocation();
}
return null;
}
public void fetchArchive(String archive) {
if ( (archive == null) || (archive.trim().length() <= 0) ) {
_log.error("Fetch a null archive?" + new Exception("source"));

View File

@ -74,8 +74,8 @@ public class HopProcessor {
boolean okIV = _validator.receiveIV(orig, offset, orig, offset + IV_LENGTH);
if (!okIV) {
if (_log.shouldLog(Log.ERROR))
_log.error("Invalid IV received on tunnel " + _config.getReceiveTunnelId());
if (_log.shouldLog(Log.WARN))
_log.warn("Invalid IV received on tunnel " + _config.getReceiveTunnelId());
return false;
}