53 lignes
1 004 o
Go
53 lignes
1 004 o
Go
|
package i2p
|
||
|
|
||
|
import (
|
||
|
"net"
|
||
|
)
|
||
|
|
||
|
// i2p network session
|
||
|
type Session interface {
|
||
|
|
||
|
// get session name
|
||
|
Name() string
|
||
|
// open a new control socket
|
||
|
// does handshaske
|
||
|
OpenControlSocket() (net.Conn, error)
|
||
|
|
||
|
// get printable b32.i2p address
|
||
|
B32Addr() string
|
||
|
|
||
|
// implements network.Network
|
||
|
Addr() net.Addr
|
||
|
|
||
|
// implements network.Network
|
||
|
Accept() (net.Conn, error)
|
||
|
|
||
|
// implements network.Session
|
||
|
Lookup(name string, port int) (net.Addr, error)
|
||
|
|
||
|
// lookup an i2p address
|
||
|
LookupI2P(name string) (I2PAddr, error)
|
||
|
|
||
|
// implements network.Network
|
||
|
Dial(n, a string) (net.Conn, error)
|
||
|
|
||
|
// dial out to a remote destination
|
||
|
DialI2P(a I2PAddr) (net.Conn, error)
|
||
|
|
||
|
// open the session, generate keys, start up destination etc
|
||
|
Open() error
|
||
|
// close the session
|
||
|
Close() error
|
||
|
}
|
||
|
|
||
|
// create a new i2p session
|
||
|
func NewSession(name, addr, keyfile string) Session {
|
||
|
return &samSession{
|
||
|
name: name,
|
||
|
addr: addr,
|
||
|
minversion: "3.0",
|
||
|
maxversion: "3.0",
|
||
|
keys: NewKeyfile(keyfile),
|
||
|
}
|
||
|
}
|