]> Cypherpunks.ru repositories - nncp.git/blobdiff - src/cfgdir.go
Yggdrasil overlay transport
[nncp.git] / src / cfgdir.go
index a68699173cce1ffbe6f9856a30fb028e35e34cb5..de45a7d10a546428a6e4a614c0da165b6352a9e5 100644 (file)
@@ -418,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
 }
 
@@ -905,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
 }