summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBluesaxorcist <joshua@operatorfoundation.org>2019-08-30 13:38:01 -0500
committerBluesaxorcist <joshua@operatorfoundation.org>2019-08-30 13:38:01 -0500
commit6eb4abf90d2be86fa86668b321a217a5f6022366 (patch)
tree17e2ad27105a0cfd8d09bb5aab587ff83d339caf
parentf468b19d78014e2cf5cc1d5f4bc2b4de5561c557 (diff)
Added meeklite to the dispatcher modes
-rw-r--r--modes/pt_socks5/pt_socks5.go15
-rw-r--r--modes/stun_udp/stun_udp.go14
-rw-r--r--modes/transparent_tcp/transparent_tcp.go31
-rw-r--r--modes/transparent_udp/transparent_udp.go14
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 {