add ipv6 to /confignet

This commit is contained in:
zzz
2013-06-29 15:13:05 +00:00
parent 79f8e88e5f
commit 3aafea0d98
4 changed files with 64 additions and 3 deletions

View File

@ -7,8 +7,8 @@ import java.util.Map;
import net.i2p.router.Router;
import net.i2p.router.transport.FIFOBandwidthRefiller;
import net.i2p.router.transport.TransportUtil;
import net.i2p.router.transport.TransportManager;
import net.i2p.router.transport.TransportUtil;
import net.i2p.router.transport.udp.UDPTransport;
import net.i2p.router.web.ConfigServiceHandler;
import net.i2p.util.Addresses;
@ -17,6 +17,7 @@ import net.i2p.util.Addresses;
* Handler to deal with form submissions from the main config form and act
* upon the values.
*
* Used for both /config and /confignet
*/
public class ConfigNetHandler extends FormHandler {
private String _hostname;
@ -45,6 +46,7 @@ public class ConfigNetHandler extends FormHandler {
private String _sharePct;
private boolean _ratesOnly;
private boolean _udpDisabled;
private String _ipv6Mode;
private final Map<String, String> changes = new HashMap();
private static final String PROP_HIDDEN = Router.PROP_HIDDEN_HIDDEN; // see Router for other choice
@ -130,6 +132,11 @@ public class ConfigNetHandler extends FormHandler {
_udpDisabled = true;
}
/** @since IPv6 */
public void setIpv6(String mode) {
_ipv6Mode = mode;
}
private void recheckReachability() {
_context.commSystem().recheckReachability();
addFormNotice(_("Rechecking router reachability..."));
@ -177,6 +184,26 @@ public class ConfigNetHandler extends FormHandler {
restartRequired = true;
}
}
if (_ipv6Mode != null) {
// take care not to set default, as it will change
String tcp6 = _context.getProperty(TransportUtil.NTCP_IPV6_CONFIG);
if (tcp6 == null)
tcp6 = TransportUtil.DEFAULT_IPV6_CONFIG.toConfigString();
String udp6 = _context.getProperty(TransportUtil.SSU_IPV6_CONFIG);
if (udp6 == null)
udp6 = TransportUtil.DEFAULT_IPV6_CONFIG.toConfigString();
boolean ch = false;
if (!_ipv6Mode.equals(tcp6)) {
changes.put(TransportUtil.NTCP_IPV6_CONFIG, _ipv6Mode);
ch = true;
}
if (!_ipv6Mode.equals(udp6)) {
changes.put(TransportUtil.SSU_IPV6_CONFIG, _ipv6Mode);
ch = true;
}
if (ch)
addFormNotice(_("Updating IPv6 setting"));
}
// NTCP Settings
// Normalize some things to make the following code a little easier...

View File

@ -7,11 +7,15 @@ import net.i2p.data.RouterAddress;
import net.i2p.router.CommSystemFacade;
import net.i2p.router.Router;
import net.i2p.router.transport.TransportManager;
import net.i2p.router.transport.TransportUtil;
import net.i2p.router.transport.udp.UDPTransport;
import net.i2p.util.Addresses;
/**
*
* Used for both /config and /confignet
*/
public class ConfigNetHelper extends HelperBase {
public ConfigNetHelper() {}
/** copied from various private components */
public final static String PROP_I2NP_NTCP_HOSTNAME = "i2np.ntcp.hostname";
@ -19,6 +23,7 @@ public class ConfigNetHelper extends HelperBase {
public final static String PROP_I2NP_NTCP_AUTO_PORT = "i2np.ntcp.autoport";
public final static String PROP_I2NP_NTCP_AUTO_IP = "i2np.ntcp.autoip";
private final static String CHECKED = " checked=\"checked\" ";
public String getUdphostname() {
return _context.getProperty(UDPTransport.PROP_EXTERNAL_HOST, "");
}
@ -152,6 +157,23 @@ public class ConfigNetHelper extends HelperBase {
return CHECKED;
}
}
/**
* Combined SSU/NTCP
* Use SSU setting, then NTCP setting, then default
* @since IPv6
*/
public String getIPv6Checked(String mode) {
String s = _context.getProperty(TransportUtil.SSU_IPV6_CONFIG);
if (s == null) {
s = _context.getProperty(TransportUtil.NTCP_IPV6_CONFIG);
if (s == null)
s = TransportUtil.DEFAULT_IPV6_CONFIG.toConfigString();
}
if (s.equals(mode))
return CHECKED;
return "";
}
public String[] getAddresses() {
ArrayList<String> al = new ArrayList(Addresses.getAddresses());