Files
gluetun/internal/provider/perfectprivacy/updater/citytoserver.go

48 lines
1004 B
Go
Raw Permalink Normal View History

package updater
2021-10-05 10:44:15 -07:00
import (
"net/netip"
2021-10-05 10:44:15 -07:00
"github.com/qdm12/gluetun/internal/constants/vpn"
2021-10-05 10:44:15 -07:00
"github.com/qdm12/gluetun/internal/models"
)
type cityToServer map[string]models.Server
2021-10-05 10:44:15 -07:00
func (cts cityToServer) add(city string, ips []netip.Addr) {
2021-10-05 10:44:15 -07:00
server, ok := cts[city]
if !ok {
server.VPN = vpn.OpenVPN
2021-10-05 10:44:15 -07:00
server.City = city
server.IPs = ips
server.TCP = true
server.UDP = true
} else {
// Do not insert duplicate IP addresses
existingIPs := make(map[string]struct{}, len(server.IPs))
for _, ip := range server.IPs {
existingIPs[ip.String()] = struct{}{}
}
for _, ip := range ips {
ipString := ip.String()
_, ok := existingIPs[ipString]
if ok {
continue
}
existingIPs[ipString] = struct{}{}
server.IPs = append(server.IPs, ip)
}
}
cts[city] = server
}
func (cts cityToServer) toServersSlice() (servers []models.Server) {
servers = make([]models.Server, 0, len(cts))
2021-10-05 10:44:15 -07:00
for _, server := range cts {
servers = append(servers, server)
}
return servers
}