feat: 完善日志审计功能
- 实现文件系统日志(FilesystemLog)记录文件管理器操作 - 实现操作日志(OperationLog)记录用户操作行为 - 实现数据库SQL日志(DatabaseSQLLog)模型和API - 实现SSH会话命令记录(SessionCommand)含命令输出和风险等级 - 添加IP提取服务支持X-Real-IP和X-Forwarded-For - 添加日志自动清理功能 - 修复ProFormSwitch required验证问题 - 修复设置页面默认值问题 - 修复文件上传错误检测逻辑 - 修复资产树key前缀问题 - 添加VNC/RDP设置默认值 - 修复文件管理标题翻译
This commit is contained in:
+17
-30
@@ -65,10 +65,10 @@ func (api PortalApi) AssetsTreeEndpoint(c echo.Context) error {
|
||||
tree := make([]maps.Map, 0)
|
||||
for _, g := range groups {
|
||||
node := maps.Map{
|
||||
"key": g.ID,
|
||||
"key": "group_" + g.ID,
|
||||
"title": g.Name,
|
||||
"isLeaf": false,
|
||||
"children": buildPortalAssetChildren(items, g.ID, keyword),
|
||||
"children": []interface{}{},
|
||||
}
|
||||
tree = append(tree, node)
|
||||
}
|
||||
@@ -77,7 +77,7 @@ func (api PortalApi) AssetsTreeEndpoint(c echo.Context) error {
|
||||
continue
|
||||
}
|
||||
node := maps.Map{
|
||||
"key": a.ID,
|
||||
"key": "asset_" + a.ID,
|
||||
"title": a.Name,
|
||||
"isLeaf": true,
|
||||
"extra": maps.Map{
|
||||
@@ -93,29 +93,6 @@ func (api PortalApi) AssetsTreeEndpoint(c echo.Context) error {
|
||||
return Success(c, tree)
|
||||
}
|
||||
|
||||
func buildPortalAssetChildren(assets []model.Asset, groupId, keyword string) []maps.Map {
|
||||
children := make([]maps.Map, 0)
|
||||
for _, a := range assets {
|
||||
if keyword != "" && !containsKeyword(a.Name, keyword) {
|
||||
continue
|
||||
}
|
||||
node := maps.Map{
|
||||
"key": a.ID,
|
||||
"title": a.Name,
|
||||
"isLeaf": true,
|
||||
"extra": maps.Map{
|
||||
"protocol": a.Protocol,
|
||||
"logo": "",
|
||||
"status": "unknown",
|
||||
"network": a.IP,
|
||||
"wolEnabled": false,
|
||||
},
|
||||
}
|
||||
children = append(children, node)
|
||||
}
|
||||
return children
|
||||
}
|
||||
|
||||
func containsKeyword(name, keyword string) bool {
|
||||
if keyword == "" {
|
||||
return true
|
||||
@@ -139,7 +116,7 @@ func (api PortalApi) WebsitesTreeEndpoint(c echo.Context) error {
|
||||
continue
|
||||
}
|
||||
node := maps.Map{
|
||||
"key": w.ID,
|
||||
"key": "website_" + w.ID,
|
||||
"title": w.Name,
|
||||
"isLeaf": true,
|
||||
"extra": maps.Map{
|
||||
@@ -159,7 +136,7 @@ func (api PortalApi) AssetsGroupTreeEndpoint(c echo.Context) error {
|
||||
tree := make([]maps.Map, 0)
|
||||
for _, g := range groups {
|
||||
node := maps.Map{
|
||||
"key": g.ID,
|
||||
"key": "group_" + g.ID,
|
||||
"title": g.Name,
|
||||
"isLeaf": false,
|
||||
"children": []interface{}{},
|
||||
@@ -186,7 +163,8 @@ func (api PortalApi) CreateSessionEndpoint(c echo.Context) error {
|
||||
|
||||
account, _ := GetCurrentAccount(c)
|
||||
|
||||
s, err := service.SessionService.Create(c.RealIP(), assetId, nt.Native, account)
|
||||
clientIP := service.PropertyService.GetClientIP(c)
|
||||
s, err := service.SessionService.Create(clientIP, assetId, nt.Native, account)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -201,7 +179,16 @@ func (api PortalApi) CreateSessionEndpoint(c echo.Context) error {
|
||||
"id": s.ID,
|
||||
"protocol": s.Protocol,
|
||||
"assetName": assetName,
|
||||
"strategy": maps.Map{},
|
||||
"strategy": maps.Map{
|
||||
"upload": s.Upload == "1",
|
||||
"download": s.Download == "1",
|
||||
"delete": s.Delete == "1",
|
||||
"rename": s.Rename == "1",
|
||||
"edit": s.Edit == "1",
|
||||
"copy": s.Copy == "1",
|
||||
"paste": s.Paste == "1",
|
||||
"fileSystem": s.FileSystem == "1",
|
||||
},
|
||||
"url": "",
|
||||
"watermark": maps.Map{},
|
||||
"readonly": false,
|
||||
|
||||
Reference in New Issue
Block a user