]> git.r.bdr.sh - rbdr/mobius/blobdiff - hotline/transaction_handlers.go
Fix scanner buffer re-use for fileItemScanner (#104)
[rbdr/mobius] / hotline / transaction_handlers.go
index 813d25c072185ab9f80f32915a702d28a7777da5..5de2b452dec9ab9f7ccb8ae715786e5549e43655 100644 (file)
@@ -334,7 +334,7 @@ func HandleSendInstantMsg(cc *ClientConn, t *Transaction) (res []Transaction, er
 
        // Check if target user has "Refuse private messages" flag
        flagBitmap := big.NewInt(int64(binary.BigEndian.Uint16(otherClient.Flags)))
 
        // Check if target user has "Refuse private messages" flag
        flagBitmap := big.NewInt(int64(binary.BigEndian.Uint16(otherClient.Flags)))
-       if flagBitmap.Bit(userFLagRefusePChat) == 1 {
+       if flagBitmap.Bit(UserFlagRefusePChat) == 1 {
                res = append(res,
                        *NewTransaction(
                                TranServerMsg,
                res = append(res,
                        *NewTransaction(
                                TranServerMsg,
@@ -671,9 +671,9 @@ func HandleSetUser(cc *ClientConn, t *Transaction) (res []Transaction, err error
 
                        flagBitmap := big.NewInt(int64(binary.BigEndian.Uint16(c.Flags)))
                        if c.Authorize(accessDisconUser) {
 
                        flagBitmap := big.NewInt(int64(binary.BigEndian.Uint16(c.Flags)))
                        if c.Authorize(accessDisconUser) {
-                               flagBitmap.SetBit(flagBitmap, userFlagAdmin, 1)
+                               flagBitmap.SetBit(flagBitmap, UserFlagAdmin, 1)
                        } else {
                        } else {
-                               flagBitmap.SetBit(flagBitmap, userFlagAdmin, 0)
+                               flagBitmap.SetBit(flagBitmap, UserFlagAdmin, 0)
                        }
                        binary.BigEndian.PutUint16(c.Flags, uint16(flagBitmap.Int64()))
 
                        }
                        binary.BigEndian.PutUint16(c.Flags, uint16(flagBitmap.Int64()))
 
@@ -808,7 +808,7 @@ func HandleUpdateUser(cc *ClientConn, t *Transaction) (res []Transaction, err er
                        }
 
                        newAccess := accessBitmap{}
                        }
 
                        newAccess := accessBitmap{}
-                       copy(newAccess[:], getField(FieldUserAccess, &subFields).Data[:])
+                       copy(newAccess[:], getField(FieldUserAccess, &subFields).Data)
 
                        // Prevent account from creating new account with greater permission
                        for i := 0; i < 64; i++ {
 
                        // Prevent account from creating new account with greater permission
                        for i := 0; i < 64; i++ {
@@ -846,7 +846,7 @@ func HandleNewUser(cc *ClientConn, t *Transaction) (res []Transaction, err error
        }
 
        newAccess := accessBitmap{}
        }
 
        newAccess := accessBitmap{}
-       copy(newAccess[:], t.GetField(FieldUserAccess).Data[:])
+       copy(newAccess[:], t.GetField(FieldUserAccess).Data)
 
        // Prevent account from creating new account with greater permission
        for i := 0; i < 64; i++ {
 
        // Prevent account from creating new account with greater permission
        for i := 0; i < 64; i++ {
@@ -955,13 +955,13 @@ func HandleTranAgreed(cc *ClientConn, t *Transaction) (res []Transaction, err er
 
        // Check refuse private PM option
        if optBitmap.Bit(refusePM) == 1 {
 
        // Check refuse private PM option
        if optBitmap.Bit(refusePM) == 1 {
-               flagBitmap.SetBit(flagBitmap, userFlagRefusePM, 1)
+               flagBitmap.SetBit(flagBitmap, UserFlagRefusePM, 1)
                binary.BigEndian.PutUint16(cc.Flags, uint16(flagBitmap.Int64()))
        }
 
        // Check refuse private chat option
        if optBitmap.Bit(refuseChat) == 1 {
                binary.BigEndian.PutUint16(cc.Flags, uint16(flagBitmap.Int64()))
        }
 
        // Check refuse private chat option
        if optBitmap.Bit(refuseChat) == 1 {
-               flagBitmap.SetBit(flagBitmap, userFLagRefusePChat, 1)
+               flagBitmap.SetBit(flagBitmap, UserFlagRefusePChat, 1)
                binary.BigEndian.PutUint16(cc.Flags, uint16(flagBitmap.Int64()))
        }
 
                binary.BigEndian.PutUint16(cc.Flags, uint16(flagBitmap.Int64()))
        }
 
@@ -1015,7 +1015,7 @@ func HandleTranOldPostNews(cc *ClientConn, t *Transaction) (res []Transaction, e
        }
 
        newsPost := fmt.Sprintf(newsTemplate+"\r", cc.UserName, time.Now().Format(newsDateTemplate), t.GetField(FieldData).Data)
        }
 
        newsPost := fmt.Sprintf(newsTemplate+"\r", cc.UserName, time.Now().Format(newsDateTemplate), t.GetField(FieldData).Data)
-       newsPost = strings.Replace(newsPost, "\n", "\r", -1)
+       newsPost = strings.ReplaceAll(newsPost, "\n", "\r")
 
        // update news in memory
        cc.Server.FlatNews = append([]byte(newsPost), cc.Server.FlatNews...)
 
        // update news in memory
        cc.Server.FlatNews = append([]byte(newsPost), cc.Server.FlatNews...)
@@ -1066,7 +1066,6 @@ func HandleDisconnectUser(cc *ClientConn, t *Transaction) (res []Transaction, er
 
                        banUntil := time.Now().Add(tempBanDuration)
                        cc.Server.banList[strings.Split(clientConn.RemoteAddr, ":")[0]] = &banUntil
 
                        banUntil := time.Now().Add(tempBanDuration)
                        cc.Server.banList[strings.Split(clientConn.RemoteAddr, ":")[0]] = &banUntil
-                       cc.Server.writeBanList()
                case 2:
                        // send message: "You are permanently banned on this server"
                        cc.logger.Infow("Disconnect & ban " + string(clientConn.UserName))
                case 2:
                        // send message: "You are permanently banned on this server"
                        cc.logger.Infow("Disconnect & ban " + string(clientConn.UserName))
@@ -1079,7 +1078,11 @@ func HandleDisconnectUser(cc *ClientConn, t *Transaction) (res []Transaction, er
                        ))
 
                        cc.Server.banList[strings.Split(clientConn.RemoteAddr, ":")[0]] = nil
                        ))
 
                        cc.Server.banList[strings.Split(clientConn.RemoteAddr, ":")[0]] = nil
-                       cc.Server.writeBanList()
+               }
+
+               err := cc.Server.writeBanList()
+               if err != nil {
+                       return res, err
                }
        }
 
                }
        }
 
@@ -1605,7 +1608,6 @@ func HandleUploadFile(cc *ClientConn, t *Transaction) (res []Transaction, err er
 
        // client has requested to resume a partially transferred file
        if transferOptions != nil {
 
        // client has requested to resume a partially transferred file
        if transferOptions != nil {
-
                fileInfo, err := cc.Server.FS.Stat(fullFilePath + incompleteFileSuffix)
                if err != nil {
                        return res, err
                fileInfo, err := cc.Server.FS.Stat(fullFilePath + incompleteFileSuffix)
                if err != nil {
                        return res, err
@@ -1645,10 +1647,10 @@ func HandleSetClientUserInfo(cc *ClientConn, t *Transaction) (res []Transaction,
                optBitmap := big.NewInt(int64(binary.BigEndian.Uint16(options)))
                flagBitmap := big.NewInt(int64(binary.BigEndian.Uint16(cc.Flags)))
 
                optBitmap := big.NewInt(int64(binary.BigEndian.Uint16(options)))
                flagBitmap := big.NewInt(int64(binary.BigEndian.Uint16(cc.Flags)))
 
-               flagBitmap.SetBit(flagBitmap, userFlagRefusePM, optBitmap.Bit(refusePM))
+               flagBitmap.SetBit(flagBitmap, UserFlagRefusePM, optBitmap.Bit(refusePM))
                binary.BigEndian.PutUint16(cc.Flags, uint16(flagBitmap.Int64()))
 
                binary.BigEndian.PutUint16(cc.Flags, uint16(flagBitmap.Int64()))
 
-               flagBitmap.SetBit(flagBitmap, userFLagRefusePChat, optBitmap.Bit(refuseChat))
+               flagBitmap.SetBit(flagBitmap, UserFlagRefusePChat, optBitmap.Bit(refuseChat))
                binary.BigEndian.PutUint16(cc.Flags, uint16(flagBitmap.Int64()))
 
                // Check auto response
                binary.BigEndian.PutUint16(cc.Flags, uint16(flagBitmap.Int64()))
 
                // Check auto response
@@ -1743,7 +1745,7 @@ func HandleInviteNewChat(cc *ClientConn, t *Transaction) (res []Transaction, err
        targetClient := cc.Server.Clients[binary.BigEndian.Uint16(targetID)]
 
        flagBitmap := big.NewInt(int64(binary.BigEndian.Uint16(targetClient.Flags)))
        targetClient := cc.Server.Clients[binary.BigEndian.Uint16(targetID)]
 
        flagBitmap := big.NewInt(int64(binary.BigEndian.Uint16(targetClient.Flags)))
-       if flagBitmap.Bit(userFLagRefusePChat) == 1 {
+       if flagBitmap.Bit(UserFlagRefusePChat) == 1 {
                res = append(res,
                        *NewTransaction(
                                TranServerMsg,
                res = append(res,
                        *NewTransaction(
                                TranServerMsg,