summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrandon Wiley <brandon@blanu.net>2016-12-08 17:10:10 -0600
committerBrandon Wiley <brandon@blanu.net>2016-12-08 17:10:10 -0600
commit85eb16b6ac1352bd9ef032f8385ba8f0ec6328da (patch)
treea6ff781b7d9005bc80cef30e5af30991b6bfe36e
parent5efc7f00920df8aeab9f511ad89f97afd4a36f2d (diff)
Implemented server-side transparent TCP proxy mode
-rw-r--r--modes/transparent_tcp/transparent_tcp.go26
1 files changed, 6 insertions, 20 deletions
diff --git a/modes/transparent_tcp/transparent_tcp.go b/modes/transparent_tcp/transparent_tcp.go
index 119e797..ae7b97c 100644
--- a/modes/transparent_tcp/transparent_tcp.go
+++ b/modes/transparent_tcp/transparent_tcp.go
@@ -32,7 +32,6 @@ package transparent_tcp
import (
"fmt"
"io"
- golog "log"
"net"
"net/url"
"strconv"
@@ -44,7 +43,6 @@ import (
"git.torproject.org/pluggable-transports/goptlib.git"
"github.com/OperatorFoundation/shapeshifter-dispatcher/common/log"
"github.com/OperatorFoundation/shapeshifter-dispatcher/common/termmon"
- "github.com/OperatorFoundation/shapeshifter-dispatcher/transports"
"github.com/OperatorFoundation/shapeshifter-transports/transports/base"
)
@@ -148,31 +146,19 @@ func clientHandler(target string, termMon *termmon.TermMonitor, f base.ClientFac
return
}
-func ServerSetup(termMon *termmon.TermMonitor, bindaddrString string) (launched bool, listeners []net.Listener) {
- ptServerInfo, err := pt.ServerSetup(transports.Transports())
- if err != nil {
- golog.Fatal(err)
- }
-
- fmt.Println("ServerSetup")
+func ServerSetup(termMon *termmon.TermMonitor, bindaddrString string, factories map[string]base.ServerFactory, ptServerInfo pt.ServerInfo) (launched bool, listeners []net.Listener) {
+ fmt.Println("ServerSetup", bindaddrString, factories, ptServerInfo)
- bindaddrs, _ := getServerBindaddrs(bindaddrString)
-
- for _, bindaddr := range bindaddrs {
+ // Launch each of the server listeners.
+ for _, bindaddr := range ptServerInfo.Bindaddrs {
name := bindaddr.MethodName
fmt.Println("bindaddr", bindaddr)
- t := transports.Get(name)
- if t == nil {
+ f := factories[name]
+ if f == nil {
fmt.Println(name, "no such transport is supported")
continue
}
- f, err := t.ServerFactory(stateDir, &bindaddr.Options)
- if err != nil {
- fmt.Println(name, err.Error())
- continue
- }
-
ln, err := net.ListenTCP("tcp", bindaddr.Addr)
if err != nil {
fmt.Println(name, err.Error())