diff --git a/shapeshifter.go b/shapeshifter.go index 5387a6d2ade00351c41037004a6b3b5a86d0b4ca..f201e0702638f4268eaf9ab8ae747cc58efa4f62 100644 --- a/shapeshifter.go +++ b/shapeshifter.go @@ -13,11 +13,16 @@ import ( "golang.org/x/net/proxy" ) +type Logger interface { + Log(msg string) +} + type ShapeShifter struct { Cert string IatMode int Target string // remote ip:port obfs4 server SocksAddr string // -proxylistenaddr in shapeshifter-dispatcher + Logger Logger ln net.Listener errChan chan error } @@ -54,13 +59,6 @@ func (ss *ShapeShifter) GetErrorChannel() chan error { return ss.errChan } -func (ss *ShapeShifter) GetLastError() error { - if ss.errChan == nil { - ss.errChan = make(chan error, 2) - } - return <-ss.errChan -} - func (ss ShapeShifter) clientAcceptLoop() error { for { conn, err := ss.ln.Accept() @@ -147,6 +145,11 @@ func (ss *ShapeShifter) checkOptions() error { } func (ss *ShapeShifter) sendError(format string, a ...interface{}) { + if ss.Logger != nil { + ss.Logger.Log(fmt.Sprintf(format, a...)) + return + } + if ss.errChan == nil { ss.errChan = make(chan error, 2) }