- Each provider interface can now fetch updated servers data - Rename each provider updater subpackage name to `updater` - Updater constructor does not take a settings struct - Updater update method takes in a slice of provider strings
38 lines
861 B
Go
38 lines
861 B
Go
package updater
|
|
|
|
import (
|
|
"context"
|
|
"net/http"
|
|
"strings"
|
|
|
|
"github.com/qdm12/gluetun/internal/updater/openvpn"
|
|
)
|
|
|
|
func getAllHostToURL(ctx context.Context, client *http.Client) (
|
|
tcpHostToURL, udpHostToURL map[string]string, err error) {
|
|
tcpHostToURL, err = getHostToURL(ctx, client, "TCP")
|
|
if err != nil {
|
|
return nil, nil, err
|
|
}
|
|
|
|
udpHostToURL, err = getHostToURL(ctx, client, "UDP")
|
|
if err != nil {
|
|
return nil, nil, err
|
|
}
|
|
|
|
return tcpHostToURL, udpHostToURL, nil
|
|
}
|
|
|
|
func getHostToURL(ctx context.Context, client *http.Client, protocol string) (
|
|
hostToURL map[string]string, err error) {
|
|
const baseURL = "https://vpn.hidemyass.com/vpn-config"
|
|
indexURL := baseURL + "/" + strings.ToUpper(protocol) + "/"
|
|
|
|
urls, err := fetchIndex(ctx, client, indexURL)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
return openvpn.FetchMultiFiles(ctx, client, urls)
|
|
}
|