From c2dd27d9a50ad5d1db4ae9e1fd0228595e4dbff2 Mon Sep 17 00:00:00 2001 From: nemunaire Date: Sat, 25 Nov 2017 16:05:03 +0100 Subject: [PATCH] Define global default value at initialisation --- admin/api/file.go | 8 ++++---- admin/api/settings.go | 8 +++----- admin/main.go | 19 ++++++++++--------- admin/time.go | 2 +- backend/main.go | 7 +++---- frontend/main.go | 4 ++-- frontend/settings.go | 8 +++----- libfic/file.go | 6 +++--- settings/settings.go | 2 ++ 9 files changed, 31 insertions(+), 33 deletions(-) diff --git a/admin/api/file.go b/admin/api/file.go index 272ee16c..a496115a 100644 --- a/admin/api/file.go +++ b/admin/api/file.go @@ -17,10 +17,10 @@ import ( "github.com/dchest/blake2b" ) -var CloudDAVBase string -var CloudUsername string -var CloudPassword string -var RapidImport bool +var CloudDAVBase string = "https://srs.epita.fr/owncloud/remote.php/webdav/FIC 2018" +var CloudUsername string = "fic" +var CloudPassword string = "" +var RapidImport bool = false type uploadedFile struct { URI string diff --git a/admin/api/settings.go b/admin/api/settings.go index 391390cf..31ede3b5 100644 --- a/admin/api/settings.go +++ b/admin/api/settings.go @@ -12,8 +12,6 @@ import ( "github.com/julienschmidt/httprouter" ) -var SettingsDir string - func init() { router.GET("/api/settings.json", apiHandler(getSettings)) router.PUT("/api/settings.json", apiHandler(saveSettings)) @@ -22,8 +20,8 @@ func init() { } func getSettings(_ httprouter.Params, body []byte) (interface{}, error) { - if settings.ExistsSettings(path.Join(SettingsDir, settings.SettingsFile)) { - return settings.ReadSettings(path.Join(SettingsDir, settings.SettingsFile)) + if settings.ExistsSettings(path.Join(settings.SettingsDir, settings.SettingsFile)) { + return settings.ReadSettings(path.Join(settings.SettingsDir, settings.SettingsFile)) } else { return settings.FICSettings{"Challenge FIC", "Laboratoire SRS, ÉPITA", time.Unix(0,0), time.Unix(0,0), time.Unix(0,0), fic.FirstBlood, fic.SubmissionCostBase, false, false, false, true, true}, nil } @@ -35,7 +33,7 @@ func saveSettings(_ httprouter.Params, body []byte) (interface{}, error) { return nil, err } - if err := settings.SaveSettings(path.Join(SettingsDir, settings.SettingsFile), config); err != nil { + if err := settings.SaveSettings(path.Join(settings.SettingsDir, settings.SettingsFile), config); err != nil { return nil, err } else { return config, err diff --git a/admin/main.go b/admin/main.go index ca01c7e5..75c35d72 100644 --- a/admin/main.go +++ b/admin/main.go @@ -14,6 +14,7 @@ import ( "srs.epita.fr/fic-server/admin/api" "srs.epita.fr/fic-server/libfic" + "srs.epita.fr/fic-server/settings" ) var PKIDir string @@ -66,15 +67,15 @@ func main() { flag.StringVar(&PKIDir, "pki", "./pki/", "Base directory where found PKI scripts") flag.StringVar(&StaticDir, "static", "./htdocs-admin/", "Directory containing static files") flag.StringVar(&api.TeamsDir, "teams", "./TEAMS", "Base directory where save teams JSON files") - flag.StringVar(&api.SettingsDir, "settings", "./SETTINGS", "Base directory where load and save settings") - flag.StringVar(&fic.FilesDir, "files", "./FILES/", "Base directory where found challenges files, local part") - flag.StringVar(&api.CloudDAVBase, "clouddav", "https://srs.epita.fr/owncloud/remote.php/webdav/FIC 2016", + flag.StringVar(&settings.SettingsDir, "settings", settings.SettingsDir, "Base directory where load and save settings") + flag.StringVar(&fic.FilesDir, "files", fic.FilesDir, "Base directory where found challenges files, local part") + flag.StringVar(&api.CloudDAVBase, "clouddav", api.CloudDAVBase, "Base directory where found challenges files, cloud part") - flag.StringVar(&api.CloudUsername, "clouduser", "fic", "Username used to sync") - flag.StringVar(&api.CloudPassword, "cloudpass", "", "Password used to sync") - flag.BoolVar(&api.RapidImport, "rapidimport", false, "Don't try to reimport an existing file") - flag.BoolVar(&fic.OptionalDigest, "optionaldigest", false, "Is the digest required when importing files?") - flag.BoolVar(&fic.StrongDigest, "strongdigest", false, "Are BLAKE2b digests required instead of SHA-1 or BLAKE2b?") + flag.StringVar(&api.CloudUsername, "clouduser", api.CloudUsername, "Username used to sync") + flag.StringVar(&api.CloudPassword, "cloudpass", api.CloudPassword, "Password used to sync") + flag.BoolVar(&api.RapidImport, "rapidimport", api.RapidImport, "Don't try to reimport an existing file") + flag.BoolVar(&fic.OptionalDigest, "optionaldigest", fic.OptionalDigest, "Is the digest required when importing files?") + flag.BoolVar(&fic.StrongDigest, "strongdigest", fic.StrongDigest, "Are BLAKE2b digests required instead of SHA-1 or BLAKE2b?") flag.Parse() log.SetPrefix("[admin] ") @@ -94,7 +95,7 @@ func main() { if api.TeamsDir, err = filepath.Abs(api.TeamsDir); err != nil { log.Fatal(err) } - if api.SettingsDir, err = filepath.Abs(api.SettingsDir); err != nil { + if settings.SettingsDir, err = filepath.Abs(settings.SettingsDir); err != nil { log.Fatal(err) } if fic.FilesDir, err = filepath.Abs(fic.FilesDir); err != nil { diff --git a/admin/time.go b/admin/time.go index 66110f20..7a02dcce 100644 --- a/admin/time.go +++ b/admin/time.go @@ -14,7 +14,7 @@ import ( func init() { api.Router().GET("/time.json", func(w http.ResponseWriter, r *http.Request, ps httprouter.Params) { - if config, err := settings.ReadSettings(path.Join(api.SettingsDir, settings.SettingsFile)); err != nil { + if config, err := settings.ReadSettings(path.Join(settings.SettingsDir, settings.SettingsFile)); err != nil { http.Error(w, fmt.Sprintf("{\"errmsg\":%q}", err), http.StatusInternalServerError) } else { time.ChallengeStart = config.Start diff --git a/backend/main.go b/backend/main.go index 10e97e0f..b7b53221 100644 --- a/backend/main.go +++ b/backend/main.go @@ -17,7 +17,6 @@ import ( ) var TeamsDir string -var SettingsDir string var SubmissionDir string func watchsubdir(watcher *fsnotify.Watcher, pathname string) error { @@ -67,7 +66,7 @@ func reloadSettings(config settings.FICSettings) { func main() { var dsn = flag.String("dsn", fic.DSNGenerator(), "DSN to connect to the MySQL server") - flag.StringVar(&SettingsDir, "settings", "./SETTINGS", "Base directory where load and save settings") + flag.StringVar(&settings.SettingsDir, "settings", settings.SettingsDir, "Base directory where load and save settings") flag.StringVar(&SubmissionDir, "submission", "./submissions", "Base directory where save submissions") flag.StringVar(&TeamsDir, "teams", "./TEAMS", "Base directory where save teams JSON files") flag.StringVar(&fic.FilesDir, "files", "/files", "Request path prefix to reach files") @@ -76,7 +75,7 @@ func main() { log.SetPrefix("[backend] ") - SettingsDir = path.Clean(SettingsDir) + settings.SettingsDir = path.Clean(settings.SettingsDir) SubmissionDir = path.Clean(SubmissionDir) TeamsDir = path.Clean(TeamsDir) @@ -96,7 +95,7 @@ func main() { defer fic.DBClose() // Load configuration - settings.LoadAndWatchSettings(path.Join(SettingsDir, settings.SettingsFile), reloadSettings) + settings.LoadAndWatchSettings(path.Join(settings.SettingsDir, settings.SettingsFile), reloadSettings) log.Println("Registering directory events...") watcher, err := fsnotify.NewWatcher() diff --git a/frontend/main.go b/frontend/main.go index f2816649..dcc29a6b 100644 --- a/frontend/main.go +++ b/frontend/main.go @@ -17,7 +17,7 @@ func main() { var bind = flag.String("bind", "127.0.0.1:8080", "Bind port/socket") var prefix = flag.String("prefix", "/", "Request path prefix to strip (from proxy)") var teamsDir = flag.String("teams", "./TEAMS/", "Base directory where find existing teams") - flag.StringVar(&SettingsDir, "settings", "./SETTINGS/", "Base directory where load and save settings") + flag.StringVar(&settings.SettingsDir, "settings", settings.SettingsDir, "Base directory where load and save settings") flag.StringVar(&SubmissionDir, "submission", "./submissions/", "Base directory where save submissions") flag.Parse() @@ -36,7 +36,7 @@ func main() { *prefix = strings.TrimRight(*prefix, "/") // Load configuration - settings.LoadAndWatchSettings(path.Join(SettingsDir, settings.SettingsFile), reloadSettings) + settings.LoadAndWatchSettings(path.Join(settings.SettingsDir, settings.SettingsFile), reloadSettings) // Register handlers http.Handle(fmt.Sprintf("%s/chname/", *prefix), http.StripPrefix(fmt.Sprintf("%s/chname/", *prefix), submissionTeamChecker{"name change", ChNameHandler, *teamsDir})) diff --git a/frontend/settings.go b/frontend/settings.go index 83c1ebf3..a4e6bb99 100644 --- a/frontend/settings.go +++ b/frontend/settings.go @@ -12,12 +12,10 @@ import ( const startedFile = "started" -var SettingsDir string - var touchTimer *time.Timer = nil func touchStartedFile() { - if fd, err := os.Create(path.Join(SettingsDir, startedFile)); err == nil { + if fd, err := os.Create(path.Join(settings.SettingsDir, startedFile)); err == nil { log.Println("Started! Go, Go, Go!!") fd.Close() } else { @@ -34,8 +32,8 @@ func reloadSettings(config settings.FICSettings) { if startSub > 0 { log.Println("Challenge will starts at", config.Start, "in", startSub) - if _, err := os.Stat(path.Join(SettingsDir, startedFile)); !os.IsNotExist(err) { - os.Remove(path.Join(SettingsDir, startedFile)) + if _, err := os.Stat(path.Join(settings.SettingsDir, startedFile)); !os.IsNotExist(err) { + os.Remove(path.Join(settings.SettingsDir, startedFile)) } touchTimer = time.AfterFunc(config.Start.Sub(time.Now().Add(time.Duration(1 * time.Second))), touchStartedFile) diff --git a/libfic/file.go b/libfic/file.go index 944e333b..64240929 100644 --- a/libfic/file.go +++ b/libfic/file.go @@ -13,9 +13,9 @@ import ( "github.com/dchest/blake2b" ) -var FilesDir string -var OptionalDigest bool -var StrongDigest bool +var FilesDir string = "./FILES/" +var OptionalDigest bool = false +var StrongDigest bool = false type EFile struct { Id int64 `json:"id"` diff --git a/settings/settings.go b/settings/settings.go index 44f793dd..7d5ce97b 100644 --- a/settings/settings.go +++ b/settings/settings.go @@ -12,6 +12,8 @@ import ( const SettingsFile = "settings.json" +var SettingsDir string = "./SETTINGS" + type FICSettings struct { Title string `json:"title"` Authors string `json:"authors"`