- Agent 通过 token 向主控注册,心跳/拉取 xray 配置/上报流量 - 主控按节点下发完整 xray 配置(含出站+路由),agent 只应用不自建 - Agent 心跳同步更新节点在线状态;后台探针跳过 agent 托管节点 - 「添加节点」支持 Agent 类型,自动生成 token 并弹窗展示 - VLESS/SS2022 入站;同机测试支持 api_port 隔离 - 新增 install-master.sh / install-agent.sh 一键安装脚本 - systemd + OpenWrt procd 服务文件,docs/AGENT.md
26 lines
1.3 KiB
Go
26 lines
1.3 KiB
Go
package model
|
|
|
|
// AgentNode binds a lightweight agent (token-registered, no web panel) to a
|
|
// 3x-ui node row and carries the per-agent egress configuration.
|
|
//
|
|
// Agents are the only writers of their own LastSeen; the panel owns everything
|
|
// else. Raw tokens are never stored — only the SHA-256 hex of the token.
|
|
type AgentNode struct {
|
|
Id int `json:"id" gorm:"primaryKey;autoIncrement"`
|
|
TokenHash string `json:"-" gorm:"size:64;uniqueIndex"`
|
|
TokenPrefix string `json:"tokenPrefix" gorm:"size:16;index"`
|
|
Name string `json:"name"`
|
|
// NodeID is the 3x-ui node whose inbounds this agent serves. Nil means the
|
|
// token was issued but not yet bound to a node.
|
|
NodeID *int `json:"nodeId" gorm:"index"`
|
|
// Outbounds is the full xray "outbounds" JSON array pushed to this agent,
|
|
// replacing the template defaults. Empty means "use template defaults".
|
|
Outbounds string `json:"outbounds" gorm:"type:text"`
|
|
// RoutingRules is the full xray "routing.rules" JSON array pushed to this
|
|
// agent, replacing the template defaults. Empty means "use template defaults".
|
|
RoutingRules string `json:"routingRules" gorm:"type:text"`
|
|
LastSeen int64 `json:"lastSeen"`
|
|
CreatedAt int64 `json:"createdAt" gorm:"autoCreateTime:milli"`
|
|
UpdatedAt int64 `json:"updatedAt" gorm:"autoUpdateTime:milli"`
|
|
}
|