models

package
v1.2.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 6, 2026 License: MIT Imports: 13 Imported by: 0

Documentation

Index

Constants

View Source
const (
	AuditModuleAuth          = "AUTH"           // 用户登录
	AuditModuleProxy         = "PROXY"          // 代理管理
	AuditModuleTrafficPolicy = "TRAFFIC_POLICY" // 限速配额
)

审计日志模块类型常量

View Source
const (
	AuditActionLogin   = "LOGIN"   // 登录
	AuditActionCreate  = "CREATE"  // 新增
	AuditActionUpdate  = "UPDATE"  // 修改
	AuditActionDelete  = "DELETE"  // 删除
	AuditActionStart   = "START"   // 启动
	AuditActionStop    = "STOP"    // 停止
	AuditActionRestart = "RESTART" // 重启
	AuditActionEnable  = "ENABLE"  // 启用
	AuditActionDisable = "DISABLE" // 停用
	AuditActionImport  = "IMPORT"  // 导入
)

审计日志操作类型常量

View Source
const (
	ProxyTypeTcp    = "TCP"
	ProxyTypeUdp    = "UDP"
	ProxyTypeHttp   = "HTTP"
	ProxyTypeSocks5 = "SOCKS5"
)

代理类型

View Source
const (
	PermDashboardView = "dashboard.view"        // 仪表盘
	PermProxyView     = "proxy.view"            // 代理列表
	PermTagManage     = "tag.manage"            // 标签管理
	PermTrafficPolicy = "traffic_policy.manage" // 限速配额
	PermAlertView     = "alert.view"            // 告警通知
	PermAuditView     = "audit.view"            // 日志审计
	PermTerminalView  = "terminal.view"         // Web 终端
	PermUserManage    = "user.manage"           // 用户列表
	PermRoleManage    = "role.manage"           // 权限策略

	PermBasicSettings = "basic_settings.manage" // 基础配置
	PermNodeManage    = "node.manage"           // 节点管理
)

Permission keys(菜单级别)

View Source
const (
	RoleNameAdmin = "admin"
	RoleNameOps   = "ops"
)

BuiltIn role names

View Source
const (
	TrafficPolicyStatusEnabled  = "ENABLED"
	TrafficPolicyStatusDisabled = "DISABLED"
)
View Source
const (
	OverLimitActionSlowdown = "SLOWDOWN"
	OverLimitActionAlert    = "ALERT"
)
View Source
const (
	// UserLevelRoot 超级管理员
	UserLevelRoot = "root"
	// UserLevelUser 普通用户
	UserLevelUser = "user"
)
View Source
const (
	AlertLevelWarning = "WARNING"
)

Variables

View Source
var (
	ProxyStateRunning = "RUNNING"
	ProxyStateStopped = "STOPPED"
)

代理状态

View Source
var DB *gorm.DB

Functions

func AdminPermissions added in v1.2.0

func AdminPermissions() []string

AdminPermissions returns all permissions for admin role

func AllPermissions added in v1.2.0

func AllPermissions() []string

AllPermissions returns all available permission keys

func GetConfig added in v1.2.0

func GetConfig(key, defaultValue string) string

GetConfig 获取配置值(优先读缓存,未命中则查库并回填缓存)

func GetConfigInt added in v1.2.0

func GetConfigInt(key string, defaultValue int) int

GetConfigInt 获取 int 类型配置

func InitConfigCache added in v1.2.0

func InitConfigCache()

InitConfigCache 启动时调用:将 config_basic 全表加载进内存缓存

func LoadProxyTagListMap added in v1.1.0

func LoadProxyTagListMap(proxyUuids []string) (map[string][]TagBasic, error)

func LoadTagMap added in v1.1.0

func LoadTagMap() (map[string]*TagBasic, error)

func NewGormDB

func NewGormDB()

func OpsPermissions added in v1.2.0

func OpsPermissions() []string

OpsPermissions returns permissions for ops role

func ReplaceProxyTags added in v1.1.0

func ReplaceProxyTags(tx *gorm.DB, proxyUuid string, tagUuidList []string) error

func SetConfig added in v1.2.0

func SetConfig(key, value string) error

SetConfig 设置配置(先落库,再更新缓存)

Types

type AlertRecord added in v1.2.0

type AlertRecord struct {
	Uuid       string `json:"uuid"`
	Source     string `json:"source"`      // 来源模块,例如:TRAFFIC_POLICY
	SourceUuid string `json:"source_uuid"` // 来源对象 uuid
	Level      string `json:"level"`
	Title      string `json:"title"`
	Content    string `json:"content"`
	CreatedAt  int64  `gorm:"column:created_at; autoCreateTime:milli" json:"created_at"`
	UpdatedAt  int64  `gorm:"column:updated_at; autoUpdateTime:milli" json:"updated_at"`
}

func (*AlertRecord) TableName added in v1.2.0

func (table *AlertRecord) TableName() string

type AuditLog added in v1.2.0

type AuditLog struct {
	Uuid       string `json:"uuid"`
	Username   string `json:"username"`    // 操作人用户名
	Module     string `json:"module"`      // 所属模块:AUTH / PROXY / TRAFFIC_POLICY
	Action     string `json:"action"`      // 操作类型:LOGIN / CREATE / UPDATE / DELETE / START / STOP / RESTART / ENABLE / DISABLE
	Target     string `json:"target"`      // 操作对象名称
	TargetUuid string `json:"target_uuid"` // 操作对象 UUID
	Detail     string `json:"detail"`      // 详情描述
	SourceIp   string `json:"source_ip"`   // 来源 IP
	CreatedAt  int64  `gorm:"column:created_at; autoCreateTime:milli" json:"created_at"`
}

AuditLog 审计日志记录

func (*AuditLog) TableName added in v1.2.0

func (table *AuditLog) TableName() string

type ConfigBasic

type ConfigBasic struct {
	Key       string `json:"key"`                                                       // 键
	Value     string `json:"value"`                                                     // 值
	CreatedAt int64  `gorm:"column:created_at; autoCreateTime:milli" json:"created_at"` // 创建时间,时间戳,毫秒
	UpdatedAt int64  `gorm:"column:updated_at; autoUpdateTime:milli" json:"updated_at"` // 更新时间,时间戳,毫秒
}

func (*ConfigBasic) First

func (table *ConfigBasic) First() error

func (*ConfigBasic) GetServerPort

func (table *ConfigBasic) GetServerPort() string

GetServerPort 获取服务端口

func (*ConfigBasic) SaveServerPort

func (table *ConfigBasic) SaveServerPort(port string) error

SaveServerPort 保存服务端口

func (*ConfigBasic) TableName

func (table *ConfigBasic) TableName() string

type NodeBasic added in v1.2.0

type NodeBasic struct {
	Uuid      string `json:"uuid"`                                                      // 唯一标识
	Name      string `json:"name"`                                                      // 节点名称
	Address   string `json:"address"`                                                   // 节点地址(含端口,如 192.168.1.100:12312)
	SecretKey string `json:"secret_key"`                                                // 节点密钥(对应目标节点的 JwtKey)
	Enabled   bool   `json:"enabled"`                                                   // 启用状态
	IsLocal   bool   `json:"is_local"`                                                  // 是否为本地节点
	CreatedAt int64  `gorm:"column:created_at; autoCreateTime:milli" json:"created_at"` // 创建时间,时间戳,毫秒
	UpdatedAt int64  `gorm:"column:updated_at; autoUpdateTime:milli" json:"updated_at"` // 更新时间,时间戳,毫秒
}

NodeBasic 节点信息

func (*NodeBasic) All added in v1.2.0

func (table *NodeBasic) All() ([]*NodeBasic, error)

All 获取所有节点

func (*NodeBasic) CountForName added in v1.2.0

func (table *NodeBasic) CountForName() (int64, error)

CountForName 名称判重

func (*NodeBasic) Create added in v1.2.0

func (table *NodeBasic) Create() error

Create 新增节点

func (*NodeBasic) Delete added in v1.2.0

func (table *NodeBasic) Delete() error

Delete 删除节点

func (*NodeBasic) First added in v1.2.0

func (table *NodeBasic) First() error

First 获取单个节点

func (*NodeBasic) TableName added in v1.2.0

func (table *NodeBasic) TableName() string

func (*NodeBasic) Update added in v1.2.0

func (table *NodeBasic) Update() error

Update 更新节点

type ProxyBasic

type ProxyBasic struct {
	Uuid           string     `json:"uuid"`                                                      // 唯一标识
	Name           string     `json:"name"`                                                      // 代理名称
	TagUuidList    []string   `gorm:"-" json:"tag_uuid_list,omitempty"`                          // 标签唯一标识列表
	TagList        []TagBasic `gorm:"-" json:"tag_list,omitempty"`                               // 标签列表
	Type           string     `json:"type"`                                                      // 代理类型
	ListenAddress  string     `json:"listen_address"`                                            // 监听地址
	ListenPort     string     `json:"listen_port"`                                               // 监听端口
	TargetAddress  string     `json:"target_address"`                                            // 目标地址
	TargetPort     string     `json:"target_port"`                                               // 目标端口
	Socks5Username string     `json:"socks5_username"`                                           // SOCKS5 认证用户名
	Socks5Password string     `json:"socks5_password"`                                           // SOCKS5 认证密码
	State          string     `json:"state"`                                                     // 代理状态
	FailDetail     string     `json:"fail_detail"`                                               // 代理失败详情
	CreatedAt      int64      `gorm:"column:created_at; autoCreateTime:milli" json:"created_at"` // 创建时间,时间戳,毫秒
	UpdatedAt      int64      `gorm:"column:updated_at; autoUpdateTime:milli" json:"updated_at"` // 更新时间,时间戳,毫秒
}

func (*ProxyBasic) All

func (table *ProxyBasic) All() ([]*ProxyBasic, error)

All 获取所有代理

func (*ProxyBasic) CountForName

func (table *ProxyBasic) CountForName() (int64, error)

CountForName 保存时名称判重

func (*ProxyBasic) CountForPort

func (table *ProxyBasic) CountForPort() (int64, error)

CountForPort 端口判重

func (*ProxyBasic) First

func (table *ProxyBasic) First() error

First 获取单个代理

func (*ProxyBasic) TableName

func (table *ProxyBasic) TableName() string

type ProxyTag added in v1.1.0

type ProxyTag struct {
	ProxyUuid string `gorm:"column:proxy_uuid;uniqueIndex:idx_proxy_tag" json:"proxy_uuid"` // 代理唯一标识
	TagUuid   string `gorm:"column:tag_uuid;uniqueIndex:idx_proxy_tag" json:"tag_uuid"`     // 标签唯一标识
	CreatedAt int64  `gorm:"column:created_at; autoCreateTime:milli" json:"created_at"`
	UpdatedAt int64  `gorm:"column:updated_at; autoUpdateTime:milli" json:"updated_at"`
}

func (*ProxyTag) TableName added in v1.1.0

func (table *ProxyTag) TableName() string

type RoleBasic added in v1.2.0

type RoleBasic struct {
	Uuid        string `json:"uuid" gorm:"primaryKey"`        // 唯一标识
	Name        string `json:"name" gorm:"uniqueIndex"`       // 角色名称
	Description string `json:"description"`                   // 角色描述
	BuiltIn     bool   `json:"built_in" gorm:"default:false"` // 是否内置角色
	Permissions string `json:"permissions" gorm:"type:text"`  // JSON array of permission keys
	CreatedAt   int64  `gorm:"column:created_at; autoCreateTime:milli" json:"created_at"`
	UpdatedAt   int64  `gorm:"column:updated_at; autoUpdateTime:milli" json:"updated_at"`
}

func (*RoleBasic) BeforeSave added in v1.2.0

func (r *RoleBasic) BeforeSave(tx *gorm.DB) error

BeforeSave GORM hook to ensure permissions is valid JSON

func (*RoleBasic) GetPermissionList added in v1.2.0

func (r *RoleBasic) GetPermissionList() []string

GetPermissionList 解析权限列表

func (*RoleBasic) HasPermission added in v1.2.0

func (r *RoleBasic) HasPermission(perm string) bool

HasPermission 检查是否有指定权限

func (*RoleBasic) IsAdminRole added in v1.2.0

func (r *RoleBasic) IsAdminRole() bool

IsAdminRole 判断是否为管理员角色(拥有所有权限)

func (*RoleBasic) SetPermissionList added in v1.2.0

func (r *RoleBasic) SetPermissionList(perms []string)

SetPermissionList 设置权限列表

func (*RoleBasic) TableName added in v1.2.0

func (r *RoleBasic) TableName() string

type TagBasic added in v1.1.0

type TagBasic struct {
	Uuid      string `json:"uuid"`                                                      // 唯一标识
	Name      string `json:"name"`                                                      // 标签名称
	CreatedAt int64  `gorm:"column:created_at; autoCreateTime:milli" json:"created_at"` // 创建时间,时间戳,毫秒
	UpdatedAt int64  `gorm:"column:updated_at; autoUpdateTime:milli" json:"updated_at"` // 更新时间,时间戳,毫秒
}

func (*TagBasic) CountForName added in v1.1.0

func (table *TagBasic) CountForName() (int64, error)

CountForName 保存时名称判重

func (*TagBasic) First added in v1.1.0

func (table *TagBasic) First() error

First 获取单个标签

func (*TagBasic) TableName added in v1.1.0

func (table *TagBasic) TableName() string

type TrafficPolicy added in v1.2.0

type TrafficPolicy struct {
	Uuid                string   `json:"uuid"`
	Name                string   `json:"name"`
	ScopeType           string   `json:"scope_type"`          // 作用范围类型:ALL / TAG / PROXY
	ScopeValue          string   `json:"scope_value"`         // 作用范围值:标签 uuid / 代理 uuid
	ScopeName           string   `gorm:"-" json:"scope_name"` // 作用范围名称
	OutboundLimit       string   `json:"outbound_limit"`      // 出站上限,例如:50MB/s
	MaxConnections      string   `json:"max_connections"`     // 并发连接,例如:300
	PeriodQuota         string   `json:"period_quota"`        // 周期配额,例如:800GB/月
	QuotaUsed           string   `json:"quota_used"`          // 配额已用额度,例如:536GB
	OverLimitAction     string   `json:"over_limit_action"`   // 超额动作,逗号分隔:SLOWDOWN,ALERT
	OverLimitActionList []string `gorm:"-" json:"over_limit_action_list,omitempty"`
	Status              string   `json:"status"`
	CreatedAt           int64    `gorm:"column:created_at; autoCreateTime:milli" json:"created_at"`
	UpdatedAt           int64    `gorm:"column:updated_at; autoUpdateTime:milli" json:"updated_at"`
}

func (*TrafficPolicy) CountForName added in v1.2.0

func (table *TrafficPolicy) CountForName() (int64, error)

func (*TrafficPolicy) TableName added in v1.2.0

func (table *TrafficPolicy) TableName() string

type UserBasic

type UserBasic struct {
	Uuid      string `json:"uuid"`                                                      // 唯一标识
	Username  string `json:"username"`                                                  // 用户名
	Password  string `json:"password"`                                                  // 密码
	Level     string `json:"level"`                                                     // 等级,root,user
	RoleID    string `json:"role_id" gorm:"column:role_id; default:''"`                 // 角色UUID
	CreatedAt int64  `gorm:"column:created_at; autoCreateTime:milli" json:"created_at"` // 创建时间,时间戳,毫秒
	UpdatedAt int64  `gorm:"column:updated_at; autoUpdateTime:milli" json:"updated_at"` // 修改时间,时间戳,毫秒
}

func (*UserBasic) CountForSave

func (table *UserBasic) CountForSave() (int64, error)

CountForSave 总数,名称判重

func (*UserBasic) First

func (table *UserBasic) First() error

func (*UserBasic) TableName

func (table *UserBasic) TableName() string

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL