summaryrefslogtreecommitdiff
path: root/src/config.go
blob: 6db3cb2a59974110fbdf4cd663ed2182ea799c1c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
package eduvpn

import (
	"encoding/json"
	"fmt"
	"io/ioutil"
	"os"
	"path"
)

func (eduvpn *VPNState) EnsureConfigDir() error {
	mkdirErr := os.MkdirAll(eduvpn.ConfigDirectory, os.ModePerm)
	if mkdirErr != nil {
		return mkdirErr
	}
	return nil
}

func (eduvpn *VPNState) GetConfigName() string {
	pathString := path.Join(eduvpn.ConfigDirectory, eduvpn.Name)
	return fmt.Sprintf("%s.json", pathString)
}

func (eduvpn *VPNState) WriteConfig() error {
	configDirErr := eduvpn.EnsureConfigDir()
	if configDirErr != nil {
		return configDirErr
	}
	jsonString, marshalErr := json.Marshal(eduvpn)
	if marshalErr != nil {
		return marshalErr
	}
	return ioutil.WriteFile(eduvpn.GetConfigName(), jsonString, 0o644)
}

func (eduvpn *VPNState) LoadConfig() error {
	bytes, readErr := ioutil.ReadFile(eduvpn.GetConfigName())
	if readErr != nil {
		return readErr
	}
	return json.Unmarshal(bytes, eduvpn)
}