Added reseed support via periodic thread that reseeds if deemed necessary.
Changed 'Apply' button size in ConfigurationTab.
This commit is contained in:
@ -4,20 +4,15 @@ package net.i2p.itoopie;
|
||||
* Main.java
|
||||
*/
|
||||
|
||||
import java.awt.Font;
|
||||
import java.util.Arrays;
|
||||
|
||||
import java.util.EnumMap;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
import java.util.Timer;
|
||||
import java.util.Map.Entry;
|
||||
import java.util.Set;
|
||||
|
||||
import javax.net.ssl.HttpsURLConnection;
|
||||
import javax.swing.SwingUtilities;
|
||||
import javax.swing.UIManager;
|
||||
import javax.swing.UnsupportedLookAndFeelException;
|
||||
import javax.swing.plaf.FontUIResource;
|
||||
|
||||
import org.apache.commons.logging.Log;
|
||||
import org.apache.commons.logging.LogFactory;
|
||||
@ -43,7 +38,7 @@ import net.i2p.itoopie.i2pcontrol.methods.RouterManager.ROUTER_MANAGER;
|
||||
import net.i2p.itoopie.i2pcontrol.methods.SetI2PControl;
|
||||
import net.i2p.itoopie.i2pcontrol.methods.SetNetworkSetting;
|
||||
import net.i2p.itoopie.i2pcontrol.methods.SetRouterManager;
|
||||
import net.i2p.itoopie.security.CertificateHelper;
|
||||
import net.i2p.itoopie.maintenance.ReseedMonitor;
|
||||
import net.i2p.itoopie.security.ItoopieHostnameVerifier;
|
||||
|
||||
/**
|
||||
@ -54,6 +49,7 @@ public class Main {
|
||||
///Manages the lifetime of the tray icon.
|
||||
private TrayManager trayManager = null;
|
||||
private static ConfigurationManager _conf;
|
||||
private static Timer reseedMonitor;
|
||||
private static Log _log;
|
||||
|
||||
/**
|
||||
@ -98,8 +94,13 @@ public class Main {
|
||||
|
||||
// Popup Main window.
|
||||
WindowHandler.toggleFrames();
|
||||
|
||||
|
||||
reseedMonitor = new Timer();
|
||||
// Start running periodic task after 2 minutes, run periodically every 10th minute.
|
||||
reseedMonitor.scheduleAtFixedRate(new ReseedMonitor(), 2*60*1000, 10*60*1000);
|
||||
|
||||
testStuff(); // Delete Me
|
||||
//testStuff(); // Delete Me
|
||||
}
|
||||
|
||||
@SuppressWarnings("static-access")
|
||||
|
@ -95,7 +95,7 @@ public class ConfigurationTab extends TabLogoPanel {
|
||||
|
||||
final JButton btnApply = new JButton(Transl._("Apply"));
|
||||
add(btnApply);
|
||||
btnApply.setBounds(450, 272, 100, 24);
|
||||
btnApply.setBounds(442, 272, 82, 24);
|
||||
btnApply.addActionListener(new ActionListener(){
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent arg0) {
|
||||
|
@ -4,7 +4,7 @@ import java.util.HashMap;
|
||||
|
||||
|
||||
/**
|
||||
* Describes the ways a I2P router can be restarted.
|
||||
* Describes the ways a I2P router operation can be altered.
|
||||
* @author hottuna
|
||||
*/
|
||||
public class I2PControl{
|
||||
@ -12,7 +12,7 @@ public class I2PControl{
|
||||
|
||||
|
||||
/**
|
||||
* Describes the ways a I2P router can be restarted.
|
||||
* Describes the ways a I2P router operation can be altered.
|
||||
* @author hottuna
|
||||
*/
|
||||
public enum I2P_CONTROL implements Remote{
|
||||
@ -20,9 +20,15 @@ public class I2PControl{
|
||||
public boolean isWritable(){ return true;}
|
||||
public String toString() { return "i2pcontrol.password"; }},
|
||||
|
||||
PORT { public boolean isReadable(){ return false;}
|
||||
PORT { public boolean isReadable(){ return false;}
|
||||
public boolean isWritable(){ return true;}
|
||||
public String toString() { return "i2pcontrol.port"; }}
|
||||
public String toString() { return "i2pcontrol.port"; }},
|
||||
|
||||
ADDRESS { public boolean isReadable(){ return false;}
|
||||
public boolean isWritable(){ return true;}
|
||||
public String toString() { return "i2pcontrol.address"; }}
|
||||
|
||||
|
||||
};
|
||||
|
||||
static {
|
||||
|
@ -36,6 +36,8 @@ public class SetRouterManager {
|
||||
for (Entry<ROUTER_MANAGER,String> e : set){
|
||||
if(e.getKey().isWritable()){
|
||||
outParams.put(e.getKey().toString(), e.getValue());
|
||||
} else if (e.getKey().isReadable()){
|
||||
outParams.put(e.getKey().toString(), null);
|
||||
}
|
||||
}
|
||||
req.setParams(outParams);
|
||||
|
109
src/net/i2p/itoopie/maintenance/ReseedMonitor.java
Normal file
109
src/net/i2p/itoopie/maintenance/ReseedMonitor.java
Normal file
@ -0,0 +1,109 @@
|
||||
package net.i2p.itoopie.maintenance;
|
||||
|
||||
import java.util.EnumMap;
|
||||
import java.util.HashMap;
|
||||
import java.util.TimerTask;
|
||||
|
||||
import javax.net.ssl.HttpsURLConnection;
|
||||
|
||||
import org.apache.commons.logging.Log;
|
||||
import org.apache.commons.logging.LogFactory;
|
||||
|
||||
import com.thetransactioncompany.jsonrpc2.client.JSONRPC2SessionException;
|
||||
|
||||
import net.i2p.itoopie.configuration.ConfigurationManager;
|
||||
import net.i2p.itoopie.i2pcontrol.InvalidPasswordException;
|
||||
import net.i2p.itoopie.i2pcontrol.methods.GetRouterInfo;
|
||||
import net.i2p.itoopie.i2pcontrol.methods.RouterInfo.ROUTER_INFO;
|
||||
import net.i2p.itoopie.i2pcontrol.methods.RouterManager.ROUTER_MANAGER;
|
||||
import net.i2p.itoopie.i2pcontrol.methods.SetRouterManager;
|
||||
import net.i2p.itoopie.security.ItoopieHostnameVerifier;
|
||||
|
||||
/*
|
||||
timer = new Timer();
|
||||
// Start running periodic task after 20 minutes, run periodically every 10th minute.
|
||||
timer.scheduleAtFixedRate(new Sweeper(), 1000*60*20, 1000*60*10);
|
||||
*/
|
||||
|
||||
/**
|
||||
* Monitors the amount of peers the remote I2P-node has and initiates a reseed if deemed needed.
|
||||
* @author hottuna
|
||||
*
|
||||
*/
|
||||
public class ReseedMonitor extends TimerTask{
|
||||
private static final Long MIN_KNOWN_PEERS = new Long(30);
|
||||
private Log _log;
|
||||
|
||||
public void ReseedMonitor(){
|
||||
_log = LogFactory.getLog(ReseedMonitor.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void run(){
|
||||
try {
|
||||
EnumMap<ROUTER_INFO, Object> em = GetRouterInfo.execute(ROUTER_INFO.KNOWN_PEERS, ROUTER_INFO.IS_RESEEDING);
|
||||
Long knownPeers = (Long) em.get(ROUTER_INFO.KNOWN_PEERS);
|
||||
Boolean isReseeding = (Boolean) em.get(ROUTER_INFO.IS_RESEEDING);
|
||||
if (knownPeers != null && isReseeding != null){
|
||||
if (knownPeers < MIN_KNOWN_PEERS){
|
||||
HashMap<ROUTER_MANAGER, String> hm = new HashMap<ROUTER_MANAGER, String>();
|
||||
hm.put(ROUTER_MANAGER.RESEED, null);
|
||||
SetRouterManager.execute(hm);
|
||||
_log.info("Reseed initiated..");
|
||||
}
|
||||
}
|
||||
} catch (InvalidPasswordException e) {
|
||||
_log.error("Password denied by remote I2PControl host.");
|
||||
} catch (JSONRPC2SessionException e) {
|
||||
_log.error("Error connecting to remote I2PControl host.");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public static void main(String[] args){
|
||||
System.out.println("Reading config file..");
|
||||
ConfigurationManager _conf = ConfigurationManager.getInstance();
|
||||
HttpsURLConnection.setDefaultHostnameVerifier(new ItoopieHostnameVerifier());
|
||||
_conf.parseConfigStr("server.hostname=127.0.0.1");
|
||||
_conf.parseConfigStr("server.port=7650");
|
||||
_conf.parseConfigStr("server.target=jsonrpc");
|
||||
|
||||
|
||||
try {
|
||||
EnumMap<ROUTER_INFO, Object> em = GetRouterInfo.execute(ROUTER_INFO.KNOWN_PEERS, ROUTER_INFO.IS_RESEEDING);
|
||||
Long knownPeers = (Long) em.get(ROUTER_INFO.KNOWN_PEERS);
|
||||
Boolean isReseeding = (Boolean) em.get(ROUTER_INFO.IS_RESEEDING);
|
||||
System.out.println("Known peers: " + knownPeers);
|
||||
System.out.println("Is reseeding: " + isReseeding);
|
||||
|
||||
System.out.println("Initiating reseed...");
|
||||
HashMap<ROUTER_MANAGER, String> hm = new HashMap<ROUTER_MANAGER, String>();
|
||||
hm.put(ROUTER_MANAGER.RESEED, null);
|
||||
SetRouterManager.execute(hm);
|
||||
System.out.println("Waiting...");
|
||||
Thread.sleep(1000);
|
||||
System.out.println("Initiating second reseed...");
|
||||
hm = new HashMap<ROUTER_MANAGER, String>();
|
||||
hm.put(ROUTER_MANAGER.RESEED, null);
|
||||
SetRouterManager.execute(hm);
|
||||
System.out.println("Waiting...");
|
||||
Thread.sleep(1000);
|
||||
em = GetRouterInfo.execute(ROUTER_INFO.KNOWN_PEERS, ROUTER_INFO.IS_RESEEDING);
|
||||
isReseeding = (Boolean) em.get(ROUTER_INFO.IS_RESEEDING);
|
||||
System.out.println("Is reseeding: " + isReseeding);
|
||||
|
||||
|
||||
if (knownPeers != null && isReseeding != null){
|
||||
if (knownPeers < MIN_KNOWN_PEERS){
|
||||
}
|
||||
}
|
||||
} catch (InvalidPasswordException e) {
|
||||
e.printStackTrace();
|
||||
} catch (JSONRPC2SessionException e) {
|
||||
e.printStackTrace();
|
||||
} catch (InterruptedException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
Reference in New Issue
Block a user