mirror of
https://github.com/UnnoTed/wireguird
synced 2025-03-12 21:45:30 +00:00
90 lines
1.5 KiB
Go
90 lines
1.5 KiB
Go
package settings
|
|
|
|
import (
|
|
"encoding/json"
|
|
"io/ioutil"
|
|
"os"
|
|
"path/filepath"
|
|
|
|
"github.com/rs/zerolog"
|
|
"github.com/rs/zerolog/log"
|
|
"github.com/ungerik/go-dry"
|
|
)
|
|
|
|
type Settings struct {
|
|
MultipleTunnels bool
|
|
StartOnTray bool
|
|
CheckUpdates bool
|
|
TunnelsPath string
|
|
Debug bool
|
|
}
|
|
|
|
var (
|
|
multipleTunnels *bool
|
|
checkUpdates *bool
|
|
debug *bool
|
|
tray *bool
|
|
filePath string
|
|
)
|
|
|
|
func (s *Settings) Init() error {
|
|
log.Debug().Msg("Settings init")
|
|
|
|
exePath, err := os.Executable()
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
filePath = filepath.Join(filepath.Dir(exePath), "wireguird.settings")
|
|
|
|
if err := s.Load(); err != nil {
|
|
return err
|
|
}
|
|
|
|
if s.Debug {
|
|
zerolog.SetGlobalLevel(zerolog.DebugLevel)
|
|
} else {
|
|
zerolog.SetGlobalLevel(zerolog.InfoLevel)
|
|
}
|
|
|
|
return nil
|
|
}
|
|
|
|
func (s *Settings) Save() error {
|
|
log.Debug().Msg("saving settings")
|
|
data, err := json.Marshal(s)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
if err := ioutil.WriteFile(filePath, data, 0666); err != nil {
|
|
return err
|
|
}
|
|
|
|
log.Debug().Msg("saved settings")
|
|
return nil
|
|
}
|
|
|
|
func (s *Settings) Load() error {
|
|
log.Debug().Msg("loading settings")
|
|
if !dry.FileExists(filePath) {
|
|
log.Debug().Msg("settings file doesnt exist")
|
|
return nil
|
|
}
|
|
|
|
data, err := ioutil.ReadFile(filePath)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
settings := &Settings{}
|
|
if err := json.Unmarshal(data, &settings); err != nil {
|
|
return err
|
|
}
|
|
|
|
*s = *settings
|
|
|
|
log.Debug().Interface("settings", s).Msg("loaded settings")
|
|
return nil
|
|
}
|