From 23411fc23dcf82e0ed35a780bfdda2341bedf819 Mon Sep 17 00:00:00 2001 From: Jeff Halter <868228+jhalter@users.noreply.github.com> Date: Wed, 8 Jun 2022 20:54:07 -0700 Subject: Add flag to enable optional stats HTTP endpoint MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit re: #29 TODO: add more stat counters Usage: ``` ./mobius-hotline-server -stats-port 5503 ``` ``` ❯ curl -s localhost:5503 | jq . { "LoginCount": 0, "StartTime": "2022-06-08T20:49:10.183921-07:00", "DownloadCounter": 0, "UploadCounter": 0 } ``` --- hotline/server.go | 8 ++++++-- hotline/stats.go | 7 ++++--- 2 files changed, 10 insertions(+), 5 deletions(-) (limited to 'hotline') diff --git a/hotline/server.go b/hotline/server.go index 1a6d163..76cc248 100644 --- a/hotline/server.go +++ b/hotline/server.go @@ -693,6 +693,8 @@ func (s *Server) handleFileTransfer(conn io.ReadWriteCloser) error { switch fileTransfer.Type { case FileDownload: + s.Stats.DownloadCounter += 1 + fullFilePath, err := readPath(s.Config.FileRoot, fileTransfer.FilePath, fileTransfer.FileName) if err != nil { return err @@ -744,6 +746,8 @@ func (s *Server) handleFileTransfer(conn io.ReadWriteCloser) error { } } case FileUpload: + s.Stats.UploadCounter += 1 + destinationFile := s.Config.FileRoot + ReadFilePath(fileTransfer.FilePath) + "/" + string(fileTransfer.FileName) var file *os.File @@ -829,6 +833,8 @@ func (s *Server) handleFileTransfer(conn io.ReadWriteCloser) error { i := 0 err = filepath.Walk(fullFilePath+"/", func(path string, info os.FileInfo, err error) error { + s.Stats.DownloadCounter += 1 + if err != nil { return err } @@ -1039,8 +1045,6 @@ func (s *Server) handleFileTransfer(conn io.ReadWriteCloser) error { nextAction = dlFldrActionResumeFile } - fmt.Printf("Next Action: %v\n", nextAction) - if _, err := conn.Write([]byte{0, uint8(nextAction)}); err != nil { return err } diff --git a/hotline/stats.go b/hotline/stats.go index dd8ea1d..4b9119d 100644 --- a/hotline/stats.go +++ b/hotline/stats.go @@ -6,9 +6,10 @@ import ( ) type Stats struct { - LoginCount int `yaml:"login count"` - StartTime time.Time `yaml:"start time"` - Uptime time.Duration `yaml:"uptime"` + LoginCount int `yaml:"login count"` + StartTime time.Time `yaml:"start time"` + DownloadCounter int + UploadCounter int } func (s *Stats) String() string { -- cgit