2017-08-02 20:02:34 +00:00
|
|
|
package api
|
|
|
|
|
|
|
|
import (
|
|
|
|
"net/http"
|
|
|
|
|
|
|
|
"github.com/Pterodactyl/wings/constants"
|
|
|
|
"github.com/gin-gonic/gin"
|
2017-08-02 20:49:59 +00:00
|
|
|
"github.com/shirou/gopsutil/cpu"
|
|
|
|
"github.com/shirou/gopsutil/host"
|
|
|
|
"github.com/shirou/gopsutil/mem"
|
|
|
|
log "github.com/sirupsen/logrus"
|
2017-08-02 20:02:34 +00:00
|
|
|
)
|
|
|
|
|
2017-09-30 23:35:44 +00:00
|
|
|
func GetIndex(c *gin.Context) {
|
2017-08-02 21:47:09 +00:00
|
|
|
auth := GetContextAuthManager(c)
|
2017-08-02 20:02:34 +00:00
|
|
|
|
2017-08-02 21:47:09 +00:00
|
|
|
if auth != nil && auth.HasPermission("c:info") {
|
2017-08-02 20:49:59 +00:00
|
|
|
hostInfo, err := host.Info()
|
|
|
|
if err != nil {
|
|
|
|
log.WithError(err).Error("Failed to retrieve host information.")
|
|
|
|
}
|
|
|
|
cpuInfo, err := cpu.Info()
|
|
|
|
if err != nil {
|
|
|
|
log.WithError(err).Error("Failed to retrieve CPU information.")
|
|
|
|
}
|
|
|
|
memInfo, err := mem.VirtualMemory()
|
|
|
|
if err != nil {
|
|
|
|
log.WithError(err).Error("Failed to retrieve memory information.")
|
|
|
|
}
|
|
|
|
|
|
|
|
info := struct {
|
|
|
|
Name string `json:"name"`
|
|
|
|
Version string `json:"version"`
|
|
|
|
System struct {
|
|
|
|
SystemType string `json:"type"`
|
|
|
|
Platform string `json:"platform"`
|
|
|
|
Release string `json:"release"`
|
|
|
|
Cpus int32 `json:"cpus"`
|
|
|
|
Freemem uint64 `json:"freemem"`
|
|
|
|
} `json:"os"`
|
|
|
|
}{
|
|
|
|
Name: "Pterodactyl wings",
|
|
|
|
Version: constants.Version,
|
|
|
|
}
|
|
|
|
info.System.SystemType = hostInfo.OS
|
|
|
|
info.System.Platform = hostInfo.Platform
|
|
|
|
info.System.Release = hostInfo.KernelVersion
|
|
|
|
info.System.Cpus = cpuInfo[0].Cores
|
|
|
|
info.System.Freemem = memInfo.Free
|
|
|
|
|
|
|
|
c.JSON(http.StatusOK, info)
|
|
|
|
return
|
2017-08-02 20:02:34 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
c.Header("Content-Type", "text/html")
|
|
|
|
c.String(http.StatusOK, constants.IndexPage)
|
|
|
|
}
|
|
|
|
|
|
|
|
// handlePatchConfig handles PATCH /config
|
2017-09-30 23:35:44 +00:00
|
|
|
func PatchConfiguration(c *gin.Context) {
|
2017-08-02 20:02:34 +00:00
|
|
|
|
|
|
|
}
|