diff --git a/Dockerfile-remote-scores-sync-zqds b/Dockerfile-remote-scores-sync-zqds index d1847391..d41fd37c 100644 --- a/Dockerfile-remote-scores-sync-zqds +++ b/Dockerfile-remote-scores-sync-zqds @@ -6,6 +6,7 @@ WORKDIR /go/src/srs.epita.fr/fic-server/ COPY go.mod go.sum ./ COPY libfic ./libfic/ +COPY settings ./settings/ COPY remote/scores-sync-zqds ./remote/scores-sync-zqds/ RUN go get -d -v ./remote/scores-sync-zqds && \ diff --git a/admin/api/settings.go b/admin/api/settings.go index 2f949449..9ac78cff 100644 --- a/admin/api/settings.go +++ b/admin/api/settings.go @@ -16,6 +16,9 @@ import ( var IsProductionEnv = false func init() { + router.GET("/api/challenge.json", apiHandler(getChallengeInfo)) + router.PUT("/api/challenge.json", apiHandler(saveChallengeInfo)) + router.GET("/api/settings-ro.json", apiHandler(getROSettings)) router.GET("/api/settings.json", apiHandler(getSettings)) router.PUT("/api/settings.json", apiHandler(saveSettings)) @@ -44,6 +47,23 @@ func getROSettings(_ httprouter.Params, body []byte) (interface{}, error) { }, nil } +func getChallengeInfo(_ httprouter.Params, body []byte) (interface{}, error) { + return settings.ReadChallengeInfo(path.Join(settings.SettingsDir, settings.ChallengeFile)) +} + +func saveChallengeInfo(_ httprouter.Params, body []byte) (interface{}, error) { + var info *settings.ChallengeInfo + if err := json.Unmarshal(body, &info); err != nil { + return nil, err + } + + if err := settings.SaveChallengeInfo(path.Join(settings.SettingsDir, settings.ChallengeFile), info); err != nil { + return nil, err + } else { + return info, err + } +} + func getSettings(_ httprouter.Params, body []byte) (interface{}, error) { if s, err := settings.ReadSettings(path.Join(settings.SettingsDir, settings.SettingsFile)); err != nil { return nil, err @@ -83,9 +103,7 @@ func ApplySettings(config *settings.Settings) { } func ResetSettings() error { - return settings.SaveSettings(path.Join(settings.SettingsDir, settings.SettingsFile), &settings.FICSettings{ - Title: "Challenge FIC", - Authors: "Laboratoire SRS, ÉPITA", + return settings.SaveSettings(path.Join(settings.SettingsDir, settings.SettingsFile), &settings.Settings{ WorkInProgress: IsProductionEnv, FirstBlood: fic.FirstBlood, SubmissionCostBase: fic.SubmissionCostBase, diff --git a/admin/api/theme.go b/admin/api/theme.go index e225a040..42af449b 100644 --- a/admin/api/theme.go +++ b/admin/api/theme.go @@ -22,8 +22,10 @@ func init() { router.GET("/api/session-forensic.yaml", apiHandler(func(_ httprouter.Params, _ []byte) (interface{}, error) { if s, err := settings.ReadSettings(path.Join(settings.SettingsDir, settings.SettingsFile)); err != nil { return nil, err + } else if c, err := settings.ReadChallengeInfo(path.Join(settings.SettingsDir, settings.ChallengeFile)); err != nil { + return nil, err } else { - return fic.GenZQDSSessionFile(s) + return fic.GenZQDSSessionFile(c, s) } })) router.GET("/api/files-bindings", apiHandler(bindingFiles)) diff --git a/admin/static/views/settings.html b/admin/static/views/settings.html index cbac41f8..89825f64 100644 --- a/admin/static/views/settings.html +++ b/admin/static/views/settings.html @@ -6,27 +6,6 @@ -