Some checks failed
Build Multi-Platform Binaries / build-frontend (push) Successful in 56s
Build Multi-Platform Binaries / build-binaries (amd64, darwin, server, false) (push) Successful in 7m28s
Build Multi-Platform Binaries / build-binaries (amd64, linux, client, true) (push) Successful in 2m44s
Build Multi-Platform Binaries / build-binaries (amd64, linux, server, true) (push) Successful in 7m27s
Build Multi-Platform Binaries / build-binaries (amd64, windows, client, true) (push) Successful in 1m18s
Build Multi-Platform Binaries / build-binaries (amd64, windows, server, true) (push) Successful in 5m49s
Build Multi-Platform Binaries / build-binaries (arm, 7, linux, client, true) (push) Successful in 2m17s
Build Multi-Platform Binaries / build-binaries (arm, 7, linux, server, true) (push) Successful in 5m4s
Build Multi-Platform Binaries / build-binaries (arm64, darwin, server, false) (push) Successful in 5m57s
Build Multi-Platform Binaries / build-binaries (arm64, linux, server, true) (push) Successful in 4m36s
Build Multi-Platform Binaries / build-binaries (arm64, linux, client, true) (push) Failing after 13m47s
Build Multi-Platform Binaries / build-binaries (arm64, windows, server, false) (push) Failing after 26m24s
78 lines
2.6 KiB
Go
78 lines
2.6 KiB
Go
package db
|
|
|
|
import "github.com/gotunnel/pkg/protocol"
|
|
|
|
// ConfigField 配置字段定义
|
|
type ConfigField struct {
|
|
Key string `json:"key"`
|
|
Label string `json:"label"`
|
|
Type string `json:"type"`
|
|
Default string `json:"default,omitempty"`
|
|
Required bool `json:"required,omitempty"`
|
|
Options []string `json:"options,omitempty"`
|
|
Description string `json:"description,omitempty"`
|
|
}
|
|
|
|
// ClientPlugin 客户端已安装的插件
|
|
type ClientPlugin struct {
|
|
ID string `json:"id"` // 插件实例唯一 ID
|
|
Name string `json:"name"`
|
|
Version string `json:"version"`
|
|
Enabled bool `json:"enabled"`
|
|
Running bool `json:"running"` // 运行状态
|
|
Config map[string]string `json:"config,omitempty"` // 插件配置
|
|
RemotePort int `json:"remote_port,omitempty"`// 远程监听端口
|
|
ConfigSchema []ConfigField `json:"config_schema,omitempty"` // 配置模式
|
|
}
|
|
|
|
// Client 客户端数据
|
|
type Client struct {
|
|
ID string `json:"id"`
|
|
Nickname string `json:"nickname,omitempty"`
|
|
Rules []protocol.ProxyRule `json:"rules"`
|
|
Plugins []ClientPlugin `json:"plugins,omitempty"` // 已安装的插件
|
|
}
|
|
|
|
// JSPlugin JS 插件数据
|
|
type JSPlugin struct {
|
|
Name string `json:"name"`
|
|
Source string `json:"source"`
|
|
Signature string `json:"signature"` // 官方签名 (Base64)
|
|
Description string `json:"description"`
|
|
Author string `json:"author"`
|
|
Version string `json:"version,omitempty"`
|
|
AutoPush []string `json:"auto_push"`
|
|
Config map[string]string `json:"config"`
|
|
AutoStart bool `json:"auto_start"`
|
|
Enabled bool `json:"enabled"`
|
|
}
|
|
|
|
// ClientStore 客户端存储接口
|
|
type ClientStore interface {
|
|
GetAllClients() ([]Client, error)
|
|
GetClient(id string) (*Client, error)
|
|
CreateClient(c *Client) error
|
|
UpdateClient(c *Client) error
|
|
DeleteClient(id string) error
|
|
ClientExists(id string) (bool, error)
|
|
GetClientRules(id string) ([]protocol.ProxyRule, error)
|
|
Close() error
|
|
}
|
|
|
|
// JSPluginStore JS 插件存储接口
|
|
type JSPluginStore interface {
|
|
GetAllJSPlugins() ([]JSPlugin, error)
|
|
GetJSPlugin(name string) (*JSPlugin, error)
|
|
SaveJSPlugin(p *JSPlugin) error
|
|
DeleteJSPlugin(name string) error
|
|
SetJSPluginEnabled(name string, enabled bool) error
|
|
UpdateJSPluginConfig(name string, config map[string]string) error
|
|
}
|
|
|
|
// Store 统一存储接口
|
|
type Store interface {
|
|
ClientStore
|
|
JSPluginStore
|
|
Close() error
|
|
}
|