summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBluesaxorcist <joshua@operatorfoundation.org>2019-09-14 18:56:03 -0500
committerBluesaxorcist <joshua@operatorfoundation.org>2019-09-14 18:56:03 -0500
commit6b048e3e998261a4bc105593e27607cf9d56e223 (patch)
tree713da1e089cfb861da8646ab96239be10c099800
parentbfc867e0f07555b906ab7f3673aa3f6946a83bf9 (diff)
refactoring the modes
-rw-r--r--common/pt_extras/pt_extras.go84
-rw-r--r--modes/pt_socks5/pt_socks5.go38
-rw-r--r--modes/stun_udp/stun_udp.go20
-rw-r--r--modes/transparent_tcp/transparent_tcp.go5
-rw-r--r--modes/transparent_udp/transparent_udp.go3
-rw-r--r--shapeshifter-dispatcher/shapeshifter-dispatcher.go8
-rw-r--r--state/dispatcher.log166
-rw-r--r--transports/transports.go153
8 files changed, 381 insertions, 96 deletions
diff --git a/common/pt_extras/pt_extras.go b/common/pt_extras/pt_extras.go
index 3e865bf..71477bd 100644
--- a/common/pt_extras/pt_extras.go
+++ b/common/pt_extras/pt_extras.go
@@ -31,9 +31,8 @@ import (
"errors"
"fmt"
"github.com/OperatorFoundation/shapeshifter-dispatcher/common/log"
+ "github.com/OperatorFoundation/shapeshifter-dispatcher/transports"
"github.com/OperatorFoundation/shapeshifter-transports/transports/Optimizer"
- "github.com/OperatorFoundation/shapeshifter-transports/transports/obfs4"
- "github.com/OperatorFoundation/shapeshifter-transports/transports/shadow"
"net"
"net/url"
"os"
@@ -76,7 +75,7 @@ func PtIsClient() (bool, error) {
}
func PtGetProxy(proxy *string) (*url.URL, error) {
- var specString string
+ var specString string
if proxy != nil {
specString = *proxy
@@ -175,83 +174,40 @@ func PtShouldExitOnStdinClose() bool {
return os.Getenv("TOR_PT_EXIT_ON_STDIN_CLOSE") == "1"
}
-func ArgsToDialer(target string, name string, args pt.Args) (Optimizer.Transport, error) {
+func ArgsToDialer(target string, name string, args map[string]interface{}) (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")
- }
+ //refactor starts here
+ transport, err := transports.ParseArgsObfs4(args, target)
+ if err != nil {
+ log.Errorf("Could not parse options %s", err.Error())
+ return nil, err
} else {
- log.Errorf("obfs4 transport missing cert argument: %s", args)
- return nil, errors.New("obfs4 transport missing cert argument")
+ return transport, nil
}
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")
- }
+ transport, err := transports.ParseArgsShadow(args, target)
+ if err != nil {
+ log.Errorf("Could not parse options %s", err.Error())
+ return nil, err
} else {
- log.Errorf("shadow transport missing password argument: %s", args)
- return nil, errors.New("shadow transport missing password argument")
+ return transport, nil
}
case "Optimizer":
- //replace underscore with ArgsToDialer
- 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")
- }
+ transport, err := transports.ParseArgsOptimizer(args, target)
+ if err != nil {
+ log.Errorf("Could not parse options %s", err.Error())
+ return nil, err
} else {
- log.Errorf("Optimizer transport missing strategy argument: %s", args)
- return nil, errors.New("optimizer transport missing strategy argument")
+ return transport, nil
}
default:
log.Errorf("Unknown transport: %s", name)
return nil, errors.New("unknown transport")
}
-} \ No newline at end of file
+}
diff --git a/modes/pt_socks5/pt_socks5.go b/modes/pt_socks5/pt_socks5.go
index dfd7359..45cbbf2 100644
--- a/modes/pt_socks5/pt_socks5.go
+++ b/modes/pt_socks5/pt_socks5.go
@@ -30,8 +30,10 @@
package pt_socks5
import (
+ options2 "github.com/OperatorFoundation/shapeshifter-dispatcher/common"
"github.com/OperatorFoundation/shapeshifter-dispatcher/common/pt_extras"
"github.com/OperatorFoundation/shapeshifter-transports/transports/Dust"
+ replicant "github.com/OperatorFoundation/shapeshifter-transports/transports/Replicant"
"github.com/OperatorFoundation/shapeshifter-transports/transports/meeklite"
"github.com/OperatorFoundation/shapeshifter-transports/transports/shadow"
"io"
@@ -101,14 +103,20 @@ func clientHandler(target string, termMon *termmon.TermMonitor, name string, con
}
addrStr := log.ElideAddr(socksReq.Target)
- var args pt.Args
- if needOptions {
- args = socksReq.Args
- } else {
- args, err = pt.ParsePT2ClientParameters(options)
- if err != nil {
- return
- }
+ //var args pt.Args
+ //if needOptions {
+ // args = socksReq.Args
+ //} else {
+ // args, err = pt.ParsePT2ClientParameters(options)
+ // if err != nil {
+ // return
+ // }
+ //}
+
+ args, argsErr := options2.ParseOptions(options)
+ if argsErr != nil {
+ log.Errorf("Error parsing transport options: %s", options)
+ return
}
var dialer func() (net.Conn, error)
@@ -192,13 +200,13 @@ func ServerSetup(termMon *termmon.TermMonitor, bindaddrString string, ptServerIn
log.Errorf("obfs4 transport missing cert argument: %s", args)
return
}
- //case "replicant":
- // config, ok :=args.Get("config")
- // if !ok {
- // return false, nil
- // }
- // transport := replicant.New(config)
- // listen = transport.Listen
+ case "replicant":
+ config, ok :=args.Get("config")
+ if !ok {
+ return false, nil
+ }
+ transport := replicant.New(config)
+ listen = transport.Listen
case "Dust":
idPath, ok :=args.Get("idPath")
if !ok {
diff --git a/modes/stun_udp/stun_udp.go b/modes/stun_udp/stun_udp.go
index f12e69e..564e562 100644
--- a/modes/stun_udp/stun_udp.go
+++ b/modes/stun_udp/stun_udp.go
@@ -31,8 +31,10 @@ package stun_udp
import (
"fmt"
+ options2 "github.com/OperatorFoundation/shapeshifter-dispatcher/common"
"github.com/OperatorFoundation/shapeshifter-dispatcher/common/pt_extras"
"github.com/OperatorFoundation/shapeshifter-transports/transports/Dust"
+ replicant "github.com/OperatorFoundation/shapeshifter-transports/transports/Replicant"
"github.com/OperatorFoundation/shapeshifter-transports/transports/meeklite"
"github.com/OperatorFoundation/shapeshifter-transports/transports/shadow"
"io"
@@ -166,7 +168,7 @@ func dialConn(tracker *ConnTracker, addr string, target string, name string, opt
fmt.Println("Dialing....")
- args, argsErr := pt.ParsePT2ClientParameters(options)
+ args, argsErr := options2.ParseOptions(options)
if argsErr != nil {
log.Errorf("Error parsing transport options: %s", options)
return
@@ -243,14 +245,14 @@ func ServerSetup(termMon *termmon.TermMonitor, bindaddrString string, ptServerIn
log.Errorf("meeklite transport missing Front argument: %s", args)
return
}
- //case "replicant":
- // if config, ok := args["config"]; ok {
- // transport := replicant.New(config[0])
- // listen = transport.Listen
- // } else {
- // log.Errorf("replicant transport missing config argument: %s", args)
- // return
- // }
+ case "replicant":
+ if _, ok := args["config"]; ok {
+ transport := replicant.New(replicant.Config{})
+ listen = transport.Listen
+ } else {
+ log.Errorf("replicant transport missing config argument: %s", args)
+ return
+ }
case "Dust":
if idPath, ok := args["idPath"]; ok {
transport := Dust.NewDustServer(idPath[0])
diff --git a/modes/transparent_tcp/transparent_tcp.go b/modes/transparent_tcp/transparent_tcp.go
index faffa15..a1addf3 100644
--- a/modes/transparent_tcp/transparent_tcp.go
+++ b/modes/transparent_tcp/transparent_tcp.go
@@ -31,6 +31,7 @@ package transparent_tcp
import (
"fmt"
+ options2 "github.com/OperatorFoundation/shapeshifter-dispatcher/common"
"github.com/OperatorFoundation/shapeshifter-dispatcher/common/pt_extras"
"github.com/OperatorFoundation/shapeshifter-transports/transports/Dust"
"github.com/OperatorFoundation/shapeshifter-transports/transports/meeklite"
@@ -91,8 +92,8 @@ func clientHandler(target string, termMon *termmon.TermMonitor, name string, opt
defer termMon.OnHandlerFinish()
var dialer func() (net.Conn, error)
-
- args, argsErr := pt.ParsePT2ClientParameters(options)
+//this is where the refactoring begins
+ args, argsErr := options2.ParseOptions(options)
if argsErr != nil {
log.Errorf("Error parsing transport options: %s", options)
return
diff --git a/modes/transparent_udp/transparent_udp.go b/modes/transparent_udp/transparent_udp.go
index 3352228..05235d7 100644
--- a/modes/transparent_udp/transparent_udp.go
+++ b/modes/transparent_udp/transparent_udp.go
@@ -33,6 +33,7 @@ import (
"bytes"
"encoding/binary"
"fmt"
+ options2 "github.com/OperatorFoundation/shapeshifter-dispatcher/common"
"github.com/OperatorFoundation/shapeshifter-dispatcher/common/pt_extras"
"github.com/OperatorFoundation/shapeshifter-transports/transports/Dust"
"github.com/OperatorFoundation/shapeshifter-transports/transports/meeklite"
@@ -179,7 +180,7 @@ func dialConn(tracker *ConnTracker, addr string, target string, name string, opt
fmt.Println("Dialing....")
- args, argsErr := pt.ParsePT2ClientParameters(options)
+ args, argsErr := options2.ParseOptions(options)
if argsErr != nil {
log.Errorf("Error parsing transport options: %s", options)
return
diff --git a/shapeshifter-dispatcher/shapeshifter-dispatcher.go b/shapeshifter-dispatcher/shapeshifter-dispatcher.go
index 4995b4e..8e6de02 100644
--- a/shapeshifter-dispatcher/shapeshifter-dispatcher.go
+++ b/shapeshifter-dispatcher/shapeshifter-dispatcher.go
@@ -103,7 +103,7 @@ func main() {
// Experimental flags under consideration for PT 2.1
socksAddr := flag.String("proxylistenaddr", "127.0.0.1:0", "Specify the bind address for the local SOCKS server provided by the client")
optionsFile := flag.String("optionsFile", "", "store all the options in a single file")
-
+ fmt.Println("checking for optionsFile")
// Additional command line flags inherited from obfs4proxy
showVer := flag.Bool("version", false, "Print version and exit")
logLevelStr := flag.String("logLevel", "ERROR", "Log level (ERROR/WARN/INFO/DEBUG)")
@@ -152,7 +152,8 @@ func main() {
if *optionsFile != "" {
_, err := os.Stat(*optionsFile)
if err != nil {
- log.Errorf("optionsFile does not exist %s", *optionsFile)
+ log.Errorf("optionsFile does not exist with error %s %s", *optionsFile, err.Error())
+ log.Errorf("optionsFile does not exist %s", *optionsFile, err.Error())
} else {
contents, readErr := ioutil.ReadFile(*optionsFile)
if readErr != nil {
@@ -183,6 +184,7 @@ func main() {
log.Infof("%s - initializing server transport listeners", execName)
if *bindAddr == "" {
fmt.Errorf("%s - transparent mode requires a bindaddr", execName)
+ log.Errorf("%s - transparent mode requires a bindaddr", execName)
} else {
// launched = transparent_udp.ServerSetup(termMon, *bindAddr, *target)
@@ -204,7 +206,7 @@ func main() {
} else {
log.Infof("%s - initializing server transport listeners", execName)
if *bindAddr == "" {
- fmt.Errorf("%s - transparent mode requires a bindaddr", execName)
+ log.Errorf("%s - transparent mode requires a bindaddr", execName)
} else {
ptServerInfo := getServerInfo(ptversion, bindAddr, options, transportsList, orport, extorport, authcookie)
launched, serverListeners = transparent_tcp.ServerSetup(termMon, *bindAddr, ptServerInfo, *statePath, *options)
diff --git a/state/dispatcher.log b/state/dispatcher.log
index 9e869ae..ff272da 100644
--- a/state/dispatcher.log
+++ b/state/dispatcher.log
@@ -104,3 +104,169 @@
2019/08/28 22:50:27 [INFO]: ___go_build_github_com_OperatorFoundation_shapeshifter_dispatcher_shapeshifter_dispatcher - initializing TCP transparent proxy
2019/08/28 22:50:27 [INFO]: ___go_build_github_com_OperatorFoundation_shapeshifter_dispatcher_shapeshifter_dispatcher - initializing client transport listeners
2019/08/28 22:50:27 [ERROR]: failed to listen obfs4 listen tcp 127.0.0.1:1443: bind: address already in use
+2019/09/03 19:33:32 [NOTICE]: dispatcher-0.0.7-dev - launched
+2019/09/03 19:33:32 [INFO]: ___go_build_github_com_OperatorFoundation_shapeshifter_dispatcher_shapeshifter_dispatcher - initializing transparent proxy
+2019/09/03 19:33:32 [INFO]: ___go_build_github_com_OperatorFoundation_shapeshifter_dispatcher_shapeshifter_dispatcher - initializing TCP transparent proxy
+2019/09/03 19:33:32 [INFO]: ___go_build_github_com_OperatorFoundation_shapeshifter_dispatcher_shapeshifter_dispatcher - initializing client transport listeners
+2019/09/03 19:33:32 [ERROR]: failed to listen obfs4 listen tcp 127.0.0.1:1443: bind: address already in use
+2019/09/03 19:34:35 [NOTICE]: dispatcher-0.0.7-dev - launched
+2019/09/03 19:34:35 [INFO]: ___go_build_github_com_OperatorFoundation_shapeshifter_dispatcher_shapeshifter_dispatcher - initializing transparent proxy
+2019/09/03 19:34:35 [INFO]: ___go_build_github_com_OperatorFoundation_shapeshifter_dispatcher_shapeshifter_dispatcher - initializing TCP transparent proxy
+2019/09/03 19:34:35 [INFO]: ___go_build_github_com_OperatorFoundation_shapeshifter_dispatcher_shapeshifter_dispatcher - initializing client transport listeners
+2019/09/03 19:34:35 [ERROR]: failed to listen obfs4 listen tcp 127.0.0.1:1443: bind: address already in use
+2019/09/03 19:35:19 [NOTICE]: dispatcher-0.0.7-dev - launched
+2019/09/03 19:35:19 [INFO]: ___go_build_github_com_OperatorFoundation_shapeshifter_dispatcher_shapeshifter_dispatcher - initializing transparent proxy
+2019/09/03 19:35:19 [INFO]: ___go_build_github_com_OperatorFoundation_shapeshifter_dispatcher_shapeshifter_dispatcher - initializing TCP transparent proxy
+2019/09/03 19:35:19 [INFO]: ___go_build_github_com_OperatorFoundation_shapeshifter_dispatcher_shapeshifter_dispatcher - initializing client transport listeners
+2019/09/03 19:35:19 [ERROR]: failed to listen obfs4 listen tcp 127.0.0.1:1443: bind: address already in use
+2019/09/03 19:36:38 [NOTICE]: dispatcher-0.0.7-dev - launched
+2019/09/03 19:36:38 [INFO]: ___go_build_github_com_OperatorFoundation_shapeshifter_dispatcher_shapeshifter_dispatcher - initializing transparent proxy
+2019/09/03 19:36:38 [INFO]: ___go_build_github_com_OperatorFoundation_shapeshifter_dispatcher_shapeshifter_dispatcher - initializing TCP transparent proxy
+2019/09/03 19:36:38 [INFO]: ___go_build_github_com_OperatorFoundation_shapeshifter_dispatcher_shapeshifter_dispatcher - initializing client transport listeners
+2019/09/03 19:36:38 [ERROR]: failed to listen obfs4 listen tcp 127.0.0.1:1443: bind: address already in use
+2019/09/03 20:23:06 [NOTICE]: dispatcher-0.0.7-dev - launched
+2019/09/03 20:23:06 [INFO]: ___go_build_github_com_OperatorFoundation_shapeshifter_dispatcher_shapeshifter_dispatcher - initializing transparent proxy
+2019/09/03 20:23:06 [INFO]: ___go_build_github_com_OperatorFoundation_shapeshifter_dispatcher_shapeshifter_dispatcher - initializing TCP transparent proxy
+2019/09/03 20:23:06 [INFO]: ___go_build_github_com_OperatorFoundation_shapeshifter_dispatcher_shapeshifter_dispatcher - initializing server transport listeners
+2019/09/03 20:26:33 [NOTICE]: dispatcher-0.0.7-dev - launched
+2019/09/03 20:26:39 [INFO]: ___go_build_github_com_OperatorFoundation_shapeshifter_dispatcher_shapeshifter_dispatcher - initializing transparent proxy
+2019/09/03 20:26:43 [INFO]: ___go_build_github_com_OperatorFoundation_shapeshifter_dispatcher_shapeshifter_dispatcher - initializing TCP transparent proxy
+2019/09/03 20:26:45 [INFO]: ___go_build_github_com_OperatorFoundation_shapeshifter_dispatcher_shapeshifter_dispatcher - initializing server transport listeners
+2019/09/03 20:27:23 [NOTICE]: dispatcher-0.0.7-dev - launched
+2019/09/03 20:27:30 [INFO]: ___go_build_github_com_OperatorFoundation_shapeshifter_dispatcher_shapeshifter_dispatcher - initializing transparent proxy
+2019/09/03 20:27:36 [INFO]: ___go_build_github_com_OperatorFoundation_shapeshifter_dispatcher_shapeshifter_dispatcher - initializing TCP transparent proxy
+2019/09/03 20:27:44 [INFO]: ___go_build_github_com_OperatorFoundation_shapeshifter_dispatcher_shapeshifter_dispatcher - initializing server transport listeners
+2019/09/03 20:31:16 [NOTICE]: dispatcher-0.0.7-dev - launched
+2019/09/03 20:31:16 [INFO]: ___go_build_github_com_OperatorFoundation_shapeshifter_dispatcher_shapeshifter_dispatcher - initializing transparent proxy
+2019/09/03 20:31:16 [INFO]: ___go_build_github_com_OperatorFoundation_shapeshifter_dispatcher_shapeshifter_dispatcher - initializing TCP transparent proxy
+2019/09/03 20:31:16 [INFO]: ___go_build_github_com_OperatorFoundation_shapeshifter_dispatcher_shapeshifter_dispatcher - initializing server transport listeners
+2019/09/03 20:31:20 [NOTICE]: dispatcher-0.0.7-dev - launched
+2019/09/03 20:31:27 [INFO]: ___go_build_github_com_OperatorFoundation_shapeshifter_dispatcher_shapeshifter_dispatcher - initializing transparent proxy
+2019/09/03 20:31:29 [INFO]: ___go_build_github_com_OperatorFoundation_shapeshifter_dispatcher_shapeshifter_dispatcher - initializing TCP transparent proxy
+2019/09/03 20:31:30 [INFO]: ___go_build_github_com_OperatorFoundation_shapeshifter_dispatcher_shapeshifter_dispatcher - initializing server transport listeners
+2019/09/03 20:31:57 [NOTICE]: dispatcher-0.0.7-dev - launched
+2019/09/03 20:31:59 [INFO]: ___go_build_github_com_OperatorFoundation_shapeshifter_dispatcher_shapeshifter_dispatcher - initializing transparent proxy
+2019/09/03 20:32:02 [INFO]: ___go_build_github_com_OperatorFoundation_shapeshifter_dispatcher_shapeshifter_dispatcher - initializing TCP transparent proxy
+2019/09/03 20:32:04 [INFO]: ___go_build_github_com_OperatorFoundation_shapeshifter_dispatcher_shapeshifter_dispatcher - initializing server transport listeners
+2019/09/03 20:33:28 [NOTICE]: dispatcher-0.0.7-dev - launched
+2019/09/03 20:33:28 [INFO]: ___go_build_github_com_OperatorFoundation_shapeshifter_dispatcher_shapeshifter_dispatcher - initializing transparent proxy
+2019/09/03 20:33:28 [INFO]: ___go_build_github_com_OperatorFoundation_shapeshifter_dispatcher_shapeshifter_dispatcher - initializing TCP transparent proxy
+2019/09/03 20:33:28 [INFO]: ___go_build_github_com_OperatorFoundation_shapeshifter_dispatcher_shapeshifter_dispatcher - initializing server transport listeners
+2019/09/03 20:34:29 [NOTICE]: dispatcher-0.0.7-dev - launched
+2019/09/03 20:34:29 [INFO]: ___go_build_github_com_OperatorFoundation_shapeshifter_dispatcher_shapeshifter_dispatcher - initializing transparent proxy
+2019/09/03 20:34:29 [INFO]: ___go_build_github_com_OperatorFoundation_shapeshifter_dispatcher_shapeshifter_dispatcher - initializing TCP transparent proxy
+2019/09/03 20:34:29 [INFO]: ___go_build_github_com_OperatorFoundation_shapeshifter_dispatcher_shapeshifter_dispatcher - initializing server transport listeners
+2019/09/03 20:34:41 [NOTICE]: dispatcher-0.0.7-dev - launched
+2019/09/03 20:34:41 [INFO]: ___go_build_github_com_OperatorFoundation_shapeshifter_dispatcher_shapeshifter_dispatcher - initializing transparent proxy
+2019/09/03 20:34:41 [INFO]: ___go_build_github_com_OperatorFoundation_shapeshifter_dispatcher_shapeshifter_dispatcher - initializing TCP transparent proxy
+2019/09/03 20:34:41 [INFO]: ___go_build_github_com_OperatorFoundation_shapeshifter_dispatcher_shapeshifter_dispatcher - initializing server transport listeners
+2019/09/03 20:34:54 [NOTICE]: dispatcher-0.0.7-dev - launched
+2019/09/03 20:34:54 [INFO]: ___go_build_github_com_OperatorFoundation_shapeshifter_dispatcher_shapeshifter_dispatcher - initializing transparent proxy
+2019/09/03 20:34:54 [INFO]: ___go_build_github_com_OperatorFoundation_shapeshifter_dispatcher_shapeshifter_dispatcher - initializing TCP transparent proxy
+2019/09/03 20:34:54 [INFO]: ___go_build_github_com_OperatorFoundation_shapeshifter_dispatcher_shapeshifter_dispatcher - initializing server transport listeners
+2019/09/03 20:35:08 [NOTICE]: dispatcher-0.0.7-dev - launched
+2019/09/03 20:35:12 [INFO]: ___go_build_github_com_OperatorFoundation_shapeshifter_dispatcher_shapeshifter_dispatcher - initializing transparent proxy
+2019/09/03 20:35:14 [INFO]: ___go_build_github_com_OperatorFoundation_shapeshifter_dispatcher_shapeshifter_dispatcher - initializing TCP transparent proxy
+2019/09/03 20:35:16 [INFO]: ___go_build_github_com_OperatorFoundation_shapeshifter_dispatcher_shapeshifter_dispatcher - initializing server transport listeners
+2019/09/03 20:38:39 [NOTICE]: dispatcher-0.0.7-dev - launched
+2019/09/03 20:38:43 [INFO]: ___go_build_github_com_OperatorFoundation_shapeshifter_dispatcher_shapeshifter_dispatcher - initializing transparent proxy
+2019/09/03 20:38:44 [INFO]: ___go_build_github_com_OperatorFoundation_shapeshifter_dispatcher_shapeshifter_dispatcher - initializing TCP transparent proxy
+2019/09/03 20:38:45 [INFO]: ___go_build_github_com_OperatorFoundation_shapeshifter_dispatcher_shapeshifter_dispatcher - initializing server transport listeners
+2019/09/03 20:40:24 [NOTICE]: dispatcher-0.0.7-dev - launched
+2019/09/03 20:40:24 [INFO]: ___go_build_github_com_OperatorFoundation_shapeshifter_dispatcher_shapeshifter_dispatcher - initializing transparent proxy
+2019/09/03 20:40:24 [INFO]: ___go_build_github_com_OperatorFoundation_shapeshifter_dispatcher_shapeshifter_dispatcher - initializing TCP transparent proxy
+2019/09/03 20:40:24 [INFO]: ___go_build_github_com_OperatorFoundation_shapeshifter_dispatcher_shapeshifter_dispatcher - initializing server transport listeners
+2019/09/03 20:41:36 [NOTICE]: dispatcher-0.0.7-dev - launched
+2019/09/03 20:41:36 [INFO]: ___go_build_github_com_OperatorFoundation_shapeshifter_dispatcher_shapeshifter_dispatcher - initializing transparent proxy
+2019/09/03 20:41:36 [INFO]: ___go_build_github_com_OperatorFoundation_shapeshifter_dispatcher_shapeshifter_dispatcher - initializing TCP transparent proxy
+2019/09/03 20:41:36 [INFO]: ___go_build_github_com_OperatorFoundation_shapeshifter_dispatcher_shapeshifter_dispatcher - initializing server transport listeners
+2019/09/03 20:51:16 [ERROR]: optionsFile does not exist with error shadowserver.json stat shadowserver.json: no such file or directory
+2019/09/03 20:51:16 [ERROR]: optionsFile does not exist shadowserver.json%!(EXTRA string=stat shadowserver.json: no such file or directory)
+2019/09/03 20:51:16 [NOTICE]: dispatcher-0.0.7-dev - launched
+2019/09/03 20:51:16 [INFO]: ___go_build_github_com_OperatorFoundation_shapeshifter_dispatcher_shapeshifter_dispatcher - initializing transparent proxy
+2019/09/03 20:51:16 [INFO]: ___go_build_github_com_OperatorFoundation_shapeshifter_dispatcher_shapeshifter_dispatcher - initializing TCP transparent proxy
+2019/09/03 20:51:16 [INFO]: ___go_build_github_com_OperatorFoundation_shapeshifter_dispatcher_shapeshifter_dispatcher - initializing server transport listeners
+2019/09/03 20:51:21 [ERROR]: optionsFile does not exist with error shadowserver.json stat shadowserver.json: no such file or directory
+2019/09/03 20:51:21 [ERROR]: optionsFile does not exist shadowserver.json%!(EXTRA string=stat shadowserver.json: no such file or directory)
+2019/09/03 20:51:21 [NOTICE]: dispatcher-0.0.7-dev - launched
+2019/09/03 20:51:21 [INFO]: ___go_build_github_com_OperatorFoundation_shapeshifter_dispatcher_shapeshifter_dispatcher - initializing transparent proxy
+2019/09/03 20:51:21 [INFO]: ___go_build_github_com_OperatorFoundation_shapeshifter_dispatcher_shapeshifter_dispatcher - initializing TCP transparent proxy
+2019/09/03 20:51:21 [INFO]: ___go_build_github_com_OperatorFoundation_shapeshifter_dispatcher_shapeshifter_dispatcher - initializing server transport listeners
+2019/09/03 20:52:37 [ERROR]: optionsFile does not exist with error shadowserver.json stat shadowserver.json: no such file or directory
+2019/09/03 20:52:37 [ERROR]: optionsFile does not exist shadowserver.json%!(EXTRA string=stat shadowserver.json: no such file or directory)
+2019/09/03 20:52:37 [NOTICE]: dispatcher-0.0.7-dev - launched
+2019/09/03 20:52:37 [INFO]: ___go_build_github_com_OperatorFoundation_shapeshifter_dispatcher_shapeshifter_dispatcher - initializing transparent proxy
+2019/09/03 20:52:37 [INFO]: ___go_build_github_com_OperatorFoundation_shapeshifter_dispatcher_shapeshifter_dispatcher - initializing TCP transparent proxy
+2019/09/03 20:52:37 [INFO]: ___go_build_github_com_OperatorFoundation_shapeshifter_dispatcher_shapeshifter_dispatcher - initializing server transport listeners
+2019/09/03 20:53:37 [ERROR]: optionsFile does not exist with error shadowserver.json stat shadowserver.json: no such file or directory
+2019/09/03 20:53:37 [ERROR]: optionsFile does not exist shadowserver.json%!(EXTRA string=stat shadowserver.json: no such file or directory)
+2019/09/03 20:53:37 [NOTICE]: dispatcher-0.0.7-dev - launched
+2019/09/03 20:53:37 [INFO]: ___go_build_github_com_OperatorFoundation_shapeshifter_dispatcher_shapeshifter_dispatcher - initializing transparent proxy
+2019/09/03 20:53:37 [INFO]: ___go_build_github_com_OperatorFoundation_shapeshifter_dispatcher_shapeshifter_dispatcher - initializing TCP transparent proxy
+2019/09/03 20:53:37 [INFO]: ___go_build_github_com_OperatorFoundation_shapeshifter_dispatcher_shapeshifter_dispatcher - initializing server transport listeners
+2019/09/03 20:55:48 [ERROR]: optionsFile does not exist with error shadowserver.json stat shadowserver.json: no such file or directory
+2019/09/03 20:55:48 [ERROR]: optionsFile does not exist shadowserver.json%!(EXTRA string=stat shadowserver.json: no such file or directory)
+2019/09/03 20:55:48 [NOTICE]: dispatcher-0.0.7-dev - launched
+2019/09/03 20:55:48 [INFO]: ___go_build_github_com_OperatorFoundation_shapeshifter_dispatcher_shapeshifter_dispatcher - initializing transparent proxy
+2019/09/03 20:55:48 [INFO]: ___go_build_github_com_OperatorFoundation_shapeshifter_dispatcher_shapeshifter_dispatcher - initializing TCP transparent proxy
+2019/09/03 20:55:48 [INFO]: ___go_build_github_com_OperatorFoundation_shapeshifter_dispatcher_shapeshifter_dispatcher - initializing server transport listeners
+2019/09/03 20:57:36 [ERROR]: optionsFile does not exist with error shadowserver.json stat shadowserver.json: no such file or directory
+2019/09/03 20:57:36 [ERROR]: optionsFile does not exist shadowserver.json%!(EXTRA string=stat shadowserver.json: no such file or directory)
+2019/09/03 20:57:36 [NOTICE]: dispatcher-0.0.7-dev - launched
+2019/09/03 20:57:36 [INFO]: ___go_build_github_com_OperatorFoundation_shapeshifter_dispatcher_shapeshifter_dispatcher - initializing transparent proxy
+2019/09/03 20:57:36 [INFO]: ___go_build_github_com_OperatorFoundation_shapeshifter_dispatcher_shapeshifter_dispatcher - initializing TCP transparent proxy
+2019/09/03 20:57:36 [INFO]: ___go_build_github_com_OperatorFoundation_shapeshifter_dispatcher_shapeshifter_dispatcher - initializing server transport listeners
+2019/09/03 20:57:58 [ERROR]: optionsFile does not exist with error shadowserver.json stat shadowserver.json: no such file or directory
+2019/09/03 20:57:58 [ERROR]: optionsFile does not exist shadowserver.json%!(EXTRA string=stat shadowserver.json: no such file or directory)
+2019/09/03 20:57:58 [NOTICE]: dispatcher-0.0.7-dev - launched
+2019/09/03 20:57:58 [INFO]: ___go_build_github_com_OperatorFoundation_shapeshifter_dispatcher_shapeshifter_dispatcher - initializing transparent proxy
+2019/09/03 20:57:58 [INFO]: ___go_build_github_com_OperatorFoundation_shapeshifter_dispatcher_shapeshifter_dispatcher - initializing TCP transparent proxy
+2019/09/03 20:57:58 [INFO]: ___go_build_github_com_OperatorFoundation_shapeshifter_dispatcher_shapeshifter_dispatcher - initializing server transport listeners
+2019/09/03 20:58:05 [ERROR]: optionsFile does not exist with error shadowserver.json stat shadowserver.json: no such file or directory
+2019/09/03 20:58:05 [ERROR]: optionsFile does not exist shadowserver.json%!(EXTRA string=stat shadowserver.json: no such file or directory)
+2019/09/03 20:58:05 [NOTICE]: dispatcher-0.0.7-dev - launched
+2019/09/03 20:58:05 [INFO]: ___go_build_github_com_OperatorFoundation_shapeshifter_dispatcher_shapeshifter_dispatcher - initializing transparent proxy
+2019/09/03 20:58:05 [INFO]: ___go_build_github_com_OperatorFoundation_shapeshifter_dispatcher_shapeshifter_dispatcher - initializing TCP transparent proxy
+2019/09/03 20:58:05 [INFO]: ___go_build_github_com_OperatorFoundation_shapeshifter_dispatcher_shapeshifter_dispatcher - initializing server transport listeners
+2019/09/03 21:00:46 [ERROR]: optionsFile does not exist with error shadowserver.json stat shadowserver.json: no such file or directory
+2019/09/03 21:00:46 [ERROR]: optionsFile does not exist shadowserver.json%!(EXTRA string=stat shadowserver.json: no such file or directory)
+2019/09/03 21:00:46 [NOTICE]: dispatcher-0.0.7-dev - launched
+2019/09/03 21:00:46 [INFO]: ___go_build_github_com_OperatorFoundation_shapeshifter_dispatcher_shapeshifter_dispatcher - initializing transparent proxy
+2019/09/03 21:00:46 [INFO]: ___go_build_github_com_OperatorFoundation_shapeshifter_dispatcher_shapeshifter_dispatcher - initializing TCP transparent proxy
+2019/09/03 21:00:46 [INFO]: ___go_build_github_com_OperatorFoundation_shapeshifter_dispatcher_shapeshifter_dispatcher - initializing server transport listeners
+2019/09/03 21:01:29 [ERROR]: optionsFile does not exist with error shadowserver.json stat shadowserver.json: no such file or directory
+2019/09/03 21:01:29 [ERROR]: optionsFile does not exist shadowserver.json%!(EXTRA string=stat shadowserver.json: no such file or directory)
+2019/09/03 21:01:29 [NOTICE]: dispatcher-0.0.7-dev - launched
+2019/09/03 21:01:29 [INFO]: ___go_build_github_com_OperatorFoundation_shapeshifter_dispatcher_shapeshifter_dispatcher - initializing transparent proxy
+2019/09/03 21:01:29 [INFO]: ___go_build_github_com_OperatorFoundation_shapeshifter_dispatcher_shapeshifter_dispatcher - initializing TCP transparent proxy
+2019/09/03 21:01:29 [INFO]: ___go_build_github_com_OperatorFoundation_shapeshifter_dispatcher_shapeshifter_dispatcher - initializing server transport listeners
+2019/09/03 21:02:15 [ERROR]: optionsFile does not exist with error shadowserver.json stat shadowserver.json: no such file or directory
+2019/09/03 21:02:15 [ERROR]: optionsFile does not exist shadowserver.json%!(EXTRA string=stat shadowserver.json: no such file or directory)
+2019/09/03 21:02:15 [NOTICE]: dispatcher-0.0.7-dev - launched
+2019/09/03 21:02:15 [INFO]: ___go_build_github_com_OperatorFoundation_shapeshifter_dispatcher_shapeshifter_dispatcher - initializing transparent proxy
+2019/09/03 21:02:15 [INFO]: ___go_build_github_com_OperatorFoundation_shapeshifter_dispatcher_shapeshifter_dispatcher - initializing TCP transparent proxy
+2019/09/03 21:02:15 [INFO]: ___go_build_github_com_OperatorFoundation_shapeshifter_dispatcher_shapeshifter_dispatcher - initializing server transport listeners
+2019/09/03 21:02:32 [ERROR]: optionsFile does not exist with error shadowserver.json stat shadowserver.json: no such file or directory
+2019/09/03 21:02:32 [ERROR]: optionsFile does not exist shadowserver.json%!(EXTRA string=stat shadowserver.json: no such file or directory)
+2019/09/03 21:02:32 [NOTICE]: dispatcher-0.0.7-dev - launched
+2019/09/03 21:02:32 [INFO]: ___go_build_github_com_OperatorFoundation_shapeshifter_dispatcher_shapeshifter_dispatcher - initializing transparent proxy
+2019/09/03 21:02:32 [INFO]: ___go_build_github_com_OperatorFoundation_shapeshifter_dispatcher_shapeshifter_dispatcher - initializing TCP transparent proxy
+2019/09/03 21:02:32 [INFO]: ___go_build_github_com_OperatorFoundation_shapeshifter_dispatcher_shapeshifter_dispatcher - initializing server transport listeners
+2019/09/03 21:03:03 [ERROR]: optionsFile does not exist with error shadowserver.json stat shadowserver.json: no such file or directory
+2019/09/03 21:03:03 [ERROR]: optionsFile does not exist shadowserver.json%!(EXTRA string=stat shadowserver.json: no such file or directory)
+2019/09/03 21:03:03 [NOTICE]: dispatcher-0.0.7-dev - launched
+2019/09/03 21:03:03 [INFO]: ___go_build_github_com_OperatorFoundation_shapeshifter_dispatcher_shapeshifter_dispatcher - initializing transparent proxy
+2019/09/03 21:03:03 [INFO]: ___go_build_github_com_OperatorFoundation_shapeshifter_dispatcher_shapeshifter_dispatcher - initializing TCP transparent proxy
+2019/09/03 21:03:03 [INFO]: ___go_build_github_com_OperatorFoundation_shapeshifter_dispatcher_shapeshifter_dispatcher - initializing server transport listeners
+2019/09/03 21:03:18 [ERROR]: optionsFile does not exist with error shadowserver.json stat shadowserver.json: no such file or directory
+2019/09/03 21:03:18 [ERROR]: optionsFile does not exist shadowserver.json%!(EXTRA string=stat shadowserver.json: no such file or directory)
+2019/09/03 21:03:18 [NOTICE]: dispatcher-0.0.7-dev - launched
+2019/09/03 21:03:18 [INFO]: ___go_build_github_com_OperatorFoundation_shapeshifter_dispatcher_shapeshifter_dispatcher - initializing transparent proxy
+2019/09/03 21:03:18 [INFO]: ___go_build_github_com_OperatorFoundation_shapeshifter_dispatcher_shapeshifter_dispatcher - initializing TCP transparent proxy
+2019/09/03 21:03:18 [INFO]: ___go_build_github_com_OperatorFoundation_shapeshifter_dispatcher_shapeshifter_dispatcher - initializing server transport listeners
+2019/09/03 21:04:04 [ERROR]: optionsFile does not exist with error shadowserver.json stat shadowserver.json: no such file or directory
+2019/09/03 21:04:04 [ERROR]: optionsFile does not exist shadowserver.json%!(EXTRA string=stat shadowserver.json: no such file or directory)
+2019/09/03 21:04:04 [NOTICE]: dispatcher-0.0.7-dev - launched
+2019/09/03 21:04:04 [INFO]: ___go_build_github_com_OperatorFoundation_shapeshifter_dispatcher_shapeshifter_dispatcher - initializing transparent proxy
+2019/09/03 21:04:04 [INFO]: ___go_build_github_com_OperatorFoundation_shapeshifter_dispatcher_shapeshifter_dispatcher - initializing TCP transparent proxy
+2019/09/03 21:04:04 [INFO]: ___go_build_github_com_OperatorFoundation_shapeshifter_dispatcher_shapeshifter_dispatcher - initializing server transport listeners
diff --git a/transports/transports.go b/transports/transports.go
index df05d33..0089be2 100644
--- a/transports/transports.go
+++ b/transports/transports.go
@@ -31,9 +31,14 @@ package transports
import (
"errors"
+ "github.com/OperatorFoundation/shapeshifter-transports/transports/Dust"
+ "github.com/OperatorFoundation/shapeshifter-transports/transports/Optimizer"
+ replicant "github.com/OperatorFoundation/shapeshifter-transports/transports/Replicant"
+ "github.com/OperatorFoundation/shapeshifter-transports/transports/meeklite"
"github.com/OperatorFoundation/shapeshifter-transports/transports/obfs4"
"github.com/OperatorFoundation/shapeshifter-transports/transports/shadow"
"github.com/mufti1/interconv/package"
+ gourl "net/url"
"strconv"
)
@@ -153,7 +158,7 @@ func ParseArgsShadow(args map[string]interface{}, target string) (*shadow.Transp
return nil, icerr
}
default:
- return nil, errors.New("Unsupported type for shadow password option")
+ return nil, errors.New("unsupported type for shadow password option")
}
untypedCipherName, ok2 := args["cipherName"]
@@ -169,7 +174,7 @@ func ParseArgsShadow(args map[string]interface{}, target string) (*shadow.Transp
return nil, icerr
}
default:
- return nil, errors.New("Unsupported type for shadow cipherName option")
+ return nil, errors.New("unsupported type for shadow cipherName option")
}
transport := shadow.Transport{
@@ -180,3 +185,147 @@ func ParseArgsShadow(args map[string]interface{}, target string) (*shadow.Transp
return &transport, nil
}
+
+func ParseArgsDust(args map[string]interface{}, target string) (*Dust.Transport, error) {
+ var serverPublic string
+
+ untypedServerPublic, ok := args["serverPublic"]
+ if !ok {
+ return nil, errors.New("dust transport missing serverpublic argument")
+ }
+
+ switch untypedServerPublic.(type) {
+ case string:
+ var icerr error
+ serverPublic, icerr = interconv.ParseString(untypedServerPublic)
+ if icerr != nil {
+ return nil, icerr
+ }
+ default:
+ return nil, errors.New("unsupported type for dust serverpublic option")
+ }
+
+ transport := Dust.Transport{
+ ServerPublic: serverPublic,
+ Address: target,
+ }
+
+ return &transport, nil
+}
+
+func ParseArgsReplicant(args map[string]interface{}, target string) (*replicant.Transport, error) {
+ var conf replicant.Config
+
+ untypedConfig, ok := args["config"]
+ if !ok {
+ return nil, errors.New("replicant transport missing config argument")
+ }
+
+ switch untypedConfig.(type) {
+ case string:
+ var icerr error
+ conf, icerr = interconv.ParseString(untypedConfig)
+ if icerr != nil {
+ return nil, icerr
+ }
+ default:
+ return nil, errors.New("unsupported type for replicant config option")
+ }
+
+ transport := replicant.Transport{
+ replicant.Config{} config,
+ Address: target,
+ }
+
+ return &transport, nil
+}
+
+func ParseArgsMeeklite(args map[string]interface{}, target string) (*meeklite.Transport, error) {
+
+ var url gourl.URL
+ var front string
+
+ untypedUrl, ok := args["url"]
+ if !ok {
+ return nil, errors.New("meeklite transport missing url argument")
+ }
+
+ switch untypedUrl.(type) {
+ case gourl.URL:
+ var icerr error
+ url, icerr = interconv.ParseString(untypedUrl)
+ if icerr != nil {
+ return nil, icerr
+ }
+ default:
+ return nil, errors.New("unsupported type for meeklite url option")
+ }
+
+ untypedFront, ok2 := args["front"]
+ if !ok2 {
+ return nil, errors.New("meeklite transport missing front argument")
+ }
+
+ switch untypedFront.(type) {
+ case string:
+ var icerr error
+ front, icerr = interconv.ParseString(untypedFront)
+ if icerr != nil {
+ return nil, icerr
+ }
+ default:
+ return nil, errors.New("unsupported type for meeklite front option")
+ }
+
+ transport := meeklite.Transport{
+ Url: url,
+ Front: front,
+ Address: target,
+ }
+
+ return &transport, nil
+}
+
+func ParseArgsOptimizer(args map[string]interface{}, target string) (*Optimizer.OptimizerTransport, error) {
+ var transports []Optimizer.Transport
+ var strategy Optimizer.Strategy
+
+ untypedTransports, ok := args["transports"]
+ if !ok {
+ return nil, errors.New("optimizer transport missing transports argument")
+ }
+
+ switch untypedTransports.(type) {
+ case []Optimizer.Transport:
+ var icerr error
+ transports, icerr = interconv.ParseString(untypedTransports)
+ if icerr != nil {
+ return nil, icerr
+ }
+ default:
+ return nil, errors.New("unsupported type for Optimizer transports option")
+ }
+
+ untypedStrategy, ok2 := args["strategy"]
+ if !ok2 {
+ return nil, errors.New("optimizer transport missing strategy argument")
+ }
+
+ switch untypedStrategy.(type) {
+ case Optimizer.Strategy:
+ var icerr error
+ strategy, icerr = interconv.ParseString(untypedStrategy)
+ if icerr != nil {
+ return nil, icerr
+ }
+ default:
+ return nil, errors.New("unsupported type for optimizer strategy option")
+ }
+
+ transport := Optimizer.OptimizerTransport{
+ Transports: transports,
+ Strategy: strategy,
+ }
+
+ return &transport, nil
+}