org.klomp.snark
Class I2PSnarkUtil

java.lang.Object
  extended by org.klomp.snark.I2PSnarkUtil

public class I2PSnarkUtil
extends Object

I2P specific helpers for I2PSnark We use this class as a sort of context for i2psnark so we can run multiple instances of single Snarks (but not multiple SnarkManagers, it is still static)


Field Summary
static int DEFAULT_STARTUP_DELAY
           
static boolean DEFAULT_USE_DHT
           
static boolean DEFAULT_USE_OPENTRACKERS
           
static String EEPGET_USER_AGENT
           
static int MAX_CONNECTIONS
           
static String PROP_MAX_BW
           
 
Constructor Summary
I2PSnarkUtil(I2PAppContext ctx)
           
I2PSnarkUtil(I2PAppContext ctx, String baseName)
           
 
Method Summary
 boolean configured()
           
 boolean connect()
          Connect to the router, if we aren't already
(package private)  I2PSocket connect(PeerID peer)
          connect to the given destination
 boolean connected()
           
 void disconnect()
          Destroy the destination itself
 File get(String url)
          Fetch the given URL, returning the file it is stored in, or null on error.
 File get(String url, boolean rewrite)
           
 File get(String url, boolean rewrite, int retries)
           
 byte[] get(String url, boolean rewrite, int retries, int initialSize, int maxSize)
          Fetch to memory
 File get(String url, int retries)
           
 List<String> getBackupTrackers()
          List of open tracker announce URLs to use as backups even if disabled
 I2PAppContext getContext()
           
(package private)  Destination getDestination(String ip)
          Base64 Hash or Hash.i2p or name.i2p using naming service
(package private) static Destination getDestinationFromBase64(String ip)
          Base64 only - static (no naming service)
 DHT getDHT()
           
 String getEepProxyHost()
           
 int getEepProxyPort()
           
 boolean getEepProxySet()
           
 boolean getFilesPublic()
           
 String getI2CPHost()
           
 Map<String,String> getI2CPOptions()
           
 int getI2CPPort()
           
 int getMaxConnections()
           
 int getMaxUpBW()
           
 int getMaxUploaders()
           
(package private)  Destination getMyDestination()
           
 List<String> getOpenTrackers()
          List of open tracker announce URLs to use as backups
 String getOurIPString()
           
 I2PServerSocket getServerSocket()
           
 I2PSocketManager getSocketManager()
          For FetchAndAdd
 int getStartupDelay()
           
 String getString(int n, String s, String p)
          ngettext @since 0.7.14
 String getString(String key)
          lang in routerconsole.lang property, else current locale
 String getString(String s, Object o)
          translate a string with a parameter This is a lot more expensive than getString(s, ctx), so use sparingly.
 String getString(String s, Object o, Object o2)
          {0} and {1}
 File getTempDir()
           
 boolean isConnecting()
           
 boolean isKnownOpenTracker(String url)
          Is this announce URL probably for an open tracker?
 String lookup(String name)
           
(package private)  String rewriteAnnounce(String origAnnounce)
          Given http://KEY.i2p/foo/announce turn it into http://i2p/KEY/foo/announce Given http://tracker.blah.i2p/foo/announce leave it alone
 void setFilesPublic(boolean yes)
           
 void setI2CPConfig(String i2cpHost, int i2cpPort, Map opts)
           
 void setMaxConnections(int limit)
           
 void setMaxUpBW(int limit)
          This updates ALL the session options (not just the bw) and tells the router
 void setMaxUploaders(int limit)
           
 void setOpenTrackers(List<String> ot)
           
 void setStartupDelay(int minutes)
           
 void setUseDHT(boolean yes)
           
 void setUseOpenTrackers(boolean yes)
           
 boolean shouldUseDHT()
           
 boolean shouldUseOpenTrackers()
           
static String toHex(byte[] b)
          Like DataHelper.toHexString but ensures no loss of leading zero bytes
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

DEFAULT_STARTUP_DELAY

public static final int DEFAULT_STARTUP_DELAY
See Also:
Constant Field Values

DEFAULT_USE_OPENTRACKERS

public static final boolean DEFAULT_USE_OPENTRACKERS
See Also:
Constant Field Values

MAX_CONNECTIONS

public static final int MAX_CONNECTIONS
See Also:
Constant Field Values

PROP_MAX_BW

public static final String PROP_MAX_BW
See Also:
Constant Field Values

DEFAULT_USE_DHT

public static final boolean DEFAULT_USE_DHT
See Also:
Constant Field Values

EEPGET_USER_AGENT

public static final String EEPGET_USER_AGENT
See Also:
Constant Field Values
Constructor Detail

I2PSnarkUtil

public I2PSnarkUtil(I2PAppContext ctx)

I2PSnarkUtil

public I2PSnarkUtil(I2PAppContext ctx,
                    String baseName)
Parameters:
baseName - generally "i2psnark"
Since:
Jetty 7
Method Detail

getContext

public I2PAppContext getContext()
Since:
0.9.1

configured

public boolean configured()

setI2CPConfig

public void setI2CPConfig(String i2cpHost,
                          int i2cpPort,
                          Map opts)

setMaxUploaders

public void setMaxUploaders(int limit)

setMaxUpBW

public void setMaxUpBW(int limit)
This updates ALL the session options (not just the bw) and tells the router

Parameters:
limit - KBps

setMaxConnections

public void setMaxConnections(int limit)

setStartupDelay

public void setStartupDelay(int minutes)

getI2CPHost

public String getI2CPHost()

getI2CPPort

public int getI2CPPort()

getI2CPOptions

public Map<String,String> getI2CPOptions()

getEepProxyHost

public String getEepProxyHost()

getEepProxyPort

public int getEepProxyPort()

getEepProxySet

public boolean getEepProxySet()

getMaxUploaders

public int getMaxUploaders()

getMaxUpBW

public int getMaxUpBW()
Returns:
KBps

getMaxConnections

public int getMaxConnections()

getStartupDelay

public int getStartupDelay()

getFilesPublic

public boolean getFilesPublic()
Since:
0.8.9

setFilesPublic

public void setFilesPublic(boolean yes)
Since:
0.8.9

getTempDir

public File getTempDir()
Since:
0.9.1

connect

public boolean connect()
Connect to the router, if we aren't already


getDHT

public DHT getDHT()
Returns:
null if disabled or not started
Since:
0.8.4

connected

public boolean connected()

isConnecting

public boolean isConnecting()
Since:
0.9.1

getSocketManager

public I2PSocketManager getSocketManager()
For FetchAndAdd

Returns:
null if not connected
Since:
0.9.1

disconnect

public void disconnect()
Destroy the destination itself


connect

I2PSocket connect(PeerID peer)
            throws IOException
connect to the given destination

Throws:
IOException

get

public File get(String url)
Fetch the given URL, returning the file it is stored in, or null on error. No retries.


get

public File get(String url,
                boolean rewrite)
Parameters:
rewrite - if true, convert http://KEY.i2p/foo/announce to http://i2p/KEY/foo/announce

get

public File get(String url,
                int retries)
Parameters:
retries - if < 0, set timeout to a few seconds

get

public File get(String url,
                boolean rewrite,
                int retries)
Parameters:
retries - if < 0, set timeout to a few seconds

get

public byte[] get(String url,
                  boolean rewrite,
                  int retries,
                  int initialSize,
                  int maxSize)
Fetch to memory

Parameters:
retries - if < 0, set timeout to a few seconds
initialSize - buffer size
maxSize - fails if greater
Returns:
null on error
Since:
0.9.4

getServerSocket

public I2PServerSocket getServerSocket()

getOurIPString

public String getOurIPString()

getMyDestination

Destination getMyDestination()
Returns:
dest or null
Since:
0.8.4

getDestinationFromBase64

static Destination getDestinationFromBase64(String ip)
Base64 only - static (no naming service)


getDestination

Destination getDestination(String ip)
Base64 Hash or Hash.i2p or name.i2p using naming service


lookup

public String lookup(String name)

rewriteAnnounce

String rewriteAnnounce(String origAnnounce)
Given http://KEY.i2p/foo/announce turn it into http://i2p/KEY/foo/announce Given http://tracker.blah.i2p/foo/announce leave it alone


setOpenTrackers

public void setOpenTrackers(List<String> ot)
Parameters:
ot - non-null list of announce URLs

getOpenTrackers

public List<String> getOpenTrackers()
List of open tracker announce URLs to use as backups

Returns:
non-null, possibly unmodifiable, empty if disabled

isKnownOpenTracker

public boolean isKnownOpenTracker(String url)
Is this announce URL probably for an open tracker?

Since:
0.9.17

getBackupTrackers

public List<String> getBackupTrackers()
List of open tracker announce URLs to use as backups even if disabled

Returns:
non-null
Since:
0.9.4

setUseOpenTrackers

public void setUseOpenTrackers(boolean yes)

shouldUseOpenTrackers

public boolean shouldUseOpenTrackers()

setUseDHT

public void setUseDHT(boolean yes)
Since:
DHT

shouldUseDHT

public boolean shouldUseDHT()
Since:
DHT

toHex

public static String toHex(byte[] b)
Like DataHelper.toHexString but ensures no loss of leading zero bytes

Since:
0.8.4

getString

public String getString(String key)
lang in routerconsole.lang property, else current locale


getString

public String getString(String s,
                        Object o)
translate a string with a parameter This is a lot more expensive than getString(s, ctx), so use sparingly.

Parameters:
s - string to be translated containing {0} The {0} will be replaced by the parameter. Single quotes must be doubled, i.e. ' -> '' in the string.
o - parameter, not translated. To tranlslate parameter also, use _("foo {0} bar", _("baz")) Do not double the single quotes in the parameter. Use autoboxing to call with ints, longs, floats, etc.

getString

public String getString(String s,
                        Object o,
                        Object o2)
{0} and {1}


getString

public String getString(int n,
                        String s,
                        String p)
ngettext @since 0.7.14