## org.klomp.snark
Class I2PSnarkUtil

    java.lang.Object
      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_MAX_UP_BW`
`static String` `DEFAULT_OPENTRACKERS`
`static int` `DEFAULT_STARTUP_DELAY`
`static boolean` `DEFAULT_USE_OPENTRACKERS`
`static int` `MAX_CONNECTIONS`
`static String` `PROP_OPENTRACKERS`
`static String` `PROP_USE_OPENTRACKERS`

Constructor Summary
`I2PSnarkUtil(I2PAppContext ctx)`

Method Summary
`boolean` `configured()` public void setProxy(String host, int port) { if ( (host != null) && (port > 0) ) { _shouldProxy = true; _proxyHost = host; _proxyPort = port; } else { _shouldProxy = false; _proxyHost = null; _proxyPort = -1; } _configured = true; }
`boolean` `connect()` Connect to the router, if we aren't already
`(package private) I2PSocket` `connect(PeerID peer)` connect to the given destination
`boolean` `connected()`
`(package private) void` `debug(String msg, int snarkDebugLevel)` hook between snark's logger and an i2p log
`(package private) void` `debug(String msg, int snarkDebugLevel, Throwable t)`
`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)`
`File` `get(String url, int retries)`
`(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()`
`String` `getI2CPHost()`
`Map<String,String>` `getI2CPOptions()`
`int` `getI2CPPort()`
`int` `getMaxConnections()`
`int` `getMaxUpBW()`
`int` `getMaxUploaders()`
`(package private) Destination` `getMyDestination()`
`List<String>` `getOpenTrackers()` sorted map of name to announceURL=baseURL
`String` `getOpenTrackerString()`
`(package private) String` `getOurIPString()`
`I2PServerSocket` `getServerSocket()`
`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}
`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` `setI2CPConfig(String i2cpHost, int i2cpPort, Map opts)`
`void` `setMaxConnections(int limit)`
`void` `setMaxUpBW(int limit)`
`void` `setMaxUploaders(int limit)`
`void` `setOpenTrackerString(String ot)`
`void` `setStartupDelay(int minutes)`
`void` `setUseOpenTrackers(boolean yes)`
`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

### PROP_USE_OPENTRACKERS

    public static final String PROP_USE_OPENTRACKERS

See Also:
  Constant Field Values

### DEFAULT_USE_OPENTRACKERS

    public static final boolean DEFAULT_USE_OPENTRACKERS

See Also:
  Constant Field Values

### PROP_OPENTRACKERS

    public static final String PROP_OPENTRACKERS

See Also:
  Constant Field Values

### DEFAULT_OPENTRACKERS

    public static final String DEFAULT_OPENTRACKERS

See Also:
  Constant Field Values

### DEFAULT_MAX_UP_BW

    public static final int DEFAULT_MAX_UP_BW

See Also:
  Constant Field Values

### MAX_CONNECTIONS

    public static final int MAX_CONNECTIONS

See Also:
  Constant Field Values

Constructor Detail

### I2PSnarkUtil

    public I2PSnarkUtil(I2PAppContext ctx)

Method Detail

### configured

    public boolean configured()

  public void setProxy(String host, int port) { if ( (host != null) && (port > 0) ) { _shouldProxy = true; _proxyHost = host; _proxyPort = port; } else { _shouldProxy = false; _proxyHost = null; _proxyPort = -1; } _configured = true; }

### setI2CPConfig

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

### setMaxUploaders

    public void setMaxUploaders(int limit)

### setMaxUpBW

    public void setMaxUpBW(int limit)

  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()

### 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()

### 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

### get

    public File get(String url,
                    boolean rewrite)

### get

    public File get(String url,
                    int retries)

### get

    public File get(String url,
                    boolean rewrite,
                    int retries)

### getServerSocket

    public I2PServerSocket getServerSocket()

### getOurIPString

    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

### setOpenTrackerString

    public void setOpenTrackerString(String ot)

  Parameters:
    `ot` - non-null

### getOpenTrackerString

    public String getOpenTrackerString()

### getOpenTrackers

    public List<String> getOpenTrackers()

  sorted map of name to announceURL=baseURL

### setUseOpenTrackers

    public void setUseOpenTrackers(boolean yes)

### shouldUseOpenTrackers

    public boolean shouldUseOpenTrackers()

### toHex

    public static String toHex(byte[] b)

  Like DataHelper.toHexString but ensures no loss of leading zero bytes

  Since:
    0.8.4

### debug

    void debug(String msg,
               int snarkDebugLevel)

  hook between snark's logger and an i2p log

### debug

    void debug(String msg,
               int snarkDebugLevel,
               Throwable t)

### 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