aceberg/miniboard

View on GitHub
internal/models/models.go

Summary

Maintainability
A
0 mins
Test Coverage
package models

import (
    "github.com/aceberg/miniboard/internal/auth"
)

// Conf - web gui config
type Conf struct {
    Host       string
    Port       string
    Theme      string
    Color      string
    Icon       string
    ConfPath   string
    DBPath     string
    DBTrimDays string
    YamlPath   string
    NodePath   string
    ColorOn    string
    ColorOff   string
    BtnWidth   string
    WebRefresh string
    Auth       bool
    LoggedIn   bool
    Quit       chan bool
}

// Host - panel element
type Host struct {
    Name  string `yaml:"name"`
    Addr  string `yaml:"addr"`
    Port  string `yaml:"port"`
    URL   string `yaml:"url"`
    Icon  string `yaml:"icon"`
    State bool   `yaml:"state"`
}

// Panel - tab element
type Panel struct {
    Name    string       `yaml:"name"`
    Scan    bool         `yaml:"scan"`
    Timeout string       `yaml:"timeout"`
    Hosts   map[int]Host `yaml:"hosts"`
}

// Tab - board element
type Tab struct {
    Name    string         `yaml:"name"`
    Auth    bool           `yaml:"needs_auth"`
    Refresh string         `yaml:"refresh"`
    Horiz   bool           `yaml:"horiz"`
    Panels  map[int]string `yaml:"panels"`
}

// MonPanel - uptime element
type MonPanel struct {
    Retries int      `yaml:"retries"`
    Notify  []string `yaml:"notify"`
}

// MonData - for monitoring results
type MonData struct {
    ID     int    `db:"ID"`
    Panel  string `db:"PANEL"`
    Host   string `db:"HOST"`
    Addr   string `db:"ADDR"`
    Port   string `db:"PORT"`
    Date   string `db:"DATE"`
    Time   string `db:"TIME"`
    Color  string `db:"COLOR"`
    State  bool   `db:"STATE"`
    Notify string `db:"NOTIFY"`
}

// Uptime - board element
type Uptime struct {
    Enabled bool                `yaml:"enabled"`
    Auth    bool                `yaml:"needs_auth"`
    Show    int                 `yaml:"show"`
    Notify  map[string]string   `yaml:"notify"`
    Panels  map[string]MonPanel `yaml:"panels"`
}

// Links - all links
type Links struct {
    Tabs   map[int]Tab      `yaml:"tabs"`
    Panels map[string]Panel `yaml:"panels"`
    Uptime Uptime           `yaml:"uptime"`
}

// GuiData - web gui data
type GuiData struct {
    Config     Conf
    Themes     []string
    Links      Links
    Panels     map[int]Panel
    CurrentTab string
    TabEdit    int
    UptimeMon  []MonData
    Version    string
    Auth       auth.Conf
    Horiz      bool
}