net.i2p.i2ptunnel.ui
Class TunnelConfig

java.lang.Object
  extended by net.i2p.i2ptunnel.ui.TunnelConfig

public class TunnelConfig
extends Object

Helper class to generate a valid TunnelController configuration from provided settings.

Since:
0.9.19 logic moved from IndexBean

Field Summary
protected  I2PAppContext _context
           
static Set<String> _nonProxyNoShowSet
           
static Set<String> _noShowSet
           
protected static String PROP_ENABLE_ACCESS_LIST
           
protected static String PROP_ENABLE_BLACKLIST
           
static String PROP_MAX_CONNS_DAY
           
static String PROP_MAX_CONNS_HOUR
           
static String PROP_MAX_CONNS_MIN
          all of these are @since 0.8.3 (moved from IndexBean)
static String PROP_MAX_STREAMS
           
static String PROP_MAX_TOTAL_CONNS_DAY
           
static String PROP_MAX_TOTAL_CONNS_HOUR
           
static String PROP_MAX_TOTAL_CONNS_MIN
           
static String SHARED_CLIENT_NICKNAME
           
 
Constructor Summary
TunnelConfig()
           
 
Method Summary
 Properties getConfig()
          Based on all provided data, create a set of configuration parameters suitable for use in a TunnelController.
 String getPrivKeyFile()
           
 String getType()
           
 void setAccessList(String val)
           
 void setAccessMode(int mode)
          Controls how other tunnels are checked for access.
 void setAllowAccept(boolean val)
           
 void setAllowInternalSSL(boolean val)
           
 void setAllowReferer(boolean val)
           
 void setAllowUserAgent(boolean val)
           
 void setClientHost(String host)
          I2CP host the router is on, ignored when in router context
 void setClientPort(String port)
          I2CP port the router is on, ignored when in router context
 void setClose(boolean val)
           
 void setCloseTime(int val)
           
 void setConnectDelay(boolean val)
           
 void setCustomOptions(String customOptions)
          what I2P session overrides should be used
 void setDCC(boolean val)
           
 void setDelayOpen(boolean val)
           
 void setDescription(String description)
          one line description
 void setDestination(Destination dest)
          This is easier than requiring TunnelConfig to talk to TunnelControllerGroup and TunnelController.
 void setEncrypt(boolean val)
           
 void setEncryptKey(String val)
           
 void setInboundRandomKey(String s)
          Random keys
 void setJumpList(String val)
           
 void setLeaseSetPrivateKey(String s)
           
 void setLeaseSetSigningPrivateKey(String s)
           
 void setLimitDay(int val)
           
 void setLimitHour(int val)
           
 void setLimitMinute(int val)
           
 void setMaxStreams(int val)
           
 void setMultihome(boolean val)
           
 void setName(String name)
          Short name of the tunnel
 void setNewDest(int mode)
          Controls how ephemeral the I2P Destination of a client tunnel is.
 void setOutboundRandomKey(String s)
           
 void setOutproxyAuth(boolean val)
          Sets whether authentication is required for any of the configured outproxies.
 void setOutproxyPassword(String s)
           
 void setOutproxyUsername(String s)
           
 void setPort(int port)
          what port should this client/httpclient/ircclient listen on
 void setPostBanTime(int val)
           
 void setPostCheckTime(int val)
           
 void setPostMax(int val)
          POST limits
 void setPostTotalBanTime(int val)
           
 void setPostTotalMax(int val)
           
 void setPrivKeyFile(String file)
          What filename is this server tunnel's private keys stored in
 void setProfile(String profile)
           
 void setProxyAuth(String authType)
          Sets whether authentication should be used for client proxy tunnels.
 void setProxyList(String proxyList)
          what HTTP outproxies should be used (httpclient specific)
 void setProxyPassword(String s)
           
 void setProxyUsername(String s)
           
 void setReachableBy(String reachableBy)
          what interface should this client/httpclient/ircclient listen on
 void setReduce(boolean val)
           
 void setReduceCount(int val)
           
 void setReduceTime(int val)
           
 void setRejectInproxy(boolean val)
           
 void setShared(boolean val)
           
 void setSigType(String val)
           
 void setSpoofedHost(String host)
          What host does this http server tunnel spoof
 void setSslProxies(String s)
           
 void setStartOnLoad(boolean val)
          If called with any value, we want this tunnel to start whenever it is loaded (aka right now and whenever the router is started up)
 void setTargetDestination(String dest)
          What peer does this client tunnel point at
 void setTargetHost(String host)
          What host does this server tunnel point at
 void setTargetPort(int port)
          What port does this server tunnel point at
 void setTotalDay(int val)
           
 void setTotalHour(int val)
           
 void setTotalMinute(int val)
           
 void setTunnelBackupQuantity(int tunnelBackupQuantity)
          how many tunnels to hold in reserve to guard against failures
 void setTunnelDepth(int tunnelDepth)
          how many hops to use for inbound tunnels
 void setTunnelQuantity(int tunnelQuantity)
          how many parallel inbound tunnels to use
 void setTunnelVariance(int tunnelVariance)
          how much randomisation to apply to the depth of tunnels
 void setType(String type)
          What type of tunnel (httpclient, ircclient, client, or server).
 void setUniqueLocal(boolean val)
           
 void setUseOutproxyPlugin(boolean val)
           
 void setUseSSL(boolean val)
           
 void updateTunnelQuantities(Properties config)
          Update tunnel quantities for the provided config from this TunnelConfig.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

SHARED_CLIENT_NICKNAME

public static final String SHARED_CLIENT_NICKNAME
See Also:
Constant Field Values

_context

protected final I2PAppContext _context

PROP_ENABLE_ACCESS_LIST

protected static final String PROP_ENABLE_ACCESS_LIST
See Also:
Constant Field Values

PROP_ENABLE_BLACKLIST

protected static final String PROP_ENABLE_BLACKLIST
See Also:
Constant Field Values

PROP_MAX_CONNS_MIN

public static final String PROP_MAX_CONNS_MIN
all of these are @since 0.8.3 (moved from IndexBean)

See Also:
Constant Field Values

PROP_MAX_CONNS_HOUR

public static final String PROP_MAX_CONNS_HOUR
See Also:
Constant Field Values

PROP_MAX_CONNS_DAY

public static final String PROP_MAX_CONNS_DAY
See Also:
Constant Field Values

PROP_MAX_TOTAL_CONNS_MIN

public static final String PROP_MAX_TOTAL_CONNS_MIN
See Also:
Constant Field Values

PROP_MAX_TOTAL_CONNS_HOUR

public static final String PROP_MAX_TOTAL_CONNS_HOUR
See Also:
Constant Field Values

PROP_MAX_TOTAL_CONNS_DAY

public static final String PROP_MAX_TOTAL_CONNS_DAY
See Also:
Constant Field Values

PROP_MAX_STREAMS

public static final String PROP_MAX_STREAMS
See Also:
Constant Field Values

_noShowSet

public static final Set<String> _noShowSet

_nonProxyNoShowSet

public static final Set<String> _nonProxyNoShowSet
Constructor Detail

TunnelConfig

public TunnelConfig()
Method Detail

setType

public void setType(String type)
What type of tunnel (httpclient, ircclient, client, or server). This is required when adding a new tunnel.


getType

public String getType()

setName

public void setName(String name)
Short name of the tunnel


setDescription

public void setDescription(String description)
one line description


setClientHost

public void setClientHost(String host)
I2CP host the router is on, ignored when in router context


setClientPort

public void setClientPort(String port)
I2CP port the router is on, ignored when in router context


setTunnelDepth

public void setTunnelDepth(int tunnelDepth)
how many hops to use for inbound tunnels


setTunnelQuantity

public void setTunnelQuantity(int tunnelQuantity)
how many parallel inbound tunnels to use


setTunnelVariance

public void setTunnelVariance(int tunnelVariance)
how much randomisation to apply to the depth of tunnels


setTunnelBackupQuantity

public void setTunnelBackupQuantity(int tunnelBackupQuantity)
how many tunnels to hold in reserve to guard against failures


setCustomOptions

public void setCustomOptions(String customOptions)
what I2P session overrides should be used


setProxyList

public void setProxyList(String proxyList)
what HTTP outproxies should be used (httpclient specific)


setPort

public void setPort(int port)
what port should this client/httpclient/ircclient listen on


setReachableBy

public void setReachableBy(String reachableBy)
what interface should this client/httpclient/ircclient listen on


setTargetDestination

public void setTargetDestination(String dest)
What peer does this client tunnel point at


setTargetHost

public void setTargetHost(String host)
What host does this server tunnel point at


setTargetPort

public void setTargetPort(int port)
What port does this server tunnel point at


setSpoofedHost

public void setSpoofedHost(String host)
What host does this http server tunnel spoof


setPrivKeyFile

public void setPrivKeyFile(String file)
What filename is this server tunnel's private keys stored in


getPrivKeyFile

public String getPrivKeyFile()

setStartOnLoad

public void setStartOnLoad(boolean val)
If called with any value, we want this tunnel to start whenever it is loaded (aka right now and whenever the router is started up)


setShared

public void setShared(boolean val)

setConnectDelay

public void setConnectDelay(boolean val)

setProfile

public void setProfile(String profile)

setReduce

public void setReduce(boolean val)

setClose

public void setClose(boolean val)

setEncrypt

public void setEncrypt(boolean val)

setDCC

public void setDCC(boolean val)

setUseSSL

public void setUseSSL(boolean val)

setRejectInproxy

public void setRejectInproxy(boolean val)

setUniqueLocal

public void setUniqueLocal(boolean val)

setAccessMode

public void setAccessMode(int mode)
Controls how other tunnels are checked for access.

The list used for whitelisting/blacklisting can be set with setAccessList(String).

Parameters:
mode - 0 for no control, 1 for whitelist, 2 for blacklist

setDelayOpen

public void setDelayOpen(boolean val)

setNewDest

public void setNewDest(int mode)
Controls how ephemeral the I2P Destination of a client tunnel is.

If setClose(boolean) is set to false then mode 1 == mode 0.

Parameters:
mode - 0 for new dest on restart, 1 for new dest on resume from idle, 2 for persistent key

setReduceTime

public void setReduceTime(int val)

setReduceCount

public void setReduceCount(int val)

setEncryptKey

public void setEncryptKey(String val)

setAccessList

public void setAccessList(String val)

setJumpList

public void setJumpList(String val)

setCloseTime

public void setCloseTime(int val)

setAllowUserAgent

public void setAllowUserAgent(boolean val)

setAllowReferer

public void setAllowReferer(boolean val)

setAllowAccept

public void setAllowAccept(boolean val)

setAllowInternalSSL

public void setAllowInternalSSL(boolean val)

setMultihome

public void setMultihome(boolean val)

setProxyAuth

public void setProxyAuth(String authType)
Sets whether authentication should be used for client proxy tunnels. Supported authentication types: "basic", "digest".

Parameters:
authType - the authentication type, or "false" for no authentication

setProxyUsername

public void setProxyUsername(String s)

setProxyPassword

public void setProxyPassword(String s)

setOutproxyAuth

public void setOutproxyAuth(boolean val)
Sets whether authentication is required for any of the configured outproxies.

Parameters:
val - true if authentication is required, false otherwise

setOutproxyUsername

public void setOutproxyUsername(String s)

setOutproxyPassword

public void setOutproxyPassword(String s)

setSslProxies

public void setSslProxies(String s)

setUseOutproxyPlugin

public void setUseOutproxyPlugin(boolean val)

setLimitMinute

public void setLimitMinute(int val)

setLimitHour

public void setLimitHour(int val)

setLimitDay

public void setLimitDay(int val)

setTotalMinute

public void setTotalMinute(int val)

setTotalHour

public void setTotalHour(int val)

setTotalDay

public void setTotalDay(int val)

setMaxStreams

public void setMaxStreams(int val)

setPostMax

public void setPostMax(int val)
POST limits


setPostTotalMax

public void setPostTotalMax(int val)

setPostCheckTime

public void setPostCheckTime(int val)

setPostBanTime

public void setPostBanTime(int val)

setPostTotalBanTime

public void setPostTotalBanTime(int val)

setSigType

public void setSigType(String val)

setInboundRandomKey

public void setInboundRandomKey(String s)
Random keys


setOutboundRandomKey

public void setOutboundRandomKey(String s)

setLeaseSetSigningPrivateKey

public void setLeaseSetSigningPrivateKey(String s)

setLeaseSetPrivateKey

public void setLeaseSetPrivateKey(String s)

setDestination

public void setDestination(Destination dest)
This is easier than requiring TunnelConfig to talk to TunnelControllerGroup and TunnelController.

Parameters:
dest - the current Destination for this tunnel.

getConfig

public Properties getConfig()
Based on all provided data, create a set of configuration parameters suitable for use in a TunnelController. This will replace (not add to) any existing parameters, so this should return a comprehensive mapping.


updateTunnelQuantities

public void updateTunnelQuantities(Properties config)
Update tunnel quantities for the provided config from this TunnelConfig.

Parameters:
config - the config to update.