优化活动日志代码

This commit is contained in:
lanrenwo 2022-11-08 12:19:32 +08:00
commit 2bc2ade5d8
10 changed files with 84 additions and 66 deletions

View File

@ -51,3 +51,29 @@ func SetAuditExport(w http.ResponseWriter, r *http.Request) {
gocsv.Marshal(datas, w)
}
func UserActLogList(w http.ResponseWriter, r *http.Request) {
_ = r.ParseForm()
pageS := r.FormValue("page")
page, _ := strconv.Atoi(pageS)
if page < 1 {
page = 1
}
var datas []dbdata.UserActLog
session := dbdata.UserActLogIns.GetSession(r.Form)
count, err := dbdata.FindAndCount(session, &datas, dbdata.PageSize, page)
if err != nil && !dbdata.CheckErrNotFound(err) {
RespError(w, RespInternalErr, err)
return
}
data := map[string]interface{}{
"count": count,
"page_size": dbdata.PageSize,
"datas": datas,
"statusOps": dbdata.UserActLogIns.GetStatusOpsWithTag(),
"osOps": dbdata.UserActLogIns.OsOps,
"clientOps": dbdata.UserActLogIns.ClientOps,
}
RespSucess(w, data)
}

View File

@ -178,7 +178,7 @@ func UserOnline(w http.ResponseWriter, r *http.Request) {
func UserOffline(w http.ResponseWriter, r *http.Request) {
_ = r.ParseForm()
token := r.FormValue("token")
sessdata.CloseSess(token)
sessdata.CloseSess(token, 4)
RespSucess(w, nil)
}

View File

@ -1,34 +0,0 @@
package admin
import (
"net/http"
"strconv"
"github.com/bjdgyc/anylink/dbdata"
)
func UserActLogList(w http.ResponseWriter, r *http.Request) {
_ = r.ParseForm()
pageS := r.FormValue("page")
page, _ := strconv.Atoi(pageS)
if page < 1 {
page = 1
}
var datas []dbdata.UserActLog
session := dbdata.UserActLogIns.GetSession(r.Form)
count, err := dbdata.FindAndCount(session, &datas, dbdata.PageSize, page)
if err != nil && !dbdata.CheckErrNotFound(err) {
RespError(w, RespInternalErr, err)
return
}
data := map[string]interface{}{
"count": count,
"page_size": dbdata.PageSize,
"datas": datas,
"statusOps": dbdata.UserActLogIns.GetStatusOpsWithTag(),
"osOps": dbdata.UserActLogIns.OsOps,
"clientOps": dbdata.UserActLogIns.ClientOps,
}
RespSucess(w, data)
}

View File

@ -45,6 +45,7 @@ func StartAdmin() {
r.HandleFunc("/set/other/audit_log/edit", SetOtherAuditLogEdit)
r.HandleFunc("/set/audit/list", SetAuditList)
r.HandleFunc("/set/audit/export", SetAuditExport)
r.HandleFunc("/set/audit/act_log_list", UserActLogList)
r.HandleFunc("/user/list", UserList)
r.HandleFunc("/user/detail", UserDetail)
@ -63,7 +64,6 @@ func StartAdmin() {
r.HandleFunc("/user/policy/detail", PolicyDetail)
r.HandleFunc("/user/policy/set", PolicySet)
r.HandleFunc("/user/policy/del", PolicyDel)
r.HandleFunc("/user/act_log/list", UserActLogList)
r.HandleFunc("/group/list", GroupList)
r.HandleFunc("/group/names", GroupNames)

View File

@ -11,10 +11,16 @@ import (
)
const (
UserAuthFail = 0 // 认证失败
UserAuthSuccess = 1 // 认证成功
UserConnected = 2 // 连线成功
UserLogout = 3 // 用户登出
UserAuthFail = 0 // 认证失败
UserAuthSuccess = 1 // 认证成功
UserConnected = 2 // 连线成功
UserLogout = 3 // 用户登出
UserLogoutLose = 0 // 用户掉线
UserLogoutBanner = 1 // 用户banner弹窗取消
UserLogoutClient = 2 // 用户主动登出
UserLogoutTimeout = 3 // 用户超时登出
UserLogoutAdmin = 4 // 账号被管理员踢下线
UserLogoutExpire = 5 // 账号过期被踢下线
)
type UserActLogProcess struct {
@ -48,9 +54,12 @@ var (
2: "Unknown",
},
InfoOps: []string{ // 信息
0: "用户掉线",
1: "用户/客户端主动断开",
2: "用户被踢下线(管理员/账号过期)",
UserLogoutLose: "用户掉线",
UserLogoutBanner: "用户取消弹窗",
UserLogoutClient: "用户/客户端主动断开",
UserLogoutTimeout: "Session过期被踢下线",
UserLogoutAdmin: "账号被管理员踢下线",
UserLogoutExpire: "账号过期被踢下线",
},
}
)
@ -104,8 +113,7 @@ func (ua *UserActLogProcess) GetStatusOpsWithTag() interface{} {
}
func (ua *UserActLogProcess) GetInfoOpsById(id uint8) string {
infoMap := ua.InfoOps
return infoMap[id]
return ua.InfoOps[id]
}
func (ua *UserActLogProcess) ParseUserAgent(userAgent string) (os_idx, client_idx uint8, ver string) {

View File

@ -43,7 +43,6 @@ func LinkAuth(w http.ResponseWriter, r *http.Request) {
return
}
// fmt.Printf("%+v \n", cr)
setCommonHeader(w)
if cr.Type == "logout" {
// 退出删除session信息
@ -100,6 +99,8 @@ func LinkAuth(w http.ResponseWriter, r *http.Request) {
sess.Group = cr.GroupSelect
sess.MacAddr = strings.ToLower(cr.MacAddressList.MacAddress)
sess.UniqueIdGlobal = cr.DeviceId.UniqueIdGlobal
sess.UserAgent = userAgent
sess.RemoteAddr = r.RemoteAddr
// 获取客户端mac地址
macHw, err := net.ParseMAC(sess.MacAddr)
if err != nil {

View File

@ -7,6 +7,7 @@ import (
"time"
"github.com/bjdgyc/anylink/base"
"github.com/bjdgyc/anylink/dbdata"
"github.com/bjdgyc/anylink/pkg/utils"
"github.com/bjdgyc/anylink/sessdata"
)
@ -55,7 +56,7 @@ func LinkCstp(conn net.Conn, bufRW *bufio.ReadWriter, cSess *sessdata.ConnSessio
// do nothing
// base.Debug("recv keepalive", cSess.IpAddr)
case 0x05: // DISCONNECT
cSess.UserDisconnect = true
cSess.UserLogoutCode = dbdata.UserLogoutClient
base.Debug("DISCONNECT", cSess.IpAddr)
return
case 0x03: // DPD-REQ

View File

@ -5,6 +5,7 @@ import (
"time"
"github.com/bjdgyc/anylink/base"
"github.com/bjdgyc/anylink/dbdata"
"github.com/bjdgyc/anylink/pkg/utils"
"github.com/bjdgyc/anylink/sessdata"
)
@ -57,7 +58,7 @@ func LinkDtls(conn net.Conn, cSess *sessdata.ConnSession) {
// do nothing
// base.Debug("recv keepalive", cSess.IpAddr)
case 0x05: // DISCONNECT
cSess.UserDisconnect = true
cSess.UserLogoutCode = dbdata.UserLogoutClient
base.Debug("DISCONNECT DTLS", cSess.IpAddr)
return
case 0x03: // DPD-REQ

View File

@ -37,8 +37,7 @@ type ConnSession struct {
IfName string
Client string // 客户端 mobile pc
UserAgent string // 客户端信息
UserDisconnect bool // 用户/客户端主动登出
UserKickout bool // 被踢下线
UserLogoutCode uint8 // 用户/客户端主动登出
CstpDpd int
Group *dbdata.Group
Limit *LimitRater
@ -76,6 +75,8 @@ type Session struct {
Group string
AuthStep string
AuthPass string
RemoteAddr string
UserAgent string
LastLogin time.Time
IsActive bool
@ -113,7 +114,7 @@ func checkSession() {
// 删除过期session
for _, v := range outToken {
CloseSess(v)
CloseSess(v, dbdata.UserLogoutTimeout)
}
}
}()
@ -133,7 +134,7 @@ func CloseUserLimittimeSession() {
}
sessMux.RUnlock()
for _, v := range limitTimeToken {
CloseSess(v)
CloseSess(v, dbdata.UserLogoutExpire)
}
}
@ -411,7 +412,7 @@ func DelSess(token string) {
// sessions.Delete(token)
}
func CloseSess(token string) {
func CloseSess(token string, code ...uint8) {
sessMux.Lock()
defer sessMux.Unlock()
sess, ok := sessions[token]
@ -421,8 +422,15 @@ func CloseSess(token string) {
delete(sessions, token)
delete(dtlsIds, sess.DtlsSid)
sess.CSess.UserKickout = true
sess.CSess.Close()
if sess.CSess != nil {
if len(code) > 0 {
sess.CSess.UserLogoutCode = code[0]
}
sess.CSess.Close()
return
}
AddUserActLogBySess(sess)
}
func CloseCSess(token string) {
@ -433,14 +441,16 @@ func CloseCSess(token string) {
return
}
sess.CSess.Close()
if sess.CSess != nil {
sess.CSess.Close()
}
}
func DelSessByStoken(stoken string) {
stoken = strings.TrimSpace(stoken)
sarr := strings.Split(stoken, "@")
token := sarr[1]
CloseSess(token)
CloseSess(token, dbdata.UserLogoutBanner)
}
func AddUserActLog(cs *ConnSession) {
@ -451,13 +461,18 @@ func AddUserActLog(cs *ConnSession) {
RemoteAddr: cs.RemoteAddr,
Status: dbdata.UserLogout,
}
infoId := uint8(0)
switch {
case cs.UserDisconnect:
infoId = 1
case cs.UserKickout:
infoId = 2
}
ua.Info = dbdata.UserActLogIns.GetInfoOpsById(infoId)
ua.Info = dbdata.UserActLogIns.GetInfoOpsById(cs.UserLogoutCode)
dbdata.UserActLogIns.Add(ua, cs.UserAgent)
}
func AddUserActLogBySess(sess *Session) {
ua := dbdata.UserActLog{
Username: sess.Username,
GroupName: sess.Group,
IpAddr: "",
RemoteAddr: sess.RemoteAddr,
Status: dbdata.UserLogout,
}
ua.Info = dbdata.UserActLogIns.GetInfoOpsById(1)
dbdata.UserActLogIns.Add(ua, sess.UserAgent)
}

View File

@ -193,7 +193,7 @@ export default {
getData(page) {
console.log(this.searchForm)
this.page = page
axios.get('/user/act_log/list', {
axios.get('/set/audit/act_log_list', {
params: {
page: page,
username: this.searchForm.username || '',