267 lines
7.9 KiB
Go
267 lines
7.9 KiB
Go
package models
|
|
|
|
import (
|
|
"fmt"
|
|
"strings"
|
|
)
|
|
|
|
func boolToMarkdown(b bool) string {
|
|
if b {
|
|
return "✅"
|
|
}
|
|
return "❎"
|
|
}
|
|
|
|
func markdownTableHeading(legendFields ...string) (markdown string) {
|
|
return "| " + strings.Join(legendFields, " | ") + " |\n" +
|
|
"|" + strings.Repeat(" --- |", len(legendFields)) + "\n"
|
|
}
|
|
|
|
func (s *CyberghostServers) ToMarkdown() (markdown string) {
|
|
markdown = markdownTableHeading("Country", "Hostname", "TCP", "UDP")
|
|
for _, server := range s.Servers {
|
|
markdown += server.ToMarkdown() + "\n"
|
|
}
|
|
return markdown
|
|
}
|
|
|
|
func (s CyberghostServer) ToMarkdown() (markdown string) {
|
|
return fmt.Sprintf("| %s | `%s` | %s | %s |", s.Country, 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 {
|
|
markdown += server.ToMarkdown() + "\n"
|
|
}
|
|
return markdown
|
|
}
|
|
|
|
func (s *FastestvpnServer) ToMarkdown() (markdown string) {
|
|
return fmt.Sprintf("| %s | `%s` | %s | %s |",
|
|
s.Country, s.Hostname, boolToMarkdown(s.TCP), boolToMarkdown(s.UDP))
|
|
}
|
|
|
|
func (s *HideMyAssServers) ToMarkdown() (markdown string) {
|
|
markdown = markdownTableHeading("Country", "Region", "City", "Hostname", "TCP", "UDP")
|
|
for _, server := range s.Servers {
|
|
markdown += server.ToMarkdown() + "\n"
|
|
}
|
|
return markdown
|
|
}
|
|
|
|
func (s *HideMyAssServer) ToMarkdown() (markdown string) {
|
|
return fmt.Sprintf("| %s | %s | %s | `%s` | %s | %s |",
|
|
s.Country, s.Region, s.City, s.Hostname,
|
|
boolToMarkdown(s.TCP), boolToMarkdown(s.UDP))
|
|
}
|
|
|
|
func (s *IpvanishServers) ToMarkdown() (markdown string) {
|
|
markdown = markdownTableHeading("Country", "City", "Hostname", "TCP", "UDP")
|
|
for _, server := range s.Servers {
|
|
markdown += server.ToMarkdown() + "\n"
|
|
}
|
|
return markdown
|
|
}
|
|
|
|
func (s *IpvanishServer) 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 *IvpnServers) ToMarkdown() (markdown string) {
|
|
markdown = markdownTableHeading("Country", "City", "ISP", "Hostname", "VPN", "TCP", "UDP")
|
|
for _, server := range s.Servers {
|
|
markdown += server.ToMarkdown() + "\n"
|
|
}
|
|
return markdown
|
|
}
|
|
|
|
func (s *IvpnServer) ToMarkdown() (markdown string) {
|
|
return fmt.Sprintf("| %s | %s | %s | `%s` | %s | %s | %s |",
|
|
s.Country, s.City, s.ISP, s.Hostname, s.VPN,
|
|
boolToMarkdown(s.TCP), boolToMarkdown(s.UDP))
|
|
}
|
|
|
|
func (s *MullvadServers) ToMarkdown() (markdown string) {
|
|
markdown = markdownTableHeading("Country", "City", "ISP", "Owned",
|
|
"Hostname", "VPN")
|
|
for _, server := range s.Servers {
|
|
markdown += server.ToMarkdown() + "\n"
|
|
}
|
|
return markdown
|
|
}
|
|
|
|
func (s *MullvadServer) ToMarkdown() (markdown string) {
|
|
return fmt.Sprintf("| %s | %s | %s | %s | `%s` | %s |",
|
|
s.Country, s.City, s.ISP, boolToMarkdown(s.Owned),
|
|
s.Hostname, s.VPN)
|
|
}
|
|
|
|
func (s *NordvpnServers) ToMarkdown() (markdown string) {
|
|
markdown = markdownTableHeading("Region", "Hostname", "TCP", "UDP")
|
|
for _, server := range s.Servers {
|
|
markdown += server.ToMarkdown() + "\n"
|
|
}
|
|
return markdown
|
|
}
|
|
|
|
func (s *NordvpnServer) ToMarkdown() (markdown string) {
|
|
return fmt.Sprintf("| %s | `%s` | %s | %s |",
|
|
s.Region, s.Hostname,
|
|
boolToMarkdown(s.TCP), boolToMarkdown(s.UDP))
|
|
}
|
|
|
|
func (s *PrivadoServers) ToMarkdown() (markdown string) {
|
|
markdown = markdownTableHeading("Country", "Region", "City", "Hostname")
|
|
for _, server := range s.Servers {
|
|
markdown += server.ToMarkdown() + "\n"
|
|
}
|
|
return markdown
|
|
}
|
|
|
|
func (s *PrivadoServer) ToMarkdown() (markdown string) {
|
|
return fmt.Sprintf("| %s | %s | %s | `%s` |",
|
|
s.Country, s.Region, s.City, s.Hostname)
|
|
}
|
|
|
|
func (s *PiaServers) ToMarkdown() (markdown string) {
|
|
markdown = markdownTableHeading("Region", "Hostname", "TCP", "UDP")
|
|
for _, server := range s.Servers {
|
|
markdown += server.ToMarkdown() + "\n"
|
|
}
|
|
return markdown
|
|
}
|
|
|
|
func (s *PIAServer) ToMarkdown() (markdown string) {
|
|
return fmt.Sprintf("| %s | `%s` | %s | %s |",
|
|
s.Region, s.Hostname,
|
|
boolToMarkdown(s.TCP), boolToMarkdown(s.UDP))
|
|
}
|
|
|
|
func (s *PrivatevpnServers) ToMarkdown() (markdown string) {
|
|
markdown = markdownTableHeading("Country", "City", "Hostname")
|
|
for _, server := range s.Servers {
|
|
markdown += server.ToMarkdown() + "\n"
|
|
}
|
|
return markdown
|
|
}
|
|
|
|
func (s *PrivatevpnServer) ToMarkdown() (markdown string) {
|
|
return fmt.Sprintf("| %s | %s | `%s` |",
|
|
s.Country, s.City, s.Hostname)
|
|
}
|
|
|
|
func (s *ProtonvpnServers) ToMarkdown() (markdown string) {
|
|
markdown = markdownTableHeading("Country", "Region", "City", "Hostname", "Free tier")
|
|
for _, server := range s.Servers {
|
|
markdown += server.ToMarkdown() + "\n"
|
|
}
|
|
return markdown
|
|
}
|
|
|
|
func (s *ProtonvpnServer) ToMarkdown() (markdown string) {
|
|
isFree := strings.Contains(strings.ToLower(s.Name), "free")
|
|
return fmt.Sprintf("| %s | %s | %s | `%s` | %s |",
|
|
s.Country, s.Region, s.City, s.Hostname, boolToMarkdown(isFree))
|
|
}
|
|
|
|
func (s *PurevpnServers) ToMarkdown() (markdown string) {
|
|
markdown = markdownTableHeading("Country", "Region", "City", "Hostname", "TCP", "UDP")
|
|
for _, server := range s.Servers {
|
|
markdown += server.ToMarkdown() + "\n"
|
|
}
|
|
return markdown
|
|
}
|
|
|
|
func (s *PurevpnServer) ToMarkdown() (markdown string) {
|
|
return fmt.Sprintf("| %s | %s | %s | `%s` | %s | %s |",
|
|
s.Country, s.Region, s.City, s.Hostname,
|
|
boolToMarkdown(s.TCP), boolToMarkdown(s.UDP))
|
|
}
|
|
|
|
func (s *SurfsharkServers) ToMarkdown() (markdown string) {
|
|
markdown = markdownTableHeading("Region", "Country", "City", "Hostname", "Multi-hop", "TCP", "UDP")
|
|
for _, server := range s.Servers {
|
|
markdown += server.ToMarkdown() + "\n"
|
|
}
|
|
return markdown
|
|
}
|
|
|
|
func (s *SurfsharkServer) ToMarkdown() (markdown string) {
|
|
return fmt.Sprintf("| %s | %s | %s | `%s` | %s | %s | %s |",
|
|
s.Region, s.Country, s.City, s.Hostname, boolToMarkdown(s.MultiHop),
|
|
boolToMarkdown(s.TCP), boolToMarkdown(s.UDP))
|
|
}
|
|
|
|
func (s *TorguardServers) ToMarkdown() (markdown string) {
|
|
markdown = markdownTableHeading("Country", "City", "Hostname", "TCP", "UDP")
|
|
for _, server := range s.Servers {
|
|
markdown += server.ToMarkdown() + "\n"
|
|
}
|
|
return markdown
|
|
}
|
|
|
|
func (s *TorguardServer) 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 *VPNUnlimitedServers) ToMarkdown() (markdown string) {
|
|
markdown = markdownTableHeading("Country", "City", "Hostname", "Free tier", "Streaming", "TCP", "UDP")
|
|
for _, server := range s.Servers {
|
|
markdown += server.ToMarkdown() + "\n"
|
|
}
|
|
return markdown
|
|
}
|
|
|
|
func (s *VPNUnlimitedServer) ToMarkdown() (markdown string) {
|
|
return fmt.Sprintf("| %s | %s | `%s` | %s | %s | %s | %s |",
|
|
s.Country, s.City, s.Hostname,
|
|
boolToMarkdown(s.Free), boolToMarkdown(s.Stream),
|
|
boolToMarkdown(s.TCP), boolToMarkdown(s.UDP))
|
|
}
|
|
|
|
func (s *VyprvpnServers) ToMarkdown() (markdown string) {
|
|
markdown = markdownTableHeading("Region", "Hostname", "TCP", "UDP")
|
|
for _, server := range s.Servers {
|
|
markdown += server.ToMarkdown() + "\n"
|
|
}
|
|
return markdown
|
|
}
|
|
|
|
func (s *VyprvpnServer) ToMarkdown() (markdown string) {
|
|
return fmt.Sprintf("| %s | `%s` | %s | %s |",
|
|
s.Region, s.Hostname,
|
|
boolToMarkdown(s.TCP), boolToMarkdown(s.UDP))
|
|
}
|
|
|
|
func (s *WevpnServers) ToMarkdown() (markdown string) {
|
|
markdown = markdownTableHeading("City", "Hostname", "TCP", "UDP")
|
|
for _, server := range s.Servers {
|
|
markdown += server.ToMarkdown() + "\n"
|
|
}
|
|
return markdown
|
|
}
|
|
|
|
func (s *WevpnServer) ToMarkdown() (markdown string) {
|
|
return fmt.Sprintf("| %s | `%s` | %s | %s |",
|
|
s.City, s.Hostname, boolToMarkdown(s.TCP), boolToMarkdown(s.UDP))
|
|
}
|
|
|
|
func (s *WindscribeServers) ToMarkdown() (markdown string) {
|
|
markdown = markdownTableHeading("Region", "City", "Hostname", "VPN")
|
|
for _, server := range s.Servers {
|
|
markdown += server.ToMarkdown() + "\n"
|
|
}
|
|
return markdown
|
|
}
|
|
|
|
func (s *WindscribeServer) ToMarkdown() (markdown string) {
|
|
return fmt.Sprintf("| %s | %s | `%s` | %s |",
|
|
s.Region, s.City, s.Hostname, s.VPN)
|
|
}
|