Feat: ExpressVPN support (#623)
This commit is contained in:
@@ -7,6 +7,7 @@ import (
|
||||
func (a AllServers) GetCopy() (servers AllServers) {
|
||||
servers = a // copy versions and timestamps
|
||||
servers.Cyberghost.Servers = a.GetCyberghost()
|
||||
servers.Expressvpn.Servers = a.GetExpressvpn()
|
||||
servers.Fastestvpn.Servers = a.GetFastestvpn()
|
||||
servers.HideMyAss.Servers = a.GetHideMyAss()
|
||||
servers.Ipvanish.Servers = a.GetIpvanish()
|
||||
@@ -38,6 +39,18 @@ func (a *AllServers) GetCyberghost() (servers []CyberghostServer) {
|
||||
return servers
|
||||
}
|
||||
|
||||
func (a *AllServers) GetExpressvpn() (servers []ExpressvpnServer) {
|
||||
if a.Expressvpn.Servers == nil {
|
||||
return nil
|
||||
}
|
||||
servers = make([]ExpressvpnServer, len(a.Expressvpn.Servers))
|
||||
for i, serverToCopy := range a.Expressvpn.Servers {
|
||||
servers[i] = serverToCopy
|
||||
servers[i].IPs = copyIPs(serverToCopy.IPs)
|
||||
}
|
||||
return servers
|
||||
}
|
||||
|
||||
func (a *AllServers) GetFastestvpn() (servers []FastestvpnServer) {
|
||||
if a.Fastestvpn.Servers == nil {
|
||||
return nil
|
||||
|
||||
@@ -16,6 +16,11 @@ func Test_AllServers_GetCopy(t *testing.T) {
|
||||
IPs: []net.IP{{1, 2, 3, 4}},
|
||||
}},
|
||||
},
|
||||
Expressvpn: ExpressvpnServers{
|
||||
Servers: []ExpressvpnServer{{
|
||||
IPs: []net.IP{{1, 2, 3, 4}},
|
||||
}},
|
||||
},
|
||||
Fastestvpn: FastestvpnServers{
|
||||
Servers: []FastestvpnServer{{
|
||||
IPs: []net.IP{{1, 2, 3, 4}},
|
||||
|
||||
@@ -30,6 +30,20 @@ func (s CyberghostServer) ToMarkdown() (markdown string) {
|
||||
boolToMarkdown(s.TCP), boolToMarkdown(s.UDP))
|
||||
}
|
||||
|
||||
func (s *ExpressvpnServers) ToMarkdown() (markdown string) {
|
||||
markdown = markdownTableHeading("Country", "City", "Hostname", "TCP", "UDP")
|
||||
for _, server := range s.Servers {
|
||||
markdown += server.ToMarkdown() + "\n"
|
||||
}
|
||||
return markdown
|
||||
}
|
||||
|
||||
func (s *ExpressvpnServer) ToMarkdown() (markdown string) {
|
||||
return fmt.Sprintf("| %s | %s | `%s` | %s | %s |",
|
||||
s.Country, s.City, s.Hostname,
|
||||
boolToMarkdown(s.TCP), boolToMarkdown(s.UDP))
|
||||
}
|
||||
|
||||
func (s *FastestvpnServers) ToMarkdown() (markdown string) {
|
||||
markdown = markdownTableHeading("Country", "Hostname", "TCP", "UDP")
|
||||
for _, server := range s.Servers {
|
||||
|
||||
@@ -12,6 +12,15 @@ type CyberghostServer struct {
|
||||
IPs []net.IP `json:"ips"`
|
||||
}
|
||||
|
||||
type ExpressvpnServer struct {
|
||||
Country string `json:"country"`
|
||||
City string `json:"city,omitempty"`
|
||||
Hostname string `json:"hostname"`
|
||||
TCP bool `json:"tcp"`
|
||||
UDP bool `json:"udp"`
|
||||
IPs []net.IP `json:"ips"`
|
||||
}
|
||||
|
||||
type FastestvpnServer struct {
|
||||
Hostname string `json:"hostname"`
|
||||
TCP bool `json:"tcp"`
|
||||
|
||||
@@ -3,6 +3,7 @@ package models
|
||||
type AllServers struct {
|
||||
Version uint16 `json:"version"` // used for migration of the top level scheme
|
||||
Cyberghost CyberghostServers `json:"cyberghost"`
|
||||
Expressvpn ExpressvpnServers `json:"expressvpn"`
|
||||
Fastestvpn FastestvpnServers `json:"fastestvpn"`
|
||||
HideMyAss HideMyAssServers `json:"hidemyass"`
|
||||
Ipvanish IpvanishServers `json:"ipvanish"`
|
||||
@@ -24,6 +25,7 @@ type AllServers struct {
|
||||
|
||||
func (a *AllServers) Count() int {
|
||||
return len(a.Cyberghost.Servers) +
|
||||
len(a.Expressvpn.Servers) +
|
||||
len(a.Fastestvpn.Servers) +
|
||||
len(a.HideMyAss.Servers) +
|
||||
len(a.Ipvanish.Servers) +
|
||||
@@ -48,6 +50,11 @@ type CyberghostServers struct {
|
||||
Timestamp int64 `json:"timestamp"`
|
||||
Servers []CyberghostServer `json:"servers"`
|
||||
}
|
||||
type ExpressvpnServers struct {
|
||||
Version uint16 `json:"version"`
|
||||
Timestamp int64 `json:"timestamp"`
|
||||
Servers []ExpressvpnServer `json:"servers"`
|
||||
}
|
||||
type FastestvpnServers struct {
|
||||
Version uint16 `json:"version"`
|
||||
Timestamp int64 `json:"timestamp"`
|
||||
|
||||
Reference in New Issue
Block a user