summaryrefslogtreecommitdiff
path: root/modes/transparent_tcp/transparent_tcp.go
diff options
context:
space:
mode:
Diffstat (limited to 'modes/transparent_tcp/transparent_tcp.go')
-rw-r--r--modes/transparent_tcp/transparent_tcp.go84
1 files changed, 2 insertions, 82 deletions
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.