diff --git a/client-config.go b/client-config.go index 1f360de..4824c14 100644 --- a/client-config.go +++ b/client-config.go @@ -4,12 +4,14 @@ import ( "fmt" //"io" "io/fs" + "io/ioutil" "log" "os" "path/filepath" "strings" "github.com/otiai10/copy" + "gopkg.in/yaml.v3" ) type ClientConfig struct { @@ -156,6 +158,25 @@ func (cc *ClientConfig) CopyExecutable() error { return nil } +func (cc *ClientConfig) Load() error { + if _, err := os.Stat("client.yaml"); os.IsNotExist(err) { + return nil + } + yamlFile, err := ioutil.ReadFile("client.yaml") + if err != nil { + return err + } + return yaml.Unmarshal(yamlFile, cc) +} + +func (cc *ClientConfig) Save() error { + bytes, err := yaml.Marshal(cc) + if err != nil { + fmt.Println(err) + } + return ioutil.WriteFile("client.yaml", bytes, 0644) +} + func find(root, ext string) []string { var a []string filepath.WalkDir(root, func(s string, d fs.DirEntry, e error) error { diff --git a/cmd/i2p.plugin.native/main.go b/cmd/i2p.plugin.native/main.go index fd2b34b..9adec3c 100644 --- a/cmd/i2p.plugin.native/main.go +++ b/cmd/i2p.plugin.native/main.go @@ -84,6 +84,12 @@ func goBin() string { func main() { flagsSet() + if err := pc.Load(); err != nil { + log.Fatal(err) + } + if err := cc.Load(); err != nil { + log.Fatal(err) + } if *cc.Executable != "" { *cc.ClientName = *cc.Executable @@ -102,6 +108,8 @@ func main() { //if err := os.MkdirAll("plugin/lib", 0755); err != nil { // log.Fatal(err) //} + cc.Save() + pc.Save() if err := cc.CopyResDir(); err != nil { log.Fatal(err) } diff --git a/go.mod b/go.mod index 026899d..29b5ce4 100644 --- a/go.mod +++ b/go.mod @@ -7,4 +7,7 @@ require ( i2pgit.org/idk/reseed-tools v0.0.9 ) -require github.com/otiai10/copy v1.7.0 // indirect +require ( + github.com/otiai10/copy v1.7.0 // indirect + gopkg.in/yaml.v3 v3.0.1 // indirect +) diff --git a/go.sum b/go.sum index 0ada62d..fa12686 100644 --- a/go.sum +++ b/go.sum @@ -1026,6 +1026,8 @@ gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= +gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= honnef.co/go/tools v0.0.0-20180728063816-88497007e858/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= diff --git a/plugin-config.go b/plugin-config.go index 5f074f1..1b8b3ac 100644 --- a/plugin-config.go +++ b/plugin-config.go @@ -8,10 +8,12 @@ import ( "fmt" "io/ioutil" "log" + "os" "path/filepath" "strings" "github.com/fuxingZhang/zip" + "gopkg.in/yaml.v3" "i2pgit.org/idk/reseed-tools/su3" ) @@ -296,3 +298,23 @@ func (pc *PluginConfig) LoadPrivateKey(path string) (*rsa.PrivateKey, error) { func (pc *PluginConfig) keysPath(path string) (string, error) { return filepath.Abs(filepath.Join(*pc.SignerDirectory, strings.Replace(path, "@", "_at_", -1)+".pem")) } + +func (cc *PluginConfig) Load() error { + // check if plugin.yaml exists + if _, err := os.Stat("plugin.yaml"); os.IsNotExist(err) { + return nil + } + yamlFile, err := ioutil.ReadFile("plugin.yaml") + if err != nil { + return err + } + return yaml.Unmarshal(yamlFile, cc) +} + +func (pc *PluginConfig) Save() { + bytes, err := yaml.Marshal(pc) + if err != nil { + fmt.Println(err) + } + ioutil.WriteFile("plugin.yaml", bytes, 0644) +}