summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRuben Pollan <meskio@sindominio.net>2019-09-06 19:57:28 +0200
committerRuben Pollan <meskio@sindominio.net>2019-09-06 19:57:28 +0200
commit2ada4eb33d3cb4d37fa95ed8eee83ab07d694dd6 (patch)
tree4f5b96d407878d971c84da55f6c32618ca44880b
parentbfc867e0f07555b906ab7f3673aa3f6946a83bf9 (diff)
Improve error login
Propagating more errors into the logs instead of silently ignoring them.
-rw-r--r--modes/transparent_tcp/transparent_tcp.go25
-rw-r--r--modes/transparent_udp/transparent_udp.go2
-rw-r--r--shapeshifter-dispatcher/shapeshifter-dispatcher.go20
3 files changed, 22 insertions, 25 deletions
diff --git a/modes/transparent_tcp/transparent_tcp.go b/modes/transparent_tcp/transparent_tcp.go
index faffa15..9f9fc18 100644
--- a/modes/transparent_tcp/transparent_tcp.go
+++ b/modes/transparent_tcp/transparent_tcp.go
@@ -30,7 +30,6 @@
package transparent_tcp
import (
- "fmt"
"github.com/OperatorFoundation/shapeshifter-dispatcher/common/pt_extras"
"github.com/OperatorFoundation/shapeshifter-transports/transports/Dust"
"github.com/OperatorFoundation/shapeshifter-transports/transports/meeklite"
@@ -71,14 +70,16 @@ 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) error {
+func clientAcceptLoop(target string, termMon *termmon.TermMonitor, name string, options string, ln net.Listener, proxyURI *url.URL) {
defer ln.Close()
for {
conn, err := ln.Accept()
if err != nil {
if e, ok := err.(net.Error); ok && !e.Temporary() {
- return err
+ log.Errorf("Fatal listener error: %s", err.Error())
+ return
}
+ log.Warnf("Failed to accept connection: %s", err.Error())
continue
}
go clientHandler(target, termMon, name, options, conn, proxyURI)
@@ -128,7 +129,7 @@ func clientHandler(target string, termMon *termmon.TermMonitor, name string, opt
// return
// }
if err != nil {
- fmt.Errorf("outgoing connection failed %q %q", f, target)
+ log.Errorf("outgoing connection failed %q", target)
return
}
@@ -139,12 +140,8 @@ func clientHandler(target string, termMon *termmon.TermMonitor, name string, opt
} else {
log.Infof("%s(%s) - closed connection", name, target)
}
-
- return
}
-
-
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.
for _, bindaddr := range ptServerInfo.Bindaddrs {
@@ -253,13 +250,13 @@ func getServerBindaddrs(serverBindaddr string) ([]pt.Bindaddr, error) {
parts := strings.SplitN(spec, "-", 2)
if len(parts) != 2 {
- fmt.Errorf("TOR_PT_SERVER_BINDADDR: doesn't contain \"-\" %q", spec)
+ log.Errorf("TOR_PT_SERVER_BINDADDR: doesn't contain \"-\" %q", spec)
return nil, nil
}
bindaddr.MethodName = parts[0]
addr, err := pt.ResolveAddr(parts[1])
if err != nil {
- fmt.Errorf("TOR_PT_SERVER_BINDADDR: %q %q", spec, err.Error())
+ log.Errorf("TOR_PT_SERVER_BINDADDR: %q %q", spec, err.Error())
return nil, nil
}
bindaddr.Addr = addr
@@ -270,14 +267,16 @@ func getServerBindaddrs(serverBindaddr string) ([]pt.Bindaddr, error) {
return result, nil
}
-func serverAcceptLoop(termMon *termmon.TermMonitor, name string, ln net.Listener, info *pt.ServerInfo) error {
+func serverAcceptLoop(termMon *termmon.TermMonitor, name string, ln net.Listener, info *pt.ServerInfo) {
defer ln.Close()
for {
conn, err := ln.Accept()
if err != nil {
if e, ok := err.(net.Error); ok && !e.Temporary() {
- return err
+ log.Errorf("Fatal listener error: %s", err.Error())
+ return
}
+ log.Warnf("Failed to accept connection: %s", err.Error())
continue
}
go serverHandler(termMon, name, conn, info)
@@ -301,8 +300,6 @@ func serverHandler(termMon *termmon.TermMonitor, name string, remote net.Conn, i
} else {
log.Infof("%s - closed connection", name)
}
-
- return
}
func copyLoop(a net.Conn, b net.Conn) error {
diff --git a/modes/transparent_udp/transparent_udp.go b/modes/transparent_udp/transparent_udp.go
index 3352228..62d0689 100644
--- a/modes/transparent_udp/transparent_udp.go
+++ b/modes/transparent_udp/transparent_udp.go
@@ -83,7 +83,7 @@ func ClientSetup(termMon *termmon.TermMonitor, socksAddr string, target string,
go clientHandler(target, termMon, name, options, ln, ptClientProxy)
- log.Infof("%s - registered listener: %s", name, ln)
+ log.Infof("%s - registered listener", name)
}
return true
diff --git a/shapeshifter-dispatcher/shapeshifter-dispatcher.go b/shapeshifter-dispatcher/shapeshifter-dispatcher.go
index 4995b4e..72f2efb 100644
--- a/shapeshifter-dispatcher/shapeshifter-dispatcher.go
+++ b/shapeshifter-dispatcher/shapeshifter-dispatcher.go
@@ -182,7 +182,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 {
// launched = transparent_udp.ServerSetup(termMon, *bindAddr, *target)
@@ -204,7 +204,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)
@@ -226,7 +226,7 @@ func main() {
} else {
log.Infof("%s - initializing server transport listeners", execName)
if *bindAddr == "" {
- fmt.Errorf("%s - STUN mode requires a bindaddr", execName)
+ log.Errorf("%s - STUN mode requires a bindaddr", execName)
} else {
ptServerInfo := getServerInfo(ptversion, bindAddr, options, transportsList, orport, extorport, authcookie)
launched, serverListeners = stun_udp.ServerSetup(termMon, *bindAddr, ptServerInfo, *options)
@@ -310,7 +310,7 @@ func getClientNames(ptversion *string, transportsList *string, proxy *string) (c
// FIXME - instead of this, goptlib should be modified to accept command line flag override of EITHER ptversion or transports (or both)
if ptversion == nil || transportsList == nil {
- log.Infof("Falling back to environment variables for ptversion/transports %q %q", ptversion, transportsList)
+ log.Infof("Falling back to environment variables for ptversion/transports %q %q", *ptversion, *transportsList)
ptClientInfo, err = pt.ClientSetup(transports.Transports())
if err != nil {
// FIXME - print a more useful error, specifying --ptversion and --transports flags
@@ -341,14 +341,14 @@ func getServerInfo(ptversion *string, bindaddrList *string, options *string, tra
bindaddrs, err = getServerBindaddrs(bindaddrList, options, transportList)
if err != nil {
- fmt.Errorf("Error parsing bindaddrs %q %q %q", *bindaddrList, *options, *transportList)
+ log.Errorf("Error parsing bindaddrs %q %q %q", *bindaddrList, *options, *transportList)
return ptServerInfo
}
ptServerInfo = pt.ServerInfo{Bindaddrs: bindaddrs}
ptServerInfo.OrAddr, err = pt.ResolveAddr(*orport)
if err != nil {
- fmt.Errorf("Error resolving OR address %q %q", orport, err)
+ log.Errorf("Error resolving OR address %q %q", *orport, err)
return ptServerInfo
}
@@ -361,13 +361,13 @@ func getServerInfo(ptversion *string, bindaddrList *string, options *string, tra
if extorport != nil && *extorport != "" {
ptServerInfo.ExtendedOrAddr, err = pt.ResolveAddr(*extorport)
if err != nil {
- fmt.Errorf("Error resolving Extended OR address %q %q", *extorport, err)
+ log.Errorf("Error resolving Extended OR address %q %q", *extorport, err)
return ptServerInfo
}
} else {
ptServerInfo.ExtendedOrAddr, err = pt.ResolveAddr(pt.Getenv("TOR_PT_EXTENDED_SERVER_PORT"))
if err != nil {
- fmt.Errorf("Error resolving Extended OR address %q %q", err)
+ log.Errorf("Error resolving Extended OR address %q", err)
return ptServerInfo
}
}
@@ -392,7 +392,7 @@ func getServerBindaddrs(bindaddrList *string, options *string, transports *strin
if serverTransportOptions != "" {
optionsMap, err = pt.ParseServerTransportOptions(serverTransportOptions)
if err != nil {
- fmt.Errorf("Error parsing options map %q %q", serverTransportOptions, err)
+ log.Errorf("Error parsing options map %q %q", serverTransportOptions, err)
return nil, errors.New(fmt.Sprintf("TOR_PT_SERVER_TRANSPORT_OPTIONS: %q: %s", serverTransportOptions, err.Error()))
}
}
@@ -401,7 +401,7 @@ func getServerBindaddrs(bindaddrList *string, options *string, transports *strin
if serverTransportOptions != "" {
optionsMap, err = pt.ParsePT2ServerParameters(serverTransportOptions)
if err != nil {
- fmt.Errorf("Error parsing options map %q %q", serverTransportOptions, err)
+ log.Errorf("Error parsing options map %q %q", serverTransportOptions, err)
return nil, errors.New(fmt.Sprintf("TOR_PT_SERVER_TRANSPORT_OPTIONS: %q: %s", serverTransportOptions, err.Error()))
}
}