summaryrefslogtreecommitdiff
path: root/internal/models/catalog.go
diff options
context:
space:
mode:
authorsergei <sergei@em-sysadmin.xyz>2026-04-14 06:23:55 +0400
committersergei <sergei@em-sysadmin.xyz>2026-04-14 06:23:55 +0400
commit3d51aa455006903345f554a2dd90034993796114 (patch)
tree62a7be2faf047f5eb7886feebc3b815556f03d7f /internal/models/catalog.go
downloadvpnem-3d51aa455006903345f554a2dd90034993796114.tar.gz
vpnem-3d51aa455006903345f554a2dd90034993796114.tar.bz2
vpnem-3d51aa455006903345f554a2dd90034993796114.zip
vpnem: VPN infrastructure with load-balanced multi-protocol nodesHEADmain
- Multi-protocol VPS nodes (VLESS-REALITY + Hysteria2 + SOCKS5) - Smart load balancing via recommendation API - Windows/Linux client (Go + Wails + sing-box) - Server API with RealIP detection and connection tracking - Auto-deployment via vpnui control plane - Silent Windows installer with UAC elevation - Load-based server recommendation (no sticky sessions) - Best Server one-click connection workflow
Diffstat (limited to 'internal/models/catalog.go')
-rw-r--r--internal/models/catalog.go35
1 files changed, 35 insertions, 0 deletions
diff --git a/internal/models/catalog.go b/internal/models/catalog.go
new file mode 100644
index 0000000..eda61cd
--- /dev/null
+++ b/internal/models/catalog.go
@@ -0,0 +1,35 @@
+package models
+
+type CatalogV2 struct {
+ Version string `json:"version"`
+ Nodes []CatalogNode `json:"nodes"`
+}
+
+type CatalogNode struct {
+ ID string `json:"id"`
+ Name string `json:"name"`
+ Provider string `json:"provider,omitempty"`
+ Region string `json:"region"`
+ Host string `json:"host"`
+ Domain string `json:"domain,omitempty"`
+ PublicHost string `json:"public_host"`
+ Protocols []CatalogProtocol `json:"protocols"`
+ Status string `json:"status,omitempty"`
+ Tags []string `json:"tags,omitempty"`
+ Metadata map[string]any `json:"metadata,omitempty"`
+}
+
+type CatalogProtocol struct {
+ Type string `json:"type"`
+ Enabled bool `json:"enabled"`
+ Port int `json:"port"`
+ TLS *TLS `json:"tls,omitempty"`
+ Auth *CatalogAuth `json:"auth,omitempty"`
+ Extra map[string]any `json:"extra,omitempty"`
+}
+
+type CatalogAuth struct {
+ UUID string `json:"uuid,omitempty"`
+ Method string `json:"method,omitempty"`
+ Password string `json:"password,omitempty"`
+}