From 806822a9a8f454952ef74b7285583af1910c323f Mon Sep 17 00:00:00 2001 From: Andrew-71 Date: Tue, 7 May 2024 14:55:11 +0300 Subject: [PATCH] Add config reload option --- CHANGELOG.md | 5 +++++ README.md | 1 + api.go | 14 ++++++++++++++ i18n/en.json | 3 ++- i18n/ru.json | 3 ++- info.go | 2 +- pages/info.html | 1 + serve.go | 1 + 8 files changed, 27 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 707efe9..cc36c39 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,11 @@ # Changelog This file keeps track of changes in more human-readable fashion +## v0.2.0 +* Added config reload + * Can be reloaded in info page + * Can be reloaded with new `reload` api method (be aware of the redirect if referer is present) + ## 7 May 2024 - v0.1.0 * Began move towards [semantic versioning](https://semver.org/) * Current version is now 0.1.0 diff --git a/README.md b/README.md index 8c23bf4..454337a 100644 --- a/README.md +++ b/README.md @@ -98,4 +98,5 @@ POST /readme - save request body into readme.txt GET /export - get .zip archive of entire data directory GET /grace - "true" if grace period is active, otherwise "false" GET /version - get app's version +GET /reload - reload app config ``` \ No newline at end of file diff --git a/api.go b/api.go index b4e00bd..237be2c 100644 --- a/api.go +++ b/api.go @@ -122,3 +122,17 @@ func GetVersionApi(w http.ResponseWriter, r *http.Request) { HandleWrite(w.Write([]byte(Info.Version))) w.WriteHeader(http.StatusOK) } + +// ConfigReloadApi reloads the config +func ConfigReloadApi(w http.ResponseWriter, r *http.Request) { + err := Cfg.Reload() + if err != nil { + w.WriteHeader(http.StatusInternalServerError) + HandleWrite(w.Write([]byte(err.Error()))) + } + if r.Referer() != "" { + http.Redirect(w, r, r.Header.Get("Referer"), 302) + return + } + w.WriteHeader(http.StatusOK) +} diff --git a/i18n/en.json b/i18n/en.json index 4924f8f..018d761 100644 --- a/i18n/en.json +++ b/i18n/en.json @@ -20,5 +20,6 @@ "info.version": "Version", "info.version.link": "source and changelog", "info.export": "Export data", - "info.readme": "Edit readme.txt" + "info.readme": "Edit readme.txt", + "info.reload": "Reload config" } \ No newline at end of file diff --git a/i18n/ru.json b/i18n/ru.json index 9d13e2a..274e279 100644 --- a/i18n/ru.json +++ b/i18n/ru.json @@ -20,5 +20,6 @@ "info.version": "Версия", "info.version.link": "исходный код", "info.export": "Экспорт данных", - "info.readme": "Редактировать readme.txt" + "info.readme": "Редактировать readme.txt", + "info.reload": "Перезагрузить конфиг" } \ No newline at end of file diff --git a/info.go b/info.go index 7d6668b..e4dbdd7 100644 --- a/info.go +++ b/info.go @@ -15,7 +15,7 @@ type HibiscusInfo struct { // Info contains app information var Info = HibiscusInfo{ - Version: "0.1.0", + Version: "0.2.0", SourceLink: "https://git.a71.su/Andrew71/hibiscus", } diff --git a/pages/info.html b/pages/info.html index 0943129..9e949f3 100644 --- a/pages/info.html +++ b/pages/info.html @@ -4,5 +4,6 @@
  • {{ translatableText "info.version" }} - {{ .Version }} ({{ translatableText "info.version.link" }})
  • {{ translatableText "info.export" }}
  • {{ translatableText "info.readme" }}
  • +
  • {{ translatableText "info.reload" }}
  • {{end}} \ No newline at end of file diff --git a/serve.go b/serve.go index b6108c8..b05e0e3 100644 --- a/serve.go +++ b/serve.go @@ -45,6 +45,7 @@ func Serve() { apiRouter.Get("/export", GetExport) apiRouter.Get("/grace", GraceActiveApi) apiRouter.Get("/version", GetVersionApi) + apiRouter.Get("/reload", ConfigReloadApi) r.Mount("/api", apiRouter) // Static files