aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--internal/mobius/transaction_handlers.go16
1 files changed, 5 insertions, 11 deletions
diff --git a/internal/mobius/transaction_handlers.go b/internal/mobius/transaction_handlers.go
index 5181e15..c5b1bbb 100644
--- a/internal/mobius/transaction_handlers.go
+++ b/internal/mobius/transaction_handlers.go
@@ -8,6 +8,7 @@ import (
"fmt"
"io"
"math/big"
+ "net"
"os"
"path"
"strings"
@@ -89,13 +90,6 @@ const (
ErrMsgCreateAlias = "Error creating alias"
)
-// This function is used to extract the IP address from a given address string, exluding the port.
-func extractIP(addr string) string {
- if idx := strings.LastIndex(addr, ":"); idx != -1 {
- return addr[:idx]
- }
- return addr
-}
// Converts bytes from Mac Roman encoding to UTF-8
var txtDecoder = charmap.Macintosh.NewDecoder()
@@ -1048,7 +1042,7 @@ func HandleTranAgreed(cc *hotline.ClientConn, t *hotline.Transaction) (res []hot
if cc.Server.Redis != nil {
login := cc.Account.Login
- ip := extractIP(cc.RemoteAddr)
+ ip, _, _ := net.SplitHostPort(cc.RemoteAddr)
// Remove old entry (login::ip)
cc.Server.Redis.SRem(context.Background(), "mobius:online", login+"::"+ip)
// Add new entry with login, nickname, ip
@@ -1182,7 +1176,7 @@ func HandleDisconnectUser(cc *hotline.ClientConn, t *hotline.Transaction) (res [
))
banUntil := time.Now().Add(hotline.BanDuration)
- ip := strings.Split(clientConn.RemoteAddr, ":")[0]
+ ip, _, _ := net.SplitHostPort(clientConn.RemoteAddr)
err := cc.Server.BanList.Add(ip, &banUntil)
if err != nil {
@@ -1200,7 +1194,7 @@ func HandleDisconnectUser(cc *hotline.ClientConn, t *hotline.Transaction) (res [
hotline.NewField(hotline.FieldChatOptions, []byte{0, 0}),
))
- ip := strings.Split(clientConn.RemoteAddr, ":")[0]
+ ip, _, _ := net.SplitHostPort(clientConn.RemoteAddr)
err := cc.Server.BanList.Add(ip, nil)
if err != nil {
@@ -1790,7 +1784,7 @@ func HandleSetClientUserInfo(cc *hotline.ClientConn, t *hotline.Transaction) (re
cc.UserName = t.GetField(hotline.FieldUserName).Data
if cc.Server.Redis != nil {
login := cc.Account.Login
- ip := extractIP(cc.RemoteAddr)
+ ip, _, _ := net.SplitHostPort(cc.RemoteAddr)
// Remove old entry (login:oldnickname:ip) and (login::ip)
cc.Server.Redis.SRem(context.Background(), "mobius:online", login+"::"+ip)
if oldNickname != "" {