84 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Go
		
	
	
	
			
		
		
	
	
			84 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Go
		
	
	
	
package settings
 | 
						|
 | 
						|
import (
 | 
						|
	"log"
 | 
						|
	"os"
 | 
						|
 | 
						|
	"github.com/goccy/go-yaml"
 | 
						|
	"github.com/gtsteffaniak/filebrowser/users"
 | 
						|
)
 | 
						|
 | 
						|
var GlobalConfiguration Settings
 | 
						|
 | 
						|
func Initialize(configFile string) {
 | 
						|
	yamlData := loadConfigFile(configFile)
 | 
						|
	GlobalConfiguration = setDefaults()
 | 
						|
	err := yaml.Unmarshal(yamlData, &GlobalConfiguration)
 | 
						|
	if err != nil {
 | 
						|
		log.Fatalf("Error unmarshaling YAML data: %v", err)
 | 
						|
	}
 | 
						|
	GlobalConfiguration.UserDefaults.Perm = GlobalConfiguration.UserDefaults.Permissions
 | 
						|
	GlobalConfiguration.Server.Root = "/srv" // hardcoded for now. TODO allow changing
 | 
						|
}
 | 
						|
 | 
						|
func loadConfigFile(configFile string) []byte {
 | 
						|
	// Open and read the YAML file
 | 
						|
	yamlFile, err := os.Open(configFile)
 | 
						|
	if err != nil {
 | 
						|
		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)
 | 
						|
		setDefaults()
 | 
						|
		return []byte{}
 | 
						|
	}
 | 
						|
	defer yamlFile.Close()
 | 
						|
 | 
						|
	stat, err := yamlFile.Stat()
 | 
						|
	if err != nil {
 | 
						|
		log.Fatalf("Error getting file information: %s", err.Error())
 | 
						|
	}
 | 
						|
 | 
						|
	yamlData := make([]byte, stat.Size())
 | 
						|
	_, err = yamlFile.Read(yamlData)
 | 
						|
	if err != nil {
 | 
						|
		log.Fatalf("Error reading YAML data: %v", err)
 | 
						|
	}
 | 
						|
	return yamlData
 | 
						|
}
 | 
						|
 | 
						|
func setDefaults() Settings {
 | 
						|
	return Settings{
 | 
						|
		Signup:        true,
 | 
						|
		AdminUsername: "admin",
 | 
						|
		AdminPassword: "admin",
 | 
						|
		Server: Server{
 | 
						|
			EnableThumbnails:   true,
 | 
						|
			EnableExec:         false,
 | 
						|
			IndexingInterval:   5,
 | 
						|
			Port:               8080,
 | 
						|
			NumImageProcessors: 4,
 | 
						|
			BaseURL:            "",
 | 
						|
			Database:           "database.db",
 | 
						|
			Log:                "stdout",
 | 
						|
			Root:               "/srv",
 | 
						|
		},
 | 
						|
		Auth: Auth{
 | 
						|
			Method: "password",
 | 
						|
			Recaptcha: Recaptcha{
 | 
						|
				Host: "",
 | 
						|
			},
 | 
						|
		},
 | 
						|
		UserDefaults: UserDefaults{
 | 
						|
			Scope:        ".",
 | 
						|
			LockPassword: false,
 | 
						|
			HideDotfiles: true,
 | 
						|
			Permissions: users.Permissions{
 | 
						|
				Create:   true,
 | 
						|
				Rename:   true,
 | 
						|
				Modify:   true,
 | 
						|
				Delete:   true,
 | 
						|
				Share:    true,
 | 
						|
				Download: true,
 | 
						|
			},
 | 
						|
		},
 | 
						|
	}
 | 
						|
}
 |