From a10c5ecd2b4bba6814fd66f0ec1997938d95bf92 Mon Sep 17 00:00:00 2001 From: "kali kaneko (leap communications)" Date: Mon, 17 Aug 2020 19:42:15 +0200 Subject: [feat] login feedback - Resolves: #334 --- pkg/vpn/bonafide/bonafide.go | 2 +- pkg/vpn/openvpn.go | 16 ++++++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) (limited to 'pkg/vpn') diff --git a/pkg/vpn/bonafide/bonafide.go b/pkg/vpn/bonafide/bonafide.go index 87801cc..dd8c597 100644 --- a/pkg/vpn/bonafide/bonafide.go +++ b/pkg/vpn/bonafide/bonafide.go @@ -137,7 +137,7 @@ func (b *Bonafide) GetPemCertificate() ([]byte, error) { log.Fatal("ERROR: bonafide did not initialize auth") } if b.auth.needsCredentials() && b.token == nil { - log.Println("BUG: expected token to be set, but is not there") + log.Println("Needs token, but token is empty") return nil, errors.New("Needs to login, but it was not logged in. Please, restart the application and report it if it continues happening") } diff --git a/pkg/vpn/openvpn.go b/pkg/vpn/openvpn.go index 31f8738..11bba69 100644 --- a/pkg/vpn/openvpn.go +++ b/pkg/vpn/openvpn.go @@ -16,6 +16,7 @@ package vpn import ( + "errors" "fmt" "io/ioutil" "log" @@ -43,9 +44,23 @@ func (b *Bitmask) StartVPN(provider string) error { } } + if !b.CanStartVPN() { + return errors.New("BUG: cannot start vpn") + } return b.startOpenVPN(proxy) } +func (b *Bitmask) CanStartVPN() bool { + if !b.bonafide.NeedsCredentials() { + return true + } + _, err := b.getCert() + if err != nil { + return false + } + return true +} + func (b *Bitmask) startTransport() (proxy string, err error) { proxy = "127.0.0.1:4430" if b.shapes != nil { @@ -150,6 +165,7 @@ func (b *Bitmask) getCert() (certPath string, err error) { certPath = b.getCertPemPath() if _, err := os.Stat(certPath); os.IsNotExist(err) { + log.Println("Cert does not exist in ", certPath, "...fetching") cert, err := b.bonafide.GetPemCertificate() if err != nil { return "", err -- cgit v1.2.3