X-Git-Url: http://www.git.cypherpunks.ru/?a=blobdiff_plain;f=src%2Fcfgdir.go;h=de45a7d10a546428a6e4a614c0da165b6352a9e5;hb=e068d88291cd45a4d6b748e258077dd6c0ffb9c2;hp=afe7b40eadab34d16fd7f460aa176bb8181906af;hpb=0367cce2741e1ce6a89a49fd5c4e9df6005c9744;p=nncp.git diff --git a/src/cfgdir.go b/src/cfgdir.go index afe7b40..de45a7d 100644 --- a/src/cfgdir.go +++ b/src/cfgdir.go @@ -168,29 +168,31 @@ func CfgToDir(dst string, cfg *CfgJSON) (err error) { } } - if err = cfgDirMkdir(dst, "self"); err != nil { - return - } - if err = cfgDirSave(cfg.Self.Id, dst, "self", "id"); err != nil { - return - } - if err = cfgDirSave(cfg.Self.ExchPub, dst, "self", "exchpub"); err != nil { - return - } - if err = cfgDirSave(cfg.Self.ExchPrv, dst, "self", "exchprv"); err != nil { - return - } - if err = cfgDirSave(cfg.Self.SignPub, dst, "self", "signpub"); err != nil { - return - } - if err = cfgDirSave(cfg.Self.SignPrv, dst, "self", "signprv"); err != nil { - return - } - if err = cfgDirSave(cfg.Self.NoisePub, dst, "self", "noisepub"); err != nil { - return - } - if err = cfgDirSave(cfg.Self.NoisePrv, dst, "self", "noiseprv"); err != nil { - return + if cfg.Self != nil { + if err = cfgDirMkdir(dst, "self"); err != nil { + return + } + if err = cfgDirSave(cfg.Self.Id, dst, "self", "id"); err != nil { + return + } + if err = cfgDirSave(cfg.Self.ExchPub, dst, "self", "exchpub"); err != nil { + return + } + if err = cfgDirSave(cfg.Self.ExchPrv, dst, "self", "exchprv"); err != nil { + return + } + if err = cfgDirSave(cfg.Self.SignPub, dst, "self", "signpub"); err != nil { + return + } + if err = cfgDirSave(cfg.Self.SignPrv, dst, "self", "signprv"); err != nil { + return + } + if err = cfgDirSave(cfg.Self.NoisePub, dst, "self", "noisepub"); err != nil { + return + } + if err = cfgDirSave(cfg.Self.NoisePrv, dst, "self", "noiseprv"); err != nil { + return + } } for name, n := range cfg.Neigh { @@ -416,6 +418,17 @@ func CfgToDir(dst string, cfg *CfgJSON) (err error) { } } + if len(cfg.YggdrasilAliases) > 0 { + if err = cfgDirMkdir(dst, "yggdrasil-aliases"); err != nil { + return + } + for alias, v := range cfg.YggdrasilAliases { + if err = cfgDirSave(v, dst, "yggdrasil-aliases", alias); err != nil { + return + } + } + } + return } @@ -569,29 +582,33 @@ func DirToCfg(src string) (*CfgJSON, error) { cfg.Notify = ¬ify } - self := NodeOurJSON{} - if self.Id, err = cfgDirLoadMust(src, "self", "id"); err != nil { - return nil, err - } - if self.ExchPub, err = cfgDirLoadMust(src, "self", "exchpub"); err != nil { - return nil, err - } - if self.ExchPrv, err = cfgDirLoadMust(src, "self", "exchprv"); err != nil { - return nil, err - } - if self.SignPub, err = cfgDirLoadMust(src, "self", "signpub"); err != nil { - return nil, err - } - if self.SignPrv, err = cfgDirLoadMust(src, "self", "signprv"); err != nil { - return nil, err - } - if self.NoisePub, err = cfgDirLoadMust(src, "self", "noisepub"); err != nil { - return nil, err - } - if self.NoisePrv, err = cfgDirLoadMust(src, "self", "noiseprv"); err != nil { + if _, err = ioutil.ReadDir(filepath.Join(src, "self")); err == nil { + self := NodeOurJSON{} + if self.Id, err = cfgDirLoadMust(src, "self", "id"); err != nil { + return nil, err + } + if self.ExchPub, err = cfgDirLoadMust(src, "self", "exchpub"); err != nil { + return nil, err + } + if self.ExchPrv, err = cfgDirLoadMust(src, "self", "exchprv"); err != nil { + return nil, err + } + if self.SignPub, err = cfgDirLoadMust(src, "self", "signpub"); err != nil { + return nil, err + } + if self.SignPrv, err = cfgDirLoadMust(src, "self", "signprv"); err != nil { + return nil, err + } + if self.NoisePub, err = cfgDirLoadMust(src, "self", "noisepub"); err != nil { + return nil, err + } + if self.NoisePrv, err = cfgDirLoadMust(src, "self", "noiseprv"); err != nil { + return nil, err + } + cfg.Self = &self + } else if !os.IsNotExist(err) { return nil, err } - cfg.Self = &self cfg.Neigh = make(map[string]NodeJSON) fis, err = ioutil.ReadDir(filepath.Join(src, "neigh")) @@ -899,5 +916,24 @@ func DirToCfg(src string) (*CfgJSON, error) { cfg.Areas[n] = area } + fis, err = ioutil.ReadDir(filepath.Join(src, "yggdrasil-aliases")) + if err != nil && !os.IsNotExist(err) { + return nil, err + } + if len(fis) > 0 { + cfg.YggdrasilAliases = make(map[string]string, len(fis)) + } + for _, fi := range fis { + n := fi.Name() + if n[0] == '.' { + continue + } + b, err := ioutil.ReadFile(filepath.Join(src, "yggdrasil-aliases", fi.Name())) + if err != nil { + return nil, err + } + cfg.YggdrasilAliases[n] = strings.TrimSuffix(string(b), "\n") + } + return &cfg, nil }