summaryrefslogtreecommitdiff
path: root/obfs4proxy/obfs4proxy.go
diff options
context:
space:
mode:
authorYawning Angel <yawning@torproject.org>2014-09-03 09:05:18 +0000
committerYawning Angel <yawning@torproject.org>2014-09-03 09:05:18 +0000
commit25178c6a951eeb94c427a1a22f372473e41bea97 (patch)
treeb1e84c7447d5c513003b16e37e699db219da1278 /obfs4proxy/obfs4proxy.go
parentce39988b11a56e763c8eedbbdab75a35b48366d4 (diff)
Add support for "logLevel" to reduce log spam.
By default logging will be done at the "WARN" level. Fatal initialization errors will always be logged as long as logging is enabled regardless of logLevel.
Diffstat (limited to 'obfs4proxy/obfs4proxy.go')
-rw-r--r--obfs4proxy/obfs4proxy.go42
1 files changed, 23 insertions, 19 deletions
diff --git a/obfs4proxy/obfs4proxy.go b/obfs4proxy/obfs4proxy.go
index 8cb0cbf..d36594b 100644
--- a/obfs4proxy/obfs4proxy.go
+++ b/obfs4proxy/obfs4proxy.go
@@ -150,7 +150,7 @@ func clientSetup() (launched bool, listeners []net.Listener) {
go clientAcceptLoop(f, ln, ptClientProxy)
pt.Cmethod(name, ln.Version(), ln.Addr())
- log.Printf("[INFO]: %s - registered listener: %s", name, ln.Addr())
+ infof("%s - registered listener: %s", name, ln.Addr())
listeners = append(listeners, ln)
launched = true
@@ -183,12 +183,12 @@ func clientHandler(f base.ClientFactory, conn *pt.SocksConn, proxyURI *url.URL)
name := f.Transport().Name()
addrStr := elideAddr(conn.Req.Target)
- log.Printf("[INFO]: %s(%s) - new connection", name, addrStr)
+ infof("%s(%s) - new connection", name, addrStr)
// Deal with arguments.
args, err := f.ParseArgs(&conn.Req.Args)
if err != nil {
- log.Printf("[ERROR]: %s(%s) - invalid arguments: %s", name, addrStr, err)
+ warnf("%s(%s) - invalid arguments: %s", name, addrStr, err)
conn.Reject()
return
}
@@ -202,7 +202,7 @@ func clientHandler(f base.ClientFactory, conn *pt.SocksConn, proxyURI *url.URL)
// the configuration phase.
dialer, err := proxy.FromURL(proxyURI, proxy.Direct)
if err != nil {
- log.Printf("[ERROR]: %s(%s) - failed to obtain proxy dialer: %s", name, addrStr, elideError(err))
+ errorf("%s(%s) - failed to obtain proxy dialer: %s", name, addrStr, elideError(err))
conn.Reject()
return
}
@@ -210,7 +210,7 @@ func clientHandler(f base.ClientFactory, conn *pt.SocksConn, proxyURI *url.URL)
}
remoteConn, err := dialFn("tcp", conn.Req.Target) // XXX: Allow UDP?
if err != nil {
- log.Printf("[ERROR]: %s(%s) - outgoing connection failed: %s", name, addrStr, elideError(err))
+ warnf("%s(%s) - outgoing connection failed: %s", name, addrStr, elideError(err))
conn.Reject()
return
}
@@ -220,21 +220,21 @@ func clientHandler(f base.ClientFactory, conn *pt.SocksConn, proxyURI *url.URL)
// bytes back and forth.
remote, err := f.WrapConn(remoteConn, args)
if err != nil {
- log.Printf("[ERROR]: %s(%s) - handshake failed: %s", name, addrStr, elideError(err))
+ warnf("%s(%s) - handshake failed: %s", name, addrStr, elideError(err))
conn.Reject()
return
}
err = conn.Grant(remoteConn.RemoteAddr().(*net.TCPAddr))
if err != nil {
- log.Printf("[ERROR]: %s(%s) - SOCKS grant failed: %s", name, addrStr, elideError(err))
+ warnf("%s(%s) - SOCKS grant failed: %s", name, addrStr, elideError(err))
return
}
err = copyLoop(conn, remote)
if err != nil {
- log.Printf("[INFO]: %s(%s) - closed connection: %s", name, addrStr, elideError(err))
+ warnf("%s(%s) - closed connection: %s", name, addrStr, elideError(err))
} else {
- log.Printf("[INFO]: %s(%s) - closed connection", name, addrStr)
+ infof("%s(%s) - closed connection", name, addrStr)
}
return
@@ -273,7 +273,7 @@ func serverSetup() (launched bool, listeners []net.Listener) {
pt.SmethodArgs(name, ln.Addr(), nil)
}
- log.Printf("[INFO]: %s - registered listener: %s", name, elideAddr(ln.Addr().String()))
+ infof("%s - registered listener: %s", name, elideAddr(ln.Addr().String()))
listeners = append(listeners, ln)
launched = true
@@ -306,28 +306,28 @@ func serverHandler(f base.ServerFactory, conn net.Conn, info *pt.ServerInfo) {
name := f.Transport().Name()
addrStr := elideAddr(conn.RemoteAddr().String())
- log.Printf("[INFO]: %s(%s) - new connection", name, addrStr)
+ infof("%s(%s) - new connection", name, addrStr)
// Instantiate the server transport method and handshake.
remote, err := f.WrapConn(conn)
if err != nil {
- log.Printf("[ERROR]: %s(%s) - handshake failed: %s", name, addrStr, elideError(err))
+ warnf("%s(%s) - handshake failed: %s", name, addrStr, elideError(err))
return
}
// Connect to the orport.
orConn, err := pt.DialOr(info, conn.RemoteAddr().String(), name)
if err != nil {
- log.Printf("[ERROR]: %s(%s) - failed to connect to ORPort: %s", name, addrStr, elideError(err))
+ errorf("%s(%s) - failed to connect to ORPort: %s", name, addrStr, elideError(err))
return
}
defer orConn.Close()
err = copyLoop(orConn, remote)
if err != nil {
- log.Printf("[INFO]: %s(%s) - closed connection: %s", name, addrStr, elideError(err))
+ warnf("%s(%s) - closed connection: %s", name, addrStr, elideError(err))
} else {
- log.Printf("[INFO]: %s(%s) - closed connection", name, addrStr)
+ infof("%s(%s) - closed connection", name, addrStr)
}
return
@@ -392,6 +392,7 @@ func main() {
// Handle the command line arguments.
_, execName := path.Split(os.Args[0])
showVer := flag.Bool("v", false, "Print version and exit")
+ logLevelStr := flag.String("logLevel", "WARN", "Log level (ERROR/WARN/INFO)")
flag.BoolVar(&enableLogging, "enableLogging", false, "Log to TOR_PT_STATE_LOCATION/"+obfs4proxyLogFile)
flag.BoolVar(&unsafeLogging, "unsafeLogging", false, "Disable the address scrubber")
flag.Parse()
@@ -399,6 +400,9 @@ func main() {
if *showVer {
version()
}
+ if err := setLogLevel(*logLevelStr); err != nil {
+ log.Fatalf("[ERROR]: failed to set log level: %s", err)
+ }
// Determine if this is a client or server, initialize logging, and finish
// the pt configuration.
@@ -416,10 +420,10 @@ func main() {
log.Fatalf("[ERROR]: %s - failed to initialize logging", execName)
}
if isClient {
- log.Printf("[INFO]: %s - initializing client transport listeners", execName)
+ infof("%s - initializing client transport listeners", execName)
launched, ptListeners = clientSetup()
} else {
- log.Printf("[INFO]: %s - initializing server transport listeners", execName)
+ infof("%s - initializing server transport listeners", execName)
launched, ptListeners = serverSetup()
}
if !launched {
@@ -428,9 +432,9 @@ func main() {
os.Exit(-1)
}
- log.Printf("[INFO]: %s - launched and accepting connections", execName)
+ infof("%s - launched and accepting connections", execName)
defer func() {
- log.Printf("[INFO]: %s - terminated", execName)
+ infof("%s - terminated", execName)
}()
// At this point, the pt config protocol is finished, and incoming