mirror of
https://github.com/xjasonlyu/tun2socks.git
synced 2025-10-13 20:44:12 +08:00
update session monitor
This commit is contained in:
@@ -15,16 +15,12 @@ func init() {
|
|||||||
|
|
||||||
registerInitFn(func() {
|
registerInitFn(func() {
|
||||||
if *args.EnableMonitor {
|
if *args.EnableMonitor {
|
||||||
monitor = session.New()
|
monitor = session.New(*args.MonitorAddr)
|
||||||
|
|
||||||
// Set session variables
|
|
||||||
session.ServeAddr = *args.MonitorAddr
|
|
||||||
|
|
||||||
// Start session monitor
|
// Start session monitor
|
||||||
if err := monitor.Start(); err != nil {
|
if err := monitor.Start(); err != nil {
|
||||||
log.Fatalf("Start session monitor failed: %v", err)
|
log.Fatalf("Start session monitor failed: %v", err)
|
||||||
}
|
}
|
||||||
log.Infof("Session monitor serving at %v", session.ServeAddr)
|
|
||||||
} else {
|
} else {
|
||||||
monitor = nil
|
monitor = nil
|
||||||
}
|
}
|
||||||
|
@@ -20,13 +20,13 @@ const maxCompletedSessions = 100
|
|||||||
|
|
||||||
var (
|
var (
|
||||||
ServeAddr = "localhost:6001"
|
ServeAddr = "localhost:6001"
|
||||||
ServePath = "/session/plain"
|
|
||||||
)
|
|
||||||
|
|
||||||
type Server struct {
|
type Server struct {
|
||||||
sync.Mutex
|
sync.Mutex
|
||||||
*http.Server
|
*http.Server
|
||||||
|
|
||||||
|
ServeAddr string
|
||||||
|
ServePath string
|
||||||
|
|
||||||
trafficUp int64
|
trafficUp int64
|
||||||
trafficDown int64
|
trafficDown int64
|
||||||
|
|
||||||
@@ -34,8 +34,11 @@ type Server struct {
|
|||||||
completedSessions []Session
|
completedSessions []Session
|
||||||
}
|
}
|
||||||
|
|
||||||
func New() *Server {
|
func New(addr string) *Server {
|
||||||
return &Server{}
|
return &Server{
|
||||||
|
ServeAddr: addr,
|
||||||
|
ServePath: "/session/plain",
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *Server) handler(resp http.ResponseWriter, req *http.Request) {
|
func (s *Server) handler(resp http.ResponseWriter, req *http.Request) {
|
||||||
@@ -122,12 +125,16 @@ table, th, td {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (s *Server) Start() error {
|
func (s *Server) Start() error {
|
||||||
_, port, err := net.SplitHostPort(ServeAddr)
|
if s.ServePath == "" || s.ServePath == "/" {
|
||||||
|
return errors.New("invalid serve path")
|
||||||
|
}
|
||||||
|
|
||||||
|
_, port, err := net.SplitHostPort(s.ServeAddr)
|
||||||
if port == "0" || port == "" || err != nil {
|
if port == "0" || port == "" || err != nil {
|
||||||
return errors.New("address format error")
|
return errors.New("address format error")
|
||||||
}
|
}
|
||||||
|
|
||||||
tcpAddr, err := net.ResolveTCPAddr("tcp", ServeAddr)
|
tcpAddr, err := net.ResolveTCPAddr("tcp", s.ServeAddr)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
@@ -139,10 +146,10 @@ func (s *Server) Start() error {
|
|||||||
|
|
||||||
mux := http.NewServeMux()
|
mux := http.NewServeMux()
|
||||||
mux.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
|
mux.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
|
||||||
http.Redirect(w, r, ServePath, 301)
|
http.Redirect(w, r, s.ServePath, 301)
|
||||||
})
|
})
|
||||||
mux.HandleFunc(ServePath, s.handler)
|
mux.HandleFunc(s.ServePath, s.handler)
|
||||||
s.Server = &http.Server{Addr: ServeAddr, Handler: mux}
|
s.Server = &http.Server{Addr: s.ServeAddr, Handler: mux}
|
||||||
go func() {
|
go func() {
|
||||||
s.Serve(c)
|
s.Serve(c)
|
||||||
}()
|
}()
|
||||||
|
Reference in New Issue
Block a user