New PIA servers support (#227)

* Adapt storage: SyncServers write to file option, export FlushToFile
* CLI built-in updater for old and new PIA servers
* Update hardcoded IP addresses for PIA old and new servers
* Add PIA old to allServers struct and update timestamps
* Adapt code to work with new and old PIA servers
* Remove PIA subdomains (unneeded) from resolver tool
This commit is contained in:
Quentin McGaw
2020-08-28 08:17:04 -04:00
committed by GitHub
parent 99ba56f574
commit d463e4cb69
24 changed files with 518 additions and 174 deletions

View File

@@ -18,13 +18,14 @@ func countServers(allServers models.AllServers) int {
len(allServers.Mullvad.Servers) +
len(allServers.Nordvpn.Servers) +
len(allServers.Pia.Servers) +
len(allServers.PiaOld.Servers) +
len(allServers.Purevpn.Servers) +
len(allServers.Surfshark.Servers) +
len(allServers.Vyprvpn.Servers) +
len(allServers.Windscribe.Servers)
}
func (s *storage) SyncServers(hardcodedServers models.AllServers) (allServers models.AllServers, err error) {
func (s *storage) SyncServers(hardcodedServers models.AllServers, write bool) (allServers models.AllServers, err error) {
// Eventually read file
var serversOnFile models.AllServers
_, err = s.osStat(jsonFilepath)
@@ -43,10 +44,10 @@ func (s *storage) SyncServers(hardcodedServers models.AllServers) (allServers mo
allServers = s.mergeServers(hardcodedServers, serversOnFile)
// Eventually write file
if reflect.DeepEqual(serversOnFile, allServers) {
if !write || reflect.DeepEqual(serversOnFile, allServers) {
return allServers, nil
}
return allServers, s.flushToFile(allServers)
return allServers, s.FlushToFile(allServers)
}
func (s *storage) readFromFile() (servers models.AllServers, err error) {
@@ -60,7 +61,7 @@ func (s *storage) readFromFile() (servers models.AllServers, err error) {
return servers, nil
}
func (s *storage) flushToFile(servers models.AllServers) error {
func (s *storage) FlushToFile(servers models.AllServers) error {
bytes, err := json.MarshalIndent(servers, "", " ")
if err != nil {
return fmt.Errorf("cannot write to file: %w", err)