38 lines
1.7 KiB
Go
38 lines
1.7 KiB
Go
package meshseed
|
||
|
||
import "time"
|
||
|
||
// MeshSeed 组网凭证 - 按照 README 5.1 节定义
|
||
type MeshSeed struct {
|
||
// ===== 必选参数 =====
|
||
NetworkName string `json:"networkName"` // 组网名称
|
||
NetworkSecret string `json:"networkSecret"` // 高熵密钥,派生 NetworkID(绝不公开)
|
||
Subnet string `json:"subnet"` // CIDR 格式,如 10.0.0.0/24
|
||
IssuerNodeID string `json:"issuerNodeId"` // 签发者节点 ID(对应 Ed25519 公钥)
|
||
|
||
// ===== 可选参数 =====
|
||
MaxUses int `json:"maxUses,omitempty"` // 最大使用次数(默认 10)
|
||
ExpiresInHours int `json:"expiresInHours,omitempty"` // 有效期小时数(默认 168 = 7 天)
|
||
Permissions uint32 `json:"permissions,omitempty"` // 权限位掩码
|
||
BootstrapPeers []string `json:"bootstrapPeers,omitempty"` // 初始引导节点列表
|
||
TURNServers []TURNRef `json:"turnServers,omitempty"` // TURN 服务器引用
|
||
DDNSEnabled bool `json:"ddnsEnabled,omitempty"` // 是否允许 DDNS 同步
|
||
UpdateVersion int `json:"updateVersion,omitempty"` // 配置版本号(默认 0)
|
||
|
||
// ===== 自动生成 =====
|
||
SeedID string `json:"seedId"` // 16 字节随机 Base64
|
||
NetworkID uint64 `json:"networkId"` // ❄️ 雪花算法 ID(原为 string,v2.1.0 改为 uint64)
|
||
IssuedAt time.Time `json:"issuedAt"` // 签发时间戳
|
||
ExpiresAt time.Time `json:"expiresAt"` // 过期时间戳
|
||
Signature []byte `json:"signature"` // Ed25519 签名
|
||
}
|
||
|
||
// TURNRef TURN 服务器引用
|
||
type TURNRef struct {
|
||
Address string `json:"address"`
|
||
Port int `json:"port"`
|
||
Username string `json:"username"`
|
||
Password string `json:"password"`
|
||
Realm string `json:"realm,omitempty"`
|
||
}
|