diff options
Diffstat (limited to 'modes')
| -rw-r--r-- | modes/pt_socks5/pt_socks5.go | 57 | ||||
| -rw-r--r-- | modes/stun_udp/stun_udp.go | 31 | ||||
| -rw-r--r-- | modes/transparent_tcp/transparent_tcp.go | 54 | ||||
| -rw-r--r-- | modes/transparent_udp/transparent_udp.go | 26 | 
4 files changed, 67 insertions, 101 deletions
| diff --git a/modes/pt_socks5/pt_socks5.go b/modes/pt_socks5/pt_socks5.go index c3a8c45..e2aa546 100644 --- a/modes/pt_socks5/pt_socks5.go +++ b/modes/pt_socks5/pt_socks5.go @@ -46,22 +46,21 @@ import (  	"github.com/OperatorFoundation/shapeshifter-dispatcher/common/log"  	"github.com/OperatorFoundation/shapeshifter-dispatcher/common/socks5" -	"github.com/OperatorFoundation/shapeshifter-dispatcher/common/termmon"  	"github.com/OperatorFoundation/shapeshifter-ipc"  	"github.com/OperatorFoundation/shapeshifter-transports/transports/obfs2"  	"github.com/OperatorFoundation/shapeshifter-transports/transports/obfs4"  ) -func ClientSetup(termMon *termmon.TermMonitor, socksAddr string, target string, ptClientProxy *url.URL, names []string, options string) (launched bool, listeners []net.Listener) { +func ClientSetup(socksAddr string, ptClientProxy *url.URL, names []string, options string) (launched bool, listeners []net.Listener) {  	// Launch each of the client listeners.  	for _, name := range names {  		ln, err := net.Listen("tcp", socksAddr)  		if err != nil { -			pt.CmethodError(name, err.Error()) +			_ = pt.CmethodError(name, err.Error())  			continue  		} -		go clientAcceptLoop(target, termMon, name, ln, ptClientProxy, options) +		go clientAcceptLoop(name, ln, ptClientProxy, options)  		pt.Cmethod(name, socks5.Version(), ln.Addr())  		log.Infof("%s - registered listener: %s", name, ln.Addr()) @@ -73,8 +72,8 @@ func ClientSetup(termMon *termmon.TermMonitor, socksAddr string, target string,  	return  } -//FIXME figure out how to make this function match the other modes -func clientAcceptLoop(target string, termMon *termmon.TermMonitor, name string, ln net.Listener, proxyURI *url.URL, options string){ + +func clientAcceptLoop(name string, ln net.Listener, proxyURI *url.URL, options string) {  	for {  		conn, err := ln.Accept()  		if err != nil { @@ -85,15 +84,12 @@ func clientAcceptLoop(target string, termMon *termmon.TermMonitor, name string,  			}  			continue  		} -		go clientHandler(target, termMon, name, conn, proxyURI, options) +		go clientHandler(name, conn, proxyURI, options)  	}  } -func clientHandler(target string, termMon *termmon.TermMonitor, name string, conn net.Conn, proxyURI *url.URL, options string) { -	termMon.OnHandlerStart() -	defer termMon.OnHandlerFinish() - -	var needOptions bool = options == "" +func clientHandler(name string, conn net.Conn, proxyURI *url.URL, options string) { +	var needOptions = options == ""  	// Read the client's SOCKS handshake.  	socksReq, err := socks5.Handshake(conn, needOptions) @@ -122,28 +118,27 @@ func clientHandler(target string, termMon *termmon.TermMonitor, name string, con  	var dialer proxy.Dialer  	// Deal with arguments. -	transport, _ := pt_extras.ArgsToDialer(socksReq.Target, name, args,dialer) +	transport, _ := pt_extras.ArgsToDialer(socksReq.Target, name, args, dialer)  	// Obtain the proxy dialer if any, and create the outgoing TCP connection. -	dialFn := proxy.Direct.Dial  	if proxyURI != nil { -		dialer, err := proxy.FromURL(proxyURI, proxy.Direct) -		if err != nil { +		var proxyErr error +		dialer, proxyErr = proxy.FromURL(proxyURI, proxy.Direct) +		if proxyErr != nil {  			// This should basically never happen, since config protocol  			// verifies this.  			log.Errorf("%s(%s) - failed to obtain proxy dialer: %s", name, addrStr, log.ElideError(err)) -			socksReq.Reply(socks5.ReplyGeneralFailure) +			_ = socksReq.Reply(socks5.ReplyGeneralFailure)  			return  		} -		dialFn = dialer.Dial  	} -	fmt.Println("Got dialer", dialFn, proxyURI, proxy.Direct) +	fmt.Println("Got dialer", dialer, proxyURI, proxy.Direct) -	remote, _ := transport.Dial() -	if err != nil { +	remote, err2 := transport.Dial() +	if err2 != nil {  		log.Errorf("%s(%s) - outgoing connection failed: %s", name, addrStr, log.ElideError(err)) -		socksReq.Reply(socks5.ErrorToReplyCode(err)) +		_ = socksReq.Reply(socks5.ErrorToReplyCode(err))  		return  	}  	err = socksReq.Reply(socks5.ReplySucceeded) @@ -161,7 +156,7 @@ func clientHandler(target string, termMon *termmon.TermMonitor, name string, con  	return  } -func ServerSetup(termMon *termmon.TermMonitor, ptServerInfo pt.ServerInfo, options string) (launched bool, listeners []net.Listener) { +func ServerSetup(ptServerInfo pt.ServerInfo, options string) (launched bool, listeners []net.Listener) {  	for _, bindaddr := range ptServerInfo.Bindaddrs {  		name := bindaddr.MethodName @@ -199,7 +194,7 @@ func ServerSetup(termMon *termmon.TermMonitor, ptServerInfo pt.ServerInfo, optio  				return  			}  		case "replicant": -			config, ok :=args.Get("config") +			config, ok := args.Get("config")  			fmt.Println(config)  			if !ok {  				return false, nil @@ -207,7 +202,7 @@ func ServerSetup(termMon *termmon.TermMonitor, ptServerInfo pt.ServerInfo, optio  			transport := replicant.New(replicant.Config{})  			listen = transport.Listen  		case "Dust": -			idPath, ok :=args.Get("idPath") +			idPath, ok := args.Get("idPath")  			if !ok {  				return false, nil  			} @@ -244,13 +239,11 @@ func ServerSetup(termMon *termmon.TermMonitor, ptServerInfo pt.ServerInfo, optio  			return  		} - -  		f := listen  		transportLn := f(bindaddr.Addr.String()) -		go serverAcceptLoop(termMon, name, transportLn, &ptServerInfo) +		go serverAcceptLoop(name, transportLn, &ptServerInfo)  		// if args := f.Args(); args != nil {  		// 	pt.SmethodArgs(name, ln.Addr(), *args) @@ -268,7 +261,7 @@ func ServerSetup(termMon *termmon.TermMonitor, ptServerInfo pt.ServerInfo, optio  	return  } -func serverAcceptLoop(termMon *termmon.TermMonitor, name string, ln net.Listener, info *pt.ServerInfo){ +func serverAcceptLoop(name string, ln net.Listener, info *pt.ServerInfo) {  	for {  		conn, err := ln.Accept()  		if err != nil { @@ -277,13 +270,11 @@ func serverAcceptLoop(termMon *termmon.TermMonitor, name string, ln net.Listener  			}  			continue  		} -		go serverHandler(termMon, name, conn, info) +		go serverHandler(name, conn, info)  	}  } -func serverHandler(termMon *termmon.TermMonitor, name string, remote net.Conn, info *pt.ServerInfo) { -	termMon.OnHandlerStart() -	defer termMon.OnHandlerFinish() +func serverHandler(name string, remote net.Conn, info *pt.ServerInfo) {  	addrStr := log.ElideAddr(remote.RemoteAddr().String())  	log.Infof("%s(%s) - new connection", name, addrStr) diff --git a/modes/stun_udp/stun_udp.go b/modes/stun_udp/stun_udp.go index 4abe433..3d72b69 100644 --- a/modes/stun_udp/stun_udp.go +++ b/modes/stun_udp/stun_udp.go @@ -47,7 +47,6 @@ import (  	"github.com/willscott/goturn"  	"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/obfs2"  	"github.com/OperatorFoundation/shapeshifter-transports/transports/obfs4" @@ -64,7 +63,7 @@ func NewConnState() ConnState {  type ConnTracker map[string]ConnState -func ClientSetup(termMon *termmon.TermMonitor, socksAddr string, target string, ptClientProxy *url.URL, names []string, options string) bool { +func ClientSetup(socksAddr string, target string, ptClientProxy *url.URL, names []string, options string) bool {  	// Launch each of the client listeners.  	for _, name := range names {  		udpAddr, err := net.ResolveUDPAddr("udp", socksAddr) @@ -79,7 +78,7 @@ func ClientSetup(termMon *termmon.TermMonitor, socksAddr string, target string,  			continue  		} -		go clientHandler(target, termMon, name, options, ln, ptClientProxy) +		go clientHandler(target, name, options, ln, ptClientProxy)  		log.Infof("%s - registered listener: %s", name, ln)  	} @@ -87,12 +86,9 @@ func ClientSetup(termMon *termmon.TermMonitor, socksAddr string, target string,  	return true  } -func clientHandler(target string, termMon *termmon.TermMonitor, name string, options string, conn *net.UDPConn, proxyURI *url.URL) { +func clientHandler(target string, name string, options string, conn *net.UDPConn, proxyURI *url.URL) { -	termMon.OnHandlerStart()  	//defers are never called due to infinite loop -	//defer termMon.OnHandlerFinish() -	//defer  conn.Close()  	fmt.Println("@@@ handling...") @@ -133,7 +129,7 @@ func clientHandler(target string, termMon *termmon.TermMonitor, name string, opt  			fmt.Println("Opening connection to ", target) -			openConnection(&tracker, addr.String(), target, termMon, name, options, proxyURI) +			openConnection(&tracker, addr.String(), target, name, options, proxyURI)  			// Drop the packet.  			fmt.Println("recv: Open") @@ -141,7 +137,7 @@ func clientHandler(target string, termMon *termmon.TermMonitor, name string, opt  	}  } -func openConnection(tracker *ConnTracker, addr string, target string, termMon *termmon.TermMonitor, name string, options string, proxyURI *url.URL) { +func openConnection(tracker *ConnTracker, addr string, target string, name string, options string, proxyURI *url.URL) {  	fmt.Println("Making dialer...")  	newConn := NewConnState() @@ -193,7 +189,7 @@ func dialConn(tracker *ConnTracker, addr string, target string, name string, opt  	(*tracker)[addr] = ConnState{remote, false}  } -func ServerSetup(termMon *termmon.TermMonitor, ptServerInfo pt.ServerInfo, options string, stateDir string) (launched bool, listeners []net.Listener) { +func ServerSetup(ptServerInfo pt.ServerInfo, options string, stateDir string) (launched bool, listeners []net.Listener) {  	fmt.Println("ServerSetup")  	// Launch each of the server listeners. @@ -268,7 +264,7 @@ func ServerSetup(termMon *termmon.TermMonitor, ptServerInfo pt.ServerInfo, optio  		transportLn := listen(bindaddr.Addr.String()) -		go serverAcceptLoop(termMon, name, transportLn, &ptServerInfo) +		go serverAcceptLoop(name, transportLn, &ptServerInfo)  		log.Infof("%s - registered listener: %s", name, log.ElideAddr(bindaddr.Addr.String())) @@ -345,7 +341,7 @@ func ServerSetup(termMon *termmon.TermMonitor, ptServerInfo pt.ServerInfo, optio  //	return int(port), err  //} -func serverAcceptLoop(termMon *termmon.TermMonitor, name string, ln net.Listener, info *pt.ServerInfo){ +func serverAcceptLoop(name string, ln net.Listener, info *pt.ServerInfo) {  	for {  		conn, err := ln.Accept()  		fmt.Println("accepted") @@ -357,15 +353,13 @@ func serverAcceptLoop(termMon *termmon.TermMonitor, name string, ln net.Listener  			}  			continue  		} -		go serverHandler(termMon, name, conn, info) +		go serverHandler(name, conn, info)  	}  } -func serverHandler(termMon *termmon.TermMonitor, name string, remote net.Conn, info *pt.ServerInfo) { +func serverHandler(name string, remote net.Conn, info *pt.ServerInfo) {  	var header *common.Message -	termMon.OnHandlerStart() -  	addrStr := log.ElideAddr(remote.RemoteAddr().String())  	fmt.Println("### handling", name)  	log.Infof("%s(%s) - new connection", name, addrStr) @@ -373,21 +367,19 @@ func serverHandler(termMon *termmon.TermMonitor, name string, remote net.Conn, i  	serverAddr, err := net.ResolveUDPAddr("udp", info.OrAddr.String())  	if err != nil {  		_ = remote.Close() -		termMon.OnHandlerFinish() +  		golog.Fatal(err)  	}  	localAddr, err := net.ResolveUDPAddr("udp", "127.0.0.1:0")  	if err != nil {  		_ = remote.Close() -		termMon.OnHandlerFinish()  		golog.Fatal(err)  	}  	dest, err := net.DialUDP("udp", localAddr, serverAddr)  	if err != nil {  		_ = remote.Close() -		termMon.OnHandlerFinish()  		golog.Fatal(err)  	} @@ -429,5 +421,4 @@ func serverHandler(termMon *termmon.TermMonitor, name string, remote net.Conn, i  	}  	_ = remote.Close() -	termMon.OnHandlerFinish()  } diff --git a/modes/transparent_tcp/transparent_tcp.go b/modes/transparent_tcp/transparent_tcp.go index 0bdfe75..c1482bb 100644 --- a/modes/transparent_tcp/transparent_tcp.go +++ b/modes/transparent_tcp/transparent_tcp.go @@ -43,14 +43,12 @@ import (  	"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/obfs2"  	"github.com/OperatorFoundation/shapeshifter-transports/transports/obfs4"  	"github.com/OperatorFoundation/shapeshifter-transports/transports/shadow"  ) -func ClientSetup(termMon *termmon.TermMonitor, socksAddr string, target string, ptClientProxy *url.URL, names []string, options string) (launched bool, listeners []net.Listener) { +func ClientSetup(socksAddr string, target string, ptClientProxy *url.URL, names []string, options string) (launched bool, listeners []net.Listener) {  	// Launch each of the client listeners.  	for _, name := range names {  		ln, err := net.Listen("tcp", socksAddr) @@ -59,7 +57,7 @@ func ClientSetup(termMon *termmon.TermMonitor, socksAddr string, target string,  			continue  		} -		go clientAcceptLoop(target, termMon, name, options, ln, ptClientProxy) +		go clientAcceptLoop(target, name, options, ln, ptClientProxy)  		log.Infof("%s - registered listener: %s", name, ln.Addr()) @@ -70,7 +68,7 @@ func ClientSetup(termMon *termmon.TermMonitor, socksAddr string, target string,  	return  } -func clientAcceptLoop(target string, termMon *termmon.TermMonitor, name string, options string, ln net.Listener, proxyURI *url.URL) { +func clientAcceptLoop(target string, name string, options string, ln net.Listener, proxyURI *url.URL) {  	for {  		conn, err := ln.Accept()  		if err != nil { @@ -81,14 +79,11 @@ func clientAcceptLoop(target string, termMon *termmon.TermMonitor, name string,  			log.Warnf("Failed to accept connection: %s", err.Error())  			continue  		} -		go clientHandler(target, termMon, name, options, conn, proxyURI) +		go clientHandler(target, name, options, conn, proxyURI)  	}  } -func clientHandler(target string, termMon *termmon.TermMonitor, name string, options string, conn net.Conn, proxyURI *url.URL) { -	termMon.OnHandlerStart() -	defer termMon.OnHandlerFinish() - +func clientHandler(target string, name string, options string, conn net.Conn, proxyURI *url.URL) {  	var dialer proxy.Dialer  	dialer = proxy.Direct  	if proxyURI != nil { @@ -103,7 +98,7 @@ func clientHandler(target string, termMon *termmon.TermMonitor, name string, opt  		}  	} -//this is where the refactoring begins +	//this is where the refactoring begins  	args, argsErr := options2.ParseOptions(options)  	if argsErr != nil {  		log.Errorf("Error parsing transport options: %s", options) @@ -124,7 +119,7 @@ func clientHandler(target string, termMon *termmon.TermMonitor, name string, opt  	}  } -func ServerSetup(termMon *termmon.TermMonitor, ptServerInfo pt.ServerInfo, statedir string, options string) (launched bool, listeners []net.Listener) { +func ServerSetup(ptServerInfo pt.ServerInfo, statedir string, options string) (launched bool, listeners []net.Listener) {  	// Launch each of the server listeners.  	for _, bindaddr := range ptServerInfo.Bindaddrs {  		name := bindaddr.MethodName @@ -177,7 +172,7 @@ func ServerSetup(termMon *termmon.TermMonitor, ptServerInfo pt.ServerInfo, state  				log.Errorf("could not coerce Dust Url to string")  				return false, nil  			} -			transport := Dust.NewDustServer(*idPath) +			transport := Dust.NewDustServer(idPath)  			listen = transport.Listen  		case "meeklite":  			args, aok := args["meeklite"] @@ -190,22 +185,22 @@ func ServerSetup(termMon *termmon.TermMonitor, ptServerInfo pt.ServerInfo, state  				return false, nil  			} -  			Url, err := options2.CoerceToString(untypedUrl)  			if err != nil {  				log.Errorf("could not coerce meeklite Url to string")  			} -			untypedFront, ok := args["Front"] +			untypedFront, ok := args["front"]  			if !ok {  				return false, nil  			} -			Front, err := options2.CoerceToString(untypedFront) -			if err != nil { -				log.Errorf("could not coerce meeklite Front to string") +			front, err2 := options2.CoerceToString(untypedFront) +			if err2 != nil { +				log.Errorf("could not coerce meeklite front to string")  			} -			transport := meeklite.NewMeekTransportWithFront(*Url, *Front) + +			transport := meeklite.NewMeekTransportWithFront(Url, front)  			listen = transport.Listen  		case "shadow":  			args, aok := args["shadow"] @@ -220,7 +215,7 @@ func ServerSetup(termMon *termmon.TermMonitor, ptServerInfo pt.ServerInfo, state  			Password, err := options2.CoerceToString(untypedPassword)  			if err != nil { -				log.Errorf("could not coerce meeklite Url to string") +				log.Errorf("could not coerce shadow password to string")  			}  			untypedCertString, ok := args["Url"] @@ -228,13 +223,12 @@ func ServerSetup(termMon *termmon.TermMonitor, ptServerInfo pt.ServerInfo, state  				return false, nil  			} - -			certString, err := options2.CoerceToString(untypedCertString) -			if err != nil { +			certString, err2 := options2.CoerceToString(untypedCertString) +			if err2 != nil {  				log.Errorf("could not coerce meeklite Url to string")  			} -			transport := shadow.NewShadowServer(*Password, *certString) +			transport := shadow.NewShadowServer(Password, certString)  			listen = transport.Listen  		default:  			log.Errorf("Unknown transport: %s", name) @@ -245,7 +239,7 @@ func ServerSetup(termMon *termmon.TermMonitor, ptServerInfo pt.ServerInfo, state  		transportLn := f(bindaddr.Addr.String()) -		go serverAcceptLoop(termMon, name, transportLn, &ptServerInfo) +		go serverAcceptLoop(name, transportLn, &ptServerInfo)  		log.Infof("%s - registered listener: %s", name, log.ElideAddr(bindaddr.Addr.String())) @@ -281,7 +275,7 @@ func ServerSetup(termMon *termmon.TermMonitor, ptServerInfo pt.ServerInfo, state  //	return result, nil  //} -func serverAcceptLoop(termMon *termmon.TermMonitor, name string, ln net.Listener, info *pt.ServerInfo) { +func serverAcceptLoop(name string, ln net.Listener, info *pt.ServerInfo) {  	for {  		conn, err := ln.Accept()  		if err != nil { @@ -292,14 +286,11 @@ func serverAcceptLoop(termMon *termmon.TermMonitor, name string, ln net.Listener  			log.Warnf("Failed to accept connection: %s", err.Error())  			continue  		} -		go serverHandler(termMon, name, conn, info) +		go serverHandler(name, conn, info)  	}  } -func serverHandler(termMon *termmon.TermMonitor, name string, remote net.Conn, info *pt.ServerInfo) { -	termMon.OnHandlerStart() -	defer termMon.OnHandlerFinish() - +func serverHandler(name string, remote net.Conn, info *pt.ServerInfo) {  	// Connect to the orport.  	orConn, err := pt.DialOr(info, remote.RemoteAddr().String(), name)  	if err != nil { @@ -343,4 +334,3 @@ func copyLoop(a net.Conn, b net.Conn) error {  	return nil  } - diff --git a/modes/transparent_udp/transparent_udp.go b/modes/transparent_udp/transparent_udp.go index 64bc711..506637e 100644 --- a/modes/transparent_udp/transparent_udp.go +++ b/modes/transparent_udp/transparent_udp.go @@ -36,7 +36,6 @@ import (  	options2 "github.com/OperatorFoundation/shapeshifter-dispatcher/common"  	"github.com/OperatorFoundation/shapeshifter-dispatcher/common/log"  	"github.com/OperatorFoundation/shapeshifter-dispatcher/common/pt_extras" -	"github.com/OperatorFoundation/shapeshifter-dispatcher/common/termmon"  	"github.com/OperatorFoundation/shapeshifter-ipc"  	"github.com/OperatorFoundation/shapeshifter-transports/transports/Dust"  	replicant "github.com/OperatorFoundation/shapeshifter-transports/transports/Replicant" @@ -65,7 +64,7 @@ func NewConnState() ConnState {  type ConnTracker map[string]ConnState -func ClientSetup(termMon *termmon.TermMonitor, socksAddr string, target string, ptClientProxy *url.URL, names []string, options string) bool { +func ClientSetup(socksAddr string, target string, ptClientProxy *url.URL, names []string, options string) bool {  	// Launch each of the client listeners.  	for _, name := range names {  		udpAddr, err := net.ResolveUDPAddr("udp", socksAddr) @@ -80,7 +79,7 @@ func ClientSetup(termMon *termmon.TermMonitor, socksAddr string, target string,  			continue  		} -		go clientHandler(target, termMon, name, options, ln, ptClientProxy) +		go clientHandler(target, name, options, ln, ptClientProxy)  		log.Infof("%s - registered listener", name)  	} @@ -88,12 +87,10 @@ func ClientSetup(termMon *termmon.TermMonitor, socksAddr string, target string,  	return true  } -func clientHandler(target string, termMon *termmon.TermMonitor, name string, options string, conn *net.UDPConn, proxyURI *url.URL) { +func clientHandler(target string, name string, options string, conn *net.UDPConn, proxyURI *url.URL) {  	var length16 uint16  	defer conn.Close() -	termMon.OnHandlerStart() -	defer termMon.OnHandlerFinish()  	fmt.Println("@@@ handling...") @@ -153,7 +150,7 @@ func clientHandler(target string, termMon *termmon.TermMonitor, name string, opt  			fmt.Println("Opening connection to ", target) -			openConnection(&tracker, addr.String(), target, termMon, name, options, proxyURI) +			openConnection(&tracker, addr.String(), target, name, options, proxyURI)  			// Drop the packet.  			fmt.Println("recv: Open") @@ -161,7 +158,7 @@ func clientHandler(target string, termMon *termmon.TermMonitor, name string, opt  	}  } -func openConnection(tracker *ConnTracker, addr string, target string, termMon *termmon.TermMonitor, name string, options string, proxyURI *url.URL) { +func openConnection(tracker *ConnTracker, addr string, target string, name string, options string, proxyURI *url.URL) {  	fmt.Println("Making dialer...")  	newConn := NewConnState() @@ -211,7 +208,7 @@ func dialConn(tracker *ConnTracker, addr string, target string, name string, opt  	(*tracker)[addr] = ConnState{remote, false}  } -func ServerSetup(termMon *termmon.TermMonitor, ptServerInfo pt.ServerInfo, options string) (launched bool, listeners []net.Listener) { +func ServerSetup(ptServerInfo pt.ServerInfo, options string) (launched bool, listeners []net.Listener) {  	fmt.Println("ServerSetup")  	// Launch each of the server listeners. @@ -304,7 +301,7 @@ func ServerSetup(termMon *termmon.TermMonitor, ptServerInfo pt.ServerInfo, optio  		transportLn := f(bindaddr.Addr.String()) -		go serverAcceptLoop(termMon, name, transportLn, &ptServerInfo) +		go serverAcceptLoop(name, transportLn, &ptServerInfo)  		log.Infof("%s - registered listener: %s", name, log.ElideAddr(bindaddr.Addr.String())) @@ -356,7 +353,7 @@ func ServerSetup(termMon *termmon.TermMonitor, ptServerInfo pt.ServerInfo, optio  //	return int(port), err  //} -func serverAcceptLoop(termMon *termmon.TermMonitor, name string, ln net.Listener, info *pt.ServerInfo) { +func serverAcceptLoop(name string, ln net.Listener, info *pt.ServerInfo) {  	for {  		conn, err := ln.Accept()  		fmt.Println("accepted") @@ -368,16 +365,13 @@ func serverAcceptLoop(termMon *termmon.TermMonitor, name string, ln net.Listener  			}  			continue  		} -		go serverHandler(termMon, name, conn, info) +		go serverHandler(name, conn, info)  	}  } -func serverHandler(termMon *termmon.TermMonitor, name string, remote net.Conn, info *pt.ServerInfo) { +func serverHandler(name string, remote net.Conn, info *pt.ServerInfo) {  	var length16 uint16 -	termMon.OnHandlerStart() -	defer termMon.OnHandlerFinish() -  	addrStr := log.ElideAddr(remote.RemoteAddr().String())  	fmt.Println("### handling", name)  	log.Infof("%s(%s) - new connection", name, addrStr) | 
