Files
gluetun/internal/cli/cli.go
Quentin McGaw e33a6a8503 Fix #170
2020-06-05 19:32:12 -04:00

37 lines
922 B
Go

package cli
import (
"fmt"
"net"
"time"
"github.com/qdm12/golibs/files"
"github.com/qdm12/golibs/network"
"github.com/qdm12/private-internet-access-docker/internal/params"
"github.com/qdm12/private-internet-access-docker/internal/publicip"
)
func HealthCheck() error {
paramsReader := params.NewReader(nil)
ipStatusFilepath, err := paramsReader.GetIPStatusFilepath()
if err != nil {
return err
}
// Get all VPN ip addresses from openvpn configuration file
fileManager := files.NewFileManager()
b, err := fileManager.ReadFile(string(ipStatusFilepath))
if err != nil {
return err
}
savedPublicIP := net.ParseIP(string(b))
publicIP, err := publicip.NewIPGetter(network.NewClient(3 * time.Second)).Get()
if err != nil {
return err
}
if !publicIP.Equal(savedPublicIP) {
return fmt.Errorf("Public IP address is %s instead of initial vpn IP address %s", publicIP, savedPublicIP)
}
return nil
}