From 73096eae13e5ecafbbeaaea94c08b34332683335 Mon Sep 17 00:00:00 2001 From: lanrenwo Date: Fri, 11 Nov 2022 15:05:58 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E4=BC=98=E5=8C=96=E5=AE=A1=E8=AE=A1?= =?UTF-8?q?=E6=97=A5=E5=BF=97=E7=9A=84UI=20+=20=E5=A2=9E=E5=8A=A0=E5=AE=A2?= =?UTF-8?q?=E6=88=B7=E7=AB=AF=E7=9A=84=E7=B3=BB=E7=BB=9F=E5=9E=8B=E5=8F=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/dbdata/tables.go | 24 +++++++------ server/dbdata/user_act_log.go | 12 ++++--- server/handler/link_auth.go | 12 ++++--- server/handler/link_tunnel.go | 12 ++++--- server/sessdata/session.go | 52 ++++++++++++++++------------- web/src/components/audit/ActLog.vue | 43 ++++++++++++++---------- web/src/pages/set/Audit.vue | 8 ++--- 7 files changed, 93 insertions(+), 70 deletions(-) diff --git a/server/dbdata/tables.go b/server/dbdata/tables.go index fccb102..5f0505c 100644 --- a/server/dbdata/tables.go +++ b/server/dbdata/tables.go @@ -41,17 +41,19 @@ type User struct { } type UserActLog struct { - Id int `json:"id" xorm:"pk autoincr not null"` - 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)"` - 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)"` - Status uint8 `json:"status" xorm:"not null default 0 Int"` - Info string `json:"info" xorm:"varchar(255) not null default ''"` // 详情 - CreatedAt time.Time `json:"created_at" xorm:"DateTime created"` + Id int `json:"id" xorm:"pk autoincr not null"` + 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)"` + 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)"` + DeviceType string `json:"device_type" xorm:"varchar(60) not null default ''"` + PlatformVersion string `json:"platform_version" xorm:"varchar(15) not null default ''"` + Status uint8 `json:"status" xorm:"not null default 0 Int"` + Info string `json:"info" xorm:"varchar(255) not null default ''"` // 详情 + CreatedAt time.Time `json:"created_at" xorm:"DateTime created"` } type IpMap struct { diff --git a/server/dbdata/user_act_log.go b/server/dbdata/user_act_log.go index c3f4ce2..0a283dd 100644 --- a/server/dbdata/user_act_log.go +++ b/server/dbdata/user_act_log.go @@ -55,7 +55,7 @@ var ( }, InfoOps: []string{ // 信息 UserLogoutLose: "用户掉线", - UserLogoutBanner: "用户取消弹窗", + UserLogoutBanner: "用户取消弹窗/客户端发起的logout", UserLogoutClient: "用户/客户端主动断开", UserLogoutTimeout: "Session过期被踢下线", UserLogoutAdmin: "账号被管理员踢下线", @@ -121,8 +121,8 @@ func (ua *UserActLogProcess) ParseUserAgent(userAgent string) (os_idx, client_id if len(userAgent) == 0 { return 5, 2, "" } - // os - os_idx = 2 + // OS + os_idx = 5 if strings.Contains(userAgent, "windows") { os_idx = 0 } else if strings.Contains(userAgent, "mac os") || strings.Contains(userAgent, "darwin_i386") { @@ -131,15 +131,17 @@ func (ua *UserActLogProcess) ParseUserAgent(userAgent string) (os_idx, client_id os_idx = 4 } else if strings.Contains(userAgent, "android") { os_idx = 3 + } else if strings.Contains(userAgent, "linux") { + os_idx = 2 } - // client + // Client client_idx = 2 if strings.Contains(userAgent, "anyconnect") { client_idx = 0 } else if strings.Contains(userAgent, "openconnect") { client_idx = 1 } - // ver + // Verion uaSlice := strings.Split(userAgent, " ") ver = uaSlice[len(uaSlice)-1] if ver[0] == 'v' { diff --git a/server/handler/link_auth.go b/server/handler/link_auth.go index 698f4b2..e7715fd 100644 --- a/server/handler/link_auth.go +++ b/server/handler/link_auth.go @@ -67,10 +67,12 @@ func LinkAuth(w http.ResponseWriter, r *http.Request) { } // 用户活动日志 ua := dbdata.UserActLog{ - Username: cr.Auth.Username, - GroupName: cr.GroupSelect, - RemoteAddr: r.RemoteAddr, - Status: dbdata.UserAuthSuccess, + Username: cr.Auth.Username, + GroupName: cr.GroupSelect, + RemoteAddr: r.RemoteAddr, + Status: dbdata.UserAuthSuccess, + DeviceType: cr.DeviceId.DeviceType, + PlatformVersion: cr.DeviceId.PlatformVersion, } // TODO 用户密码校验 err = dbdata.CheckUser(cr.Auth.Username, cr.Auth.Password, cr.GroupSelect) @@ -100,6 +102,8 @@ func LinkAuth(w http.ResponseWriter, r *http.Request) { sess.MacAddr = strings.ToLower(cr.MacAddressList.MacAddress) sess.UniqueIdGlobal = cr.DeviceId.UniqueIdGlobal sess.UserAgent = userAgent + sess.DeviceType = ua.DeviceType + sess.PlatformVersion = ua.PlatformVersion sess.RemoteAddr = r.RemoteAddr // 获取客户端mac地址 macHw, err := net.ParseMAC(sess.MacAddr) diff --git a/server/handler/link_tunnel.go b/server/handler/link_tunnel.go index 30d9fc4..021bd02 100644 --- a/server/handler/link_tunnel.go +++ b/server/handler/link_tunnel.go @@ -196,11 +196,13 @@ func LinkTunnel(w http.ResponseWriter, r *http.Request) { return } dbdata.UserActLogIns.Add(dbdata.UserActLog{ - Username: sess.Username, - GroupName: sess.Group, - IpAddr: cSess.IpAddr.String(), - RemoteAddr: cSess.RemoteAddr, - Status: dbdata.UserConnected, + Username: sess.Username, + GroupName: sess.Group, + IpAddr: cSess.IpAddr.String(), + RemoteAddr: cSess.RemoteAddr, + DeviceType: sess.DeviceType, + PlatformVersion: sess.PlatformVersion, + Status: dbdata.UserConnected, }, cSess.UserAgent) go LinkCstp(conn, bufRW, cSess) diff --git a/server/sessdata/session.go b/server/sessdata/session.go index 4638f9b..d5a0f95 100644 --- a/server/sessdata/session.go +++ b/server/sessdata/session.go @@ -64,19 +64,21 @@ type DtlsSession struct { } type Session struct { - mux sync.RWMutex - Sid string // auth返回的 session-id - Token string // session信息的唯一token - DtlsSid string // dtls协议的 session_id - MacAddr string // 客户端mac地址 - UniqueIdGlobal string // 客户端唯一标示 - MacHw net.HardwareAddr - Username string // 用户名 - Group string - AuthStep string - AuthPass string - RemoteAddr string - UserAgent string + mux sync.RWMutex + Sid string // auth返回的 session-id + Token string // session信息的唯一token + DtlsSid string // dtls协议的 session_id + MacAddr string // 客户端mac地址 + UniqueIdGlobal string // 客户端唯一标示 + MacHw net.HardwareAddr + Username string // 用户名 + Group string + AuthStep string + AuthPass string + RemoteAddr string + UserAgent string + DeviceType string + PlatformVersion string LastLogin time.Time IsActive bool @@ -455,11 +457,13 @@ func DelSessByStoken(stoken string) { func AddUserActLog(cs *ConnSession) { ua := dbdata.UserActLog{ - Username: cs.Sess.Username, - GroupName: cs.Sess.Group, - IpAddr: cs.IpAddr.String(), - RemoteAddr: cs.RemoteAddr, - Status: dbdata.UserLogout, + Username: cs.Sess.Username, + GroupName: cs.Sess.Group, + IpAddr: cs.IpAddr.String(), + RemoteAddr: cs.RemoteAddr, + DeviceType: cs.Sess.DeviceType, + PlatformVersion: cs.Sess.PlatformVersion, + Status: dbdata.UserLogout, } ua.Info = dbdata.UserActLogIns.GetInfoOpsById(cs.UserLogoutCode) dbdata.UserActLogIns.Add(ua, cs.UserAgent) @@ -467,11 +471,13 @@ func AddUserActLog(cs *ConnSession) { func AddUserActLogBySess(sess *Session) { ua := dbdata.UserActLog{ - Username: sess.Username, - GroupName: sess.Group, - IpAddr: "", - RemoteAddr: sess.RemoteAddr, - Status: dbdata.UserLogout, + Username: sess.Username, + GroupName: sess.Group, + IpAddr: "", + RemoteAddr: sess.RemoteAddr, + DeviceType: sess.DeviceType, + PlatformVersion: sess.PlatformVersion, + Status: dbdata.UserLogout, } ua.Info = dbdata.UserActLogIns.GetInfoOpsById(1) dbdata.UserActLogIns.Add(ua, sess.UserAgent) diff --git a/web/src/components/audit/ActLog.vue b/web/src/components/audit/ActLog.vue index 0f1f4fc..ab0e79e 100644 --- a/web/src/components/audit/ActLog.vue +++ b/web/src/components/audit/ActLog.vue @@ -67,12 +67,12 @@ prop="id" label="ID" sortable="custom" - width="60"> + width="100"> + width="140"> {{item.value}} - + + + + + + min-width="210"> - + + width="150">