]> git.r.bdr.sh - rbdr/mobius/commitdiff
Make UserFlags public
authorJeff Halter <redacted>
Sun, 23 Apr 2023 19:25:15 +0000 (12:25 -0700)
committerJeff Halter <redacted>
Sun, 23 Apr 2023 19:25:15 +0000 (12:25 -0700)
hotline/client.go
hotline/client_conn.go
hotline/server.go
hotline/transaction_handlers.go
hotline/user.go

index f978c16a0e5e493ab06f10f96fee824de4f014c7..ffd0fb3c1cb2c1607848c52278dcfcdf9c9ecd6a 100644 (file)
@@ -423,7 +423,7 @@ func (c *Client) renderUserList() {
        c.UI.userList.Clear()
        for _, u := range c.UserList {
                flagBitmap := big.NewInt(int64(binary.BigEndian.Uint16(u.Flags)))
-               if flagBitmap.Bit(userFlagAdmin) == 1 {
+               if flagBitmap.Bit(UserFlagAdmin) == 1 {
                        _, _ = fmt.Fprintf(c.UI.userList, "[red::b]%s[-:-:-]\n", u.Name)
                } else {
                        _, _ = fmt.Fprintf(c.UI.userList, "%s\n", u.Name)
index 0a5a108da9fa706a0b3f6c410131c1944b006cfa..48a6947b7fbbc325995f21d3b1103d784b199d27 100644 (file)
@@ -102,7 +102,7 @@ func (cc *ClientConn) handleTransaction(transaction Transaction) error {
                // the user is no longer away
                if cc.Idle {
                        flagBitmap := big.NewInt(int64(binary.BigEndian.Uint16(cc.Flags)))
-                       flagBitmap.SetBit(flagBitmap, userFlagAway, 0)
+                       flagBitmap.SetBit(flagBitmap, UserFlagAway, 0)
                        binary.BigEndian.PutUint16(cc.Flags, uint16(flagBitmap.Int64()))
                        cc.Idle = false
 
index 500087a96159b171626b23198e978181c5b2ecc1..386562b48adb2754d6054a141c717f1898e464b3 100644 (file)
@@ -313,7 +313,7 @@ func (s *Server) keepaliveHandler() {
                                c.Idle = true
 
                                flagBitmap := big.NewInt(int64(binary.BigEndian.Uint16(c.Flags)))
-                               flagBitmap.SetBit(flagBitmap, userFlagAway, 1)
+                               flagBitmap.SetBit(flagBitmap, UserFlagAway, 1)
                                binary.BigEndian.PutUint16(c.Flags, uint16(flagBitmap.Int64()))
 
                                c.sendAll(
index 7864e19240a3b435e183600934812b79ffd9b387..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)))
-       if flagBitmap.Bit(userFLagRefusePChat) == 1 {
+       if flagBitmap.Bit(UserFlagRefusePChat) == 1 {
                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.SetBit(flagBitmap, userFlagAdmin, 1)
+                               flagBitmap.SetBit(flagBitmap, UserFlagAdmin, 1)
                        } else {
-                               flagBitmap.SetBit(flagBitmap, userFlagAdmin, 0)
+                               flagBitmap.SetBit(flagBitmap, UserFlagAdmin, 0)
                        }
                        binary.BigEndian.PutUint16(c.Flags, uint16(flagBitmap.Int64()))
 
@@ -955,13 +955,13 @@ func HandleTranAgreed(cc *ClientConn, t *Transaction) (res []Transaction, err er
 
        // 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 {
-               flagBitmap.SetBit(flagBitmap, userFLagRefusePChat, 1)
+               flagBitmap.SetBit(flagBitmap, UserFlagRefusePChat, 1)
                binary.BigEndian.PutUint16(cc.Flags, uint16(flagBitmap.Int64()))
        }
 
@@ -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
-                       cc.Server.writeBanList()
                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.writeBanList()
+               }
+
+               err := cc.Server.writeBanList()
+               if err != nil {
+                       return res, err
                }
        }
 
@@ -1644,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)))
 
-               flagBitmap.SetBit(flagBitmap, userFlagRefusePM, optBitmap.Bit(refusePM))
+               flagBitmap.SetBit(flagBitmap, UserFlagRefusePM, optBitmap.Bit(refusePM))
                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
@@ -1742,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)))
-       if flagBitmap.Bit(userFLagRefusePChat) == 1 {
+       if flagBitmap.Bit(UserFlagRefusePChat) == 1 {
                res = append(res,
                        *NewTransaction(
                                TranServerMsg,
index a86aebab66219b7e0acb66611b42cce63efb7dd5..34fe1ab0fd3d450f8ad5b3e5b61dbcd977534716 100644 (file)
@@ -4,12 +4,12 @@ import (
        "encoding/binary"
 )
 
-// User flags are stored as a 2 byte bitmap with the following values:
+// User flags are stored as a 2 byte bitmap and represent various user states
 const (
-       userFlagAway        = 0 // User is away
-       userFlagAdmin       = 1 // User is admin
-       userFlagRefusePM    = 2 // User refuses private messages
-       userFLagRefusePChat = 3 // User refuses private chat
+       UserFlagAway        = 0 // User is away
+       UserFlagAdmin       = 1 // User is admin
+       UserFlagRefusePM    = 2 // User refuses private messages
+       UserFlagRefusePChat = 3 // User refuses private chat
 )
 
 // FieldOptions flags are sent from v1.5+ clients as part of TranAgreed