package config import ( "encoding/json" "os" "path/filepath" ) type Config struct { ServerName string `json:"server_name"` ListenAddr string `json:"listen_addr"` Domain string `json:"domain"` DataDir string `json:"data_dir"` MaxFileSize int64 `json:"max_file_size"` Federation bool `json:"federation"` FederatedWith []string `json:"federated_with"` LogLevel string `json:"log_level"` } func Default() *Config { return &Config{ ServerName: "JustAMessenger", ListenAddr: ":8443", Domain: "localhost", DataDir: "./data", MaxFileSize: 2 << 30, Federation: false, LogLevel: "info", } } func Load(path string) (*Config, error) { cfg := Default() abs, err := filepath.Abs(path) if err != nil { return cfg, nil } data, err := os.ReadFile(abs) if err != nil { return cfg, nil } if err := json.Unmarshal(data, cfg); err != nil { return nil, err } return cfg, nil }