diff --git a/src/client/cmdMisc/ls.go b/src/client/cmdMisc/ls.go index e0261a257a112662e01663ae28a365709c3baaaa..ec92a9f8709d3070810151a55af5726435beef35 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 4a682fba02ff3ddf30b69a06dcb74b0607587ed0..a5f105ab7014c2585c20a7772f4dd9bb05cf31ce 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 c5044078f4c27efa987ee508164f11c120a663a6..4c02f26cf55d9c7833bccac35094df3b658340fc 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 bbd5ef199697e1f57a0581b39833273c78240cf3..fe2ca8a026bda956049884424c836d041d951e59 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") } } }