From 6eb4abf90d2be86fa86668b321a217a5f6022366 Mon Sep 17 00:00:00 2001 From: Bluesaxorcist Date: Fri, 30 Aug 2019 13:38:01 -0500 Subject: Added meeklite to the dispatcher modes --- modes/pt_socks5/pt_socks5.go | 15 +++++++++++++++ modes/stun_udp/stun_udp.go | 14 ++++++++++++++ modes/transparent_tcp/transparent_tcp.go | 31 +++++++++++++++++++++++++++---- modes/transparent_udp/transparent_udp.go | 14 ++++++++++++++ 4 files changed, 70 insertions(+), 4 deletions(-) diff --git a/modes/pt_socks5/pt_socks5.go b/modes/pt_socks5/pt_socks5.go index 7b958de..240f3c0 100644 --- a/modes/pt_socks5/pt_socks5.go +++ b/modes/pt_socks5/pt_socks5.go @@ -31,6 +31,7 @@ package pt_socks5 import ( "github.com/OperatorFoundation/shapeshifter-dispatcher/common/pt_extras" + "github.com/OperatorFoundation/shapeshifter-transports/transports/meeklite" "github.com/OperatorFoundation/shapeshifter-transports/transports/shadow" "io" "net" @@ -190,6 +191,19 @@ func ServerSetup(termMon *termmon.TermMonitor, bindaddrString string, ptServerIn log.Errorf("obfs4 transport missing cert argument: %s", args) return } + case "meeklite": + Url, ok := args.Get("Url") + if !ok { + return false, nil + } + + Front, ok2 := args.Get("Front") + if !ok2 { + return false, nil + } + transport := meeklite.NewMeekTransportWithFront(Url, Front) + listen = transport.Listen + case "shadow": password, ok := args.Get("password") if !ok { @@ -209,6 +223,7 @@ func ServerSetup(termMon *termmon.TermMonitor, bindaddrString string, ptServerIn } + f := listen transportLn := f(bindaddr.Addr.String()) diff --git a/modes/stun_udp/stun_udp.go b/modes/stun_udp/stun_udp.go index f9d458f..511d7c9 100644 --- a/modes/stun_udp/stun_udp.go +++ b/modes/stun_udp/stun_udp.go @@ -32,6 +32,7 @@ package stun_udp import ( "fmt" "github.com/OperatorFoundation/shapeshifter-dispatcher/common/pt_extras" + "github.com/OperatorFoundation/shapeshifter-transports/transports/meeklite" "github.com/OperatorFoundation/shapeshifter-transports/transports/shadow" "io" golog "log" @@ -228,6 +229,19 @@ func ServerSetup(termMon *termmon.TermMonitor, bindaddrString string, ptServerIn log.Errorf("obfs4 transport missing cert argument: %s", args) return } + case "meeklite": + if Url, ok := args["Url"]; ok { + if Front, ok2 := args["Front"]; ok2 { + transport := meeklite.NewMeekTransportWithFront(Url[0], Front[0]) + listen = transport.Listen + } else { + log.Errorf("meeklite transport missing Url argument: %s", args) + return + } + } else { + log.Errorf("meeklite transport missing Front argument: %s", args) + return + } case "shadow": if password, ok := args["password"]; ok { if cipher, ok2 := args["cipherName"]; ok2 { diff --git a/modes/transparent_tcp/transparent_tcp.go b/modes/transparent_tcp/transparent_tcp.go index a948d2d..def348f 100644 --- a/modes/transparent_tcp/transparent_tcp.go +++ b/modes/transparent_tcp/transparent_tcp.go @@ -32,6 +32,8 @@ package transparent_tcp import ( "fmt" "github.com/OperatorFoundation/shapeshifter-dispatcher/common/pt_extras" + "github.com/OperatorFoundation/shapeshifter-transports/transports/meeklite" + "github.com/OperatorFoundation/shapeshifter-transports/transports/obfs2" "io" "net" "net/url" @@ -97,7 +99,11 @@ func clientHandler(target string, termMon *termmon.TermMonitor, name string, opt // Deal with arguments. - transport, _ := pt_extras.ArgsToDialer(target, name, args) + transport, dialerErr := pt_extras.ArgsToDialer(target, name, args) + if dialerErr != nil { + log.Errorf("Error parsing transport-specific options: %s (%s)", args, dialerErr) + return + } dialer = transport.Dial f := dialer @@ -153,12 +159,29 @@ func ServerSetup(termMon *termmon.TermMonitor, bindaddrString string, ptServerIn // Deal with arguments. switch name { - //case "obfs2": - // transport := obfs2.NewObfs2Transport() - // listen = transport.Listen + case "obfs2": + transport := obfs2.NewObfs2Transport() + listen = transport.Listen case "obfs4": transport := obfs4.NewObfs4Server(statedir) listen = transport.Listen + case "meeklite": + shargs, aok := args["meeklite"] + if !aok { + return false, nil + } + + Url, ok := shargs.Get("Url") + if !ok { + return false, nil + } + + Front, ok2 := shargs.Get("Front") + if !ok2 { + return false, nil + } + transport := meeklite.NewMeekTransportWithFront(Url, Front) + listen = transport.Listen case "shadow": shargs, aok := args["shadow"] if !aok { diff --git a/modes/transparent_udp/transparent_udp.go b/modes/transparent_udp/transparent_udp.go index f32397f..eeb8f35 100644 --- a/modes/transparent_udp/transparent_udp.go +++ b/modes/transparent_udp/transparent_udp.go @@ -34,6 +34,7 @@ import ( "encoding/binary" "fmt" "github.com/OperatorFoundation/shapeshifter-dispatcher/common/pt_extras" + "github.com/OperatorFoundation/shapeshifter-transports/transports/meeklite" "github.com/OperatorFoundation/shapeshifter-transports/transports/shadow" "io" golog "log" @@ -240,6 +241,19 @@ func ServerSetup(termMon *termmon.TermMonitor, bindaddrString string, ptServerIn log.Errorf("obfs4 transport missing cert argument: %s", args) return } + case "meeklite": + Url, ok := args.Get("Url") + if !ok { + return false, nil + } + + Front, ok2 := args.Get("Front") + if !ok2 { + return false, nil + } + + transport := meeklite.NewMeekTransportWithFront(Url, Front) + listen = transport.Listen case "shadow": password, ok := args.Get("password") if !ok { -- cgit v1.2.3