mirror of
https://github.com/DeBrosOfficial/orama.git
synced 2026-03-17 18:36:57 +00:00
70 lines
1.7 KiB
Go
70 lines
1.7 KiB
Go
package production
|
|
|
|
import (
|
|
"os"
|
|
"path/filepath"
|
|
|
|
"gopkg.in/yaml.v3"
|
|
)
|
|
|
|
// NodePreferences contains persistent node configuration that survives upgrades
|
|
type NodePreferences struct {
|
|
Branch string `yaml:"branch"`
|
|
Nameserver bool `yaml:"nameserver"`
|
|
AnyoneClient bool `yaml:"anyone_client"`
|
|
}
|
|
|
|
const preferencesFile = "preferences.yaml"
|
|
|
|
// SavePreferences saves node preferences to disk
|
|
func SavePreferences(oramaDir string, prefs *NodePreferences) error {
|
|
// Ensure directory exists
|
|
if err := os.MkdirAll(oramaDir, 0755); err != nil {
|
|
return err
|
|
}
|
|
|
|
// Save to YAML file
|
|
path := filepath.Join(oramaDir, preferencesFile)
|
|
data, err := yaml.Marshal(prefs)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
if err := os.WriteFile(path, data, 0644); err != nil {
|
|
return err
|
|
}
|
|
|
|
return nil
|
|
}
|
|
|
|
// LoadPreferences loads node preferences from disk
|
|
// Falls back to reading legacy .branch file if preferences.yaml doesn't exist
|
|
func LoadPreferences(oramaDir string) *NodePreferences {
|
|
prefs := &NodePreferences{
|
|
Branch: "main",
|
|
Nameserver: false,
|
|
}
|
|
|
|
// Try to load from preferences.yaml
|
|
path := filepath.Join(oramaDir, preferencesFile)
|
|
if data, err := os.ReadFile(path); err == nil {
|
|
if err := yaml.Unmarshal(data, prefs); err == nil {
|
|
return prefs
|
|
}
|
|
}
|
|
|
|
return prefs
|
|
}
|
|
|
|
// SaveNameserverPreference updates just the nameserver preference
|
|
func SaveNameserverPreference(oramaDir string, isNameserver bool) error {
|
|
prefs := LoadPreferences(oramaDir)
|
|
prefs.Nameserver = isNameserver
|
|
return SavePreferences(oramaDir, prefs)
|
|
}
|
|
|
|
// ReadNameserverPreference reads just the nameserver preference
|
|
func ReadNameserverPreference(oramaDir string) bool {
|
|
return LoadPreferences(oramaDir).Nameserver
|
|
}
|