package controllers import ( "net/http" "github.com/gin-gonic/gin" "code.crute.me/mcrute/frame" "code.crute.me/mcrute/go_ddns_manager/dns" "code.crute.me/mcrute/go_ddns_manager/web/middleware" ) type UpdateZone struct { Create []dns.RR Update []dns.RR Delete []dns.RR } func ManageRoot(c *gin.Context) { c.JSON(http.StatusOK, map[string]string{ "views_url": frame.MakeURL(c.Request, "/manage/views").String(), }) } func ListViews(c *gin.Context) { cfg := middleware.GetServerConfig(c) out := map[string]string{} for _, vn := range cfg.BindConfig.Views() { out[vn] = frame.MakeURL(c.Request, "/manage/views/%s", vn).String() } c.JSON(http.StatusOK, out) } func ListView(c *gin.Context) { cfg := middleware.GetServerConfig(c) view := c.Param("view") out := map[string]string{} for _, z := range cfg.BindConfig.ZonesInView(view) { out[z.Name] = frame.MakeURL(c.Request, "/manage/views/%s/%s", view, z.Name).String() } c.JSON(http.StatusOK, out) } func ListZone(c *gin.Context) { cfg := middleware.GetServerConfig(c) zone := cfg.BindConfig.Zone(c.Param("view"), c.Param("zone")) rrs, err := cfg.DNSClient.ReadRemoteZone(zone) if err != nil { c.JSON(http.StatusInternalServerError, err) return } c.JSON(http.StatusOK, rrs) }