From 64e5c26bc078e74bd4833dcbd24b675e28ce4e3d Mon Sep 17 00:00:00 2001 From: Odonax Date: Wed, 29 Apr 2026 22:08:23 +0200 Subject: [PATCH] Implemented configuration file functionality For site name, port number and data directory --- config/config.go | 36 ++++++++++++++++++++++++++++++++++++ main.go | 9 ++++++--- 2 files changed, 42 insertions(+), 3 deletions(-) create mode 100644 config/config.go diff --git a/config/config.go b/config/config.go new file mode 100644 index 0000000..8ba6c62 --- /dev/null +++ b/config/config.go @@ -0,0 +1,36 @@ +package config + +import ( + "encoding/json" + "log" + "os" +) + +type Config struct { + SiteName string `json:"site_name"` + Port string `json:"port"` + DataDir string `json:"data_dir"` +} + +func Load(path string) Config { + configData := Config{ + SiteName: "Unnamed Download Listing", + Port: "8080", + DataDir: "data", + } + + file, err := os.Open(path) + if err != nil { + log.Println("No config file found, using defaults. Consider setting up a Site Name at the very least!") + return configData + } + defer file.Close() + + // Overwrite the default configuration with data from 'file' + err = json.NewDecoder(file).Decode(&configData) + if err != nil { + log.Fatal("Config file exists but has errors:", err) + } + + return configData +} diff --git a/main.go b/main.go index 6e18b6b..67380c1 100644 --- a/main.go +++ b/main.go @@ -6,13 +6,16 @@ import ( "net/http" "os" + "192.168.1.180/odonax/filehost-athome/config" "192.168.1.180/odonax/filehost-athome/database" ) func main() { - os.MkdirAll("data/files", 0755) + cfg := config.Load("config.json") - db := database.Open("data/hub.db") + os.MkdirAll(cfg.DataDir+"/files", 0755) + + db := database.Open(cfg.DataDir+"/hub.db") defer db.Close() tmpl, err := template.ParseFiles("templates/home.html") @@ -22,7 +25,7 @@ func main() { http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { data := map[string]string{ - "Name": "Filehost at home", + "Name": cfg.SiteName, "Description": "This is where you'll own your files and share them freely.", } tmpl.Execute(w, data)