mirror of https://github.com/bjdgyc/anylink.git
63 lines
1.5 KiB
Go
63 lines
1.5 KiB
Go
package dbdata
|
|
|
|
import (
|
|
"encoding/json"
|
|
|
|
"xorm.io/xorm"
|
|
)
|
|
|
|
type SearchCon struct {
|
|
Username string `json:"username"`
|
|
Src string `json:"src"`
|
|
Dst string `json:"dst"`
|
|
DstPort string `json:"dst_port"`
|
|
AccessProto string `json:"access_proto"`
|
|
Date []string `json:"date"`
|
|
Info string `json:"info"`
|
|
Sort int `json:"sort"`
|
|
}
|
|
|
|
func GetAuditSession(search string) *xorm.Session {
|
|
session := xdb.Where("1=1")
|
|
if search == "" {
|
|
return session
|
|
}
|
|
var searchData SearchCon
|
|
err := json.Unmarshal([]byte(search), &searchData)
|
|
if err != nil {
|
|
return session
|
|
}
|
|
if searchData.Username != "" {
|
|
session.And("username = ?", searchData.Username)
|
|
}
|
|
if searchData.Src != "" {
|
|
session.And("src = ?", searchData.Src)
|
|
}
|
|
if searchData.Dst != "" {
|
|
session.And("dst = ?", searchData.Dst)
|
|
}
|
|
if searchData.DstPort != "" {
|
|
session.And("dst_port = ?", searchData.DstPort)
|
|
}
|
|
if searchData.AccessProto != "" {
|
|
session.And("access_proto = ?", searchData.AccessProto)
|
|
}
|
|
if len(searchData.Date) > 0 && searchData.Date[0] != "" {
|
|
session.And("created_at BETWEEN ? AND ?", searchData.Date[0], searchData.Date[1])
|
|
}
|
|
if searchData.Info != "" {
|
|
session.And("info LIKE ?", "%"+searchData.Info+"%")
|
|
}
|
|
if searchData.Sort == 1 {
|
|
session.OrderBy("id desc")
|
|
} else {
|
|
session.OrderBy("id asc")
|
|
}
|
|
return session
|
|
}
|
|
|
|
func ClearAccessAudit(ts string) (int64, error) {
|
|
affected, err := xdb.Where("created_at < '" + ts + "'").Delete(&AccessAudit{})
|
|
return affected, err
|
|
}
|