Maint: hardcoded data in JSON embedded file

- Server information, versions and timestamps together in internal/constants/servers.json
- breaking change: updater cli uses -enduser instead of -file
- breaking change: updater cli uses -maintainer instead of -stdout
- Fix: replace special last a character with 'a' from Bogota for PrivateVPN
- Feat: do not write out servers and timestamp if no change was detected
This commit is contained in:
Quentin McGaw (desktop)
2021-07-20 03:01:26 +00:00
parent 394abbbe35
commit da4d528463
49 changed files with 109965 additions and 12159 deletions

View File

@@ -1,95 +1,29 @@
package constants
import "github.com/qdm12/gluetun/internal/models"
import (
_ "embed"
"encoding/json"
"github.com/qdm12/gluetun/internal/models"
)
//go:embed servers.json
var allServersBytes []byte //nolint:gochecknoglobals
var allServers models.AllServers //nolint:gochecknoglobals
func init() { //nolint:gochecknoinits
// error returned covered by unit test
allServers, _ = parseAllServers(allServersBytes)
}
func parseAllServers(b []byte) (allServers models.AllServers, err error) {
err = json.Unmarshal(b, &allServers)
return allServers, err
}
func GetAllServers() (allServers models.AllServers) {
//nolint:gomnd
return models.AllServers{
Version: 1, // used for migration of the top level scheme
Cyberghost: models.CyberghostServers{
Version: 2, // model version
Timestamp: 1624307338, // latest takes precedence
Servers: CyberghostServers(),
},
Fastestvpn: models.FastestvpnServers{
Version: 1,
Timestamp: 1620435633,
Servers: FastestvpnServers(),
},
HideMyAss: models.HideMyAssServers{
Version: 1,
Timestamp: 1620435633,
Servers: HideMyAssServers(),
},
Ipvanish: models.IpvanishServers{
Version: 1,
Timestamp: 1625164062,
Servers: IpvanishServers(),
},
Ivpn: models.IvpnServers{
Version: 1,
Timestamp: 1624120443,
Servers: IvpnServers(),
},
Mullvad: models.MullvadServers{
Version: 2,
Timestamp: 1620500848,
Servers: MullvadServers(),
},
Nordvpn: models.NordvpnServers{
Version: 2,
Timestamp: 1620514180,
Servers: NordvpnServers(),
},
Privado: models.PrivadoServers{
Version: 3,
Timestamp: 1620520278,
Servers: PrivadoServers(),
},
Privatevpn: models.PrivatevpnServers{
Version: 1,
Timestamp: 1620435633,
Servers: PrivatevpnServers(),
},
Protonvpn: models.ProtonvpnServers{
Version: 1,
Timestamp: 1624894186,
Servers: ProtonvpnServers(),
},
Pia: models.PiaServers{
Version: 6,
Timestamp: 1620663401,
Servers: PIAServers(),
},
Purevpn: models.PurevpnServers{
Version: 2,
Timestamp: 1622644308,
Servers: PurevpnServers(),
},
Surfshark: models.SurfsharkServers{
Version: 2,
Timestamp: 1620607876,
Servers: SurfsharkServers(),
},
Torguard: models.TorguardServers{
Version: 2,
Timestamp: 1620611129,
Servers: TorguardServers(),
},
VPNUnlimited: models.VPNUnlimitedServers{
Version: 1,
Timestamp: 1623950304,
Servers: VPNUnlimitedServers(),
},
Vyprvpn: models.VyprvpnServers{
Version: 2,
Timestamp: 1620612506,
Servers: VyprvpnServers(),
},
Windscribe: models.WindscribeServers{
Version: 3,
Timestamp: 1620657134,
Servers: WindscribeServers(),
},
if allServers.Version == 0 { // not parsed yet - for unit tests mostly
allServers, _ = parseAllServers(allServersBytes)
}
return allServers
}