2023-09-01 14:00:02 +00:00
package settings
import (
"log"
"os"
2024-09-16 21:01:16 +00:00
"path/filepath"
2023-09-01 14:00:02 +00:00
"github.com/goccy/go-yaml"
)
2023-12-01 23:47:00 +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 )
2023-12-01 23:47:00 +00:00
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 )
}
2023-12-01 23:47:00 +00:00
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
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 {
2023-09-03 22:03:00 +00:00
log . Printf ( "ERROR: opening config file\n %v\n WARNING: Using default config only\n If this was a mistake, please make sure the file exists and is accessible by the filebrowser binary.\n\n" , err )
2023-12-01 23:47:00 +00:00
Config = setDefaults ( )
2023-09-03 17:28:00 +00:00
return [ ] byte { }
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 {
2023-09-03 00:16:19 +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 ,
2023-10-11 14:37:32 +00:00
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 {
2023-12-20 20:44:25 +00:00
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 ,
2023-10-09 22:24:48 +00:00
Scope : "." ,
LockPassword : false ,
HideDotfiles : true ,
DarkMode : false ,
DisableSettings : false ,
2024-09-16 21:01:16 +00:00
ViewMode : "normal" ,
2023-10-09 22:24:48 +00:00
Locale : "en" ,
2024-09-16 21:01:16 +00:00
Permissions : Permissions {
2023-10-11 14:37:32 +00:00
Create : false ,
Rename : false ,
Modify : false ,
Delete : false ,
Share : false ,
Download : false ,
2023-10-09 22:24:48 +00:00
Admin : 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
}
}