diff --git a/hub/api/api.go b/hub/api/api.go index bc62a77..e103b78 100644 --- a/hub/api/api.go +++ b/hub/api/api.go @@ -140,7 +140,7 @@ func (a *API) Network_Get(id int64) (*Network, error) { } func (a *API) Network_List() ([]*Network, error) { - const query = db.Network_SelectQuery + ` ORDER BY Name ASC` + const query = db.Network_SelectQuery + ` ORDER BY LocalDomain ASC` return db.Network_List(a.db, query) } diff --git a/peer/json.go b/peer/json.go new file mode 100644 index 0000000..9829820 --- /dev/null +++ b/peer/json.go @@ -0,0 +1,36 @@ +package peer + +import ( + "encoding/json" + "os" + "path/filepath" +) + +func loadJSON(path string, target any) error { + data, err := os.ReadFile(path) + if err != nil { + return err + } + return json.Unmarshal(data, target) +} + +func storeJSON(path string, obj any) error { + if err := os.MkdirAll(filepath.Dir(path), 0700); err != nil { + return err + } + data, err := json.MarshalIndent(obj, "", " ") + if err != nil { + return err + } + + tmpPath := path + ".tmp" + if err := os.WriteFile(tmpPath, data, 0600); err != nil { + return err + } + + if err := os.Rename(tmpPath, path); err != nil { + os.Remove(tmpPath) + return err + } + return nil +}