From a0a32f6c212472b7f16d875c6d13dff55d35a504 Mon Sep 17 00:00:00 2001 From: Florent Gluck <florent.gluck@hesge.ch> Date: Tue, 17 Sep 2024 17:46:38 +0200 Subject: [PATCH] Fixed bug in token refresh in nexus-exam --- src/client/cmdMisc/ls.go | 2 +- src/client/nexus-exam/go.mod | 1 + src/client/nexus-exam/nexus-exam.go | 44 +++++++++++------------------ src/client/nexush/nexush.go | 8 +++--- 4 files changed, 22 insertions(+), 33 deletions(-) diff --git a/src/client/cmdMisc/ls.go b/src/client/cmdMisc/ls.go index e0261a25..ec92a9f8 100644 --- a/src/client/cmdMisc/ls.go +++ b/src/client/cmdMisc/ls.go @@ -44,7 +44,7 @@ func (cmd *Ls)Run(args []string) int { func (cmd *Ls)listDir(dir string) { fis, err := ioutil.ReadDir(dir) if err != nil { - u.Println("Failed reading \""+dir+"\" directory: "+err.Error()) + u.PrintlnErr("Failed reading \""+dir+"\" directory: "+err.Error()) return } diff --git a/src/client/nexus-exam/go.mod b/src/client/nexus-exam/go.mod index 4a682fba..a5f105ab 100644 --- a/src/client/nexus-exam/go.mod +++ b/src/client/nexus-exam/go.mod @@ -89,5 +89,6 @@ require ( golang.org/x/text v0.14.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect honnef.co/go/js/dom v0.0.0-20210725211120-f030747120f2 // indirect + nexus-client/cmdToken v0.0.0-00010101000000-000000000000 // indirect nexus-common/caps v0.0.0-00010101000000-000000000000 // indirect ) diff --git a/src/client/nexus-exam/nexus-exam.go b/src/client/nexus-exam/nexus-exam.go index c5044078..4c02f26c 100644 --- a/src/client/nexus-exam/nexus-exam.go +++ b/src/client/nexus-exam/nexus-exam.go @@ -19,6 +19,7 @@ import ( "nexus-client/version" "nexus-client/defaults" "nexus-client/cmdLogin" + "nexus-client/cmdToken" "fyne.io/fyne/v2" "fyne.io/fyne/v2/app" "fyne.io/fyne/v2/theme" @@ -54,6 +55,7 @@ func exit(code int) { func attachVM(parent fyne.Window, hostname, cert, pwd string) { client := g.GetInstance().Client host := g.GetInstance().Host + setHeaderToken() p := ¶ms.VMAttachCreds{ Pwd: pwd } resp, err := client.R().SetBody(p).Post(host+"/vms/spicecreds") @@ -133,37 +135,26 @@ func hypervisorCheck() { } } -// Recurrently obtains a new JWT token so that the user session doesn't expire. -func refreshToken(parent fyne.Window) { +func setHeaderToken() { client := g.GetInstance().Client - host := g.GetInstance().Host + client.SetHeader("Content-Type", "application/json") + client.SetHeader("Authorization", "Bearer "+token) +} +// Recurrently obtains a new JWT token so that the user session doesn't expire. +func refreshToken(parent fyne.Window) { for { - resp, err := client.R().Get(host+"/token/refresh") + setHeaderToken() + refreshedToken, err := cmdToken.GetToken() if err != nil { - errorPopup(parent, "Failed refreshing token (code 1)") - u.PrintlnErr(buildversion.BuildDate(), ": failed refreshing token (code 1)") + errorPopup(parent, "Failed refreshing token") + u.PrintlnErr(time.Now(), ": failed refreshing token: "+err.Error()) + break } else { - if resp.IsSuccess() { - type Response struct { - Token string - } - var response Response - err = json.Unmarshal(resp.Body(), &response) - if err != nil { - errorPopup(parent, "Failed refreshing token (code 2)") - u.PrintlnErr(buildversion.BuildDate(), ": failed refreshing token (code 2)") - } else { - token = response.Token - u.Println(buildversion.BuildDate(), ": successfully refreshed token") - } - } else { - // errorPopup(parent, resp.Status()+": "+resp.String()) - errorPopup(parent, "Failed refreshing token (code 3)") - u.PrintlnErr(buildversion.BuildDate(), ": failed refreshing token (code 3)") - } + u.Println(time.Now(), ": successfully refreshed token") } - time.Sleep(1*time.Hour) + token = refreshedToken + time.Sleep(30*time.Second) } } @@ -229,9 +220,6 @@ func run() int { abortWindow("Failed obtaining token (network issue?)") } - client.SetHeader("Content-Type", "application/json") - client.SetHeader("Authorization", "Bearer "+token) - app := app.New() app.Settings().SetTheme(theme.LightTheme()) win := app.NewWindow(windowTitle) diff --git a/src/client/nexush/nexush.go b/src/client/nexush/nexush.go index bbd5ef19..fe2ca8a0 100644 --- a/src/client/nexush/nexush.go +++ b/src/client/nexush/nexush.go @@ -212,14 +212,14 @@ Type: "help" for help on commands quit = true continue } else { - u.Println("Error reading line: ", err) + u.PrintlnErr("Error reading line: ", err) continue } line = strings.TrimSpace(line) args, err := extractArgs(line) if err != nil { - u.Println("invalid command line: "+err.Error()) + u.PrintlnErr("invalid command line: "+err.Error()) continue } if args == nil { @@ -245,7 +245,7 @@ Type: "help" for help on commands if typedCmd == "refresh" { refreshedToken, err := cmdToken.GetToken() if err != nil { - u.Println("refresh error: "+err.Error()) + u.PrintlnErr("refresh error: "+err.Error()) break } token = refreshedToken @@ -256,7 +256,7 @@ Type: "help" for help on commands break } } else { - u.Println(typedCmd+": unknown command") + u.PrintlnErr(typedCmd+": unknown command") } } } -- GitLab