summaryrefslogtreecommitdiff
path: root/internal/models/server.go
blob: f440c03391e19a0b8a358c673639f60a337710de (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
package models

type TLS struct {
	Enabled    bool     `json:"enabled"`
	ServerName string   `json:"server_name,omitempty"`
	Insecure   bool     `json:"insecure,omitempty"`
	ALPN       []string `json:"alpn,omitempty"`
	MinVersion string   `json:"min_version,omitempty"`
	MaxVersion string   `json:"max_version,omitempty"`
	Reality    *Reality `json:"reality,omitempty"`
}

type Transport struct {
	Type string `json:"type,omitempty"`
	Path string `json:"path,omitempty"`
}

type Reality struct {
	Enabled     bool   `json:"enabled,omitempty"`
	PublicKey   string `json:"public_key,omitempty"`
	PrivateKey  string `json:"private_key,omitempty"`
	ShortID     string `json:"short_id,omitempty"`
	Fingerprint string `json:"fingerprint,omitempty"`
}

type Server struct {
	Tag          string     `json:"tag"`
	Region       string     `json:"region"`
	Type         string     `json:"type"` // socks, vless, vless-reality, shadowsocks, vmess, hysteria2
	Server       string     `json:"server"`
	ServerPort   int        `json:"server_port"`
	UDPOverTCP   bool       `json:"udp_over_tcp,omitempty"`
	UUID         string     `json:"uuid,omitempty"`
	Method       string     `json:"method,omitempty"`
	Password     string     `json:"password,omitempty"`
	ObfsPassword string     `json:"obfs_password,omitempty"`
	UpMbps       int        `json:"up_mbps,omitempty"`
	DownMbps     int        `json:"down_mbps,omitempty"`
	TLS          *TLS       `json:"tls,omitempty"`
	Transport    *Transport `json:"transport,omitempty"`
	Companions   []Server   `json:"companions,omitempty"`
}

type ServersResponse struct {
	Servers []Server `json:"servers"`
}