From d8ce35ae3fea54b0ad67f2ce94fca8a0f99941ea Mon Sep 17 00:00:00 2001 From: Bluesaxorcist Date: Fri, 16 Aug 2019 16:10:27 -0500 Subject: made dispatcher operational for obfs4 --- modes/transparent_tcp/transparent_tcp.go | 84 +------------------------------- 1 file changed, 2 insertions(+), 82 deletions(-) (limited to 'modes/transparent_tcp') diff --git a/modes/transparent_tcp/transparent_tcp.go b/modes/transparent_tcp/transparent_tcp.go index d49bb32..a948d2d 100644 --- a/modes/transparent_tcp/transparent_tcp.go +++ b/modes/transparent_tcp/transparent_tcp.go @@ -30,19 +30,17 @@ package transparent_tcp import ( - "errors" "fmt" + "github.com/OperatorFoundation/shapeshifter-dispatcher/common/pt_extras" "io" "net" "net/url" - "strconv" "strings" "sync" "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/Optimizer" //"github.com/OperatorFoundation/shapeshifter-transports/transports/obfs2" "github.com/OperatorFoundation/shapeshifter-transports/transports/obfs4" "github.com/OperatorFoundation/shapeshifter-transports/transports/shadow" @@ -99,7 +97,7 @@ func clientHandler(target string, termMon *termmon.TermMonitor, name string, opt // Deal with arguments. - transport, _ := argsToDialer(target, name, args) + transport, _ := pt_extras.ArgsToDialer(target, name, args) dialer = transport.Dial f := dialer @@ -138,85 +136,7 @@ func clientHandler(target string, termMon *termmon.TermMonitor, name string, opt return } -func argsToDialer(target string, name string, args pt.Args) (Optimizer.Transport, error) { - switch name { - //case "obfs2": - // transport := obfs2.NewObfs2Transport() - // dialer = transport.Dial - // return dialer, nil - 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.Transport{ - CertString: cert[0], - IatMode: iatMode, - Address: target, - } - return transport, nil - } else { - log.Errorf("obfs4 transport bad iatMode value: %s %s", iatModeStr[0], err) - return nil, errors.New("obfs4 transport bad iatMode value") - } - } else { - log.Errorf("obfs4 transport missing iatMode argument: %s", args) - return nil, errors.New("obfs4 transport missing iatMode argument") - } - } else { - log.Errorf("obfs4 transport missing cert argument: %s", args) - return nil, errors.New("obfs4 transport missing cert argument") - } - case "shadow": - if password, ok := args["password"]; ok { - if cipher, ok2 := args["cipherName"]; ok2 { - transport := shadow.Transport{ - Password: password[0], - CipherName: cipher[0], - Address: target, - } - return transport, nil - } else { - log.Errorf("shadow transport missing cipher argument: %s", args) - return nil, errors.New("shadow transport missing cipher argument") - } - } else { - log.Errorf("shadow transport missing password argument: %s", args) - return nil, errors.New("shadow transport missing password argument") - } - case "Optimizer": - if _, ok := args["transports"]; ok { - if strategyName, ok2 := args["strategy"]; ok2 { - var strategy Optimizer.Strategy = nil - switch strategyName[0] { - case "first": - strategy = Optimizer.NewFirstStrategy() - case "random": - strategy = Optimizer.NewRandomStrategy() - case "rotate": - strategy = Optimizer.NewRotateStrategy() - case "track": - strategy = Optimizer.NewTrackStrategy() - case "min": - strategy = Optimizer.NewMinimizeDialDuration() - } - transports := []Optimizer.Transport{} - transport := Optimizer.NewOptimizerClient(transports, strategy) - return transport, nil - } else { - log.Errorf("Optimizer transport missing transports argument: %s", args) - return nil, errors.New("optimizer transport missing transports argument") - } - } else { - log.Errorf("Optimizer transport missing strategy argument: %s", args) - return nil, errors.New("optimizer transport missing strategy argument") - } - default: - log.Errorf("Unknown transport: %s", name) - return nil, errors.New("unknown transport") - } -} 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. -- cgit v1.2.3