filebrowser/backend/settings/config.go

110 lines
2.4 KiB
Go
Raw Normal View History

2023-09-01 14:00:02 +00:00
package settings
import (
"log"
"os"
2024-09-16 21:01:16 +00:00
"path/filepath"
2024-11-21 00:15:30 +00:00
"strings"
2023-09-01 14:00:02 +00:00
"github.com/goccy/go-yaml"
2024-11-21 00:15:30 +00:00
"github.com/gtsteffaniak/filebrowser/users"
2023-09-01 14:00:02 +00:00
)
var Config Settings
2023-09-01 14:00:02 +00:00
2023-09-03 22:03:00 +00:00
func Initialize(configFile string) {
yamlData := loadConfigFile(configFile)
Config = setDefaults()
err := yaml.Unmarshal(yamlData, &Config)
2023-09-01 14:00:02 +00:00
if err != nil {
2023-09-03 17:28:00 +00:00
log.Fatalf("Error unmarshaling YAML data: %v", err)
}
Config.UserDefaults.Perm = Config.UserDefaults.Permissions
2024-09-16 21:01:16 +00:00
// Convert relative path to absolute path
realRoot, err := filepath.Abs(Config.Server.Root)
if err != nil {
log.Fatalf("Error getting root path: %v", err)
}
_, err = os.Stat(realRoot)
if err != nil {
log.Fatalf("ERROR: Configured Root Path does not exist! %v", err)
}
Config.Server.Root = realRoot
2024-11-21 00:15:30 +00:00
baseurl := strings.Trim(Config.Server.BaseURL, "/")
if baseurl == "" {
Config.Server.BaseURL = "/"
} else {
Config.Server.BaseURL = "/" + baseurl + "/"
}
2023-09-03 17:28:00 +00:00
}
2023-09-03 00:16:19 +00:00
2023-09-03 22:03:00 +00:00
func loadConfigFile(configFile string) []byte {
2023-09-03 17:28:00 +00:00
// Open and read the YAML file
2023-09-03 22:03:00 +00:00
yamlFile, err := os.Open(configFile)
2023-09-03 17:28:00 +00:00
if err != nil {
2024-10-07 22:44:53 +00:00
log.Println(err)
os.Exit(1)
2023-09-01 14:00:02 +00:00
}
defer yamlFile.Close()
2023-09-02 02:03:45 +00:00
stat, err := yamlFile.Stat()
if err != nil {
2024-10-07 22:44:53 +00:00
log.Fatalf("error getting file information: %s", err.Error())
2023-09-02 02:03:45 +00:00
}
yamlData := make([]byte, stat.Size())
_, err = yamlFile.Read(yamlData)
2023-09-01 14:00:02 +00:00
if err != nil {
log.Fatalf("Error reading YAML data: %v", err)
}
2023-09-03 17:28:00 +00:00
return yamlData
2023-09-01 14:00:02 +00:00
}
2023-09-03 17:28:00 +00:00
func setDefaults() Settings {
return Settings{
2023-09-02 00:51:13 +00:00
Server: Server{
2023-09-04 02:21:25 +00:00
EnableThumbnails: true,
ResizePreview: false,
2023-09-03 22:03:00 +00:00
EnableExec: false,
2023-09-02 00:51:13 +00:00
IndexingInterval: 5,
2024-02-10 00:13:02 +00:00
Port: 80,
2023-09-03 17:28:00 +00:00
NumImageProcessors: 4,
2023-09-02 02:03:45 +00:00
BaseURL: "",
2023-09-03 22:03:00 +00:00
Database: "database.db",
Log: "stdout",
Root: "/srv",
2024-07-30 17:45:27 +00:00
Indexing: true,
2023-09-02 00:51:13 +00:00
},
2023-09-01 14:00:02 +00:00
Auth: Auth{
TokenExpirationTime: "2h",
AdminUsername: "admin",
AdminPassword: "admin",
Method: "password",
Signup: false,
2023-09-01 14:00:02 +00:00
Recaptcha: Recaptcha{
Host: "",
},
},
2023-09-03 17:28:00 +00:00
UserDefaults: UserDefaults{
2024-08-03 15:34:12 +00:00
StickySidebar: true,
Scope: ".",
LockPassword: false,
HideDotfiles: true,
DarkMode: false,
DisableSettings: false,
2024-09-16 21:01:16 +00:00
ViewMode: "normal",
Locale: "en",
2024-11-21 00:15:30 +00:00
Permissions: users.Permissions{
Create: false,
Rename: false,
Modify: false,
Delete: false,
Share: false,
Download: false,
Admin: false,
2024-11-21 00:15:30 +00:00
Api: false,
2023-09-03 22:03:00 +00:00
},
2023-09-03 17:28:00 +00:00
},
2023-09-02 00:51:13 +00:00
}
}