]> git.r.bdr.sh - rbdr/mobius/blobdiff - hotline/server.go
Refactor and cleanup
[rbdr/mobius] / hotline / server.go
index 1da2859ba479773c65d3176ab3c87f41e34459b3..7b409d5921fae8a1fcdc55fc12d33f2ebc7625ed 100644 (file)
@@ -365,7 +365,7 @@ func (s *Server) DeleteUser(login string) error {
 
        delete(s.Accounts, login)
 
-       return os.Remove(s.ConfigDir + "Users/" + login + ".yaml")
+       return FS.Remove(s.ConfigDir + "Users/" + login + ".yaml")
 }
 
 func (s *Server) connectedUsers() []Field {
@@ -538,9 +538,16 @@ func (s *Server) handleNewConnection(conn net.Conn) error {
        // assume simplified hotline v1.2.3 login flow that does not require agreement
        if *c.Version == nil {
                c.Agreed = true
-               if _, err := c.notifyNewUserHasJoined(); err != nil {
-                       return err
-               }
+
+               c.notifyOthers(
+                       *NewTransaction(
+                               tranNotifyChangeUser, nil,
+                               NewField(fieldUserName, c.UserName),
+                               NewField(fieldUserID, *c.ID),
+                               NewField(fieldUserIconID, *c.Icon),
+                               NewField(fieldUserFlags, *c.Flags),
+                       ),
+               )
        }
 
        c.Server.Stats.LoginCount += 1
@@ -609,13 +616,14 @@ const dlFldrActionNextFile = 3
 func (s *Server) TransferFile(conn net.Conn) error {
        defer func() { _ = conn.Close() }()
 
-       buf := make([]byte, 1024)
-       if _, err := conn.Read(buf); err != nil {
+       txBuf := make([]byte, 16)
+       _, err := conn.Read(txBuf)
+       if err != nil {
                return err
        }
 
        var t transfer
-       _, err := t.Write(buf[:16])
+       _, err = t.Write(txBuf)
        if err != nil {
                return err
        }
@@ -667,11 +675,16 @@ func (s *Server) TransferFile(conn net.Conn) error {
                        }
                }
        case FileUpload:
-               if _, err := conn.Read(buf); err != nil {
+               const buffSize = 1460
+
+               uploadBuf := make([]byte, buffSize)
+
+               _, err := conn.Read(uploadBuf)
+               if err != nil {
                        return err
                }
 
-               ffo := ReadFlattenedFileObject(buf)
+               ffo := ReadFlattenedFileObject(uploadBuf)
                payloadLen := len(ffo.BinaryMarshal())
                fileSize := int(binary.BigEndian.Uint32(ffo.FlatFileDataForkHeader.DataSize))
 
@@ -691,9 +704,7 @@ func (s *Server) TransferFile(conn net.Conn) error {
 
                defer func() { _ = newFile.Close() }()
 
-               const buffSize = 1024
-
-               if _, err := newFile.Write(buf[payloadLen:]); err != nil {
+               if _, err := newFile.Write(uploadBuf[payloadLen:]); err != nil {
                        return err
                }
                receivedBytes := buffSize - payloadLen