start building NTCP2 addresses
This commit is contained in:
@ -224,6 +224,10 @@ func (router_info RouterInfo) Network() string {
|
||||
return "i2p"
|
||||
}
|
||||
|
||||
func (router_info *RouterInfo) AddAddress(address *RouterAddress) {
|
||||
router_info.addresses = append(router_info.addresses, address)
|
||||
}
|
||||
|
||||
// ReadRouterInfo returns RouterInfo from a []byte.
|
||||
// The remaining bytes after the specified length are also returned.
|
||||
// Returns a list of errors that occurred during parsing.
|
||||
|
@ -6,6 +6,7 @@ import (
|
||||
"time"
|
||||
|
||||
"github.com/go-i2p/go-i2p/lib/common/base32"
|
||||
"github.com/go-i2p/go-i2p/lib/transport/ntcp"
|
||||
|
||||
"github.com/go-i2p/logger"
|
||||
"github.com/sirupsen/logrus"
|
||||
@ -68,6 +69,7 @@ func CreateRouter(cfg *config.RouterConfig) (*Router, error) {
|
||||
b32PubHash := base32.EncodeToString(pubHash[:])
|
||||
log.Debug("Router public key hash:", b32PubHash)
|
||||
}
|
||||
|
||||
ri, err := r.RouterInfoKeystore.ConstructRouterInfo(nil)
|
||||
if err != nil {
|
||||
log.WithError(err).Error("Failed to construct RouterInfo")
|
||||
@ -77,7 +79,26 @@ func CreateRouter(cfg *config.RouterConfig) (*Router, error) {
|
||||
log.Debug("RouterInfo:", ri)
|
||||
}
|
||||
|
||||
r.TransportMuxer = transport.Mux()
|
||||
// we have our keystore and our routerInfo,, so now let's set up transports
|
||||
// add NTCP2 transport
|
||||
ntcp2, err := ntcp.NewNTCP2Transport(ri)
|
||||
if err != nil {
|
||||
log.WithError(err).Error("Failed to create NTCP2 transport")
|
||||
return nil, err
|
||||
} else {
|
||||
log.Debug("NTCP2 transport created successfully")
|
||||
}
|
||||
r.TransportMuxer = transport.Mux(ntcp2)
|
||||
ntcpaddr, err := ntcp2.Address()
|
||||
if err != nil {
|
||||
log.WithError(err).Error("Failed to get NTCP2 address")
|
||||
return nil, err
|
||||
} else {
|
||||
log.Debug("NTCP2 address:", ntcpaddr)
|
||||
}
|
||||
ri.AddAddress(ntcpaddr)
|
||||
|
||||
// create a transport address
|
||||
|
||||
return r, err
|
||||
}
|
||||
|
@ -149,3 +149,11 @@ func NewNoiseTransportSession(ri router_info.RouterInfo) (transport.TransportSes
|
||||
log.Error("Failed to create NoiseTransportSession, all addresses failed")
|
||||
return nil, fmt.Errorf("Transport constructor error")
|
||||
}
|
||||
|
||||
func NewNoiseSession(ri router_info.RouterInfo) (*NoiseSession, error) {
|
||||
ns, err := NewNoiseTransportSession(ri)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return ns.(*NoiseSession), err
|
||||
}
|
||||
|
@ -25,9 +25,10 @@ const NOISE_PROTOCOL_NAME = "NOISE"
|
||||
type NoiseTransport struct {
|
||||
sync.Mutex
|
||||
router_info.RouterInfo
|
||||
transportStyle string
|
||||
Listener net.Listener
|
||||
peerConnections map[data.Hash]transport.TransportSession
|
||||
transportStyle string
|
||||
Listener net.Listener
|
||||
//peerConnections map[data.Hash]transport.TransportSession
|
||||
peerConnections map[data.Hash]*NoiseSession
|
||||
}
|
||||
|
||||
func (noopt *NoiseTransport) Compatible(routerInfo router_info.RouterInfo) bool {
|
||||
@ -107,7 +108,7 @@ func (noopt *NoiseTransport) GetSession(routerInfo router_info.RouterInfo) (tran
|
||||
}
|
||||
log.Debug("NoiseTransport: Creating new session")
|
||||
var err error
|
||||
if noopt.peerConnections[hash], err = NewNoiseTransportSession(routerInfo); err != nil {
|
||||
if noopt.peerConnections[hash], err = NewNoiseSession(routerInfo); err != nil {
|
||||
log.WithError(err).Error("NoiseTransport: Failed to create new session")
|
||||
return noopt.peerConnections[hash], err
|
||||
}
|
||||
@ -160,7 +161,7 @@ func (noopt *NoiseTransport) Close() error {
|
||||
func NewNoiseTransport(netSocket net.Listener) *NoiseTransport {
|
||||
log.WithField("listener_addr", netSocket.Addr().String()).Debug("Creating new NoiseTransport")
|
||||
return &NoiseTransport{
|
||||
peerConnections: make(map[data.Hash]transport.TransportSession),
|
||||
peerConnections: make(map[data.Hash]*NoiseSession),
|
||||
Listener: netSocket,
|
||||
transportStyle: NOISE_PROTOCOL_NAME,
|
||||
}
|
||||
|
@ -11,6 +11,7 @@ import (
|
||||
"github.com/go-i2p/go-i2p/lib/common/router_info"
|
||||
"github.com/go-i2p/go-i2p/lib/transport"
|
||||
"github.com/go-i2p/go-i2p/lib/transport/noise"
|
||||
"github.com/go-i2p/go-i2p/lib/util/time/sntp"
|
||||
)
|
||||
|
||||
const (
|
||||
@ -24,6 +25,8 @@ var exampleNTCPTransport transport.Transport = &NTCP2Transport{}
|
||||
// NTCP2Transport is an ntcp2 transport implementing transport.NTCP2Transport interface
|
||||
type NTCP2Transport struct {
|
||||
*noise.NoiseTransport
|
||||
*sntp.RouterTimestamper
|
||||
transportStyle string
|
||||
}
|
||||
|
||||
func (t *NTCP2Transport) Name() string {
|
||||
|
Reference in New Issue
Block a user