summaryrefslogtreecommitdiff
path: root/modes/transparent_udp/transparent_udp.go
diff options
context:
space:
mode:
Diffstat (limited to 'modes/transparent_udp/transparent_udp.go')
-rw-r--r--modes/transparent_udp/transparent_udp.go52
1 files changed, 16 insertions, 36 deletions
diff --git a/modes/transparent_udp/transparent_udp.go b/modes/transparent_udp/transparent_udp.go
index 4be013a..9cceb82 100644
--- a/modes/transparent_udp/transparent_udp.go
+++ b/modes/transparent_udp/transparent_udp.go
@@ -43,8 +43,6 @@ import (
"github.com/OperatorFoundation/shapeshifter-dispatcher/common/log"
"github.com/OperatorFoundation/shapeshifter-dispatcher/common/termmon"
"github.com/OperatorFoundation/shapeshifter-ipc"
- "github.com/OperatorFoundation/shapeshifter-transports/transports/base"
- "github.com/OperatorFoundation/shapeshifter-transports/transports/meeklite"
"github.com/OperatorFoundation/shapeshifter-transports/transports/obfs2"
"github.com/OperatorFoundation/shapeshifter-transports/transports/obfs4"
)
@@ -175,7 +173,7 @@ func dialConn(tracker *ConnTracker, addr string, target string, name string, opt
fmt.Println("Dialing....")
- var transport base.Transport
+ var dialer func(address string) net.Conn
args, argsErr := pt.ParsePT2ClientParameters(options)
if argsErr != nil {
@@ -186,24 +184,15 @@ func dialConn(tracker *ConnTracker, addr string, target string, name string, opt
// Deal with arguments.
switch name {
case "obfs2":
- transport = obfs2.NewObfs2Transport()
- case "meeklite":
- if url, ok := args["url"]; ok {
- if front, ok2 := args["front"]; ok2 {
- transport = meeklite.NewMeekTransportWithFront(url[0], front[0])
- } else {
- transport = meeklite.NewMeekTransport(url[0])
- }
- } else {
- log.Errorf("meeklite transport missing URL argument: %s", args)
- return
- }
+ transport := obfs2.NewObfs2Transport()
+ dialer = transport.Dial
case "obfs4":
if cert, ok := args["cert"]; ok {
if iatModeStr, ok2 := args["iatMode"]; ok2 {
iatMode, err := strconv.Atoi(iatModeStr[0])
if err != nil {
- transport = obfs4.NewObfs4Client(cert[0], iatMode)
+ transport := obfs4.NewObfs4Client(cert[0], iatMode)
+ dialer = transport.Dial
} else {
log.Errorf("obfs4 transport bad iatMode value: %s", iatModeStr)
return
@@ -221,7 +210,7 @@ func dialConn(tracker *ConnTracker, addr string, target string, name string, opt
return
}
- f := transport.Dial
+ f := dialer
fmt.Println("Dialing ", target)
remote := f(target)
// if err != nil {
@@ -237,7 +226,7 @@ func dialConn(tracker *ConnTracker, addr string, target string, name string, opt
(*tracker)[addr] = ConnState{remote, false}
}
-func ServerSetup(termMon *termmon.TermMonitor, bindaddrString string, ptServerInfo pt.ServerInfo, options string) (launched bool, listeners []base.TransportListener) {
+func ServerSetup(termMon *termmon.TermMonitor, bindaddrString string, ptServerInfo pt.ServerInfo, options string) (launched bool, listeners []net.Listener) {
fmt.Println("ServerSetup")
// Launch each of the server listeners.
@@ -245,7 +234,7 @@ func ServerSetup(termMon *termmon.TermMonitor, bindaddrString string, ptServerIn
name := bindaddr.MethodName
fmt.Println("bindaddr", bindaddr)
- var transport base.Transport
+ var listen func(address string) net.Listener
args, argsErr := pt.ParsePT2ClientParameters(options)
if argsErr != nil {
@@ -256,24 +245,15 @@ func ServerSetup(termMon *termmon.TermMonitor, bindaddrString string, ptServerIn
// Deal with arguments.
switch name {
case "obfs2":
- transport = obfs2.NewObfs2Transport()
- case "meeklite":
- if url, ok := args["url"]; ok {
- if front, ok2 := args["front"]; ok2 {
- transport = meeklite.NewMeekTransportWithFront(url[0], front[0])
- } else {
- transport = meeklite.NewMeekTransport(url[0])
- }
- } else {
- log.Errorf("meeklite transport missing URL argument: %s", args)
- return
- }
+ transport := obfs2.NewObfs2Transport()
+ listen = transport.Listen
case "obfs4":
if cert, ok := args["cert"]; ok {
if iatModeStr, ok2 := args["iatMode"]; ok2 {
iatMode, err := strconv.Atoi(iatModeStr[0])
if err != nil {
- transport = obfs4.NewObfs4Client(cert[0], iatMode)
+ transport := obfs4.NewObfs4Client(cert[0], iatMode)
+ listen = transport.Listen
} else {
log.Errorf("obfs4 transport bad iatMode value: %s", iatModeStr)
return
@@ -291,7 +271,7 @@ func ServerSetup(termMon *termmon.TermMonitor, bindaddrString string, ptServerIn
return
}
- f := transport.Listen
+ f := listen
transportLn := f(bindaddr.Addr.String())
@@ -372,10 +352,10 @@ func parsePort(portStr string) (int, error) {
return int(port), err
}
-func serverAcceptLoop(termMon *termmon.TermMonitor, name string, ln base.TransportListener, info *pt.ServerInfo) error {
+func serverAcceptLoop(termMon *termmon.TermMonitor, name string, ln net.Listener, info *pt.ServerInfo) error {
defer ln.Close()
for {
- conn, err := ln.TransportAccept()
+ conn, err := ln.Accept()
fmt.Println("accepted")
if err != nil {
if e, ok := err.(net.Error); ok && !e.Temporary() {
@@ -387,7 +367,7 @@ func serverAcceptLoop(termMon *termmon.TermMonitor, name string, ln base.Transpo
}
}
-func serverHandler(termMon *termmon.TermMonitor, name string, remote base.TransportConn, info *pt.ServerInfo) {
+func serverHandler(termMon *termmon.TermMonitor, name string, remote net.Conn, info *pt.ServerInfo) {
var length16 uint16
defer remote.Close()