chore: initial skeleton
- docs/architecture.md: native rewrite plan (5 services + control plane,
Active-Active cluster like nmg, Floating-IP for HTTP ingress)
- cmd/edgeguard-{api,scheduler,ctl}: minimal Gin + CLI stubs
- packaging/debian/edgeguard-{api,ui,meta}: control + maintainer scripts
- deploy/systemd/edgeguard-api.service + edgeguard-scheduler.service
with hardening defaults
- Makefile: build / cross-compile (amd64+arm64) / deb / publish targets
- scripts/install.sh + scripts/apt-repo/build-package.sh stubs
This commit is contained in:
31
cmd/edgeguard-api/main.go
Normal file
31
cmd/edgeguard-api/main.go
Normal file
@@ -0,0 +1,31 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"log"
|
||||
"net/http"
|
||||
"os"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
)
|
||||
|
||||
var version = "0.0.1-dev"
|
||||
|
||||
func main() {
|
||||
gin.SetMode(gin.ReleaseMode)
|
||||
r := gin.New()
|
||||
r.Use(gin.Recovery())
|
||||
|
||||
r.GET("/api/health", func(c *gin.Context) {
|
||||
c.JSON(http.StatusOK, gin.H{"status": "ok", "version": version})
|
||||
})
|
||||
|
||||
addr := os.Getenv("EDGEGUARD_API_ADDR")
|
||||
if addr == "" {
|
||||
addr = "127.0.0.1:9443"
|
||||
}
|
||||
|
||||
log.Printf("edgeguard-api %s listening on %s", version, addr)
|
||||
if err := r.Run(addr); err != nil {
|
||||
log.Fatalf("edgeguard-api: %v", err)
|
||||
}
|
||||
}
|
||||
40
cmd/edgeguard-ctl/main.go
Normal file
40
cmd/edgeguard-ctl/main.go
Normal file
@@ -0,0 +1,40 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"os"
|
||||
)
|
||||
|
||||
var version = "0.0.1-dev"
|
||||
|
||||
const usage = `edgeguard-ctl — EdgeGuard CLI
|
||||
|
||||
Usage:
|
||||
edgeguard-ctl <command> [args]
|
||||
|
||||
Commands:
|
||||
version Print version
|
||||
initdb Initialise PostgreSQL database and user (idempotent)
|
||||
migrate up Apply pending migrations
|
||||
migrate down Roll back last migration (dev only)
|
||||
cluster-join Join an existing cluster (--from URL --token TOKEN)
|
||||
cluster-leave Leave the cluster cleanly
|
||||
promote Promote this node's PG to primary
|
||||
dump-config Print effective config to stdout
|
||||
`
|
||||
|
||||
func main() {
|
||||
if len(os.Args) < 2 {
|
||||
fmt.Fprint(os.Stderr, usage)
|
||||
os.Exit(2)
|
||||
}
|
||||
switch os.Args[1] {
|
||||
case "version":
|
||||
fmt.Println(version)
|
||||
case "-h", "--help", "help":
|
||||
fmt.Print(usage)
|
||||
default:
|
||||
fmt.Fprintf(os.Stderr, "edgeguard-ctl: command %q not yet implemented\n", os.Args[1])
|
||||
os.Exit(2)
|
||||
}
|
||||
}
|
||||
15
cmd/edgeguard-scheduler/main.go
Normal file
15
cmd/edgeguard-scheduler/main.go
Normal file
@@ -0,0 +1,15 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"log"
|
||||
"time"
|
||||
)
|
||||
|
||||
var version = "0.0.1-dev"
|
||||
|
||||
func main() {
|
||||
log.Printf("edgeguard-scheduler %s starting", version)
|
||||
for {
|
||||
time.Sleep(60 * time.Second)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user