]> git.r.bdr.sh - rbdr/mobius/blobdiff - hotline/server.go
Read banner once at startup
[rbdr/mobius] / hotline / server.go
index dde469d8b63555d9c4ddaee664bedccf680b1ceb..b5bb0d515cde11cf2bc6cb013bbc6a04b7ba3aa1 100644 (file)
@@ -2,6 +2,7 @@ package hotline
 
 import (
        "bufio"
+       "bytes"
        "context"
        "encoding/binary"
        "errors"
@@ -48,6 +49,7 @@ type Server struct {
        Config    *Config
        ConfigDir string
        Logger    *zap.SugaredLogger
+       banner    []byte
 
        PrivateChatsMu sync.Mutex
        PrivateChats   map[uint32]*PrivateChat
@@ -270,6 +272,11 @@ func NewServer(configDir, netInterface string, netPort int, logger *zap.SugaredL
                server.Config.FileRoot = filepath.Join(configDir, server.Config.FileRoot)
        }
 
+       server.banner, err = os.ReadFile(filepath.Join(server.ConfigDir, server.Config.BannerFile))
+       if err != nil {
+               return nil, fmt.Errorf("error opening banner: %w", err)
+       }
+
        *server.NextGuestID = 1
 
        if server.Config.EnableTrackerRegistration {
@@ -840,8 +847,8 @@ func (s *Server) handleFileTransfer(ctx context.Context, rwc io.ReadWriter) erro
 
        switch fileTransfer.Type {
        case bannerDownload:
-               if err := s.bannerDownload(rwc); err != nil {
-                       return err
+               if _, err := io.Copy(rwc, bytes.NewBuffer(s.banner)); err != nil {
+                       return fmt.Errorf("error sending banner: %w", err)
                }
        case FileDownload:
                s.Stats.DownloadCounter += 1