"bufio"
"bytes"
"context"
+ "crypto/rand"
"encoding/binary"
"errors"
"fmt"
"log"
"log/slog"
"math/big"
- "math/rand"
"net"
"os"
"path"
}
func (s *Server) ListenAndServe(ctx context.Context, cancelRoot context.CancelFunc) error {
- s.Logger.Info("Hotline server started",
- "version", VERSION,
- "API port", fmt.Sprintf("%s:%v", s.NetInterface, s.Port),
- "Transfer port", fmt.Sprintf("%s:%v", s.NetInterface, s.Port+1),
- )
-
var wg sync.WaitGroup
wg.Add(1)
_ = server.loadBanList(filepath.Join(configDir, "Banlist.yaml"))
if err := server.loadThreadedNews(filepath.Join(configDir, "ThreadedNews.yaml")); err != nil {
- return nil, err
+ return nil, fmt.Errorf("error loading threaded news: %w", err)
}
if err := server.loadConfig(filepath.Join(configDir, "config.yaml")); err != nil {
defer s.PrivateChatsMu.Unlock()
randID := make([]byte, 4)
- rand.Read(randID)
+ _, _ = rand.Read(randID)
+
data := binary.BigEndian.Uint32(randID)
s.PrivateChats[data] = &PrivateChat{