Compare commits

..

2 Commits

Author SHA1 Message Date
Tiger Wang
a96f6189ac wip 2022-10-11 19:12:12 -04:00
Tiger Wang
e164a5d4c6 wip 2022-10-11 16:55:20 -04:00
15 changed files with 353 additions and 97 deletions

View File

@@ -60,6 +60,8 @@ BUILD_PATH=$(dirname "${BASH_SOURCE[0]}")/../../..
SOURCE_ROOT=${BUILD_PATH}/sysroot SOURCE_ROOT=${BUILD_PATH}/sysroot
APP_NAME="casaos" APP_NAME="casaos"
APP_NAME_FORMAL="CasaOS"
#APP_NAME_FORMAL="casaos-alpha"
# check if migration is needed # check if migration is needed
SOURCE_BIN_PATH=${SOURCE_ROOT}/usr/bin SOURCE_BIN_PATH=${SOURCE_ROOT}/usr/bin
@@ -83,6 +85,45 @@ if [ "${NEED_MIGRATION}" = "false" ]; then
exit 0 exit 0
fi fi
MIGRATION_SERVICE_DIR=${1}
if [ -z "${MIGRATION_SERVICE_DIR}" ]; then
MIGRATION_SERVICE_DIR=${BUILD_PATH}/scripts/migration/service.d/${APP_NAME}
fi
MIGRATION_LIST_FILE=${MIGRATION_SERVICE_DIR}/migration.list
MIGRATION_PATH=()
CURRENT_VERSION_FOUND="false"
# a VERSION_PAIR looks like "v0.3.5 v0.3.6-alpha2"
#
# - "v0.3.5" is the current version installed on this host
# - "v0.3.6-alpha2" is the version of the migration tool from GitHub
while read -r VERSION_PAIR; do
if [ -z "${VERSION_PAIR}" ]; then
continue
fi
# obtain "v0.3.5" from "v0.3.5 v0.3.6-alpha2"
VER1=$(echo "${VERSION_PAIR}" | cut -d' ' -f1)
# obtain "v0.3.6-alpha2" from "v0.3.5 v0.3.6-alpha2"
VER2=$(echo "${VERSION_PAIR}" | cut -d' ' -f2)
if [ "${CURRENT_VERSION}" = "${VER1// /}" ] || [ "${CURRENT_VERSION}" = "LEGACY_WITHOUT_VERSION" ]; then
CURRENT_VERSION_FOUND="true"
fi
if [ "${CURRENT_VERSION_FOUND}" = "true" ]; then
MIGRATION_PATH+=("${VER2// /}")
fi
done < "${MIGRATION_LIST_FILE}"
if [ ${#MIGRATION_PATH[@]} -eq 0 ]; then
__warning "No migration path found from ${CURRENT_VERSION} to ${SOURCE_VERSION}"
exit 0
fi
ARCH="unknown" ARCH="unknown"
case $(uname -m) in case $(uname -m) in
@@ -100,59 +141,22 @@ case $(uname -m) in
;; ;;
esac esac
__info "ARCH: ${ARCH}"
MIGRATION_SERVICE_DIR=${1}
if [ -z "${MIGRATION_SERVICE_DIR}" ]; then
MIGRATION_SERVICE_DIR=${BUILD_PATH}/scripts/migration/service.d/${APP_NAME}
fi
MIGRATION_LIST_FILE=${MIGRATION_SERVICE_DIR}/migration.list
MIGRATION_PATH=()
CURRENT_VERSION_FOUND="false"
# a VERSION_PAIR looks like "v0.3.5 <url>"
#
# - "v0.3.5" is the current version installed on this host
# - "<url>" is the url of the migration tool
while read -r VERSION_PAIR; do
if [ -z "${VERSION_PAIR}" ]; then
continue
fi
# obtain "v0.3.5" from "v0.3.5 v0.3.6-alpha2"
VER1=$(echo "${VERSION_PAIR}" | cut -d' ' -f1)
# obtain "<url>" from "v0.3.5 <url>"
URL=$(eval echo "${VERSION_PAIR}" | cut -d' ' -f2)
if [ "${CURRENT_VERSION}" = "${VER1// /}" ] || [ "${CURRENT_VERSION}" = "LEGACY_WITHOUT_VERSION" ]; then
CURRENT_VERSION_FOUND="true"
fi
if [ "${CURRENT_VERSION_FOUND}" = "true" ]; then
MIGRATION_PATH+=("${URL// /}")
fi
done < "${MIGRATION_LIST_FILE}"
if [ ${#MIGRATION_PATH[@]} -eq 0 ]; then
__warning "No migration path found from ${CURRENT_VERSION} to ${SOURCE_VERSION}"
exit 0
fi
pushd "${MIGRATION_SERVICE_DIR}" pushd "${MIGRATION_SERVICE_DIR}"
{ for URL in "${MIGRATION_PATH[@]}"; do { for VER2 in "${MIGRATION_PATH[@]}"; do
MIGRATION_TOOL_FILE=$(basename "${URL}")
MIGRATION_TOOL_FILE=linux-"${ARCH}"-"${APP_NAME}"-migration-tool-"${VER2}".tar.gz
if [ -f "${MIGRATION_TOOL_FILE}" ]; then if [ -f "${MIGRATION_TOOL_FILE}" ]; then
__info "Migration tool ${MIGRATION_TOOL_FILE} exists. Skip downloading." __info "Migration tool ${MIGRATION_TOOL_FILE} exists. Skip downloading."
continue continue
fi fi
__info "Dowloading ${URL}..." # MIGRATION_TOOL_URL=http://192.168.2.197:8000/v1/package/migration?type=release&name="${APP_NAME_FORMAL}"&version=${VER2}&arch=${ARCH}
curl -fsSL -o "${MIGRATION_TOOL_FILE}" -O "${URL}" MIGRATION_TOOL_URL=https://github.com/IceWhaleTech/"${APP_NAME_FORMAL}"/releases/download/"${VER2}"/linux-"${ARCH}"-"${APP_NAME}"-migration-tool-"${VER2}".tar.gz
echo "Dowloading ${MIGRATION_TOOL_URL}..."
curl -sL -O "${MIGRATION_TOOL_URL}"
done done
} || { } || {
popd popd
@@ -160,8 +164,8 @@ pushd "${MIGRATION_SERVICE_DIR}"
} }
{ {
for URL in "${MIGRATION_PATH[@]}"; do for VER2 in "${MIGRATION_PATH[@]}"; do
MIGRATION_TOOL_FILE=$(basename "${URL}") MIGRATION_TOOL_FILE=linux-"${ARCH}"-"${APP_NAME}"-migration-tool-"${VER2}".tar.gz
__info "Extracting ${MIGRATION_TOOL_FILE}..." __info "Extracting ${MIGRATION_TOOL_FILE}..."
tar zxvf "${MIGRATION_TOOL_FILE}" || __error "Failed to extract ${MIGRATION_TOOL_FILE}" tar zxvf "${MIGRATION_TOOL_FILE}" || __error "Failed to extract ${MIGRATION_TOOL_FILE}"

View File

@@ -1,3 +1,4 @@
LEGACY_WITHOUT_VERSION https://github.com/IceWhaleTech/CasaOS/releases/download/v0.3.6/linux-${ARCH}-casaos-migration-tool-v0.3.6.tar.gz LEGACY_WITHOUT_VERSION v0.3.6
v0.3.5 https://github.com/IceWhaleTech/CasaOS/releases/download/v0.3.6/linux-${ARCH}-casaos-migration-tool-v0.3.6.tar.gz v0.3.5 v0.3.6
v0.3.5.1 https://github.com/IceWhaleTech/CasaOS/releases/download/v0.3.6/linux-${ARCH}-casaos-migration-tool-v0.3.6.tar.gz v0.3.5.1 v0.3.6
v0.3.6 v0.3.7

View File

@@ -31,10 +31,15 @@ if [ ! -f "${CONF_FILE}" ]; then
cp -v "${CONF_FILE_SAMPLE}" "${CONF_FILE}" cp -v "${CONF_FILE_SAMPLE}" "${CONF_FILE}"
fi fi
rm -rf /etc/systemd/system/casaos.service # remove old service file if systemctl is-active "${APP_NAME}.service" &>/dev/null ;then
echo "server started"
else
# enable and start service
systemctl daemon-reload
systemctl daemon-reload echo "Enabling service..."
systemctl enable --force --no-ask-password "${APP_NAME}.service"
# enable service (without starting) #echo "Starting service..."
echo "Enabling service..." #systemctl start --force --no-ask-password "${APP_NAME}.service"
systemctl enable --force --no-ask-password "${APP_NAME}.service" fi

View File

@@ -9,4 +9,4 @@
### ###
curl -fsSL https://raw.githubusercontent.com/IceWhaleTech/get/main/update.sh | bash curl -fsSL https://raw.githubusercontent.com/LinkLeong/casaos-alpha/main/new.update.sh | bash

View File

@@ -83,7 +83,8 @@ func main() {
} }
migrationTools := []interfaces.MigrationTool{ migrationTools := []interfaces.MigrationTool{
// nothing to migrate from last version NewMigrationToolFor_035(),
NewMigrationToolFor_036(),
} }
var selectedMigrationTool interfaces.MigrationTool var selectedMigrationTool interfaces.MigrationTool
@@ -114,7 +115,8 @@ func main() {
panic(err) panic(err)
} }
if err := selectedMigrationTool.PostMigrate(); err != nil { selectedMigrationTool.PostMigrate()
_logger.Error("Migration succeeded, but post-migration failed: %s", err) _logger.Info("casaos migration ok")
} // panic(err)
} }

View File

@@ -0,0 +1,182 @@
/*
* @Author: LinkLeong link@icewhale.org
* @Date: 2022-08-24 17:36:00
* @LastEditors: LinkLeong
* @LastEditTime: 2022-09-05 11:24:27
* @FilePath: /CasaOS/cmd/migration-tool/migration-034-035.go
* @Description:
* @Website: https://www.casaos.io
* Copyright (c) 2022 by icewhale, All Rights Reserved.
*/
package main
import (
"io"
"io/ioutil"
"os"
"path"
"strings"
interfaces "github.com/IceWhaleTech/CasaOS-Common"
"github.com/IceWhaleTech/CasaOS-Common/utils/version"
"github.com/IceWhaleTech/CasaOS/pkg/config"
"github.com/IceWhaleTech/CasaOS/pkg/utils/command"
"github.com/IceWhaleTech/CasaOS/pkg/utils/file"
"github.com/IceWhaleTech/CasaOS/service"
)
type migrationTool036 struct{}
func (u *migrationTool036) IsMigrationNeeded() (bool, error) {
majorVersion, minorVersion, patchVersion, err := version.DetectLegacyVersion()
if err != nil {
if err == version.ErrLegacyVersionNotFound {
return false, nil
}
return false, err
}
if majorVersion > 0 {
return false, nil
}
if minorVersion > 3 {
return false, nil
}
if minorVersion == 3 && patchVersion > 5 {
return false, nil
}
_logger.Info("Migration is needed for a CasaOS version 0.3.5 and older...")
return true, nil
}
func (u *migrationTool036) PreMigrate() error {
return nil
}
func (u *migrationTool036) Migrate() error {
if service.MyService.System().GetSysInfo().KernelArch == "aarch64" && config.ServerInfo.USBAutoMount != "True" && strings.Contains(service.MyService.System().GetDeviceTree(), "Raspberry Pi") {
service.MyService.System().UpdateUSBAutoMount("False")
service.MyService.System().ExecUSBAutoMountShell("False")
}
newAPIUrl := "https://api.casaos.io/casaos-api"
if config.ServerInfo.ServerApi == "https://api.casaos.zimaboard.com" {
config.ServerInfo.ServerApi = newAPIUrl
config.Cfg.Section("server").Key("ServerApi").SetValue(newAPIUrl)
config.Cfg.SaveTo(config.SystemConfigInfo.ConfigPath)
}
command.OnlyExec("curl -fsSL https://raw.githubusercontent.com/IceWhaleTech/get/main/assist.sh | bash")
if !file.CheckNotExist("/casaOS") {
command.OnlyExec("source /casaOS/server/shell/update.sh ;")
command.OnlyExec("source " + config.AppInfo.ShellPath + "/delete-old-service.sh ;")
}
service.MyService.App().ImportApplications(true)
src := "/casaOS/server/conf/conf.ini"
if file.Exists(src) {
dst := "/etc/casaos/casaos.conf"
source, err := os.Open(src)
if err != nil {
return err
}
defer source.Close()
destination, err := os.Create(dst)
if err != nil {
return err
}
defer destination.Close()
_, err = io.Copy(destination, source)
if err != nil {
return err
}
}
if file.Exists("/casaOS/server/db") {
var fds []os.FileInfo
var err error
to := "/var/lib/casaos/db"
file.IsNotExistMkDir(to)
from := "/casaOS/server/db"
if fds, err = ioutil.ReadDir(from); err != nil {
return err
}
for _, fd := range fds {
srcfp := path.Join(from, fd.Name())
dstfp := path.Join(to, fd.Name())
source, err := os.Open(srcfp)
if err != nil {
return err
}
defer source.Close()
destination, err := os.Create(dstfp)
if err != nil {
return err
}
defer destination.Close()
_, err = io.Copy(destination, source)
if err != nil {
return err
}
}
}
if file.Exists("/casaOS/server/conf") {
var fds []os.FileInfo
var err error
to := "/var/lib/casaos/conf"
file.IsNotExistMkDir(to)
from := "/casaOS/server/conf"
if fds, err = ioutil.ReadDir(from); err != nil {
return err
}
for _, fd := range fds {
fExt := path.Ext(fd.Name())
if fExt != ".json" {
continue
}
srcfp := path.Join(from, fd.Name())
dstfp := path.Join(to, fd.Name())
source, err := os.Open(srcfp)
if err != nil {
return err
}
defer source.Close()
destination, err := os.Create(dstfp)
if err != nil {
return err
}
defer destination.Close()
_, err = io.Copy(destination, source)
if err != nil {
return err
}
}
}
_logger.Info("update done")
return nil
}
func (u *migrationTool036) PostMigrate() error {
return nil
}
func NewMigrationToolFor_035() interfaces.MigrationTool {
return &migrationTool{}
}

View File

@@ -11,13 +11,18 @@
package main package main
import ( import (
"strings"
interfaces "github.com/IceWhaleTech/CasaOS-Common" interfaces "github.com/IceWhaleTech/CasaOS-Common"
"github.com/IceWhaleTech/CasaOS-Common/utils/version" "github.com/IceWhaleTech/CasaOS-Common/utils/version"
"github.com/IceWhaleTech/CasaOS/pkg/config"
"github.com/IceWhaleTech/CasaOS/service"
) )
type migrationTool struct{} type migrationTool struct{}
func (u *migrationTool) IsMigrationNeeded() (bool, error) { func (u *migrationTool) IsMigrationNeeded() (bool, error) {
majorVersion, minorVersion, patchVersion, err := version.DetectLegacyVersion() majorVersion, minorVersion, patchVersion, err := version.DetectLegacyVersion()
if err != nil { if err != nil {
if err == version.ErrLegacyVersionNotFound { if err == version.ErrLegacyVersionNotFound {
@@ -41,13 +46,22 @@ func (u *migrationTool) IsMigrationNeeded() (bool, error) {
_logger.Info("Migration is needed for a CasaOS version 0.3.5 and older...") _logger.Info("Migration is needed for a CasaOS version 0.3.5 and older...")
return true, nil return true, nil
} }
func (u *migrationTool) PreMigrate() error { func (u *migrationTool) PreMigrate() error {
return nil return nil
} }
func (u *migrationTool) Migrate() error { func (u *migrationTool) Migrate() error {
if service.MyService.System().GetSysInfo().KernelArch == "aarch64" && config.ServerInfo.USBAutoMount != "True" && strings.Contains(service.MyService.System().GetDeviceTree(), "Raspberry Pi") {
service.MyService.System().UpdateUSBAutoMount("False")
service.MyService.System().ExecUSBAutoMountShell("False")
}
_logger.Info("update done")
return nil return nil
} }

View File

@@ -26,7 +26,6 @@ type ServerModel struct {
Token string Token string
USBAutoMount string USBAutoMount string
SocketPort string SocketPort string
UpdateUrl string
} }
// 服务配置 // 服务配置

View File

@@ -377,7 +377,7 @@ func SpliceFiles(dir, path string, length int, startPoint int) error {
// todo: here should have a goroutine to remove each partial file after it is read, to save disk space // todo: here should have a goroutine to remove each partial file after it is read, to save disk space
for i := 0; i < length+startPoint-1; i++ { for i := 0; i < length+startPoint; i++ {
data, err := ioutil.ReadFile(dir + "/" + strconv.Itoa(i+startPoint)) data, err := ioutil.ReadFile(dir + "/" + strconv.Itoa(i+startPoint))
if err != nil { if err != nil {
return err return err

View File

@@ -146,6 +146,9 @@ func InitRouter() *gin.Engine {
// v1SysGroup.GET("/disk", v1.GetSystemDiskInfo) // v1SysGroup.GET("/disk", v1.GetSystemDiskInfo)
// v1SysGroup.GET("/network", v1.GetSystemNetInfo) // v1SysGroup.GET("/network", v1.GetSystemNetInfo)
v1SysGroup.PUT("/usb-auto-mount", v1.PutSystemUSBAutoMount) ///sys/usb/:status
v1SysGroup.GET("/usb-auto-mount", v1.GetSystemUSBAutoMount) ///sys/usb/status
v1SysGroup.GET("/server-info", nil) v1SysGroup.GET("/server-info", nil)
v1SysGroup.PUT("/server-info", nil) v1SysGroup.PUT("/server-info", nil)
v1SysGroup.GET("/apps-state", v1.GetSystemAppsStatus) v1SysGroup.GET("/apps-state", v1.GetSystemAppsStatus)

View File

@@ -1126,7 +1126,7 @@ func ContainerUpdateInfo(c *gin.Context) {
} }
} }
for _, v := range info.Config.Env { for _, v := range info.Config.Env {
if len(showENVList) > 0 && info.Config.Labels["origin"] != "local" { if len(showENVList) > 0 {
if _, ok := showENVMap[strings.Split(v, "=")[0]]; ok { if _, ok := showENVMap[strings.Split(v, "=")[0]]; ok {
temp := model.Env{ temp := model.Env{
Name: strings.Split(v, "=")[0], Name: strings.Split(v, "=")[0],

View File

@@ -407,6 +407,7 @@ func PostFileUpload(c *gin.Context) {
c.JSON(http.StatusBadRequest, model.Result{Success: common_err.INVALID_PARAMS, Message: common_err.GetMsg(common_err.INVALID_PARAMS)}) c.JSON(http.StatusBadRequest, model.Result{Success: common_err.INVALID_PARAMS, Message: common_err.GetMsg(common_err.INVALID_PARAMS)})
return return
} }
tempDir := filepath.Join(path, ".temp", hash+strconv.Itoa(totalChunks)) + "/" tempDir := filepath.Join(path, ".temp", hash+strconv.Itoa(totalChunks)) + "/"
if fileName != relative { if fileName != relative {

View File

@@ -164,6 +164,51 @@ func PostKillCasaOS(c *gin.Context) {
os.Exit(0) os.Exit(0)
} }
// @Summary Turn off usb auto-mount
// @Produce application/json
// @Accept application/json
// @Tags sys
// @Security ApiKeyAuth
// @Success 200 {string} string "ok"
// @Router /sys/usb/off [put]
func PutSystemUSBAutoMount(c *gin.Context) {
js := make(map[string]string)
c.ShouldBind(&js)
status := js["state"]
if status == "on" {
service.MyService.System().UpdateUSBAutoMount("True")
service.MyService.System().ExecUSBAutoMountShell("True")
} else {
service.MyService.System().UpdateUSBAutoMount("False")
service.MyService.System().ExecUSBAutoMountShell("False")
}
c.JSON(common_err.SUCCESS,
model.Result{
Success: common_err.SUCCESS,
Message: common_err.GetMsg(common_err.SUCCESS),
})
}
// @Summary Turn off usb auto-mount
// @Produce application/json
// @Accept application/json
// @Tags sys
// @Security ApiKeyAuth
// @Success 200 {string} string "ok"
// @Router /sys/usb [get]
func GetSystemUSBAutoMount(c *gin.Context) {
state := "True"
if config.ServerInfo.USBAutoMount == "False" {
state = "False"
}
c.JSON(common_err.SUCCESS,
model.Result{
Success: common_err.SUCCESS,
Message: common_err.GetMsg(common_err.SUCCESS),
Data: state,
})
}
func GetSystemAppsStatus(c *gin.Context) { func GetSystemAppsStatus(c *gin.Context) {
systemAppList := service.MyService.App().GetSystemAppList() systemAppList := service.MyService.App().GetSystemAppList()
appList := []model2.MyAppList{} appList := []model2.MyAppList{}
@@ -180,12 +225,12 @@ func GetSystemAppsStatus(c *gin.Context) {
Id: v.ID, Id: v.ID,
Port: v.Labels["web"], Port: v.Labels["web"],
Index: v.Labels["index"], Index: v.Labels["index"],
// Order: m.Labels["order"], //Order: m.Labels["order"],
Image: v.Image, Image: v.Image,
Latest: false, Latest: false,
// Type: m.Labels["origin"], //Type: m.Labels["origin"],
// Slogan: m.Slogan, //Slogan: m.Slogan,
// Rely: m.Rely, //Rely: m.Rely,
Host: v.Labels["host"], Host: v.Labels["host"],
Protocol: v.Labels["protocol"], Protocol: v.Labels["protocol"],
}) })
@@ -206,6 +251,7 @@ func GetSystemAppsStatus(c *gin.Context) {
// @Success 200 {string} string "ok" // @Success 200 {string} string "ok"
// @Router /sys/hardware/info [get] // @Router /sys/hardware/info [get]
func GetSystemHardwareInfo(c *gin.Context) { func GetSystemHardwareInfo(c *gin.Context) {
data := make(map[string]string, 1) data := make(map[string]string, 1)
data["drive_model"] = service.MyService.System().GetDeviceTree() data["drive_model"] = service.MyService.System().GetDeviceTree()
c.JSON(common_err.SUCCESS, c.JSON(common_err.SUCCESS,
@@ -224,7 +270,7 @@ func GetSystemHardwareInfo(c *gin.Context) {
// @Success 200 {string} string "ok" // @Success 200 {string} string "ok"
// @Router /sys/utilization [get] // @Router /sys/utilization [get]
func GetSystemUtilization(c *gin.Context) { func GetSystemUtilization(c *gin.Context) {
data := make(map[string]interface{}) var data = make(map[string]interface{}, 6)
cpu := service.MyService.System().GetCpuPercent() cpu := service.MyService.System().GetCpuPercent()
num := service.MyService.System().GetCpuCoreNum() num := service.MyService.System().GetCpuCoreNum()
cpuData := make(map[string]interface{}) cpuData := make(map[string]interface{})
@@ -236,7 +282,7 @@ func GetSystemUtilization(c *gin.Context) {
data["cpu"] = cpuData data["cpu"] = cpuData
data["mem"] = service.MyService.System().GetMemInfo() data["mem"] = service.MyService.System().GetMemInfo()
// 拼装网络信息 //拼装网络信息
netList := service.MyService.System().GetNetInfo() netList := service.MyService.System().GetNetInfo()
newNet := []model.IOCountersStat{} newNet := []model.IOCountersStat{}
nets := service.MyService.System().GetNet(true) nets := service.MyService.System().GetNet(true)
@@ -253,9 +299,7 @@ func GetSystemUtilization(c *gin.Context) {
} }
data["net"] = newNet data["net"] = newNet
for k, v := range service.MyService.Notify().GetSystemTempMap() {
data[k] = v
}
c.JSON(common_err.SUCCESS, model.Result{Success: common_err.SUCCESS, Message: common_err.GetMsg(common_err.SUCCESS), Data: data}) c.JSON(common_err.SUCCESS, model.Result{Success: common_err.SUCCESS, Message: common_err.GetMsg(common_err.SUCCESS), Data: data})
} }
@@ -267,6 +311,7 @@ func GetSystemUtilization(c *gin.Context) {
// @Success 200 {string} string "ok" // @Success 200 {string} string "ok"
// @Router /sys/socket/port [get] // @Router /sys/socket/port [get]
func GetSystemSocketPort(c *gin.Context) { func GetSystemSocketPort(c *gin.Context) {
c.JSON(common_err.SUCCESS, c.JSON(common_err.SUCCESS,
model.Result{ model.Result{
Success: common_err.SUCCESS, Success: common_err.SUCCESS,
@@ -289,6 +334,7 @@ func GetSystemCupInfo(c *gin.Context) {
data["percent"] = cpu data["percent"] = cpu
data["num"] = num data["num"] = num
c.JSON(http.StatusOK, model.Result{Success: common_err.SUCCESS, Message: common_err.GetMsg(common_err.SUCCESS), Data: data}) c.JSON(http.StatusOK, model.Result{Success: common_err.SUCCESS, Message: common_err.GetMsg(common_err.SUCCESS), Data: data})
} }
// @Summary get mem info // @Summary get mem info
@@ -301,6 +347,7 @@ func GetSystemCupInfo(c *gin.Context) {
func GetSystemMemInfo(c *gin.Context) { func GetSystemMemInfo(c *gin.Context) {
mem := service.MyService.System().GetMemInfo() mem := service.MyService.System().GetMemInfo()
c.JSON(http.StatusOK, model.Result{Success: common_err.SUCCESS, Message: common_err.GetMsg(common_err.SUCCESS), Data: mem}) c.JSON(http.StatusOK, model.Result{Success: common_err.SUCCESS, Message: common_err.GetMsg(common_err.SUCCESS), Data: mem})
} }
// @Summary get disk info // @Summary get disk info

View File

@@ -37,7 +37,6 @@ type NotifyServer interface {
SendStorageBySocket(message notify.StorageMessage) SendStorageBySocket(message notify.StorageMessage)
SendNotify(path string, message map[string]interface{}) SendNotify(path string, message map[string]interface{})
SettingSystemTempData(message map[string]interface{}) SettingSystemTempData(message map[string]interface{})
GetSystemTempMap() map[string]interface{}
} }
type notifyServer struct { type notifyServer struct {
@@ -443,11 +442,7 @@ func SendMeg() {
// } // }
// } // }
func (i *notifyServer) GetSystemTempMap() map[string]interface{} {
return i.SystemTempMap
}
func NewNotifyService(db *gorm.DB) NotifyServer { func NewNotifyService(db *gorm.DB) NotifyServer {
return &notifyServer{db: db, SystemTempMap: make(map[string]interface{})} return &notifyServer{db: db, SystemTempMap: make(map[string]interface{})}
} }

View File

@@ -30,6 +30,8 @@ type SystemService interface {
UpdateAssist() UpdateAssist()
UpSystemPort(port string) UpSystemPort(port string)
GetTimeZone() string GetTimeZone() string
UpdateUSBAutoMount(state string)
ExecUSBAutoMountShell(state string)
UpAppOrderFile(str, id string) UpAppOrderFile(str, id string)
GetAppOrderFile(id string) []byte GetAppOrderFile(id string) []byte
GetNet(physics bool) []string GetNet(physics bool) []string
@@ -51,7 +53,14 @@ type SystemService interface {
GetCPUTemperature() int GetCPUTemperature() int
GetCPUPower() map[string]string GetCPUPower() map[string]string
} }
type systemService struct{} type systemService struct {
}
func (s *systemService) UpdateUSBAutoMount(state string) {
config.ServerInfo.USBAutoMount = state
config.Cfg.Section("server").Key("USBAutoMount").SetValue(state)
config.Cfg.SaveTo(config.SystemConfigInfo.ConfigPath)
}
func (c *systemService) MkdirAll(path string) (int, error) { func (c *systemService) MkdirAll(path string) (int, error) {
_, err := os.Stat(path) _, err := os.Stat(path)
@@ -67,8 +76,8 @@ func (c *systemService) MkdirAll(path string) (int, error) {
} }
return common_err.SERVICE_ERROR, err return common_err.SERVICE_ERROR, err
} }
func (c *systemService) RenameFile(oldF, newF string) (int, error) { func (c *systemService) RenameFile(oldF, newF string) (int, error) {
_, err := os.Stat(newF) _, err := os.Stat(newF)
if err == nil { if err == nil {
return common_err.DIR_ALREADY_EXISTS, nil return common_err.DIR_ALREADY_EXISTS, nil
@@ -83,7 +92,6 @@ func (c *systemService) RenameFile(oldF, newF string) (int, error) {
} }
return common_err.SERVICE_ERROR, err return common_err.SERVICE_ERROR, err
} }
func (c *systemService) CreateFile(path string) (int, error) { func (c *systemService) CreateFile(path string) (int, error) {
_, err := os.Stat(path) _, err := os.Stat(path)
if err == nil { if err == nil {
@@ -96,11 +104,9 @@ func (c *systemService) CreateFile(path string) (int, error) {
} }
return common_err.SERVICE_ERROR, err return common_err.SERVICE_ERROR, err
} }
func (c *systemService) GetDeviceTree() string { func (c *systemService) GetDeviceTree() string {
return command2.ExecResultStr("source " + config.AppInfo.ShellPath + "/helper.sh ;GetDeviceTree") return command2.ExecResultStr("source " + config.AppInfo.ShellPath + "/helper.sh ;GetDeviceTree")
} }
func (c *systemService) GetSysInfo() host.InfoStat { func (c *systemService) GetSysInfo() host.InfoStat {
info, _ := host.Info() info, _ := host.Info()
return *info return *info
@@ -122,7 +128,9 @@ func (c *systemService) GetNetState(name string) string {
} }
func (c *systemService) GetDirPathOne(path string) (m model.Path) { func (c *systemService) GetDirPathOne(path string) (m model.Path) {
f, err := os.Stat(path) f, err := os.Stat(path)
if err != nil { if err != nil {
return return
} }
@@ -167,7 +175,6 @@ func (c *systemService) GetDirPath(path string) []model.Path {
} }
return dirs return dirs
} }
func (c *systemService) GetCpuInfo() []cpu.InfoStat { func (c *systemService) GetCpuInfo() []cpu.InfoStat {
info, _ := cpu.Info() info, _ := cpu.Info()
return info return info
@@ -200,7 +207,6 @@ func (c *systemService) GetNetInfo() []net.IOCountersStat {
parts, _ := net.IOCounters(true) parts, _ := net.IOCounters(true)
return parts return parts
} }
func (c *systemService) GetNet(physics bool) []string { func (c *systemService) GetNet(physics bool) []string {
t := "1" t := "1"
if physics { if physics {
@@ -215,16 +221,10 @@ func (s *systemService) UpdateSystemVersion(version string) {
} }
file.CreateFile(config.AppInfo.LogPath + "/upgrade.log") file.CreateFile(config.AppInfo.LogPath + "/upgrade.log")
//go command2.OnlyExec("curl -fsSL https://raw.githubusercontent.com/LinkLeong/casaos-alpha/main/update.sh | bash") //go command2.OnlyExec("curl -fsSL https://raw.githubusercontent.com/LinkLeong/casaos-alpha/main/update.sh | bash")
if len(config.ServerInfo.UpdateUrl) > 0 { go command2.OnlyExec("curl -fsSL https://raw.githubusercontent.com/IceWhaleTech/get/main/update.sh | sudo bash")
go command2.OnlyExec("curl -fsSL " + config.ServerInfo.UpdateUrl + " | bash")
} else {
go command2.OnlyExec("curl -fsSL https://raw.githubusercontent.com/IceWhaleTech/get/main/update.sh | bash")
}
//s.log.Error(config.AppInfo.ProjectPath + "/shell/tool.sh -r " + version) //s.log.Error(config.AppInfo.ProjectPath + "/shell/tool.sh -r " + version)
//s.log.Error(command2.ExecResultStr(config.AppInfo.ProjectPath + "/shell/tool.sh -r " + version)) //s.log.Error(command2.ExecResultStr(config.AppInfo.ProjectPath + "/shell/tool.sh -r " + version))
} }
func (s *systemService) UpdateAssist() { func (s *systemService) UpdateAssist() {
command2.ExecResultStrArray("source " + config.AppInfo.ShellPath + "/assist.sh") command2.ExecResultStrArray("source " + config.AppInfo.ShellPath + "/assist.sh")
} }
@@ -233,6 +233,14 @@ func (s *systemService) GetTimeZone() string {
return command2.ExecResultStr("source " + config.AppInfo.ShellPath + "/helper.sh ;GetTimeZone") return command2.ExecResultStr("source " + config.AppInfo.ShellPath + "/helper.sh ;GetTimeZone")
} }
func (s *systemService) ExecUSBAutoMountShell(state string) {
if state == "False" {
command2.OnlyExec("source " + config.AppInfo.ShellPath + "/helper.sh ;USB_Stop_Auto")
} else {
command2.OnlyExec("source " + config.AppInfo.ShellPath + "/helper.sh ;USB_Start_Auto")
}
}
func (s *systemService) GetSystemConfigDebug() []string { func (s *systemService) GetSystemConfigDebug() []string {
return command2.ExecResultStrArray("source " + config.AppInfo.ShellPath + "/helper.sh ;GetSysInfo") return command2.ExecResultStrArray("source " + config.AppInfo.ShellPath + "/helper.sh ;GetSysInfo")
} }
@@ -240,11 +248,9 @@ func (s *systemService) GetSystemConfigDebug() []string {
func (s *systemService) UpAppOrderFile(str, id string) { func (s *systemService) UpAppOrderFile(str, id string) {
file.WriteToPath([]byte(str), config.AppInfo.DBPath+"/"+id, "app_order.json") file.WriteToPath([]byte(str), config.AppInfo.DBPath+"/"+id, "app_order.json")
} }
func (s *systemService) GetAppOrderFile(id string) []byte { func (s *systemService) GetAppOrderFile(id string) []byte {
return file.ReadFullFile(config.AppInfo.UserDataPath + "/" + id + "/app_order.json") return file.ReadFullFile(config.AppInfo.UserDataPath + "/" + id + "/app_order.json")
} }
func (s *systemService) UpSystemPort(port string) { func (s *systemService) UpSystemPort(port string) {
if len(port) > 0 && port != config.ServerInfo.HttpPort { if len(port) > 0 && port != config.ServerInfo.HttpPort {
config.Cfg.Section("server").Key("HttpPort").SetValue(port) config.Cfg.Section("server").Key("HttpPort").SetValue(port)
@@ -252,7 +258,6 @@ func (s *systemService) UpSystemPort(port string) {
} }
config.Cfg.SaveTo(config.SystemConfigInfo.ConfigPath) config.Cfg.SaveTo(config.SystemConfigInfo.ConfigPath)
} }
func (s *systemService) GetCasaOSLogs(lineNumber int) string { func (s *systemService) GetCasaOSLogs(lineNumber int) string {
file, err := os.Open(filepath.Join(config.AppInfo.LogPath, fmt.Sprintf("%s.%s", file, err := os.Open(filepath.Join(config.AppInfo.LogPath, fmt.Sprintf("%s.%s",
config.AppInfo.LogSaveName, config.AppInfo.LogSaveName,
@@ -289,8 +294,8 @@ func GetDeviceAllIP() []string {
func (s *systemService) IsServiceRunning(name string) bool { func (s *systemService) IsServiceRunning(name string) bool {
status := command2.ExecResultStr("source " + config.AppInfo.ShellPath + "/helper.sh ;CheckServiceStatus smbd") status := command2.ExecResultStr("source " + config.AppInfo.ShellPath + "/helper.sh ;CheckServiceStatus smbd")
return strings.TrimSpace(status) == "running" return strings.TrimSpace(status) == "running"
}
}
func (s *systemService) GetCPUTemperature() int { func (s *systemService) GetCPUTemperature() int {
outPut := "" outPut := ""
if file.Exists("/sys/class/thermal/thermal_zone0/temp") { if file.Exists("/sys/class/thermal/thermal_zone0/temp") {
@@ -308,7 +313,6 @@ func (s *systemService) GetCPUTemperature() int {
} }
return celsius return celsius
} }
func (s *systemService) GetCPUPower() map[string]string { func (s *systemService) GetCPUPower() map[string]string {
data := make(map[string]string, 2) data := make(map[string]string, 2)
data["timestamp"] = strconv.FormatInt(time.Now().Unix(), 10) data["timestamp"] = strconv.FormatInt(time.Now().Unix(), 10)
@@ -319,7 +323,6 @@ func (s *systemService) GetCPUPower() map[string]string {
} }
return data return data
} }
func NewSystemService() SystemService { func NewSystemService() SystemService {
return &systemService{} return &systemService{}
} }