[Pkg-privacy-commits] [obfs4proxy] 94/151: Add support for "logLevel" to reduce log spam.

Ximin Luo infinity0 at moszumanska.debian.org
Sat Aug 22 12:59:43 UTC 2015


This is an automated email from the git hooks/post-receive script.

infinity0 pushed a commit to branch master
in repository obfs4proxy.

commit 25178c6a951eeb94c427a1a22f372473e41bea97
Author: Yawning Angel <yawning at torproject.org>
Date:   Wed Sep 3 09:05:18 2014 +0000

    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.
---
 .../weighted_dist_test.go => obfs4proxy/log.go     | 77 +++++++++++-----------
 obfs4proxy/obfs4proxy.go                           | 42 ++++++------
 2 files changed, 62 insertions(+), 57 deletions(-)

diff --git a/common/probdist/weighted_dist_test.go b/obfs4proxy/log.go
similarity index 60%
copy from common/probdist/weighted_dist_test.go
copy to obfs4proxy/log.go
index b705add..22f345c 100644
--- a/common/probdist/weighted_dist_test.go
+++ b/obfs4proxy/log.go
@@ -25,56 +25,57 @@
  * POSSIBILITY OF SUCH DAMAGE.
  */
 
-package probdist
+package main
 
 import (
 	"fmt"
-	"testing"
+	"log"
+	"strings"
+)
 
-	"git.torproject.org/pluggable-transports/obfs4.git/common/drbg"
+const (
+	levelError = iota
+	levelWarn
+	levelInfo
 )
 
-const debug = false
+var logLevel = levelInfo
 
-func TestWeightedDist(t *testing.T) {
-	seed, err := drbg.NewSeed()
-	if err != nil {
-		t.Fatal("failed to generate a DRBG seed:", err)
+func errorf(format string, a ...interface{}) {
+	if enableLogging && logLevel >= levelError {
+		msg := fmt.Sprintf(format, a...)
+		log.Print("[ERROR]: " + msg)
 	}
+}
 
-	const nrTrials = 1000000
-
-	hist := make([]int, 1000)
-
-	w := New(seed, 0, 999, true)
-	if debug {
-		// Dump a string representation of the probability table.
-		fmt.Println("Table:")
-		var sum float64
-		for _, weight := range w.weights {
-			sum += weight
-		}
-		for i, weight := range w.weights {
-			p := weight / sum
-			if p > 0.000001 { // Filter out tiny values.
-				fmt.Printf(" [%d]: %f\n", w.minValue+w.values[i], p)
-			}
-		}
-		fmt.Println()
+func warnf(format string, a ...interface{}) {
+	if enableLogging && logLevel >= levelWarn {
+		msg := fmt.Sprintf(format, a...)
+		log.Print("[WARN]: " + msg)
 	}
+}
 
-	for i := 0; i < nrTrials; i++ {
-		value := w.Sample()
-		hist[value]++
+func infof(format string, a ...interface{}) {
+	if enableLogging && logLevel >= levelInfo {
+		msg := fmt.Sprintf(format, a...)
+		log.Print("[INFO]: " + msg)
 	}
+}
+
+func setLogLevel(logLevelStr string) error {
+	switch strings.ToUpper(logLevelStr) {
+	case "ERROR":
+		logLevel = levelError
+
+	case "WARN":
+		logLevel = levelWarn
 
-	if debug {
-		fmt.Println("Generated:")
-		for value, count := range hist {
-			if count != 0 {
-				p := float64(count) / float64(nrTrials)
-				fmt.Printf(" [%d]: %f (%d)\n", value, p, count)
-			}
-		}
+	case "INFO":
+		logLevel = levelInfo
+
+	default:
+		return fmt.Errorf("invalid log level '%s'", logLevelStr)
 	}
+
+	return nil
 }
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

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-privacy/packages/obfs4proxy.git



More information about the Pkg-privacy-commits mailing list