update session monitor

This commit is contained in:
Jason
2019-08-19 13:40:18 +08:00
parent 1339f663a3
commit da32caa5d1
2 changed files with 18 additions and 15 deletions

View File

@@ -15,16 +15,12 @@ func init() {
registerInitFn(func() {
if *args.EnableMonitor {
monitor = session.New()
// Set session variables
session.ServeAddr = *args.MonitorAddr
monitor = session.New(*args.MonitorAddr)
// Start session monitor
if err := monitor.Start(); err != nil {
log.Fatalf("Start session monitor failed: %v", err)
}
log.Infof("Session monitor serving at %v", session.ServeAddr)
} else {
monitor = nil
}

View File

@@ -20,13 +20,13 @@ const maxCompletedSessions = 100
var (
ServeAddr = "localhost:6001"
ServePath = "/session/plain"
)
type Server struct {
sync.Mutex
*http.Server
ServeAddr string
ServePath string
trafficUp int64
trafficDown int64
@@ -34,8 +34,11 @@ type Server struct {
completedSessions []Session
}
func New() *Server {
return &Server{}
func New(addr string) *Server {
return &Server{
ServeAddr: addr,
ServePath: "/session/plain",
}
}
func (s *Server) handler(resp http.ResponseWriter, req *http.Request) {
@@ -122,12 +125,16 @@ table, th, td {
}
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 {
return errors.New("address format error")
}
tcpAddr, err := net.ResolveTCPAddr("tcp", ServeAddr)
tcpAddr, err := net.ResolveTCPAddr("tcp", s.ServeAddr)
if err != nil {
return err
}
@@ -139,10 +146,10 @@ func (s *Server) Start() error {
mux := http.NewServeMux()
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)
s.Server = &http.Server{Addr: ServeAddr, Handler: mux}
mux.HandleFunc(s.ServePath, s.handler)
s.Server = &http.Server{Addr: s.ServeAddr, Handler: mux}
go func() {
s.Serve(c)
}()