wip
This commit is contained in:
parent
60608c5dc7
commit
eb31bf5586
7 changed files with 91 additions and 2 deletions
|
@ -30,6 +30,7 @@ const (
|
||||||
Record_NOT_EXIST = 20007
|
Record_NOT_EXIST = 20007
|
||||||
Record_ALREADY_EXIST = 20008
|
Record_ALREADY_EXIST = 20008
|
||||||
SERVICE_NOT_RUNNING = 20009
|
SERVICE_NOT_RUNNING = 20009
|
||||||
|
CHARACTER_LIMIT = 20010
|
||||||
|
|
||||||
//disk
|
//disk
|
||||||
NAME_NOT_AVAILABLE = 40001
|
NAME_NOT_AVAILABLE = 40001
|
||||||
|
@ -85,6 +86,7 @@ var MsgFlags = map[int]string{
|
||||||
Record_ALREADY_EXIST: "Record already exists",
|
Record_ALREADY_EXIST: "Record already exists",
|
||||||
Record_NOT_EXIST: "Record does not exist",
|
Record_NOT_EXIST: "Record does not exist",
|
||||||
SERVICE_NOT_RUNNING: "Service is not running",
|
SERVICE_NOT_RUNNING: "Service is not running",
|
||||||
|
CHARACTER_LIMIT: "Only uppercase letters, lowercase letters and numbers are allowed for username and password.",
|
||||||
|
|
||||||
//app
|
//app
|
||||||
UNINSTALL_APP_ERROR: "Error uninstalling app",
|
UNINSTALL_APP_ERROR: "Error uninstalling app",
|
||||||
|
@ -113,7 +115,7 @@ var MsgFlags = map[int]string{
|
||||||
COMMAND_ERROR_INVALID_OPERATION: "invalid operation",
|
COMMAND_ERROR_INVALID_OPERATION: "invalid operation",
|
||||||
}
|
}
|
||||||
|
|
||||||
//获取错误信息
|
// 获取错误信息
|
||||||
func GetMsg(code int) string {
|
func GetMsg(code int) string {
|
||||||
msg, ok := MsgFlags[code]
|
msg, ok := MsgFlags[code]
|
||||||
if ok {
|
if ok {
|
||||||
|
|
|
@ -70,12 +70,23 @@ func SendAllHardwareStatusBySocket() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
cpu := service.MyService.System().GetCpuPercent()
|
cpu := service.MyService.System().GetCpuPercent()
|
||||||
|
|
||||||
|
var cpuModel = "arm"
|
||||||
|
if cpu := service.MyService.System().GetCpuInfo(); len(cpu) > 0 {
|
||||||
|
if strings.Count(strings.ToLower(strings.TrimSpace(cpu[0].ModelName)), "intel") > 0 {
|
||||||
|
cpuModel = "intel"
|
||||||
|
} else if strings.Count(strings.ToLower(strings.TrimSpace(cpu[0].ModelName)), "amd") > 0 {
|
||||||
|
cpuModel = "amd"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
num := service.MyService.System().GetCpuCoreNum()
|
num := service.MyService.System().GetCpuCoreNum()
|
||||||
cpuData := make(map[string]interface{})
|
cpuData := make(map[string]interface{})
|
||||||
cpuData["percent"] = cpu
|
cpuData["percent"] = cpu
|
||||||
cpuData["num"] = num
|
cpuData["num"] = num
|
||||||
cpuData["temperature"] = service.MyService.System().GetCPUTemperature()
|
cpuData["temperature"] = service.MyService.System().GetCPUTemperature()
|
||||||
cpuData["power"] = service.MyService.System().GetCPUPower()
|
cpuData["power"] = service.MyService.System().GetCPUPower()
|
||||||
|
cpuData["model"] = cpuModel
|
||||||
|
|
||||||
memInfo := service.MyService.System().GetMemInfo()
|
memInfo := service.MyService.System().GetMemInfo()
|
||||||
|
|
||||||
|
|
|
@ -152,6 +152,7 @@ func InitRouter() *gin.Engine {
|
||||||
// v1SysGroup.GET("/port", v1.GetCasaOSPort)
|
// v1SysGroup.GET("/port", v1.GetCasaOSPort)
|
||||||
// v1SysGroup.PUT("/port", v1.PutCasaOSPort)
|
// v1SysGroup.PUT("/port", v1.PutCasaOSPort)
|
||||||
v1SysGroup.GET("/proxy", v1.GetSystemProxy)
|
v1SysGroup.GET("/proxy", v1.GetSystemProxy)
|
||||||
|
v1SysGroup.PUT("/state/:state", v1.PutSystemState)
|
||||||
}
|
}
|
||||||
v1PortGroup := v1Group.Group("/port")
|
v1PortGroup := v1Group.Group("/port")
|
||||||
v1PortGroup.Use()
|
v1PortGroup.Use()
|
||||||
|
|
|
@ -622,6 +622,11 @@ func UnInstallApp(c *gin.Context) {
|
||||||
c.JSON(common_err.CLIENT_ERROR, model.Result{Success: common_err.INVALID_PARAMS, Message: common_err.GetMsg(common_err.INVALID_PARAMS)})
|
c.JSON(common_err.CLIENT_ERROR, model.Result{Success: common_err.INVALID_PARAMS, Message: common_err.GetMsg(common_err.INVALID_PARAMS)})
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
j := make(map[string]string)
|
||||||
|
c.ShouldBind(&j)
|
||||||
|
isDelete := j["delete_config_folder"]
|
||||||
|
|
||||||
//info := service.MyService.App().GetUninstallInfo(appId)
|
//info := service.MyService.App().GetUninstallInfo(appId)
|
||||||
|
|
||||||
info, err := service.MyService.Docker().DockerContainerInfo(appId)
|
info, err := service.MyService.Docker().DockerContainerInfo(appId)
|
||||||
|
@ -646,7 +651,7 @@ func UnInstallApp(c *gin.Context) {
|
||||||
// step:remove image
|
// step:remove image
|
||||||
service.MyService.Docker().DockerImageRemove(info.Config.Image)
|
service.MyService.Docker().DockerImageRemove(info.Config.Image)
|
||||||
|
|
||||||
if info.Config.Labels["origin"] != "custom" {
|
if info.Config.Labels["origin"] != "custom" && len(isDelete) > 0 {
|
||||||
//step: 删除文件夹
|
//step: 删除文件夹
|
||||||
for _, v := range info.Mounts {
|
for _, v := range info.Mounts {
|
||||||
if strings.Contains(v.Source, info.Name) {
|
if strings.Contains(v.Source, info.Name) {
|
||||||
|
|
|
@ -14,12 +14,14 @@ import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"os"
|
"os"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
|
"regexp"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
"github.com/IceWhaleTech/CasaOS/model"
|
"github.com/IceWhaleTech/CasaOS/model"
|
||||||
"github.com/IceWhaleTech/CasaOS/pkg/samba"
|
"github.com/IceWhaleTech/CasaOS/pkg/samba"
|
||||||
"github.com/IceWhaleTech/CasaOS/pkg/utils/common_err"
|
"github.com/IceWhaleTech/CasaOS/pkg/utils/common_err"
|
||||||
"github.com/IceWhaleTech/CasaOS/pkg/utils/file"
|
"github.com/IceWhaleTech/CasaOS/pkg/utils/file"
|
||||||
|
"github.com/IceWhaleTech/CasaOS/pkg/utils/ip_helper"
|
||||||
"github.com/IceWhaleTech/CasaOS/service"
|
"github.com/IceWhaleTech/CasaOS/service"
|
||||||
model2 "github.com/IceWhaleTech/CasaOS/service/model"
|
model2 "github.com/IceWhaleTech/CasaOS/service/model"
|
||||||
"github.com/gin-gonic/gin"
|
"github.com/gin-gonic/gin"
|
||||||
|
@ -125,9 +127,27 @@ func PostSambaConnectionsCreate(c *gin.Context) {
|
||||||
connection.Port = "445"
|
connection.Port = "445"
|
||||||
}
|
}
|
||||||
if connection.Username == "" || connection.Host == "" {
|
if connection.Username == "" || connection.Host == "" {
|
||||||
|
c.JSON(common_err.CLIENT_ERROR, model.Result{Success: common_err.CHARACTER_LIMIT, Message: common_err.GetMsg(common_err.CHARACTER_LIMIT)})
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
if ok, _ := regexp.MatchString("^[a-zA-Z0-9]{4,30}$", connection.Password); !ok {
|
||||||
|
c.JSON(common_err.CLIENT_ERROR, model.Result{Success: common_err.CHARACTER_LIMIT, Message: common_err.GetMsg(common_err.CHARACTER_LIMIT)})
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if ok, _ := regexp.MatchString("^[a-zA-Z0-9]{4,30}$", connection.Username); !ok {
|
||||||
c.JSON(common_err.CLIENT_ERROR, model.Result{Success: common_err.INVALID_PARAMS, Message: common_err.GetMsg(common_err.INVALID_PARAMS)})
|
c.JSON(common_err.CLIENT_ERROR, model.Result{Success: common_err.INVALID_PARAMS, Message: common_err.GetMsg(common_err.INVALID_PARAMS)})
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
if !ip_helper.IsIPv4(connection.Host) && !ip_helper.IsIPv6(connection.Host) {
|
||||||
|
c.JSON(common_err.CLIENT_ERROR, model.Result{Success: common_err.INVALID_PARAMS, Message: common_err.GetMsg(common_err.INVALID_PARAMS)})
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if ok, _ := regexp.MatchString("^[0-9]{1,6}$", connection.Port); !ok {
|
||||||
|
c.JSON(common_err.CLIENT_ERROR, model.Result{Success: common_err.INVALID_PARAMS, Message: common_err.GetMsg(common_err.INVALID_PARAMS)})
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
connection.Host = strings.Split(connection.Host, "/")[0]
|
connection.Host = strings.Split(connection.Host, "/")[0]
|
||||||
// check is exists
|
// check is exists
|
||||||
connections := service.MyService.Connections().GetConnectionByHost(connection.Host)
|
connections := service.MyService.Connections().GetConnectionByHost(connection.Host)
|
||||||
|
|
|
@ -228,11 +228,20 @@ func GetSystemUtilization(c *gin.Context) {
|
||||||
data := make(map[string]interface{})
|
data := make(map[string]interface{})
|
||||||
cpu := service.MyService.System().GetCpuPercent()
|
cpu := service.MyService.System().GetCpuPercent()
|
||||||
num := service.MyService.System().GetCpuCoreNum()
|
num := service.MyService.System().GetCpuCoreNum()
|
||||||
|
var cpuModel = "arm"
|
||||||
|
if cpu := service.MyService.System().GetCpuInfo(); len(cpu) > 0 {
|
||||||
|
if strings.Count(strings.ToLower(strings.TrimSpace(cpu[0].ModelName)), "intel") > 0 {
|
||||||
|
cpuModel = "intel"
|
||||||
|
} else if strings.Count(strings.ToLower(strings.TrimSpace(cpu[0].ModelName)), "amd") > 0 {
|
||||||
|
cpuModel = "amd"
|
||||||
|
}
|
||||||
|
}
|
||||||
cpuData := make(map[string]interface{})
|
cpuData := make(map[string]interface{})
|
||||||
cpuData["percent"] = cpu
|
cpuData["percent"] = cpu
|
||||||
cpuData["num"] = num
|
cpuData["num"] = num
|
||||||
cpuData["temperature"] = service.MyService.System().GetCPUTemperature()
|
cpuData["temperature"] = service.MyService.System().GetCPUTemperature()
|
||||||
cpuData["power"] = service.MyService.System().GetCPUPower()
|
cpuData["power"] = service.MyService.System().GetCPUPower()
|
||||||
|
cpuData["model"] = cpuModel
|
||||||
|
|
||||||
data["cpu"] = cpuData
|
data["cpu"] = cpuData
|
||||||
data["mem"] = service.MyService.System().GetMemInfo()
|
data["mem"] = service.MyService.System().GetMemInfo()
|
||||||
|
@ -358,3 +367,21 @@ func GetSystemProxy(c *gin.Context) {
|
||||||
// 复制转发的响应Body到响应Body
|
// 复制转发的响应Body到响应Body
|
||||||
io.Copy(c.Writer, ioutil.NopCloser(bytes.NewBuffer(rda)))
|
io.Copy(c.Writer, ioutil.NopCloser(bytes.NewBuffer(rda)))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func PutSystemState(c *gin.Context) {
|
||||||
|
state := c.Param("state")
|
||||||
|
if state == "off" {
|
||||||
|
go func() {
|
||||||
|
time.Sleep(30 * time.Second)
|
||||||
|
service.MyService.System().SystemShutdown()
|
||||||
|
}()
|
||||||
|
|
||||||
|
} else if state == "restart" {
|
||||||
|
go func() {
|
||||||
|
time.Sleep(30 * time.Second)
|
||||||
|
service.MyService.System().SystemReboot()
|
||||||
|
}()
|
||||||
|
|
||||||
|
}
|
||||||
|
c.JSON(http.StatusOK, model.Result{Success: common_err.SUCCESS, Message: common_err.GetMsg(common_err.SUCCESS), Data: "The operation will be executed after 30 seconds"})
|
||||||
|
}
|
||||||
|
|
|
@ -5,6 +5,7 @@ import (
|
||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
net2 "net"
|
net2 "net"
|
||||||
"os"
|
"os"
|
||||||
|
"os/exec"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
"runtime"
|
"runtime"
|
||||||
"strconv"
|
"strconv"
|
||||||
|
@ -52,6 +53,8 @@ type SystemService interface {
|
||||||
GetCPUTemperature() int
|
GetCPUTemperature() int
|
||||||
GetCPUPower() map[string]string
|
GetCPUPower() map[string]string
|
||||||
GetMacAddress() (string, error)
|
GetMacAddress() (string, error)
|
||||||
|
SystemReboot() error
|
||||||
|
SystemShutdown() error
|
||||||
}
|
}
|
||||||
type systemService struct{}
|
type systemService struct{}
|
||||||
|
|
||||||
|
@ -364,6 +367,26 @@ func (s *systemService) GetCPUPower() map[string]string {
|
||||||
return data
|
return data
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (s *systemService) SystemReboot() error {
|
||||||
|
arg := []string{"6"}
|
||||||
|
cmd := exec.Command("init", arg...)
|
||||||
|
_, err := cmd.CombinedOutput()
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
func (s *systemService) SystemShutdown() error {
|
||||||
|
arg := []string{"0"}
|
||||||
|
cmd := exec.Command("init", arg...)
|
||||||
|
_, err := cmd.CombinedOutput()
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
func NewSystemService() SystemService {
|
func NewSystemService() SystemService {
|
||||||
|
|
||||||
return &systemService{}
|
return &systemService{}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue