2023-03-29 20:38:50 +00:00
|
|
|
package main
|
|
|
|
|
|
|
|
import (
|
|
|
|
"net/http"
|
|
|
|
"encoding/json"
|
2023-06-15 12:07:10 +00:00
|
|
|
"runtime"
|
|
|
|
"golang.org/x/sys/cpu"
|
2023-03-29 20:38:50 +00:00
|
|
|
|
|
|
|
"github.com/azukaar/cosmos-server/src/utils"
|
|
|
|
"github.com/azukaar/cosmos-server/src/docker"
|
|
|
|
)
|
|
|
|
|
|
|
|
func StatusRoute(w http.ResponseWriter, req *http.Request) {
|
2023-06-20 17:34:06 +00:00
|
|
|
config := utils.GetMainConfig()
|
|
|
|
|
|
|
|
if !config.NewInstall && (utils.LoggedInOnly(w, req) != nil) {
|
2023-03-29 20:38:50 +00:00
|
|
|
return
|
|
|
|
}
|
|
|
|
|
|
|
|
if(req.Method == "GET") {
|
|
|
|
utils.Log("API: Status")
|
|
|
|
|
|
|
|
databaseStatus := true
|
|
|
|
|
2023-06-20 17:34:06 +00:00
|
|
|
if(!config.DisableUserManagement) {
|
2023-03-29 20:38:50 +00:00
|
|
|
err := utils.DB()
|
|
|
|
if err != nil {
|
|
|
|
utils.Error("Status: Database error", err)
|
|
|
|
databaseStatus = false
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
utils.Log("Status: User management is disabled, skipping database check")
|
|
|
|
}
|
|
|
|
|
|
|
|
if(!docker.DockerIsConnected) {
|
|
|
|
ed := docker.Connect()
|
|
|
|
if ed != nil {
|
|
|
|
utils.Error("Status: Docker error", ed)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
json.NewEncoder(w).Encode(map[string]interface{}{
|
|
|
|
"status": "OK",
|
|
|
|
"data": map[string]interface{}{
|
2023-06-20 17:34:06 +00:00
|
|
|
"homepage": config.HomepageConfig,
|
|
|
|
"theme": config.ThemeConfig,
|
|
|
|
"resources": map[string]interface{}{
|
|
|
|
// "ram": utils.GetRAMUsage(),
|
|
|
|
// "ramFree": utils.GetAvailableRAM(),
|
|
|
|
// "cpu": utils.GetCPUUsage(),
|
|
|
|
// "disk": utils.GetDiskUsage(),
|
|
|
|
// "network": utils.GetNetworkUsage(),
|
|
|
|
},
|
2023-03-29 20:38:50 +00:00
|
|
|
"database": databaseStatus,
|
|
|
|
"docker": docker.DockerIsConnected,
|
|
|
|
"letsencrypt": utils.GetMainConfig().HTTPConfig.HTTPSCertificateMode == "LETSENCRYPT" && utils.GetMainConfig().HTTPConfig.SSLEmail == "",
|
|
|
|
"domain": utils.GetMainConfig().HTTPConfig.Hostname == "localhost" || utils.GetMainConfig().HTTPConfig.Hostname == "0.0.0.0",
|
|
|
|
"HTTPSCertificateMode": utils.GetMainConfig().HTTPConfig.HTTPSCertificateMode,
|
2023-04-27 18:29:26 +00:00
|
|
|
"needsRestart": utils.NeedsRestart,
|
2023-05-01 11:59:46 +00:00
|
|
|
"newVersionAvailable": utils.NewVersionAvailable,
|
2023-05-06 18:25:10 +00:00
|
|
|
"hostname": utils.GetMainConfig().HTTPConfig.Hostname,
|
2023-06-15 12:07:10 +00:00
|
|
|
"CPU": runtime.GOARCH,
|
|
|
|
"AVX": cpu.X86.HasAVX,
|
2023-03-29 20:38:50 +00:00
|
|
|
},
|
|
|
|
})
|
|
|
|
} else {
|
|
|
|
utils.Error("UserList: Method not allowed" + req.Method, nil)
|
|
|
|
utils.HTTPError(w, "Method not allowed", http.StatusMethodNotAllowed, "HTTP001")
|
|
|
|
return
|
|
|
|
}
|
2023-05-01 10:00:45 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
func CanSendEmail(w http.ResponseWriter, req *http.Request) {
|
|
|
|
if(req.Method == "GET") {
|
|
|
|
json.NewEncoder(w).Encode(map[string]interface{}{
|
|
|
|
"status": "OK",
|
|
|
|
"data": map[string]interface{}{
|
|
|
|
"canSendEmail": utils.GetMainConfig().EmailConfig.Enabled,
|
|
|
|
},
|
|
|
|
})
|
|
|
|
} else {
|
|
|
|
utils.Error("UserList: Method not allowed" + req.Method, nil)
|
|
|
|
utils.HTTPError(w, "Method not allowed", http.StatusMethodNotAllowed, "HTTP001")
|
|
|
|
return
|
|
|
|
}
|
|
|
|
}
|