Add: Record network traffic

This commit is contained in:
Dreamacro
2018-06-17 22:41:32 +08:00
parent 46b8e2eec1
commit bc4ca2818b
6 changed files with 104 additions and 16 deletions

View File

@ -27,6 +27,7 @@ type Tunnel struct {
observable *observable.Observable
logCh chan interface{}
configLock *sync.RWMutex
traffic *C.Traffic
}
func (t *Tunnel) Add(req C.ServerAdapter) {
@ -61,7 +62,7 @@ func (t *Tunnel) UpdateConfig() (err error) {
continue
}
ssURL := fmt.Sprintf("ss://%s:%s@%s:%s", proxy[3], proxy[4], proxy[1], proxy[2])
ss, err := adapters.NewShadowSocks(key.Name(), ssURL)
ss, err := adapters.NewShadowSocks(key.Name(), ssURL, t.traffic)
if err != nil {
return err
}
@ -70,7 +71,7 @@ func (t *Tunnel) UpdateConfig() (err error) {
}
// init proxy
proxys["DIRECT"] = adapters.NewDirect()
proxys["DIRECT"] = adapters.NewDirect(t.traffic)
proxys["REJECT"] = adapters.NewReject()
// parse rules
@ -167,7 +168,7 @@ func (t *Tunnel) match(addr *C.Addr) C.Proxy {
return a
}
}
t.logCh <- newLog(INFO, "don't find, direct")
t.logCh <- newLog(INFO, "%v doesn't match any rule using DIRECT", addr.String())
return t.proxys["DIRECT"]
}
@ -179,6 +180,7 @@ func newTunnel() *Tunnel {
observable: observable.NewObservable(logCh),
logCh: logCh,
configLock: &sync.RWMutex{},
traffic: C.NewTraffic(time.Second),
}
go tunnel.process()
go tunnel.subscribeLogs()