summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorkali <kali@leap.se>2020-09-29 20:41:55 +0200
committerRuben Pollan <meskio@sindominio.net>2020-10-13 19:08:42 +0200
commit47ac0543b9ed2d4afb8814a19e2f4dc3c30030e1 (patch)
tree1634c42bebe7d8f59c7b56cb9800aba6ea4466f6
parent2cf32806dcce2d41920be28bd0e7d12e5d049357 (diff)
[feat] improve error handling during login
-rw-r--r--gui/backend.go1
-rw-r--r--gui/qml/main.qml2
-rw-r--r--pkg/backend/api.go7
-rw-r--r--pkg/vpn/bonafide/auth_sip.go12
-rw-r--r--pkg/vpn/bonafide/bonafide.go3
5 files changed, 17 insertions, 8 deletions
diff --git a/gui/backend.go b/gui/backend.go
index f8ee2bd..9453d88 100644
--- a/gui/backend.go
+++ b/gui/backend.go
@@ -3,7 +3,6 @@ package main
/* a wrapper around bitmask that exposes status to a QtQml gui.
Have a look at the pkg/backend module for further enlightment. */
-// #cgo CXXFLAGS: -mmacosx-version-min=10.10
import (
"C"
"unsafe"
diff --git a/gui/qml/main.qml b/gui/qml/main.qml
index 80f8e7c..ce72fff 100644
--- a/gui/qml/main.qml
+++ b/gui/qml/main.qml
@@ -48,7 +48,7 @@ ApplicationWindow {
function showInitFailure(msg) {
console.debug("ERRORS:", ctx.errors)
if (msg == undefined) {
- if (ctx.errors == 'bad_auth_502') {
+ if (ctx.errors == 'bad_auth_502' || ctx.errors == 'bad_auth_timeout') {
msg = qsTr("Oops! The authentication service seems down. Please try again later")
initFailure.title = qsTr("Service Error")
}
diff --git a/pkg/backend/api.go b/pkg/backend/api.go
index 1d44f8a..4390fef 100644
--- a/pkg/backend/api.go
+++ b/pkg/backend/api.go
@@ -18,10 +18,12 @@ import (
func Login(username, password string) {
success, err := ctx.bm.DoLogin(username, password)
if err != nil {
- log.Printf("Error on login: %v", err)
- if err.Error() == "Cannot get token: Error 502" {
+ if err.Error() == "TokenErrTimeout" {
+ ctx.Errors = "bad_auth_timeout"
+ } else if err.Error() == "TokenErrBadStatus 502" {
ctx.Errors = "bad_auth_502"
} else {
+ log.Println("ERROR: bad login", err)
ctx.Errors = "bad_auth"
}
} else if success {
@@ -29,7 +31,6 @@ func Login(username, password string) {
ctx.LoginOk = true
ctx.LoginDialog = false
} else {
- // TODO: display login again with an err
log.Printf("Failed to login as %s", username)
ctx.LoginDialog = true
ctx.Errors = "bad_auth"
diff --git a/pkg/vpn/bonafide/auth_sip.go b/pkg/vpn/bonafide/auth_sip.go
index 5da562d..cc9d967 100644
--- a/pkg/vpn/bonafide/auth_sip.go
+++ b/pkg/vpn/bonafide/auth_sip.go
@@ -44,15 +44,21 @@ func (a *sipAuthentication) getToken(user, password string) ([]byte, error) {
}
credJSON, err := formatCredentials(user, password)
if err != nil {
- return nil, fmt.Errorf("Cannot encode credentials: %s", err)
+ log.Println("ERROR: cannot encode credentials.", err)
+ return nil, fmt.Errorf("TokenErrBadCred")
}
resp, err := a.client.Post(a.authURI, "text/json", strings.NewReader(credJSON))
if err != nil {
- return nil, fmt.Errorf("Error on auth request: %v", err)
+ log.Println("ERROR: failed auth request", err)
+ if os.IsTimeout(err) {
+ return nil, fmt.Errorf("TokenErrTimeout")
+ } else {
+ return nil, fmt.Errorf("TokenErrBadPost")
+ }
}
defer resp.Body.Close()
if resp.StatusCode != 200 {
- return nil, fmt.Errorf("Cannot get token: Error %d", resp.StatusCode)
+ return nil, fmt.Errorf("TokenErrBadStatus %d", resp.StatusCode)
}
token, err := ioutil.ReadAll(resp.Body)
if err != nil {
diff --git a/pkg/vpn/bonafide/bonafide.go b/pkg/vpn/bonafide/bonafide.go
index 973416a..4203ba2 100644
--- a/pkg/vpn/bonafide/bonafide.go
+++ b/pkg/vpn/bonafide/bonafide.go
@@ -85,6 +85,7 @@ func New() *Bonafide {
RootCAs: certs,
},
},
+ Timeout: time.Second * 10,
}
_, tzOffsetSeconds := time.Now().Zone()
tzOffsetHours := tzOffsetSeconds / secondsPerHour
@@ -129,6 +130,8 @@ func (b *Bonafide) DoLogin(username, password string) (bool, error) {
}
var err error
+
+ log.Println("Bonafide: getting token...")
b.token, err = b.auth.getToken(username, password)
if err != nil {
return false, err