aceberg/miniboard

View on GitHub
internal/web/panels.go

Summary

Maintainability
A
0 mins
Test Coverage
package web

import (
    // "log"
    "net/http"

    "github.com/aceberg/miniboard/internal/models"
    "github.com/aceberg/miniboard/internal/yaml"
)

func panelsHandler(w http.ResponseWriter, r *http.Request) {
    var guiData models.GuiData

    oldkey := r.FormValue("oldkey")
    key := r.FormValue("key")
    scan := r.FormValue("scan")
    timeout := r.FormValue("timeout")

    if key != "" {
        // log.Println("PANEL:", oldkey, key, name, scan)

        _, exists := AllLinks.Panels[key]

        panel := models.Panel{}
        panel.Name = key
        panel.Timeout = timeout
        if scan == "on" {
            panel.Scan = true
        }
        panel.Hosts = AllLinks.Panels[oldkey].Hosts
        if panel.Hosts == nil {
            panel.Hosts = make(map[int]models.Host)
        }

        if !exists && key != oldkey {
            AllLinks.Panels[key] = panel
            delete(AllLinks.Panels, oldkey)

            yaml.Write(AppConfig.YamlPath, AllLinks)
        } else if exists && key == oldkey {
            AllLinks.Panels[key] = panel

            yaml.Write(AppConfig.YamlPath, AllLinks)
        }

        http.Redirect(w, r, r.Header.Get("Referer"), 302)
    }

    guiData.Config = AppConfig
    guiData.CurrentTab = "Edit Panels"
    guiData.Links = AllLinks

    execTemplate(w, "panels", guiData)
}