From f09dc8c1c14f294c2397c37c029778e773d16651 Mon Sep 17 00:00:00 2001 From: Boming Zhang Date: Mon, 14 Oct 2024 09:41:10 -0400 Subject: [PATCH] feat(cmd/joj3): expire unix timestamp conf --- cmd/joj3/conf/conf.go | 16 +++++++++++++--- cmd/joj3/main.go | 4 ++++ 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/cmd/joj3/conf/conf.go b/cmd/joj3/conf/conf.go index e11ae82..f8e6837 100644 --- a/cmd/joj3/conf/conf.go +++ b/cmd/joj3/conf/conf.go @@ -7,6 +7,7 @@ import ( "path/filepath" "regexp" "strings" + "time" "github.com/go-git/go-git/v5" "github.com/joint-online-judge/JOJ3/internal/stage" @@ -30,9 +31,10 @@ type ConfStage struct { } type Conf struct { - Name string `default:"unknown"` - LogPath string `default:""` - Stage struct { + Name string `default:"unknown"` + LogPath string `default:""` + ExpireUnixTimestamp int64 `default:"-1"` + Stage struct { SandboxExecServer string `default:"localhost:5051"` SandboxToken string `default:""` OutputPath string `default:"joj3_result.json"` @@ -254,3 +256,11 @@ func ListValidScopes(confRoot, confName string) ([]string, error) { }) return validScopes, err } + +func CheckExpire(conf *Conf) error { + if conf.ExpireUnixTimestamp > 0 && + conf.ExpireUnixTimestamp < time.Now().Unix() { + return fmt.Errorf("config file expired: %d", conf.ExpireUnixTimestamp) + } + return nil +} diff --git a/cmd/joj3/main.go b/cmd/joj3/main.go index 12d5dea..74fa4a7 100644 --- a/cmd/joj3/main.go +++ b/cmd/joj3/main.go @@ -69,6 +69,10 @@ func mainImpl() error { slog.Error("setup slog", "error", err) return err } + if err := conf.CheckExpire(confObj); err != nil { + slog.Error("conf check expire", "error", err) + return err + } if err := stage.Run(confObj, group); err != nil { slog.Error("stage run", "error", err) return err