From 57dc260155c58318a20a1e7260d66da2768e57f4 Mon Sep 17 00:00:00 2001 From: "Dr. Brandon Wiley" Date: Thu, 11 Oct 2018 03:28:57 -0500 Subject: Migrated from PT Go API 2.0 to PT Go Api 2.1 --- modes/transparent_tcp/transparent_tcp.go | 62 +++++++++++++------------------- 1 file changed, 24 insertions(+), 38 deletions(-) (limited to 'modes/transparent_tcp') diff --git a/modes/transparent_tcp/transparent_tcp.go b/modes/transparent_tcp/transparent_tcp.go index 0e06869..f96f8d5 100644 --- a/modes/transparent_tcp/transparent_tcp.go +++ b/modes/transparent_tcp/transparent_tcp.go @@ -41,8 +41,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" "github.com/OperatorFoundation/shapeshifter-transports/transports/shadow" @@ -89,7 +87,7 @@ func clientHandler(target string, termMon *termmon.TermMonitor, name string, opt termMon.OnHandlerStart() defer termMon.OnHandlerFinish() - var transport base.Transport + var dialer func(address string) net.Conn args, argsErr := pt.ParsePT2ClientParameters(options) if argsErr != nil { @@ -100,24 +98,15 @@ func clientHandler(target string, termMon *termmon.TermMonitor, 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 %s", iatModeStr[0], err) return @@ -133,7 +122,8 @@ func clientHandler(target string, termMon *termmon.TermMonitor, name string, opt case "shadow": if password, ok := args["password"]; ok { if cipher, ok2 := args["cipherName"]; ok2 { - transport = shadow.NewShadowClient(password[0], cipher[0]) + transport := shadow.NewShadowClient(password[0], cipher[0]) + dialer = transport.Dial } else { log.Errorf("shadow transport missing cipher argument: %s", args) return @@ -147,7 +137,7 @@ func clientHandler(target string, termMon *termmon.TermMonitor, name string, opt return } - f := transport.Dial + f := dialer // Obtain the proxy dialer if any, and create the outgoing TCP connection. // dialFn := proxy.Direct.Dial @@ -184,12 +174,12 @@ func clientHandler(target string, termMon *termmon.TermMonitor, name string, opt return } -func ServerSetup(termMon *termmon.TermMonitor, bindaddrString string, ptServerInfo pt.ServerInfo, statedir string, options string) (launched bool, listeners []base.TransportListener) { +func ServerSetup(termMon *termmon.TermMonitor, bindaddrString string, ptServerInfo pt.ServerInfo, statedir string, options string) (launched bool, listeners []net.Listener) { // Launch each of the server listeners. for _, bindaddr := range ptServerInfo.Bindaddrs { name := bindaddr.MethodName - var transport base.Transport + var listen func(address string) net.Listener args, argsErr := pt.ParsePT2ServerParameters(options) if argsErr != nil { @@ -200,12 +190,11 @@ func ServerSetup(termMon *termmon.TermMonitor, bindaddrString string, ptServerIn // Deal with arguments. switch name { case "obfs2": - transport = obfs2.NewObfs2Transport() - case "meeklite": - log.Errorf("meeklite transport not supported on server") - return + transport := obfs2.NewObfs2Transport() + listen = transport.Listen case "obfs4": - transport = obfs4.NewObfs4Server(statedir) + transport := obfs4.NewObfs4Server(statedir) + listen = transport.Listen case "shadow": shargs, aok := args["shadow"] if !aok { @@ -222,13 +211,14 @@ func ServerSetup(termMon *termmon.TermMonitor, bindaddrString string, ptServerIn return false, nil } - transport = shadow.NewShadowServer(password, cipherName) + transport := shadow.NewShadowServer(password, cipherName) + listen = transport.Listen default: log.Errorf("Unknown transport: %s", name) return false, nil } - f := transport.Listen + f := listen transportLn := f(bindaddr.Addr.String()) @@ -268,10 +258,10 @@ func getServerBindaddrs(serverBindaddr string) ([]pt.Bindaddr, error) { return result, nil } -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() if err != nil { if e, ok := err.(net.Error); ok && !e.Temporary() { return err @@ -282,26 +272,22 @@ func serverAcceptLoop(termMon *termmon.TermMonitor, name string, ln base.Transpo } } -func serverHandler(termMon *termmon.TermMonitor, name string, remote base.TransportConn, info *pt.ServerInfo) { - defer remote.NetworkConn().Close() +func serverHandler(termMon *termmon.TermMonitor, name string, remote net.Conn, info *pt.ServerInfo) { termMon.OnHandlerStart() defer termMon.OnHandlerFinish() - addrStr := log.ElideAddr(remote.NetworkConn().RemoteAddr().String()) - log.Infof("%s(%s) - new connection", name, addrStr) - // Connect to the orport. - orConn, err := pt.DialOr(info, remote.NetworkConn().RemoteAddr().String(), name) + orConn, err := pt.DialOr(info, remote.RemoteAddr().String(), name) if err != nil { - log.Errorf("%s(%s) - failed to connect to ORPort: %s", name, addrStr, log.ElideError(err)) + log.Errorf("%s - failed to connect to ORPort: %s", name, log.ElideError(err)) return } defer orConn.Close() if err = copyLoop(orConn, remote); err != nil { - log.Warnf("%s(%s) - closed connection: %s", name, addrStr, log.ElideError(err)) + log.Warnf("%s - closed connection: %s", name, log.ElideError(err)) } else { - log.Infof("%s(%s) - closed connection", name, addrStr) + log.Infof("%s - closed connection", name) } return -- cgit v1.2.3