feat: 添加数据库资产、命令拦截器、授权资产等功能,修复GitHub Actions工作流

This commit is contained in:
2026-04-18 07:44:18 +08:00
parent 6e2e2f9387
commit 3c217ab039
64 changed files with 3308 additions and 760 deletions
+5 -5
View File
@@ -5,11 +5,11 @@ import (
)
type AccessToken struct {
ID string `gorm:"primary_key,type:varchar(36)" json:"id"`
UserId string `gorm:"index,type:varchar(200)" json:"userId"`
Token string `gorm:"index,type:varchar(128)" json:"token"`
Type string `gorm:"type:varchar(32);default:'api'" json:"type"`
Created common.JsonTime `json:"createdAt"`
ID string `gorm:"primary_key,type:varchar(36)" json:"id"`
UserId string `gorm:"index,type:varchar(200)" json:"userId"`
Token string `gorm:"index,type:varchar(128)" json:"token"`
Type string `gorm:"type:varchar(32);default:'api'" json:"type"`
Created common.JsonTime `json:"createdAt"`
}
func (r *AccessToken) TableName() string {
+20 -20
View File
@@ -3,16 +3,16 @@ package model
import "next-terminal/server/common"
type AgentGateway struct {
ID string `gorm:"primary_key,type:varchar(36)" json:"id"`
Name string `gorm:"type:varchar(500)" json:"name"`
IP string `gorm:"type:varchar(200)" json:"ip"`
OS string `gorm:"type:varchar(100)" json:"os"`
Arch string `gorm:"type:varchar(100)" json:"arch"`
Online bool `json:"online"`
Created common.JsonTime `json:"createdAt"`
Updated common.JsonTime `json:"updatedAt"`
Sort string `gorm:"type:varchar(50);default:''" json:"sort"`
Version string `gorm:"type:varchar(50)" json:"version"`
ID string `gorm:"primary_key,type:varchar(36)" json:"id"`
Name string `gorm:"type:varchar(500)" json:"name"`
IP string `gorm:"type:varchar(200)" json:"ip"`
OS string `gorm:"type:varchar(100)" json:"os"`
Arch string `gorm:"type:varchar(100)" json:"arch"`
Online bool `json:"online"`
Created common.JsonTime `json:"createdAt"`
Updated common.JsonTime `json:"updatedAt"`
Sort string `gorm:"type:varchar(50);default:''" json:"sort"`
Version string `gorm:"type:varchar(50)" json:"version"`
}
func (r *AgentGateway) TableName() string {
@@ -20,14 +20,14 @@ func (r *AgentGateway) TableName() string {
}
type AgentGatewayForPage struct {
ID string `json:"id"`
Name string `json:"name"`
IP string `json:"ip"`
OS string `json:"os"`
Arch string `json:"arch"`
Online bool `json:"online"`
Version string `json:"version"`
Sort string `json:"sort"`
Created int64 `json:"createdAt"`
Updated int64 `json:"updatedAt"`
ID string `json:"id"`
Name string `json:"name"`
IP string `json:"ip"`
OS string `json:"os"`
Arch string `json:"arch"`
Online bool `json:"online"`
Version string `json:"version"`
Sort string `json:"sort"`
Created int64 `json:"createdAt"`
Updated int64 `json:"updatedAt"`
}
+49
View File
@@ -0,0 +1,49 @@
package model
import "next-terminal/server/common"
type AuthorisedAsset struct {
ID string `gorm:"primary_key,type:varchar(36)" json:"id"`
UserId string `gorm:"index,type:varchar(36)" json:"userId"`
DepartmentId string `gorm:"index,type:varchar(36)" json:"departmentId"`
AssetId string `gorm:"index,type:varchar(36)" json:"assetId"`
AssetGroupId string `gorm:"index,type:varchar(36)" json:"assetGroupId"`
CommandFilterId string `gorm:"index,type:varchar(36)" json:"commandFilterId"`
StrategyId string `gorm:"index,type:varchar(36)" json:"strategyId"`
ExpiredAt int64 `json:"expiredAt"`
Created common.JsonTime `gorm:"type:datetime" json:"createdAt"`
}
func (m AuthorisedAsset) TableName() string {
return "authorised_assets"
}
type AuthorisedDatabaseAsset struct {
ID string `gorm:"primary_key,type:varchar(36)" json:"id"`
UserId string `gorm:"index,type:varchar(36)" json:"userId"`
DepartmentId string `gorm:"index,type:varchar(36)" json:"departmentId"`
DatabaseAssetId string `gorm:"index,type:varchar(36)" json:"databaseAssetId"`
CommandFilterId string `gorm:"index,type:varchar(36)" json:"commandFilterId"`
StrategyId string `gorm:"index,type:varchar(36)" json:"strategyId"`
ExpiredAt int64 `json:"expiredAt"`
Created common.JsonTime `gorm:"type:datetime" json:"createdAt"`
}
func (m AuthorisedDatabaseAsset) TableName() string {
return "authorised_database_assets"
}
type AuthorisedWebsite struct {
ID string `gorm:"primary_key,type:varchar(36)" json:"id"`
UserId string `gorm:"index,type:varchar(36)" json:"userId"`
DepartmentId string `gorm:"index,type:varchar(36)" json:"departmentId"`
WebsiteId string `gorm:"index,type:varchar(36)" json:"websiteId"`
CommandFilterId string `gorm:"index,type:varchar(36)" json:"commandFilterId"`
StrategyId string `gorm:"index,type:varchar(36)" json:"strategyId"`
ExpiredAt int64 `json:"expiredAt"`
Created common.JsonTime `gorm:"type:datetime" json:"createdAt"`
}
func (m AuthorisedWebsite) TableName() string {
return "authorised_websites"
}
+15 -15
View File
@@ -3,22 +3,22 @@ package model
import "next-terminal/server/common"
type Certificate struct {
ID string `gorm:"primary_key,type:varchar(36)" json:"id"`
CommonName string `gorm:"type:varchar(500)" json:"commonName"`
Subject string `gorm:"type:varchar(500)" json:"subject"`
Issuer string `gorm:"type:varchar(500)" json:"issuer"`
NotBefore common.JsonTime `json:"notBefore"`
NotAfter common.JsonTime `json:"notAfter"`
Type string `gorm:"type:varchar(20);default:'imported'" json:"type"`
StorageKey string `gorm:"type:varchar(100)" json:"storageKey"`
Certificate string `gorm:"type:text" json:"certificate"`
PrivateKey string `gorm:"type:text" json:"privateKey"`
ID string `gorm:"primary_key,type:varchar(36)" json:"id"`
CommonName string `gorm:"type:varchar(500)" json:"commonName"`
Subject string `gorm:"type:varchar(500)" json:"subject"`
Issuer string `gorm:"type:varchar(500)" json:"issuer"`
NotBefore common.JsonTime `gorm:"type:datetime" json:"notBefore"`
NotAfter common.JsonTime `gorm:"type:datetime" json:"notAfter"`
Type string `gorm:"type:varchar(20);default:'imported'" json:"type"`
StorageKey string `gorm:"type:varchar(100)" json:"storageKey"`
Certificate string `gorm:"type:text" json:"certificate"`
PrivateKey string `gorm:"type:text" json:"privateKey"`
RequireClientAuth bool `gorm:"default:false" json:"requireClientAuth"`
IssuedStatus string `gorm:"type:varchar(20);default:'success'" json:"issuedStatus"`
IssuedError string `gorm:"type:text" json:"issuedError"`
UpdatedAt common.JsonTime `json:"updatedAt"`
IsDefault bool `gorm:"default:false" json:"isDefault"`
Created common.JsonTime `json:"createdAt"`
IssuedStatus string `gorm:"type:varchar(20);default:'success'" json:"issuedStatus"`
IssuedError string `gorm:"type:text" json:"issuedError"`
UpdatedAt common.JsonTime `gorm:"type:datetime" json:"updatedAt"`
IsDefault bool `gorm:"default:false" json:"isDefault"`
Created common.JsonTime `gorm:"type:datetime" json:"createdAt"`
}
func (r *Certificate) TableName() string {
+27
View File
@@ -0,0 +1,27 @@
package model
import "next-terminal/server/common"
type CommandFilter struct {
ID string `gorm:"primary_key,type:varchar(36)" json:"id"`
Name string `gorm:"type:varchar(200)" json:"name"`
Created common.JsonTime `gorm:"type:datetime" json:"createdAt"`
}
func (r *CommandFilter) TableName() string {
return "command_filters"
}
type CommandFilterRule struct {
ID string `gorm:"primary_key,type:varchar(36)" json:"id"`
CommandFilterId string `gorm:"type:varchar(36);index" json:"commandFilterId"`
Type string `gorm:"type:varchar(20)" json:"type"`
Pattern string `gorm:"type:text" json:"pattern"`
Priority int `json:"priority"`
Action string `gorm:"type:varchar(20)" json:"action"`
Created common.JsonTime `gorm:"type:datetime" json:"createdAt"`
}
func (r *CommandFilterRule) TableName() string {
return "command_filter_rules"
}
+27
View File
@@ -0,0 +1,27 @@
package model
import "next-terminal/server/common"
type DatabaseAsset struct {
ID string `gorm:"primary_key,type:varchar(36)" json:"id"`
Name string `gorm:"type:varchar(500)" json:"name"`
Type string `gorm:"type:varchar(20)" json:"type"`
Host string `gorm:"type:varchar(200)" json:"host"`
Port int `json:"port"`
Database string `gorm:"type:varchar(200)" json:"database"`
Username string `gorm:"type:varchar(200)" json:"username"`
Password string `gorm:"type:varchar(500)" json:"password"`
Description string `json:"description"`
GatewayType string `gorm:"type:varchar(20)" json:"gatewayType"`
GatewayId string `gorm:"type:varchar(36)" json:"gatewayId"`
Tags string `json:"tags"`
Owner string `gorm:"index,type:varchar(36)" json:"owner"`
Encrypted bool `json:"encrypted"`
Created common.JsonTime `gorm:"type:datetime" json:"createdAt"`
Updated common.JsonTime `gorm:"type:datetime" json:"updatedAt"`
Sort int `json:"sort" gorm:"default:0"`
}
func (r *DatabaseAsset) TableName() string {
return "database_assets"
}
+7 -5
View File
@@ -3,11 +3,13 @@ package model
import "next-terminal/server/common"
type Department struct {
ID string `gorm:"primary_key,type:varchar(36)" json:"id"`
Name string `gorm:"type:varchar(200)" json:"name"`
ParentId string `gorm:"type:varchar(36)" json:"parentId"`
Sort int `json:"sort"`
Created common.JsonTime `json:"createdAt"`
ID string `gorm:"primary_key,type:varchar(36)" json:"id"`
Name string `gorm:"type:varchar(200)" json:"name"`
ParentId string `gorm:"type:varchar(36)" json:"parentId"`
Sort int `json:"weight"`
ParentName string `gorm:"-" json:"parentName"`
UserCount int64 `gorm:"-" json:"userCount"`
Created common.JsonTime `gorm:"type:datetime" json:"createdAt"`
}
func (r *Department) TableName() string {
+2
View File
@@ -16,6 +16,7 @@ type Job struct {
Metadata string `json:"metadata"`
Created common.JsonTime `json:"created"`
Updated common.JsonTime `json:"updated"`
LastExecAt common.JsonTime `json:"lastExecAt"`
}
func (r *Job) TableName() string {
@@ -27,6 +28,7 @@ type JobLog struct {
Timestamp common.JsonTime `json:"timestamp"`
JobId string `json:"jobId"`
Message string `json:"message"`
Results string `json:"results"`
}
func (r *JobLog) TableName() string {
+23 -23
View File
@@ -47,29 +47,29 @@ func (r *Session) TableName() string {
}
type SessionForPage struct {
ID string `json:"id" gorm:"column:id"`
Protocol string `json:"protocol" gorm:"column:protocol"`
IP string `json:"ip" gorm:"column:ip"`
Port int `json:"port" gorm:"column:port"`
Username string `json:"username" gorm:"column:username"`
ConnectionId string `json:"connectionId" gorm:"column:connection_id"`
AssetId string `json:"assetId" gorm:"column:asset_id"`
Creator string `json:"userId" gorm:"column:creator"`
ClientIP string `json:"clientIp" gorm:"column:client_ip"`
Width int `json:"width" gorm:"column:width"`
Height int `json:"height" gorm:"column:height"`
Status string `json:"status" gorm:"column:status"`
Recording string `json:"recording" gorm:"column:recording"`
ConnectedTime common.JsonTime `json:"connectedAt" gorm:"column:connected_time"`
DisconnectedTime common.JsonTime `json:"disconnectedAt" gorm:"column:disconnected_time"`
AssetName string `json:"assetName" gorm:"column:asset_name"`
CreatorName string `json:"userAccount" gorm:"column:creator_name"`
Code int `json:"code" gorm:"column:code"`
Message string `json:"message" gorm:"column:message"`
Mode string `json:"mode" gorm:"column:mode"`
Reviewed bool `json:"reviewed" gorm:"column:reviewed"`
CommandCount int64 `json:"commandCount" gorm:"column:command_count"`
ConnectionDuration string `json:"connectionDuration" gorm:"-"`
ID string `json:"id" gorm:"column:id"`
Protocol string `json:"protocol" gorm:"column:protocol"`
IP string `json:"ip" gorm:"column:ip"`
Port int `json:"port" gorm:"column:port"`
Username string `json:"username" gorm:"column:username"`
ConnectionId string `json:"connectionId" gorm:"column:connection_id"`
AssetId string `json:"assetId" gorm:"column:asset_id"`
Creator string `json:"userId" gorm:"column:creator"`
ClientIP string `json:"clientIp" gorm:"column:client_ip"`
Width int `json:"width" gorm:"column:width"`
Height int `json:"height" gorm:"column:height"`
Status string `json:"status" gorm:"column:status"`
Recording string `json:"recording" gorm:"column:recording"`
ConnectedTime common.JsonTime `json:"connectedAt" gorm:"column:connected_time"`
DisconnectedTime common.JsonTime `json:"disconnectedAt" gorm:"column:disconnected_time"`
AssetName string `json:"assetName" gorm:"column:asset_name"`
CreatorName string `json:"userAccount" gorm:"column:creator_name"`
Code int `json:"code" gorm:"column:code"`
Message string `json:"message" gorm:"column:message"`
Mode string `json:"mode" gorm:"column:mode"`
Reviewed bool `json:"reviewed" gorm:"column:reviewed"`
CommandCount int64 `json:"commandCount" gorm:"column:command_count"`
ConnectionDuration string `json:"connectionDuration" gorm:"-"`
}
type SessionForAccess struct {
+33 -33
View File
@@ -5,23 +5,23 @@ import (
)
type User struct {
ID string `gorm:"primary_key,type:varchar(36)" json:"id"`
Username string `gorm:"index,type:varchar(200)" json:"username"`
Password string `gorm:"type:varchar(500)" json:"-"`
TOTPSecret string `json:"-"`
Online *bool `json:"online"`
Status string `gorm:"type:varchar(10)" json:"status"`
Created common.JsonTime `json:"createdAt"`
Type string `gorm:"type:varchar(20)" json:"type"`
Nickname string `gorm:"type:varchar(500)" json:"nickname"`
Mail string `gorm:"type:varchar(500)" json:"mail"`
Phone string `gorm:"type:varchar(50)" json:"phone"`
Source string `gorm:"type:varchar(20)" json:"source"`
Recording string `gorm:"type:varchar(20);default:'enabled'" json:"recording"`
Watermark string `gorm:"type:varchar(20);default:'enabled'" json:"watermark"`
PublicKey string `gorm:"type:text" json:"publicKey"`
Remark string `gorm:"type:text" json:"remark"`
Roles []string `gorm:"-" json:"roles"`
ID string `gorm:"primary_key,type:varchar(36)" json:"id"`
Username string `gorm:"index,type:varchar(200)" json:"username"`
Password string `gorm:"type:varchar(500)" json:"-"`
TOTPSecret string `json:"-"`
Online *bool `json:"online"`
Status string `gorm:"type:varchar(10)" json:"status"`
Created common.JsonTime `json:"createdAt"`
Type string `gorm:"type:varchar(20)" json:"type"`
Nickname string `gorm:"type:varchar(500)" json:"nickname"`
Mail string `gorm:"type:varchar(500)" json:"mail"`
Phone string `gorm:"type:varchar(50)" json:"phone"`
Source string `gorm:"type:varchar(20)" json:"source"`
Recording string `gorm:"type:varchar(20);default:'enabled'" json:"recording"`
Watermark string `gorm:"type:varchar(20);default:'enabled'" json:"watermark"`
PublicKey string `gorm:"type:text" json:"publicKey"`
Remark string `gorm:"type:text" json:"remark"`
Roles []string `gorm:"-" json:"roles"`
Departments []UserDepartment `gorm:"-" json:"departments"`
}
@@ -31,22 +31,22 @@ type UserDepartment struct {
}
type UserForPage struct {
ID string `json:"id"`
Username string `json:"username"`
Nickname string `json:"nickname"`
TOTPSecret string `json:"totpSecret"`
Mail string `json:"mail"`
Phone string `json:"phone"`
Online bool `json:"online"`
Status string `json:"status"`
Created common.JsonTime `json:"createdAt"`
Type string `json:"type"`
Source string `json:"source"`
Recording string `json:"recording"`
Watermark string `json:"watermark"`
Remark string `json:"remark"`
SharerAssetCount int64 `json:"sharerAssetCount"`
Departments []UserDepartment `json:"departments"`
ID string `json:"id"`
Username string `json:"username"`
Nickname string `json:"nickname"`
TOTPSecret string `json:"totpSecret"`
Mail string `json:"mail"`
Phone string `json:"phone"`
Online bool `json:"online"`
Status string `json:"status"`
Created common.JsonTime `json:"createdAt"`
Type string `json:"type"`
Source string `json:"source"`
Recording string `json:"recording"`
Watermark string `json:"watermark"`
Remark string `json:"remark"`
SharerAssetCount int64 `json:"sharerAssetCount"`
Departments []UserDepartment `gorm:"-" json:"departments"`
LastLoginAt *common.JsonTime `json:"lastLoginAt"`
}
+22 -22
View File
@@ -3,28 +3,28 @@ package model
import "next-terminal/server/common"
type Website struct {
ID string `gorm:"primary_key,type:varchar(36)" json:"id"`
Name string `gorm:"type:varchar(500)" json:"name"`
Enabled bool `json:"enabled"`
TargetUrl string `gorm:"type:text" json:"targetUrl"`
TargetHost string `gorm:"type:varchar(500)" json:"targetHost"`
TargetPort int `json:"targetPort"`
Domain string `gorm:"type:varchar(500)" json:"domain"`
AsciiDomain string `gorm:"type:varchar(500)" json:"asciiDomain"`
Entrance string `gorm:"type:varchar(50);default:'default'" json:"entrance"`
Description string `gorm:"type:varchar(1000)" json:"description"`
Status string `gorm:"type:varchar(50);default:'unknown'" json:"status"`
StatusText string `gorm:"type:text" json:"statusText"`
GatewayType string `gorm:"type:varchar(20);default:''" json:"gatewayType"`
GatewayId string `gorm:"type:varchar(36);default:''" json:"gatewayId"`
BasicAuth string `gorm:"type:text" json:"basicAuth"`
Headers string `gorm:"type:text" json:"headers"`
Cert string `gorm:"type:text" json:"cert"`
Public string `gorm:"type:text" json:"public"`
TempAllow string `gorm:"type:text" json:"tempAllow"`
Created common.JsonTime `json:"createdAt"`
GroupId string `gorm:"type:varchar(36);default:''" json:"groupId"`
Sort string `gorm:"type:varchar(50);default:''" json:"sort"`
ID string `gorm:"primary_key,type:varchar(36)" json:"id"`
Name string `gorm:"type:varchar(500)" json:"name"`
Enabled bool `json:"enabled"`
TargetUrl string `gorm:"type:text" json:"targetUrl"`
TargetHost string `gorm:"type:varchar(500)" json:"targetHost"`
TargetPort int `json:"targetPort"`
Domain string `gorm:"type:varchar(500)" json:"domain"`
AsciiDomain string `gorm:"type:varchar(500)" json:"asciiDomain"`
Entrance string `gorm:"type:varchar(50);default:'default'" json:"entrance"`
Description string `gorm:"type:varchar(1000)" json:"description"`
Status string `gorm:"type:varchar(50);default:'unknown'" json:"status"`
StatusText string `gorm:"type:text" json:"statusText"`
GatewayType string `gorm:"type:varchar(20);default:''" json:"gatewayType"`
GatewayId string `gorm:"type:varchar(36);default:''" json:"gatewayId"`
BasicAuth string `gorm:"type:text" json:"basicAuth"`
Headers string `gorm:"type:text" json:"headers"`
Cert string `gorm:"type:text" json:"cert"`
Public string `gorm:"type:text" json:"public"`
TempAllow string `gorm:"type:text" json:"tempAllow"`
Created common.JsonTime `json:"createdAt"`
GroupId string `gorm:"type:varchar(36);default:''" json:"groupId"`
Sort string `gorm:"type:varchar(50);default:''" json:"sort"`
}
func (r *Website) TableName() string {
+15
View File
@@ -0,0 +1,15 @@
package model
import "next-terminal/server/common"
type WebsiteGroup struct {
ID string `gorm:"primary_key,type:varchar(36)" json:"id"`
Name string `gorm:"type:varchar(200)" json:"name"`
ParentId string `gorm:"type:varchar(36)" json:"parentId"`
Sort int `json:"sort"`
Created common.JsonTime `gorm:"type:datetime" json:"createdAt"`
}
func (r *WebsiteGroup) TableName() string {
return "website_groups"
}