From ff9b7c7dcc46907a7d549501e27f0aa396b3be7f Mon Sep 17 00:00:00 2001 From: bjdgyc Date: Mon, 19 Aug 2024 15:11:13 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=20ipv6=20=E8=AE=B0=E5=BD=95?= =?UTF-8?q?=E6=98=BE=E7=A4=BA=E4=B8=8D=E5=85=A8=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/dbdata/tables.go | 2 +- server/dbdata/user_act_log.go | 4 +++- server/pkg/utils/ip.go | 14 ++++++++++++++ 3 files changed, 18 insertions(+), 2 deletions(-) diff --git a/server/dbdata/tables.go b/server/dbdata/tables.go index 752a2a0..7ba82a6 100644 --- a/server/dbdata/tables.go +++ b/server/dbdata/tables.go @@ -46,7 +46,7 @@ type UserActLog struct { Username string `json:"username" xorm:"varchar(60)"` GroupName string `json:"group_name" xorm:"varchar(60)"` IpAddr string `json:"ip_addr" xorm:"varchar(32)"` - RemoteAddr string `json:"remote_addr" xorm:"varchar(32)"` + RemoteAddr string `json:"remote_addr" xorm:"varchar(42)"` Os uint8 `json:"os" xorm:"not null default 0 Int"` Client uint8 `json:"client" xorm:"not null default 0 Int"` Version string `json:"version" xorm:"varchar(15)"` diff --git a/server/dbdata/user_act_log.go b/server/dbdata/user_act_log.go index 07179fc..f86a93c 100644 --- a/server/dbdata/user_act_log.go +++ b/server/dbdata/user_act_log.go @@ -6,6 +6,7 @@ import ( "strings" "github.com/bjdgyc/anylink/base" + "github.com/bjdgyc/anylink/pkg/utils" "github.com/ivpusic/grpool" "github.com/spf13/cast" "xorm.io/xorm" @@ -78,7 +79,8 @@ func (ua *UserActLogProcess) Add(u UserActLog, userAgent string) { u.Os = os_idx u.Client = client_idx u.Version = ver - u.RemoteAddr = strings.Split(u.RemoteAddr, ":")[0] + // u.RemoteAddr = strings.Split(u.RemoteAddr, ":")[0] + u.RemoteAddr = utils.GetAddrIp(u.RemoteAddr) // remove extra characters infoSlice := strings.Split(u.Info, " ") infoLen := len(infoSlice) diff --git a/server/pkg/utils/ip.go b/server/pkg/utils/ip.go index cb822ec..3e49a2e 100644 --- a/server/pkg/utils/ip.go +++ b/server/pkg/utils/ip.go @@ -3,6 +3,7 @@ package utils import ( "encoding/binary" "net" + "strings" ) func Long2ip(i uint32) net.IP { @@ -15,3 +16,16 @@ func Ip2long(ip net.IP) uint32 { ip = ip.To4() return binary.BigEndian.Uint32(ip) } + +// GetAddrIp 获取ip端口地址的ip数据 +func GetAddrIp(s string) string { + if strings.Contains(s, ":") { + ss := s[:strings.LastIndex(s, ":")] + if strings.HasPrefix(ss, "[") { + return strings.Trim(ss, "[]") + } + return ss + } + + return s +}