switch to using interfaces
This commit is contained in:
@ -70,7 +70,11 @@ type SAMClientForwarder struct {
|
||||
accessList []string
|
||||
}
|
||||
|
||||
func (f SAMClientForwarder) print() []string {
|
||||
func (f *SAMClientForwarder) ID() string {
|
||||
return f.TunName
|
||||
}
|
||||
|
||||
func (f *SAMClientForwarder) print() []string {
|
||||
lsk, lspk, lspsk := f.leasesetsettings()
|
||||
return []string{
|
||||
//f.targetForPort443(),
|
||||
@ -99,13 +103,13 @@ func (f SAMClientForwarder) print() []string {
|
||||
}
|
||||
}
|
||||
|
||||
func (f SAMClientForwarder) Cleanup() {
|
||||
func (f *SAMClientForwarder) Cleanup() {
|
||||
f.connectStream.Close()
|
||||
f.publishConnection.Close()
|
||||
f.samConn.Close()
|
||||
}
|
||||
|
||||
func (f SAMClientForwarder) Print() string {
|
||||
func (f *SAMClientForwarder) Print() string {
|
||||
var r string
|
||||
r += "name=" + f.TunName + "\n"
|
||||
r += "type=" + f.Type + "\n"
|
||||
@ -120,7 +124,7 @@ func (f SAMClientForwarder) Print() string {
|
||||
return r
|
||||
}
|
||||
|
||||
func (f SAMClientForwarder) Search(search string) string {
|
||||
func (f *SAMClientForwarder) Search(search string) string {
|
||||
terms := strings.Split(search, ",")
|
||||
if search == "" {
|
||||
return f.Print()
|
||||
@ -133,7 +137,7 @@ func (f SAMClientForwarder) Search(search string) string {
|
||||
return f.Print()
|
||||
}
|
||||
|
||||
func (f SAMClientForwarder) accesslisttype() string {
|
||||
func (f *SAMClientForwarder) accesslisttype() string {
|
||||
if f.accessListType == "whitelist" {
|
||||
return "i2cp.enableAccessList=true"
|
||||
} else if f.accessListType == "blacklist" {
|
||||
@ -144,7 +148,7 @@ func (f SAMClientForwarder) accesslisttype() string {
|
||||
return ""
|
||||
}
|
||||
|
||||
func (f SAMClientForwarder) accesslist() string {
|
||||
func (f *SAMClientForwarder) accesslist() string {
|
||||
if f.accessListType != "" && len(f.accessList) > 0 {
|
||||
r := ""
|
||||
for _, s := range f.accessList {
|
||||
@ -155,7 +159,7 @@ func (f SAMClientForwarder) accesslist() string {
|
||||
return ""
|
||||
}
|
||||
|
||||
func (f SAMClientForwarder) leasesetsettings() (string, string, string) {
|
||||
func (f *SAMClientForwarder) leasesetsettings() (string, string, string) {
|
||||
var r, s, t string
|
||||
if f.leaseSetKey != "" {
|
||||
r = "i2cp.leaseSetKey=" + f.leaseSetKey
|
||||
@ -170,30 +174,30 @@ func (f SAMClientForwarder) leasesetsettings() (string, string, string) {
|
||||
}
|
||||
|
||||
// Target returns the host:port of the local service you want to forward to i2p
|
||||
func (f SAMClientForwarder) Target() string {
|
||||
func (f *SAMClientForwarder) Target() string {
|
||||
return f.TargetHost + ":" + f.TargetPort
|
||||
}
|
||||
|
||||
// Destination returns the destination of the i2p service you want to forward locally
|
||||
func (f SAMClientForwarder) Destination() string {
|
||||
func (f *SAMClientForwarder) Destination() string {
|
||||
return f.addr.Base32()
|
||||
}
|
||||
|
||||
func (f SAMClientForwarder) sam() string {
|
||||
func (f *SAMClientForwarder) sam() string {
|
||||
return f.SamHost + ":" + f.SamPort
|
||||
}
|
||||
|
||||
//Base32 returns the base32 address of the local destination
|
||||
func (f SAMClientForwarder) Base32() string {
|
||||
func (f *SAMClientForwarder) Base32() string {
|
||||
return f.SamKeys.Addr().Base32()
|
||||
}
|
||||
|
||||
//Base64 returns the base64 address of the local destiantion
|
||||
func (f SAMClientForwarder) Base64() string {
|
||||
func (f *SAMClientForwarder) Base64() string {
|
||||
return f.SamKeys.Addr().Base64()
|
||||
}
|
||||
|
||||
func (f SAMClientForwarder) forward(conn net.Conn) {
|
||||
func (f *SAMClientForwarder) forward(conn net.Conn) {
|
||||
client, err := f.connectStream.DialI2P(f.addr)
|
||||
if err != nil {
|
||||
log.Fatalf("Dial failed: %v", err)
|
||||
@ -212,7 +216,7 @@ func (f SAMClientForwarder) forward(conn net.Conn) {
|
||||
}
|
||||
|
||||
//Serve starts the SAM connection and and forwards the local host:port to i2p
|
||||
func (f SAMClientForwarder) Serve() error {
|
||||
func (f *SAMClientForwarder) Serve() error {
|
||||
if f.addr, err = f.samConn.Lookup(f.dest); err != nil {
|
||||
return err
|
||||
}
|
||||
@ -233,7 +237,7 @@ func (f SAMClientForwarder) Serve() error {
|
||||
}
|
||||
|
||||
//Close shuts the whole thing down.
|
||||
func (f SAMClientForwarder) Close() error {
|
||||
func (f *SAMClientForwarder) Close() error {
|
||||
var err error
|
||||
err = f.samConn.Close()
|
||||
err = f.connectStream.Close()
|
||||
|
42
forwarder.go
42
forwarder.go
@ -81,21 +81,25 @@ type SAMForwarder struct {
|
||||
|
||||
var err error
|
||||
|
||||
func (f SAMForwarder) Cleanup() {
|
||||
func (f *SAMForwarder) ID() string {
|
||||
return f.TunName
|
||||
}
|
||||
|
||||
func (f *SAMForwarder) Cleanup() {
|
||||
f.publishStream.Close()
|
||||
f.publishListen.Close()
|
||||
f.publishConnection.Close()
|
||||
f.samConn.Close()
|
||||
}
|
||||
|
||||
/*func (f SAMForwarder) targetForPort443() string {
|
||||
/*func (f *SAMForwarder) targetForPort443() string {
|
||||
if f.TargetForPort443 != "" {
|
||||
return "targetForPort.4443=" + f.TargetHost + ":" + f.TargetForPort443
|
||||
}
|
||||
return ""
|
||||
}*/
|
||||
|
||||
func (f SAMForwarder) print() []string {
|
||||
func (f *SAMForwarder) print() []string {
|
||||
lsk, lspk, lspsk := f.leasesetsettings()
|
||||
return []string{
|
||||
//f.targetForPort443(),
|
||||
@ -124,7 +128,7 @@ func (f SAMForwarder) print() []string {
|
||||
}
|
||||
}
|
||||
|
||||
func (f SAMForwarder) Print() string {
|
||||
func (f *SAMForwarder) Print() string {
|
||||
var r string
|
||||
r += "name=" + f.TunName + "\n"
|
||||
r += "type=" + f.Type + "\n"
|
||||
@ -141,7 +145,7 @@ func (f SAMForwarder) Print() string {
|
||||
return strings.Replace(r, "\n\n", "\n", -1)
|
||||
}
|
||||
|
||||
func (f SAMForwarder) Search(search string) string {
|
||||
func (f *SAMForwarder) Search(search string) string {
|
||||
terms := strings.Split(search, ",")
|
||||
if search == "" {
|
||||
return f.Print()
|
||||
@ -154,7 +158,7 @@ func (f SAMForwarder) Search(search string) string {
|
||||
return f.Print()
|
||||
}
|
||||
|
||||
func (f SAMForwarder) accesslisttype() string {
|
||||
func (f *SAMForwarder) accesslisttype() string {
|
||||
if f.accessListType == "whitelist" {
|
||||
return "i2cp.enableAccessList=true"
|
||||
} else if f.accessListType == "blacklist" {
|
||||
@ -165,7 +169,7 @@ func (f SAMForwarder) accesslisttype() string {
|
||||
return ""
|
||||
}
|
||||
|
||||
func (f SAMForwarder) accesslist() string {
|
||||
func (f *SAMForwarder) accesslist() string {
|
||||
if f.accessListType != "" && len(f.accessList) > 0 {
|
||||
r := ""
|
||||
for _, s := range f.accessList {
|
||||
@ -176,7 +180,7 @@ func (f SAMForwarder) accesslist() string {
|
||||
return ""
|
||||
}
|
||||
|
||||
func (f SAMForwarder) leasesetsettings() (string, string, string) {
|
||||
func (f *SAMForwarder) leasesetsettings() (string, string, string) {
|
||||
var r, s, t string
|
||||
if f.leaseSetKey != "" {
|
||||
r = "i2cp.leaseSetKey=" + f.leaseSetKey
|
||||
@ -191,15 +195,15 @@ func (f SAMForwarder) leasesetsettings() (string, string, string) {
|
||||
}
|
||||
|
||||
// Target returns the host:port of the local service you want to forward to i2p
|
||||
func (f SAMForwarder) Target() string {
|
||||
func (f *SAMForwarder) Target() string {
|
||||
return f.TargetHost + ":" + f.TargetPort
|
||||
}
|
||||
|
||||
func (f SAMForwarder) sam() string {
|
||||
func (f *SAMForwarder) sam() string {
|
||||
return f.SamHost + ":" + f.SamPort
|
||||
}
|
||||
|
||||
func (f SAMForwarder) HTTPRequestBytes(conn *sam3.SAMConn) ([]byte, *http.Request, error) {
|
||||
func (f *SAMForwarder) HTTPRequestBytes(conn *sam3.SAMConn) ([]byte, *http.Request, error) {
|
||||
var request *http.Request
|
||||
var retrequest []byte
|
||||
var err error
|
||||
@ -217,7 +221,7 @@ func (f SAMForwarder) HTTPRequestBytes(conn *sam3.SAMConn) ([]byte, *http.Reques
|
||||
return retrequest, request, nil
|
||||
}
|
||||
|
||||
func (f SAMForwarder) HTTPResponseBytes(conn net.Conn, req *http.Request) ([]byte, error) {
|
||||
func (f *SAMForwarder) HTTPResponseBytes(conn net.Conn, req *http.Request) ([]byte, error) {
|
||||
var response *http.Response
|
||||
var retresponse []byte
|
||||
var err error
|
||||
@ -233,7 +237,7 @@ func (f SAMForwarder) HTTPResponseBytes(conn net.Conn, req *http.Request) ([]byt
|
||||
return retresponse, nil
|
||||
}
|
||||
|
||||
func (f SAMForwarder) clientUnlockAndClose(cli, conn bool, client net.Conn) {
|
||||
func (f *SAMForwarder) clientUnlockAndClose(cli, conn bool, client net.Conn) {
|
||||
if cli {
|
||||
f.clientLock = cli
|
||||
}
|
||||
@ -247,7 +251,7 @@ func (f SAMForwarder) clientUnlockAndClose(cli, conn bool, client net.Conn) {
|
||||
}
|
||||
}
|
||||
|
||||
func (f SAMForwarder) connUnlockAndClose(cli, conn bool, connection *sam3.SAMConn) {
|
||||
func (f *SAMForwarder) connUnlockAndClose(cli, conn bool, connection *sam3.SAMConn) {
|
||||
if cli {
|
||||
f.connClientLock = cli
|
||||
}
|
||||
@ -261,7 +265,7 @@ func (f SAMForwarder) connUnlockAndClose(cli, conn bool, connection *sam3.SAMCon
|
||||
}
|
||||
}
|
||||
|
||||
func (f SAMForwarder) forward(conn *sam3.SAMConn) { //(conn net.Conn) {
|
||||
func (f *SAMForwarder) forward(conn *sam3.SAMConn) { //(conn net.Conn) {
|
||||
var request *http.Request
|
||||
var requestbytes []byte
|
||||
var responsebytes []byte
|
||||
@ -305,17 +309,17 @@ func (f SAMForwarder) forward(conn *sam3.SAMConn) { //(conn net.Conn) {
|
||||
}
|
||||
|
||||
//Base32 returns the base32 address where the local service is being forwarded
|
||||
func (f SAMForwarder) Base32() string {
|
||||
func (f *SAMForwarder) Base32() string {
|
||||
return f.SamKeys.Addr().Base32()
|
||||
}
|
||||
|
||||
//Base64 returns the base64 address where the local service is being forwarded
|
||||
func (f SAMForwarder) Base64() string {
|
||||
func (f *SAMForwarder) Base64() string {
|
||||
return f.SamKeys.Addr().Base64()
|
||||
}
|
||||
|
||||
//Serve starts the SAM connection and and forwards the local host:port to i2p
|
||||
func (f SAMForwarder) Serve() error {
|
||||
func (f *SAMForwarder) Serve() error {
|
||||
//lsk, lspk, lspsk := f.leasesetsettings()
|
||||
if f.publishStream, err = f.samConn.NewStreamSession(f.TunName, f.SamKeys, f.print()); err != nil {
|
||||
log.Println("Stream Creation error:", err.Error())
|
||||
@ -340,7 +344,7 @@ func (f SAMForwarder) Serve() error {
|
||||
}
|
||||
|
||||
//Close shuts the whole thing down.
|
||||
func (f SAMForwarder) Close() error {
|
||||
func (f *SAMForwarder) Close() error {
|
||||
var err error
|
||||
err = f.samConn.Close()
|
||||
err = f.publishStream.Close()
|
||||
|
@ -1,11 +1,13 @@
|
||||
package samtunnel
|
||||
|
||||
type SAMTunnel interface {
|
||||
//GetType() string
|
||||
Cleanup()
|
||||
Print() string
|
||||
Search(search string) string
|
||||
Target() string
|
||||
Destination() string
|
||||
ID() string
|
||||
//Destination() string
|
||||
Base32() string
|
||||
Base64() string
|
||||
Serve() error
|
||||
|
@ -10,7 +10,7 @@ import (
|
||||
"github.com/eyedeekay/sam-forwarder/config"
|
||||
"github.com/eyedeekay/sam-forwarder/interface"
|
||||
"github.com/eyedeekay/sam-forwarder/tcp"
|
||||
"github.com/eyedeekay/sam-forwarder/udp"
|
||||
//"github.com/eyedeekay/sam-forwarder/udp"
|
||||
)
|
||||
|
||||
type SAMManager struct {
|
||||
@ -28,13 +28,7 @@ type SAMManager struct {
|
||||
WebHost string
|
||||
WebPort string
|
||||
|
||||
tunnels []*samtunnel.SAMTunnel
|
||||
///*
|
||||
forwarders []*samforwarder.SAMForwarder
|
||||
clientforwarders []*samforwarder.SAMClientForwarder
|
||||
udpforwarders []*samforwarderudp.SAMSSUForwarder
|
||||
udpclientforwarders []*samforwarderudp.SAMSSUClientForwarder
|
||||
//*/
|
||||
tunnels []samtunnel.SAMTunnel
|
||||
}
|
||||
|
||||
func stringify(s []string) string {
|
||||
@ -51,79 +45,61 @@ func stringify(s []string) string {
|
||||
func (s *SAMManager) List(search ...string) *[]string {
|
||||
var r []string
|
||||
if search == nil {
|
||||
for index, element := range s.forwarders {
|
||||
r = append(r, fmt.Sprintf(" %v. %s", index, element.Print()))
|
||||
}
|
||||
for index, element := range s.clientforwarders {
|
||||
r = append(r, fmt.Sprintf(" %v. %s", index, element.Print()))
|
||||
}
|
||||
for index, element := range s.udpforwarders {
|
||||
r = append(r, fmt.Sprintf(" %v. %s", index, element.Print()))
|
||||
}
|
||||
for index, element := range s.udpclientforwarders {
|
||||
for index, element := range s.tunnels {
|
||||
r = append(r, fmt.Sprintf(" %v. %s", index, element.Print()))
|
||||
}
|
||||
return &r
|
||||
} else if len(search) > 0 {
|
||||
switch search[0] {
|
||||
case "":
|
||||
for index, element := range s.forwarders {
|
||||
r = append(r, fmt.Sprintf(" %v. %s", index, element.Print()))
|
||||
}
|
||||
for index, element := range s.clientforwarders {
|
||||
r = append(r, fmt.Sprintf(" %v. %s", index, element.Print()))
|
||||
}
|
||||
for index, element := range s.udpforwarders {
|
||||
r = append(r, fmt.Sprintf(" %v. %s", index, element.Print()))
|
||||
}
|
||||
for index, element := range s.udpclientforwarders {
|
||||
for index, element := range s.tunnels {
|
||||
r = append(r, fmt.Sprintf(" %v. %s", index, element.Print()))
|
||||
}
|
||||
return &r
|
||||
case "ntcpserver":
|
||||
for index, element := range s.forwarders {
|
||||
for index, element := range s.tunnels {
|
||||
r = append(r, fmt.Sprintf(" %v. %s", index, element.Search(stringify(search))))
|
||||
}
|
||||
return &r
|
||||
case "httpserver":
|
||||
for index, element := range s.forwarders {
|
||||
if element.Type == "http" {
|
||||
for index, element := range s.tunnels {
|
||||
if element.(*samforwarder.SAMForwarder).Type == "http" {
|
||||
r = append(r, fmt.Sprintf(" %v. %s", index, element.Search(stringify(search))))
|
||||
}
|
||||
}
|
||||
return &r
|
||||
case "ntcpclient":
|
||||
for index, element := range s.clientforwarders {
|
||||
for index, element := range s.tunnels {
|
||||
r = append(r, fmt.Sprintf(" %v. %s", index, element.Search(stringify(search))))
|
||||
}
|
||||
return &r
|
||||
case "ssuserver":
|
||||
for index, element := range s.udpforwarders {
|
||||
for index, element := range s.tunnels {
|
||||
r = append(r, fmt.Sprintf(" %v. %s", index, element.Search(stringify(search))))
|
||||
}
|
||||
return &r
|
||||
case "ssuclient":
|
||||
for index, element := range s.udpclientforwarders {
|
||||
for index, element := range s.tunnels {
|
||||
r = append(r, fmt.Sprintf(" %v. %s", index, element.Search(stringify(search))))
|
||||
}
|
||||
return &r
|
||||
default:
|
||||
for index, element := range s.forwarders {
|
||||
for index, element := range s.tunnels {
|
||||
if element.Search(stringify(search)) != "" {
|
||||
r = append(r, fmt.Sprintf(" %v. %s", index, element.Search(stringify(search))))
|
||||
}
|
||||
}
|
||||
for index, element := range s.clientforwarders {
|
||||
for index, element := range s.tunnels {
|
||||
if element.Search(stringify(search)) != "" {
|
||||
r = append(r, fmt.Sprintf(" %v. %s", index, element.Search(stringify(search))))
|
||||
}
|
||||
}
|
||||
for index, element := range s.udpforwarders {
|
||||
for index, element := range s.tunnels {
|
||||
if element.Search(stringify(search)) != "" {
|
||||
r = append(r, fmt.Sprintf(" %v. %s", index, element.Search(stringify(search))))
|
||||
}
|
||||
}
|
||||
for index, element := range s.udpclientforwarders {
|
||||
for index, element := range s.tunnels {
|
||||
if element.Search(stringify(search)) != "" {
|
||||
r = append(r, fmt.Sprintf(" %v. %s", index, element.Search(stringify(search))))
|
||||
}
|
||||
@ -135,36 +111,15 @@ func (s *SAMManager) List(search ...string) *[]string {
|
||||
}
|
||||
|
||||
func (s *SAMManager) Cleanup() {
|
||||
for _, k := range s.forwarders {
|
||||
k.Cleanup()
|
||||
}
|
||||
for _, k := range s.clientforwarders {
|
||||
k.Cleanup()
|
||||
}
|
||||
for _, k := range s.udpforwarders {
|
||||
k.Cleanup()
|
||||
}
|
||||
for _, k := range s.udpclientforwarders {
|
||||
for _, k := range s.tunnels {
|
||||
k.Cleanup()
|
||||
}
|
||||
}
|
||||
|
||||
func (s *SAMManager) Serve() bool {
|
||||
log.Println("Starting tunnels")
|
||||
for _, element := range s.forwarders {
|
||||
log.Println("Starting NTCP service tunnel", element.TunName)
|
||||
go element.Serve()
|
||||
}
|
||||
for _, element := range s.clientforwarders {
|
||||
log.Println("Starting NTCP client tunnel", element.TunName)
|
||||
go element.Serve()
|
||||
}
|
||||
for _, element := range s.udpforwarders {
|
||||
log.Println("Starting SSU service tunnel", element.TunName)
|
||||
go element.Serve()
|
||||
}
|
||||
for _, element := range s.udpclientforwarders {
|
||||
log.Println("Starting SSU client tunnel", element.TunName)
|
||||
for _, element := range s.tunnels {
|
||||
log.Println("Starting service tunnel", element.ID())
|
||||
go element.Serve()
|
||||
}
|
||||
for true {
|
||||
@ -211,42 +166,42 @@ func NewSAMManagerFromOptions(opts ...func(*SAMManager) error) (*SAMManager, err
|
||||
case "http":
|
||||
if f, e := i2ptunconf.NewSAMForwarderFromConfig(s.FilePath, s.SamHost, s.SamPort, label); e == nil {
|
||||
log.Println("found http under", label)
|
||||
s.forwarders = append(s.forwarders, f)
|
||||
s.tunnels = append(s.tunnels, f)
|
||||
} else {
|
||||
return nil, fmt.Errorf(e.Error())
|
||||
}
|
||||
case "server":
|
||||
if f, e := i2ptunconf.NewSAMForwarderFromConfig(s.FilePath, s.SamHost, s.SamPort, label); e == nil {
|
||||
log.Println("found server under", label)
|
||||
s.forwarders = append(s.forwarders, f)
|
||||
s.tunnels = append(s.tunnels, f)
|
||||
} else {
|
||||
return nil, fmt.Errorf(e.Error())
|
||||
}
|
||||
case "client":
|
||||
if f, e := i2ptunconf.NewSAMClientForwarderFromConfig(s.FilePath, s.SamHost, s.SamPort, label); e == nil {
|
||||
log.Println("found client under", label)
|
||||
s.clientforwarders = append(s.clientforwarders, f)
|
||||
s.tunnels = append(s.tunnels, f)
|
||||
} else {
|
||||
return nil, fmt.Errorf(e.Error())
|
||||
}
|
||||
case "udpserver":
|
||||
if f, e := i2ptunconf.NewSAMSSUForwarderFromConfig(s.FilePath, s.SamHost, s.SamPort, label); e == nil {
|
||||
log.Println("found udpserver under", label)
|
||||
s.udpforwarders = append(s.udpforwarders, f)
|
||||
s.tunnels = append(s.tunnels, f)
|
||||
} else {
|
||||
return nil, fmt.Errorf(e.Error())
|
||||
}
|
||||
case "udpclient":
|
||||
if f, e := i2ptunconf.NewSAMSSUClientForwarderFromConfig(s.FilePath, s.SamHost, s.SamPort, label); e == nil {
|
||||
log.Println("found udpclient under", label)
|
||||
s.udpclientforwarders = append(s.udpclientforwarders, f)
|
||||
s.tunnels = append(s.tunnels, f)
|
||||
} else {
|
||||
return nil, fmt.Errorf(e.Error())
|
||||
}
|
||||
default:
|
||||
if f, e := i2ptunconf.NewSAMForwarderFromConfig(s.FilePath, s.SamHost, s.SamPort, label); e == nil {
|
||||
log.Println("found server under", label)
|
||||
s.forwarders = append(s.forwarders, f)
|
||||
s.tunnels = append(s.tunnels, f)
|
||||
} else {
|
||||
return nil, fmt.Errorf(e.Error())
|
||||
}
|
||||
@ -263,42 +218,42 @@ func NewSAMManagerFromOptions(opts ...func(*SAMManager) error) (*SAMManager, err
|
||||
case "http":
|
||||
if f, e := i2ptunconf.NewSAMForwarderFromConfig(s.FilePath, s.SamHost, s.SamPort); e == nil {
|
||||
log.Println("found default http")
|
||||
s.forwarders = append(s.forwarders, f)
|
||||
s.tunnels = append(s.tunnels, f)
|
||||
} else {
|
||||
return nil, fmt.Errorf(e.Error())
|
||||
}
|
||||
case "server":
|
||||
if f, e := i2ptunconf.NewSAMForwarderFromConfig(s.FilePath, s.SamHost, s.SamPort); e == nil {
|
||||
log.Println("found default server")
|
||||
s.forwarders = append(s.forwarders, f)
|
||||
s.tunnels = append(s.tunnels, f)
|
||||
} else {
|
||||
return nil, fmt.Errorf(e.Error())
|
||||
}
|
||||
case "client":
|
||||
if f, e := i2ptunconf.NewSAMClientForwarderFromConfig(s.FilePath, s.SamHost, s.SamPort); e == nil {
|
||||
log.Println("found default client")
|
||||
s.clientforwarders = append(s.clientforwarders, f)
|
||||
s.tunnels = append(s.tunnels, f)
|
||||
} else {
|
||||
return nil, fmt.Errorf(e.Error())
|
||||
}
|
||||
case "udpserver":
|
||||
if f, e := i2ptunconf.NewSAMSSUForwarderFromConfig(s.FilePath, s.SamHost, s.SamPort); e == nil {
|
||||
log.Println("found default udpserver")
|
||||
s.udpforwarders = append(s.udpforwarders, f)
|
||||
s.tunnels = append(s.tunnels, f)
|
||||
} else {
|
||||
return nil, fmt.Errorf(e.Error())
|
||||
}
|
||||
case "udpclient":
|
||||
if f, e := i2ptunconf.NewSAMSSUClientForwarderFromConfig(s.FilePath, s.SamHost, s.SamPort); e == nil {
|
||||
log.Println("found default udpclient")
|
||||
s.udpclientforwarders = append(s.udpclientforwarders, f)
|
||||
s.tunnels = append(s.tunnels, f)
|
||||
} else {
|
||||
return nil, fmt.Errorf(e.Error())
|
||||
}
|
||||
default:
|
||||
if f, e := i2ptunconf.NewSAMClientForwarderFromConfig(s.FilePath, s.SamHost, s.SamPort); e == nil {
|
||||
log.Println("found default client")
|
||||
s.clientforwarders = append(s.clientforwarders, f)
|
||||
s.tunnels = append(s.tunnels, f)
|
||||
} else {
|
||||
return nil, fmt.Errorf(e.Error())
|
||||
}
|
||||
|
@ -9,8 +9,11 @@ import (
|
||||
"time"
|
||||
)
|
||||
|
||||
import ".."
|
||||
import "../udp"
|
||||
import (
|
||||
"github.com/eyedeekay/sam-forwarder/interface"
|
||||
"github.com/eyedeekay/sam-forwarder/tcp"
|
||||
"github.com/eyedeekay/sam-forwarder/udp"
|
||||
)
|
||||
|
||||
var (
|
||||
port = "8100"
|
||||
@ -24,10 +27,10 @@ var (
|
||||
udpserverconn *net.UDPConn
|
||||
directory = "./www"
|
||||
err error
|
||||
forwarder *samforwarder.SAMForwarder
|
||||
forwarderclient *samforwarder.SAMClientForwarder
|
||||
ssuforwarder *samforwarderudp.SAMSSUForwarder
|
||||
ssuforwarderclient *samforwarderudp.SAMSSUClientForwarder
|
||||
forwarder samtunnel.SAMTunnel
|
||||
forwarderclient samtunnel.SAMTunnel
|
||||
ssuforwarder samtunnel.SAMTunnel
|
||||
ssuforwarderclient samtunnel.SAMTunnel
|
||||
)
|
||||
|
||||
func serve() {
|
||||
|
@ -69,7 +69,11 @@ type SAMClientForwarder struct {
|
||||
accessList []string
|
||||
}
|
||||
|
||||
func (f SAMClientForwarder) print() []string {
|
||||
func (f *SAMClientForwarder) ID() string {
|
||||
return f.TunName
|
||||
}
|
||||
|
||||
func (f *SAMClientForwarder) print() []string {
|
||||
lsk, lspk, lspsk := f.leasesetsettings()
|
||||
return []string{
|
||||
//f.targetForPort443(),
|
||||
@ -98,13 +102,13 @@ func (f SAMClientForwarder) print() []string {
|
||||
}
|
||||
}
|
||||
|
||||
func (f SAMClientForwarder) Cleanup() {
|
||||
func (f *SAMClientForwarder) Cleanup() {
|
||||
f.connectStream.Close()
|
||||
f.publishConnection.Close()
|
||||
f.samConn.Close()
|
||||
}
|
||||
|
||||
func (f SAMClientForwarder) Print() string {
|
||||
func (f *SAMClientForwarder) Print() string {
|
||||
var r string
|
||||
r += "name=" + f.TunName + "\n"
|
||||
r += "type=" + f.Type + "\n"
|
||||
@ -119,7 +123,7 @@ func (f SAMClientForwarder) Print() string {
|
||||
return r
|
||||
}
|
||||
|
||||
func (f SAMClientForwarder) Search(search string) string {
|
||||
func (f *SAMClientForwarder) Search(search string) string {
|
||||
terms := strings.Split(search, ",")
|
||||
if search == "" {
|
||||
return f.Print()
|
||||
@ -132,7 +136,7 @@ func (f SAMClientForwarder) Search(search string) string {
|
||||
return f.Print()
|
||||
}
|
||||
|
||||
func (f SAMClientForwarder) accesslisttype() string {
|
||||
func (f *SAMClientForwarder) accesslisttype() string {
|
||||
if f.accessListType == "whitelist" {
|
||||
return "i2cp.enableAccessList=true"
|
||||
} else if f.accessListType == "blacklist" {
|
||||
@ -143,7 +147,7 @@ func (f SAMClientForwarder) accesslisttype() string {
|
||||
return ""
|
||||
}
|
||||
|
||||
func (f SAMClientForwarder) accesslist() string {
|
||||
func (f *SAMClientForwarder) accesslist() string {
|
||||
if f.accessListType != "" && len(f.accessList) > 0 {
|
||||
r := ""
|
||||
for _, s := range f.accessList {
|
||||
@ -154,7 +158,7 @@ func (f SAMClientForwarder) accesslist() string {
|
||||
return ""
|
||||
}
|
||||
|
||||
func (f SAMClientForwarder) leasesetsettings() (string, string, string) {
|
||||
func (f *SAMClientForwarder) leasesetsettings() (string, string, string) {
|
||||
var r, s, t string
|
||||
if f.leaseSetKey != "" {
|
||||
r = "i2cp.leaseSetKey=" + f.leaseSetKey
|
||||
@ -169,30 +173,30 @@ func (f SAMClientForwarder) leasesetsettings() (string, string, string) {
|
||||
}
|
||||
|
||||
// Target returns the host:port of the local service you want to forward to i2p
|
||||
func (f SAMClientForwarder) Target() string {
|
||||
func (f *SAMClientForwarder) Target() string {
|
||||
return f.TargetHost + ":" + f.TargetPort
|
||||
}
|
||||
|
||||
// Destination returns the destination of the i2p service you want to forward locally
|
||||
func (f SAMClientForwarder) Destination() string {
|
||||
func (f *SAMClientForwarder) Destination() string {
|
||||
return f.addr.Base32()
|
||||
}
|
||||
|
||||
func (f SAMClientForwarder) sam() string {
|
||||
func (f *SAMClientForwarder) sam() string {
|
||||
return f.SamHost + ":" + f.SamPort
|
||||
}
|
||||
|
||||
//Base32 returns the base32 address of the local destination
|
||||
func (f SAMClientForwarder) Base32() string {
|
||||
func (f *SAMClientForwarder) Base32() string {
|
||||
return f.SamKeys.Addr().Base32()
|
||||
}
|
||||
|
||||
//Base64 returns the base64 address of the local destiantion
|
||||
func (f SAMClientForwarder) Base64() string {
|
||||
func (f *SAMClientForwarder) Base64() string {
|
||||
return f.SamKeys.Addr().Base64()
|
||||
}
|
||||
|
||||
func (f SAMClientForwarder) forward(conn net.Conn) {
|
||||
func (f *SAMClientForwarder) forward(conn net.Conn) {
|
||||
client, err := f.connectStream.DialI2P(f.addr)
|
||||
if err != nil {
|
||||
log.Fatalf("Dial failed: %v", err)
|
||||
@ -211,7 +215,7 @@ func (f SAMClientForwarder) forward(conn net.Conn) {
|
||||
}
|
||||
|
||||
//Serve starts the SAM connection and and forwards the local host:port to i2p
|
||||
func (f SAMClientForwarder) Serve() error {
|
||||
func (f *SAMClientForwarder) Serve() error {
|
||||
if f.addr, err = f.samConn.Lookup(f.dest); err != nil {
|
||||
return err
|
||||
}
|
||||
@ -232,7 +236,7 @@ func (f SAMClientForwarder) Serve() error {
|
||||
}
|
||||
|
||||
//Close shuts the whole thing down.
|
||||
func (f SAMClientForwarder) Close() error {
|
||||
func (f *SAMClientForwarder) Close() error {
|
||||
var err error
|
||||
err = f.samConn.Close()
|
||||
err = f.connectStream.Close()
|
||||
|
@ -80,21 +80,25 @@ type SAMForwarder struct {
|
||||
|
||||
var err error
|
||||
|
||||
func (f SAMForwarder) Cleanup() {
|
||||
func (f *SAMForwarder) ID() string {
|
||||
return f.TunName
|
||||
}
|
||||
|
||||
func (f *SAMForwarder) Cleanup() {
|
||||
f.publishStream.Close()
|
||||
f.publishListen.Close()
|
||||
f.publishConnection.Close()
|
||||
f.samConn.Close()
|
||||
}
|
||||
|
||||
/*func (f SAMForwarder) targetForPort443() string {
|
||||
/*func (f *SAMForwarder) targetForPort443() string {
|
||||
if f.TargetForPort443 != "" {
|
||||
return "targetForPort.4443=" + f.TargetHost + ":" + f.TargetForPort443
|
||||
}
|
||||
return ""
|
||||
}*/
|
||||
|
||||
func (f SAMForwarder) print() []string {
|
||||
func (f *SAMForwarder) print() []string {
|
||||
lsk, lspk, lspsk := f.leasesetsettings()
|
||||
return []string{
|
||||
//f.targetForPort443(),
|
||||
@ -123,7 +127,7 @@ func (f SAMForwarder) print() []string {
|
||||
}
|
||||
}
|
||||
|
||||
func (f SAMForwarder) Print() string {
|
||||
func (f *SAMForwarder) Print() string {
|
||||
var r string
|
||||
r += "name=" + f.TunName + "\n"
|
||||
r += "type=" + f.Type + "\n"
|
||||
@ -140,7 +144,7 @@ func (f SAMForwarder) Print() string {
|
||||
return strings.Replace(r, "\n\n", "\n", -1)
|
||||
}
|
||||
|
||||
func (f SAMForwarder) Search(search string) string {
|
||||
func (f *SAMForwarder) Search(search string) string {
|
||||
terms := strings.Split(search, ",")
|
||||
if search == "" {
|
||||
return f.Print()
|
||||
@ -153,7 +157,7 @@ func (f SAMForwarder) Search(search string) string {
|
||||
return f.Print()
|
||||
}
|
||||
|
||||
func (f SAMForwarder) accesslisttype() string {
|
||||
func (f *SAMForwarder) accesslisttype() string {
|
||||
if f.accessListType == "whitelist" {
|
||||
return "i2cp.enableAccessList=true"
|
||||
} else if f.accessListType == "blacklist" {
|
||||
@ -164,7 +168,7 @@ func (f SAMForwarder) accesslisttype() string {
|
||||
return ""
|
||||
}
|
||||
|
||||
func (f SAMForwarder) accesslist() string {
|
||||
func (f *SAMForwarder) accesslist() string {
|
||||
if f.accessListType != "" && len(f.accessList) > 0 {
|
||||
r := ""
|
||||
for _, s := range f.accessList {
|
||||
@ -175,7 +179,7 @@ func (f SAMForwarder) accesslist() string {
|
||||
return ""
|
||||
}
|
||||
|
||||
func (f SAMForwarder) leasesetsettings() (string, string, string) {
|
||||
func (f *SAMForwarder) leasesetsettings() (string, string, string) {
|
||||
var r, s, t string
|
||||
if f.leaseSetKey != "" {
|
||||
r = "i2cp.leaseSetKey=" + f.leaseSetKey
|
||||
@ -190,15 +194,15 @@ func (f SAMForwarder) leasesetsettings() (string, string, string) {
|
||||
}
|
||||
|
||||
// Target returns the host:port of the local service you want to forward to i2p
|
||||
func (f SAMForwarder) Target() string {
|
||||
func (f *SAMForwarder) Target() string {
|
||||
return f.TargetHost + ":" + f.TargetPort
|
||||
}
|
||||
|
||||
func (f SAMForwarder) sam() string {
|
||||
func (f *SAMForwarder) sam() string {
|
||||
return f.SamHost + ":" + f.SamPort
|
||||
}
|
||||
|
||||
func (f SAMForwarder) HTTPRequestBytes(conn *sam3.SAMConn) ([]byte, *http.Request, error) {
|
||||
func (f *SAMForwarder) HTTPRequestBytes(conn *sam3.SAMConn) ([]byte, *http.Request, error) {
|
||||
var request *http.Request
|
||||
var retrequest []byte
|
||||
var err error
|
||||
@ -216,7 +220,7 @@ func (f SAMForwarder) HTTPRequestBytes(conn *sam3.SAMConn) ([]byte, *http.Reques
|
||||
return retrequest, request, nil
|
||||
}
|
||||
|
||||
func (f SAMForwarder) HTTPResponseBytes(conn net.Conn, req *http.Request) ([]byte, error) {
|
||||
func (f *SAMForwarder) HTTPResponseBytes(conn net.Conn, req *http.Request) ([]byte, error) {
|
||||
var response *http.Response
|
||||
var retresponse []byte
|
||||
var err error
|
||||
@ -232,7 +236,7 @@ func (f SAMForwarder) HTTPResponseBytes(conn net.Conn, req *http.Request) ([]byt
|
||||
return retresponse, nil
|
||||
}
|
||||
|
||||
func (f SAMForwarder) clientUnlockAndClose(cli, conn bool, client net.Conn) {
|
||||
func (f *SAMForwarder) clientUnlockAndClose(cli, conn bool, client net.Conn) {
|
||||
if cli {
|
||||
f.clientLock = cli
|
||||
}
|
||||
@ -246,7 +250,7 @@ func (f SAMForwarder) clientUnlockAndClose(cli, conn bool, client net.Conn) {
|
||||
}
|
||||
}
|
||||
|
||||
func (f SAMForwarder) connUnlockAndClose(cli, conn bool, connection *sam3.SAMConn) {
|
||||
func (f *SAMForwarder) connUnlockAndClose(cli, conn bool, connection *sam3.SAMConn) {
|
||||
if cli {
|
||||
f.connClientLock = cli
|
||||
}
|
||||
@ -260,7 +264,7 @@ func (f SAMForwarder) connUnlockAndClose(cli, conn bool, connection *sam3.SAMCon
|
||||
}
|
||||
}
|
||||
|
||||
func (f SAMForwarder) forward(conn *sam3.SAMConn) { //(conn net.Conn) {
|
||||
func (f *SAMForwarder) forward(conn *sam3.SAMConn) { //(conn net.Conn) {
|
||||
var request *http.Request
|
||||
var requestbytes []byte
|
||||
var responsebytes []byte
|
||||
@ -304,17 +308,17 @@ func (f SAMForwarder) forward(conn *sam3.SAMConn) { //(conn net.Conn) {
|
||||
}
|
||||
|
||||
//Base32 returns the base32 address where the local service is being forwarded
|
||||
func (f SAMForwarder) Base32() string {
|
||||
func (f *SAMForwarder) Base32() string {
|
||||
return f.SamKeys.Addr().Base32()
|
||||
}
|
||||
|
||||
//Base64 returns the base64 address where the local service is being forwarded
|
||||
func (f SAMForwarder) Base64() string {
|
||||
func (f *SAMForwarder) Base64() string {
|
||||
return f.SamKeys.Addr().Base64()
|
||||
}
|
||||
|
||||
//Serve starts the SAM connection and and forwards the local host:port to i2p
|
||||
func (f SAMForwarder) Serve() error {
|
||||
func (f *SAMForwarder) Serve() error {
|
||||
//lsk, lspk, lspsk := f.leasesetsettings()
|
||||
if f.publishStream, err = f.samConn.NewStreamSession(f.TunName, f.SamKeys, f.print()); err != nil {
|
||||
log.Println("Stream Creation error:", err.Error())
|
||||
@ -339,7 +343,7 @@ func (f SAMForwarder) Serve() error {
|
||||
}
|
||||
|
||||
//Close shuts the whole thing down.
|
||||
func (f SAMForwarder) Close() error {
|
||||
func (f *SAMForwarder) Close() error {
|
||||
var err error
|
||||
err = f.samConn.Close()
|
||||
err = f.publishStream.Close()
|
||||
|
@ -70,13 +70,21 @@ type SAMSSUClientForwarder struct {
|
||||
accessList []string
|
||||
}
|
||||
|
||||
func (f SAMSSUClientForwarder) Cleanup() {
|
||||
func (f *SAMSSUClientForwarder) ID() string {
|
||||
return f.TunName
|
||||
}
|
||||
|
||||
func (f *SAMSSUClientForwarder) Cleanup() {
|
||||
f.publishConnection.Close()
|
||||
f.connectStream.Close()
|
||||
f.samConn.Close()
|
||||
}
|
||||
|
||||
func (f SAMSSUClientForwarder) print() []string {
|
||||
func (f *SAMSSUClientForwarder) Close() error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (f *SAMSSUClientForwarder) print() []string {
|
||||
lsk, lspk, lspsk := f.leasesetsettings()
|
||||
return []string{
|
||||
//f.targetForPort443(),
|
||||
@ -105,7 +113,7 @@ func (f SAMSSUClientForwarder) print() []string {
|
||||
}
|
||||
}
|
||||
|
||||
func (f SAMSSUClientForwarder) Print() string {
|
||||
func (f *SAMSSUClientForwarder) Print() string {
|
||||
var r string
|
||||
r += "name=" + f.TunName + "\n"
|
||||
r += "type=" + f.Type + "\n"
|
||||
@ -119,7 +127,7 @@ func (f SAMSSUClientForwarder) Print() string {
|
||||
return strings.Replace(r, "\n\n", "\n", -1)
|
||||
}
|
||||
|
||||
func (f SAMSSUClientForwarder) Search(search string) string {
|
||||
func (f *SAMSSUClientForwarder) Search(search string) string {
|
||||
terms := strings.Split(search, ",")
|
||||
if search == "" {
|
||||
return f.Print()
|
||||
@ -132,7 +140,7 @@ func (f SAMSSUClientForwarder) Search(search string) string {
|
||||
return f.Print()
|
||||
}
|
||||
|
||||
func (f SAMSSUClientForwarder) accesslisttype() string {
|
||||
func (f *SAMSSUClientForwarder) accesslisttype() string {
|
||||
if f.accessListType == "whitelist" {
|
||||
return "i2cp.enableAccessList=true"
|
||||
} else if f.accessListType == "blacklist" {
|
||||
@ -143,7 +151,7 @@ func (f SAMSSUClientForwarder) accesslisttype() string {
|
||||
return ""
|
||||
}
|
||||
|
||||
func (f SAMSSUClientForwarder) accesslist() string {
|
||||
func (f *SAMSSUClientForwarder) accesslist() string {
|
||||
if f.accessListType != "" && len(f.accessList) > 0 {
|
||||
r := ""
|
||||
for _, s := range f.accessList {
|
||||
@ -154,7 +162,7 @@ func (f SAMSSUClientForwarder) accesslist() string {
|
||||
return ""
|
||||
}
|
||||
|
||||
func (f SAMSSUClientForwarder) leasesetsettings() (string, string, string) {
|
||||
func (f *SAMSSUClientForwarder) leasesetsettings() (string, string, string) {
|
||||
var r, s, t string
|
||||
if f.leaseSetKey != "" {
|
||||
r = "i2cp.leaseSetKey=" + f.leaseSetKey
|
||||
@ -169,30 +177,30 @@ func (f SAMSSUClientForwarder) leasesetsettings() (string, string, string) {
|
||||
}
|
||||
|
||||
// Destination returns the destination of the i2p service you want to forward locally
|
||||
func (f SAMSSUClientForwarder) Destination() string {
|
||||
func (f *SAMSSUClientForwarder) Destination() string {
|
||||
return f.addr.Base32()
|
||||
}
|
||||
|
||||
// Target returns the host:port of the local service you want to forward to i2p
|
||||
func (f SAMSSUClientForwarder) Target() string {
|
||||
func (f *SAMSSUClientForwarder) Target() string {
|
||||
return f.TargetHost + ":" + f.TargetPort
|
||||
}
|
||||
|
||||
func (f SAMSSUClientForwarder) sam() string {
|
||||
func (f *SAMSSUClientForwarder) sam() string {
|
||||
return f.SamHost + ":" + f.SamPort
|
||||
}
|
||||
|
||||
//Base32 returns the base32 address of the local destination
|
||||
func (f SAMSSUClientForwarder) Base32() string {
|
||||
func (f *SAMSSUClientForwarder) Base32() string {
|
||||
return f.SamKeys.Addr().Base32()
|
||||
}
|
||||
|
||||
//Base64 returns the base64 address of the local destination
|
||||
func (f SAMSSUClientForwarder) Base64() string {
|
||||
func (f *SAMSSUClientForwarder) Base64() string {
|
||||
return f.SamKeys.Addr().Base64()
|
||||
}
|
||||
|
||||
func (f SAMSSUClientForwarder) forward(conn net.PacketConn) {
|
||||
func (f *SAMSSUClientForwarder) forward(conn net.PacketConn) {
|
||||
var err error
|
||||
//p, _ := strconv.Atoi(f.TargetPort)
|
||||
sp, _ := strconv.Atoi(f.SamPort)
|
||||
@ -227,7 +235,7 @@ func (f SAMSSUClientForwarder) forward(conn net.PacketConn) {
|
||||
}
|
||||
|
||||
//Serve starts the SAM connection and and forwards the local host:port to i2p
|
||||
func (f SAMSSUClientForwarder) Serve() error {
|
||||
func (f *SAMSSUClientForwarder) Serve() error {
|
||||
if f.addr, err = f.samConn.Lookup(f.dest); err != nil {
|
||||
return err
|
||||
}
|
||||
|
@ -70,13 +70,21 @@ type SAMSSUForwarder struct {
|
||||
|
||||
var err error
|
||||
|
||||
func (f SAMSSUForwarder) Cleanup() {
|
||||
func (f *SAMSSUForwarder) ID() string {
|
||||
return f.TunName
|
||||
}
|
||||
|
||||
func (f *SAMSSUForwarder) Cleanup() {
|
||||
f.publishConnection.Close()
|
||||
f.clientConnection.Close()
|
||||
f.samConn.Close()
|
||||
}
|
||||
|
||||
func (f SAMSSUForwarder) print() []string {
|
||||
func (f *SAMSSUForwarder) Close() error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (f *SAMSSUForwarder) print() []string {
|
||||
lsk, lspk, lspsk := f.leasesetsettings()
|
||||
return []string{
|
||||
//f.targetForPort443(),
|
||||
@ -105,7 +113,7 @@ func (f SAMSSUForwarder) print() []string {
|
||||
}
|
||||
}
|
||||
|
||||
func (f SAMSSUForwarder) Print() string {
|
||||
func (f *SAMSSUForwarder) Print() string {
|
||||
var r string
|
||||
r += "name=" + f.TunName + "\n"
|
||||
r += "type=" + f.Type + "\n"
|
||||
@ -118,7 +126,7 @@ func (f SAMSSUForwarder) Print() string {
|
||||
return strings.Replace(r, "\n\n", "\n", -1)
|
||||
}
|
||||
|
||||
func (f SAMSSUForwarder) Search(search string) string {
|
||||
func (f *SAMSSUForwarder) Search(search string) string {
|
||||
terms := strings.Split(search, ",")
|
||||
if search == "" {
|
||||
return f.Print()
|
||||
@ -131,7 +139,7 @@ func (f SAMSSUForwarder) Search(search string) string {
|
||||
return f.Print()
|
||||
}
|
||||
|
||||
func (f SAMSSUForwarder) accesslisttype() string {
|
||||
func (f *SAMSSUForwarder) accesslisttype() string {
|
||||
if f.accessListType == "whitelist" {
|
||||
return "i2cp.enableAccessList=true"
|
||||
} else if f.accessListType == "blacklist" {
|
||||
@ -142,7 +150,7 @@ func (f SAMSSUForwarder) accesslisttype() string {
|
||||
return ""
|
||||
}
|
||||
|
||||
func (f SAMSSUForwarder) accesslist() string {
|
||||
func (f *SAMSSUForwarder) accesslist() string {
|
||||
if f.accessListType != "" && len(f.accessList) > 0 {
|
||||
r := ""
|
||||
for _, s := range f.accessList {
|
||||
@ -153,7 +161,7 @@ func (f SAMSSUForwarder) accesslist() string {
|
||||
return ""
|
||||
}
|
||||
|
||||
func (f SAMSSUForwarder) leasesetsettings() (string, string, string) {
|
||||
func (f *SAMSSUForwarder) leasesetsettings() (string, string, string) {
|
||||
var r, s, t string
|
||||
if f.leaseSetKey != "" {
|
||||
r = "i2cp.leaseSetKey=" + f.leaseSetKey
|
||||
@ -168,16 +176,16 @@ func (f SAMSSUForwarder) leasesetsettings() (string, string, string) {
|
||||
}
|
||||
|
||||
// Target returns the host:port of the local service you want to forward to i2p
|
||||
func (f SAMSSUForwarder) Target() string {
|
||||
func (f *SAMSSUForwarder) Target() string {
|
||||
return f.TargetHost + ":" + f.TargetPort
|
||||
}
|
||||
|
||||
func (f SAMSSUForwarder) sam() string {
|
||||
func (f *SAMSSUForwarder) sam() string {
|
||||
return f.SamHost + ":" + f.SamPort
|
||||
}
|
||||
|
||||
//func (f SAMSSUForwarder) forward(conn net.Conn) {
|
||||
func (f SAMSSUForwarder) forward() {
|
||||
//func (f *SAMSSUForwarder) forward(conn net.Conn) {
|
||||
func (f *SAMSSUForwarder) forward() {
|
||||
go func() {
|
||||
defer f.clientConnection.Close()
|
||||
defer f.publishConnection.Close()
|
||||
@ -203,17 +211,17 @@ func (f SAMSSUForwarder) forward() {
|
||||
}
|
||||
|
||||
//Base32 returns the base32 address where the local service is being forwarded
|
||||
func (f SAMSSUForwarder) Base32() string {
|
||||
func (f *SAMSSUForwarder) Base32() string {
|
||||
return f.SamKeys.Addr().Base32()
|
||||
}
|
||||
|
||||
//Base64 returns the base64 address where the local service is being forwarded
|
||||
func (f SAMSSUForwarder) Base64() string {
|
||||
func (f *SAMSSUForwarder) Base64() string {
|
||||
return f.SamKeys.Addr().Base64()
|
||||
}
|
||||
|
||||
//Serve starts the SAM connection and and forwards the local host:port to i2p
|
||||
func (f SAMSSUForwarder) Serve() error {
|
||||
func (f *SAMSSUForwarder) Serve() error {
|
||||
var err error
|
||||
|
||||
sp, _ := strconv.Atoi(f.SamPort)
|
||||
|
Reference in New Issue
Block a user