1
0
mirror of https://github.com/hrfee/jfa-go.git synced 2024-12-22 00:50:12 +00:00

pwreset: Stop daemon on restart, dont fail if json is malformed

daemon now stops on the RESTART signal, and when it fails to read JSON,
it no longer stops the whole daemon.
This commit is contained in:
Harvey Tindall 2023-06-11 16:35:41 +01:00
parent d688dd02c8
commit f88f71d933
Signed by: hrfee
GPG Key ID: BBC65952848FB1A2
2 changed files with 6 additions and 3 deletions

View File

@ -586,11 +586,13 @@ func start(asDaemon, firstCall bool) {
}
}()
for range RESTART {
println("got it too!")
ctx, cancel := context.WithTimeout(context.Background(), time.Second*5)
defer cancel()
if err := SRV.Shutdown(ctx); err != nil {
app.err.Fatalf("Server shutdown error: %s", err)
}
app.info.Println("Server shut down.")
return
}
}
@ -608,6 +610,7 @@ func (app *appContext) shutdown() {
if err := SRV.Shutdown(cntx); err != nil {
app.err.Fatalf("Server shutdown error: %s", err)
}
os.Exit(1)
}
}

View File

@ -40,13 +40,13 @@ func (app *appContext) StartPWR() {
}
defer watcher.Close()
done := make(chan bool)
go pwrMonitor(app, watcher)
err = watcher.Add(path)
if err != nil {
app.err.Printf("Failed to start password reset daemon: %s", err)
}
<-done
<-RESTART
}
// PasswordReset represents a passwordreset-xyz.json file generated by Jellyfin.
@ -77,7 +77,7 @@ func pwrMonitor(app *appContext, watcher *fsnotify.Watcher) {
err = json.Unmarshal(data, &pwr)
if len(pwr.Pin) == 0 || err != nil {
app.debug.Printf("PWR: Failed to read PIN: %v", err)
return
continue
}
app.info.Printf("New password reset for user \"%s\"", pwr.Username)
if currentTime := time.Now(); pwr.Expiry.After(currentTime) {