Fix clash tracker

This commit is contained in:
世界
2022-10-01 09:56:09 +08:00
parent 1173fdea64
commit 29d08e63b5
4 changed files with 128 additions and 12 deletions

View File

@@ -31,9 +31,7 @@ import (
)
func init() {
experimental.RegisterClashServerConstructor(func(router adapter.Router, logFactory log.ObservableFactory, options option.ClashAPIOptions) (adapter.ClashServer, error) {
return NewServer(router, logFactory, options)
})
experimental.RegisterClashServerConstructor(NewServer)
}
var _ adapter.ClashServer = (*Server)(nil)
@@ -51,7 +49,7 @@ type Server struct {
cacheFile adapter.ClashCacheFile
}
func NewServer(router adapter.Router, logFactory log.ObservableFactory, options option.ClashAPIOptions) (*Server, error) {
func NewServer(router adapter.Router, logFactory log.ObservableFactory, options option.ClashAPIOptions) (adapter.ClashServer, error) {
trafficManager := trafficontrol.NewManager()
chiRouter := chi.NewRouter()
server := &Server{

View File

@@ -101,8 +101,14 @@ func NewTCPTracker(conn net.Conn, manager *Manager, metadata Metadata, router ad
download := atomic.NewInt64(0)
t := &tcpTracker{
ExtendedConn: trackerconn.New(conn, upload, download, directIO),
manager: manager,
ExtendedConn: trackerconn.NewHook(conn, func(n int64) {
upload.Add(n)
manager.PushUploaded(n)
}, func(n int64) {
download.Add(n)
manager.PushDownloaded(n)
}, directIO),
manager: manager,
trackerInfo: &trackerInfo{
UUID: uuid,
Start: time.Now(),
@@ -182,8 +188,14 @@ func NewUDPTracker(conn N.PacketConn, manager *Manager, metadata Metadata, route
download := atomic.NewInt64(0)
ut := &udpTracker{
PacketConn: trackerconn.NewPacket(conn, upload, download),
manager: manager,
PacketConn: trackerconn.NewHookPacket(conn, func(n int64) {
upload.Add(n)
manager.PushUploaded(n)
}, func(n int64) {
download.Add(n)
manager.PushDownloaded(n)
}),
manager: manager,
trackerInfo: &trackerInfo{
UUID: uuid,
Start: time.Now(),