This commit is contained in:
parent
2199301dc7
commit
07cd22131f
5 changed files with 67 additions and 1 deletions
|
@ -24,6 +24,7 @@ type Config struct {
|
||||||
Load checks.LoadConfig `yaml:"load"`
|
Load checks.LoadConfig `yaml:"load"`
|
||||||
Memory checks.MemoryConfig `yaml:"memory"`
|
Memory checks.MemoryConfig `yaml:"memory"`
|
||||||
Systemd checks.SystemdConf `yaml:"systemd"`
|
Systemd checks.SystemdConf `yaml:"systemd"`
|
||||||
|
Version checks.VersionConfig `yaml:"version"`
|
||||||
} `yaml:"checks"`
|
} `yaml:"checks"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -43,4 +44,6 @@ func readConfig() {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal().Err(err).Msg("Cant parse yaml file")
|
log.Fatal().Err(err).Msg("Cant parse yaml file")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
c.Checks.Version.Version = version
|
||||||
}
|
}
|
|
@ -25,3 +25,5 @@ checks:
|
||||||
- sshd
|
- sshd
|
||||||
- test
|
- test
|
||||||
- docker
|
- docker
|
||||||
|
version:
|
||||||
|
enabled: true
|
||||||
|
|
44
internal/pkg/checks/version.go
Normal file
44
internal/pkg/checks/version.go
Normal file
|
@ -0,0 +1,44 @@
|
||||||
|
package checks
|
||||||
|
|
||||||
|
import (
|
||||||
|
"encoding/json"
|
||||||
|
"fmt"
|
||||||
|
"io"
|
||||||
|
"net/http"
|
||||||
|
)
|
||||||
|
|
||||||
|
type VersionConfig struct {
|
||||||
|
Enabled bool `yaml:"enabled"`
|
||||||
|
Version string
|
||||||
|
}
|
||||||
|
|
||||||
|
type Version struct {
|
||||||
|
Config VersionConfig
|
||||||
|
}
|
||||||
|
|
||||||
|
func (h Version) Execute() (ok bool, data interface{}, err error) {
|
||||||
|
if h.Config.Enabled == false {
|
||||||
|
return true, nil, nil
|
||||||
|
}
|
||||||
|
resp, err := http.Get("https://git.keks.cloud/api/v1/repos/kekskurse/http-server-status/releases?limit=1")
|
||||||
|
|
||||||
|
var g []struct {
|
||||||
|
TagName string `json:"tag_name"`
|
||||||
|
}
|
||||||
|
|
||||||
|
body, err := io.ReadAll(resp.Body)
|
||||||
|
if err != nil {
|
||||||
|
return false, nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
json.Unmarshal(body, &g)
|
||||||
|
|
||||||
|
if g[0].TagName == fmt.Sprintf("v%v", h.Config.Version) {
|
||||||
|
return true, map[string]string{"version": g[0].TagName}, nil
|
||||||
|
}
|
||||||
|
return false, map[string]string{"version": g[0].TagName}, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (h Version) Name() string {
|
||||||
|
return "Version"
|
||||||
|
}
|
2
main.go
2
main.go
|
@ -22,7 +22,7 @@ var checkList []checks.Check
|
||||||
func init() {
|
func init() {
|
||||||
readConfig()
|
readConfig()
|
||||||
log.Debug().Int("max_percent", c.Checks.HDD.MaxPercent).Msg("HDD CHECK")
|
log.Debug().Int("max_percent", c.Checks.HDD.MaxPercent).Msg("HDD CHECK")
|
||||||
checkList = append(checkList, checks.HDD{c.Checks.HDD}, checks.Memory{Config: c.Checks.Memory}, checks.Load{Config: c.Checks.Load}, checks.Systemd{Config: c.Checks.Systemd})
|
checkList = append(checkList, checks.HDD{c.Checks.HDD}, checks.Memory{Config: c.Checks.Memory}, checks.Load{Config: c.Checks.Load}, checks.Systemd{Config: c.Checks.Systemd}, checks.Version{Config: c.Checks.Version})
|
||||||
}
|
}
|
||||||
|
|
||||||
func auth(fn http.HandlerFunc) http.HandlerFunc {
|
func auth(fn http.HandlerFunc) http.HandlerFunc {
|
||||||
|
|
|
@ -116,7 +116,24 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="row" style="margin-top: 20px;">
|
||||||
|
<div class="col-md-6">
|
||||||
|
<div class="card">
|
||||||
|
<div class="card-header {{if .checks.Version.Success }}bg-success{{else}}bg-danger{{end}}" id="loadtitle">
|
||||||
|
Version
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<div class="card-body">
|
||||||
|
Newest Version: {{ .checks.Version.Data.version }}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-6">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<div class="container">
|
<div class="container">
|
||||||
|
|
Loading…
Reference in a new issue