68 lines
1.3 KiB
Go
68 lines
1.3 KiB
Go
package admin
|
|
|
|
import (
|
|
"time"
|
|
|
|
"github.com/aerogo/aero"
|
|
"github.com/animenotifier/arn"
|
|
"github.com/animenotifier/notify.moe/components"
|
|
"github.com/animenotifier/notify.moe/utils"
|
|
"github.com/shirou/gopsutil/cpu"
|
|
"github.com/shirou/gopsutil/disk"
|
|
"github.com/shirou/gopsutil/host"
|
|
"github.com/shirou/gopsutil/mem"
|
|
)
|
|
|
|
// Get admin page.
|
|
func Get(ctx *aero.Context) string {
|
|
user := utils.GetUser(ctx)
|
|
|
|
if user == nil || (user.Role != "admin" && user.Role != "editor") {
|
|
return ctx.Redirect("/")
|
|
}
|
|
|
|
// CPU
|
|
cpuUsage := 0.0
|
|
cpuUsages, err := cpu.Percent(1*time.Second, false)
|
|
|
|
if err == nil {
|
|
cpuUsage = cpuUsages[0]
|
|
}
|
|
|
|
// Memory
|
|
memUsage := 0.0
|
|
memInfo, _ := mem.VirtualMemory()
|
|
|
|
if err == nil {
|
|
memUsage = memInfo.UsedPercent
|
|
}
|
|
|
|
// Disk
|
|
diskUsage := 0.0
|
|
diskInfo, err := disk.Usage("/")
|
|
|
|
if err == nil {
|
|
diskUsage = diskInfo.UsedPercent
|
|
}
|
|
|
|
// Host
|
|
platform, family, platformVersion, _ := host.PlatformInformation()
|
|
kernelVersion, err := host.KernelVersion()
|
|
|
|
return ctx.HTML(components.Admin(user, cpuUsage, memUsage, diskUsage, platform, family, platformVersion, kernelVersion))
|
|
}
|
|
|
|
func average(floatSlice []float64) float64 {
|
|
if len(floatSlice) == 0 {
|
|
return arn.DefaultAverageRating
|
|
}
|
|
|
|
var sum float64
|
|
|
|
for _, value := range floatSlice {
|
|
sum += value
|
|
}
|
|
|
|
return sum / float64(len(floatSlice))
|
|
}
|