aboutsummaryrefslogtreecommitdiff
path: root/hotline
diff options
context:
space:
mode:
authorJeff Halter <868228+jhalter@users.noreply.github.com>2023-04-23 12:25:15 -0700
committerJeff Halter <868228+jhalter@users.noreply.github.com>2023-04-23 12:25:15 -0700
commitb1658a46aebe8aceb23af187de956ef91452f48a (patch)
tree58916799f543d89f4cb34a3a29c9d4a0250ac0dc /hotline
parent48ecca21dde5b1c8a3f34bad60512503292c7141 (diff)
Make UserFlags public
Diffstat (limited to 'hotline')
-rw-r--r--hotline/client.go2
-rw-r--r--hotline/client_conn.go2
-rw-r--r--hotline/server.go2
-rw-r--r--hotline/transaction_handlers.go23
-rw-r--r--hotline/user.go10
5 files changed, 21 insertions, 18 deletions
diff --git a/hotline/client.go b/hotline/client.go
index f978c16..ffd0fb3 100644
--- a/hotline/client.go
+++ b/hotline/client.go
@@ -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)
diff --git a/hotline/client_conn.go b/hotline/client_conn.go
index 0a5a108..48a6947 100644
--- a/hotline/client_conn.go
+++ b/hotline/client_conn.go
@@ -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
diff --git a/hotline/server.go b/hotline/server.go
index 500087a..386562b 100644
--- a/hotline/server.go
+++ b/hotline/server.go
@@ -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(
diff --git a/hotline/transaction_handlers.go b/hotline/transaction_handlers.go
index 7864e19..5de2b45 100644
--- a/hotline/transaction_handlers.go
+++ b/hotline/transaction_handlers.go
@@ -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,
diff --git a/hotline/user.go b/hotline/user.go
index a86aeba..34fe1ab 100644
--- a/hotline/user.go
+++ b/hotline/user.go
@@ -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