Files
gluetun/internal/cli/cli.go

37 lines
922 B
Go
Raw Normal View History

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