summaryrefslogtreecommitdiff
path: root/internal/appmeta/appmeta.go
diff options
context:
space:
mode:
Diffstat (limited to 'internal/appmeta/appmeta.go')
-rw-r--r--internal/appmeta/appmeta.go35
1 files changed, 35 insertions, 0 deletions
diff --git a/internal/appmeta/appmeta.go b/internal/appmeta/appmeta.go
new file mode 100644
index 0000000..61ceb18
--- /dev/null
+++ b/internal/appmeta/appmeta.go
@@ -0,0 +1,35 @@
+// Package appmeta stores the small amount of per-app networking config
+// Skiff itself needs (IP, port, health check) that isn't already implied by
+// jail.conf/rc.conf - a flat file living with the app's own data, not a
+// separate control-plane database.
+package appmeta
+
+import (
+ "encoding/json"
+ "os"
+)
+
+type Meta struct {
+ IP string `json:"ip"`
+ Port int `json:"port"`
+ HealthPath string `json:"health_path"`
+ ServerName string `json:"server_name"`
+}
+
+func Write(path string, m Meta) error {
+ b, err := json.MarshalIndent(m, "", " ")
+ if err != nil {
+ return err
+ }
+ return os.WriteFile(path, b, 0644)
+}
+
+func Read(path string) (Meta, error) {
+ var m Meta
+ b, err := os.ReadFile(path)
+ if err != nil {
+ return m, err
+ }
+ err = json.Unmarshal(b, &m)
+ return m, err
+}