net.i2p.sam

## Class SAMBridge

- java.lang.Object
- - net.i2p.sam.SAMBridge

All Implemented Interfaces:
  Runnable

    public class SAMBridge
    extends Object
    implements Runnable

SAM bridge implementation.

Author:
  human

### Nested Class Summary

Nested Classes
`(package private) static class` `SAMBridge.HelpRequested`

### Field Summary

Fields
`protected static String` `DEFAULT_DATAGRAM_HOST`
`protected static String` `DEFAULT_DATAGRAM_PORT`
`static String` `DEFAULT_SAM_KEYFILE`
`protected static String` `DEFAULT_TCP_HOST`
`protected static String` `DEFAULT_TCP_PORT`
`static String` `PROP_DATAGRAM_HOST`
`static String` `PROP_DATAGRAM_PORT`
`static String` `PROP_TCP_HOST`
`static String` `PROP_TCP_PORT`

### Constructor Summary

Constructors
Constructor and Description
`SAMBridge(String listenHost, int listenPort, Properties i2cpProps, String persistFile)` Build a new SAM bridge.

### Method Summary

Methods
`void` `addKeystream(String name, String stream)` Specify that the given keystream should be used for the given name
`Destination` `getDestination(String name)` Retrieve the destination associated with the given name
`String` `getKeystream(String name)` Retrieve the I2P private keystream for the given name, formatted as a base64 string (Destination+PrivateKey+SessionPrivateKey, as I2CP stores it).
`static void` `main(String[] args)` Usage:
`void` `run()`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Field Detail

#### DEFAULT_SAM_KEYFILE

    public static final String DEFAULT_SAM_KEYFILE

See Also:
  Constant Field Values

#### PROP_TCP_HOST

    public static final String PROP_TCP_HOST

See Also:
  Constant Field Values

#### PROP_TCP_PORT

    public static final String PROP_TCP_PORT

See Also:
  Constant Field Values

#### DEFAULT_TCP_HOST

    protected static final String DEFAULT_TCP_HOST

See Also:
  Constant Field Values

#### DEFAULT_TCP_PORT

    protected static final String DEFAULT_TCP_PORT

See Also:
  Constant Field Values

#### PROP_DATAGRAM_HOST

    public static final String PROP_DATAGRAM_HOST

See Also:
  Constant Field Values

#### PROP_DATAGRAM_PORT

    public static final String PROP_DATAGRAM_PORT

See Also:
  Constant Field Values

#### DEFAULT_DATAGRAM_HOST

    protected static final String DEFAULT_DATAGRAM_HOST

See Also:
  Constant Field Values

#### DEFAULT_DATAGRAM_PORT

    protected static final String DEFAULT_DATAGRAM_PORT

See Also:
  Constant Field Values

### Constructor Detail

#### SAMBridge

    public SAMBridge(String listenHost,
             int listenPort,
             Properties i2cpProps,
             String persistFile)

Build a new SAM bridge.

Parameters:
  `listenHost` - hostname to listen for SAM connections on ("0.0.0.0" for all)
  `listenPort` - port number to listen for SAM connections on
  `i2cpProps` - set of I2CP properties for finding and communicating with the router
  `persistFile` - location to store/load named keys to/from

### Method Detail

#### getDestination

    public Destination getDestination(String name)

Retrieve the destination associated with the given name

Parameters:
  `name` - name of the destination
Returns:
  null if the name does not exist, or if it is improperly formatted

#### getKeystream

    public String getKeystream(String name)

Retrieve the I2P private keystream for the given name, formatted as a base64 string (Destination+PrivateKey+SessionPrivateKey, as I2CP stores it).

Parameters:
  `name` - Name of the destination
Returns:
  null if the name does not exist, else the stream

#### addKeystream

    public void addKeystream(String name,
                    String stream)

Specify that the given keystream should be used for the given name

Parameters:
  `name` - Name of the destination
  `stream` - Name of the stream

#### main

    public static void main(String[] args)

Usage:

    SAMBridge [ keyfile [listenHost ] listenPort [ name=val ]* ]

or:

    SAMBridge [ name=val ]*

name=val options are passed to the I2CP code to build a session, allowing the bridge to specify an alternate I2CP host and port, tunnel depth, etc.

Parameters:
  `args` - [ keyfile [ listenHost ] listenPort [ name=val ]* ]

#### run

    public void run()

Specified by:
  `run` in interface `Runnable`