You've already forked CasaOS
mirror of
https://github.com/IceWhaleTech/CasaOS.git
synced 2025-07-15 23:54:17 +02:00
Add merge json (#1079)
This commit is contained in:
@ -1,6 +1,7 @@
|
||||
package service
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"errors"
|
||||
"fmt"
|
||||
"io/ioutil"
|
||||
@ -15,10 +16,14 @@ import (
|
||||
|
||||
"github.com/IceWhaleTech/CasaOS-Common/utils/file"
|
||||
"github.com/IceWhaleTech/CasaOS-Common/utils/logger"
|
||||
"github.com/IceWhaleTech/CasaOS/common"
|
||||
"github.com/IceWhaleTech/CasaOS/model"
|
||||
"github.com/IceWhaleTech/CasaOS/pkg/config"
|
||||
command2 "github.com/IceWhaleTech/CasaOS/pkg/utils/command"
|
||||
"github.com/IceWhaleTech/CasaOS/pkg/utils/common_err"
|
||||
"github.com/IceWhaleTech/CasaOS/pkg/utils/httper"
|
||||
"github.com/IceWhaleTech/CasaOS/pkg/utils/ip_helper"
|
||||
"github.com/tidwall/gjson"
|
||||
"go.uber.org/zap"
|
||||
|
||||
"github.com/shirou/gopsutil/v3/cpu"
|
||||
@ -49,6 +54,7 @@ type SystemService interface {
|
||||
GetDiskInfo() *disk.UsageStat
|
||||
GetSysInfo() host.InfoStat
|
||||
GetDeviceTree() string
|
||||
GetDeviceInfo() model.DeviceInfo
|
||||
CreateFile(path string) (int, error)
|
||||
RenameFile(oldF, newF string) (int, error)
|
||||
MkdirAll(path string) (int, error)
|
||||
@ -57,9 +63,104 @@ type SystemService interface {
|
||||
GetMacAddress() (string, error)
|
||||
SystemReboot() error
|
||||
SystemShutdown() error
|
||||
GetSystemEntry() string
|
||||
GenreateSystemEntry()
|
||||
}
|
||||
type systemService struct{}
|
||||
|
||||
func (c *systemService) GetDeviceInfo() model.DeviceInfo {
|
||||
m := model.DeviceInfo{}
|
||||
m.OS_Version = common.VERSION
|
||||
err, portStr := MyService.Gateway().GetPort()
|
||||
if err != nil {
|
||||
m.Port = 80
|
||||
} else {
|
||||
port := gjson.Get(portStr, "data")
|
||||
if len(port.Raw) == 0 {
|
||||
m.Port = 80
|
||||
} else {
|
||||
p, err := strconv.Atoi(port.Raw)
|
||||
if err != nil {
|
||||
m.Port = 80
|
||||
} else {
|
||||
m.Port = p
|
||||
}
|
||||
}
|
||||
}
|
||||
allIpv4 := ip_helper.GetDeviceAllIPv4()
|
||||
ip := []string{}
|
||||
nets := MyService.System().GetNet(true)
|
||||
for _, n := range nets {
|
||||
if v, ok := allIpv4[n]; ok {
|
||||
{
|
||||
ip = append(ip, v)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
m.LanIpv4 = ip
|
||||
h, err := host.Info() /* */
|
||||
if err == nil {
|
||||
m.DeviceName = h.Hostname
|
||||
}
|
||||
mb := model.BaseInfo{}
|
||||
|
||||
err = json.Unmarshal(file.ReadFullFile(config.AppInfo.DBPath+"/baseinfo.conf"), &mb)
|
||||
if err == nil {
|
||||
m.Hash = mb.Hash
|
||||
}
|
||||
|
||||
osRelease, _ := file.ReadOSRelease()
|
||||
m.DeviceModel = osRelease["MODEL"]
|
||||
m.DeviceSN = osRelease["SN"]
|
||||
res := httper.Get("http://127.0.0.1:"+strconv.Itoa(m.Port)+"/v1/users/status", nil)
|
||||
init := gjson.Get(res, "data.initialized")
|
||||
m.Initialized, _ = strconv.ParseBool(init.Raw)
|
||||
|
||||
return m
|
||||
}
|
||||
func (c *systemService) GenreateSystemEntry() {
|
||||
modelsPath := "/var/lib/casaos/www/modules"
|
||||
entryFileName := "entry.json"
|
||||
entryFilePath := filepath.Join(config.AppInfo.DBPath, "db", entryFileName)
|
||||
file.IsNotExistCreateFile(entryFilePath)
|
||||
|
||||
dir, err := os.ReadDir(modelsPath)
|
||||
if err != nil {
|
||||
logger.Error("read dir error", zap.Error(err))
|
||||
return
|
||||
}
|
||||
json := "["
|
||||
for _, v := range dir {
|
||||
data, err := os.ReadFile(filepath.Join(modelsPath, v.Name(), entryFileName))
|
||||
if err != nil {
|
||||
logger.Error("read entry file error", zap.Error(err))
|
||||
continue
|
||||
}
|
||||
json += string(data) + ","
|
||||
}
|
||||
json = strings.TrimRight(json, ",")
|
||||
json += "]"
|
||||
err = os.WriteFile(entryFilePath, []byte(json), 0666)
|
||||
if err != nil {
|
||||
logger.Error("write entry file error", zap.Error(err))
|
||||
return
|
||||
}
|
||||
|
||||
}
|
||||
func (c *systemService) GetSystemEntry() string {
|
||||
entryFilePath := filepath.Join(config.AppInfo.DBPath, "db", "entry.json")
|
||||
_, err := os.Open(entryFilePath)
|
||||
if os.IsNotExist(err) {
|
||||
return ""
|
||||
}
|
||||
by, err := os.ReadFile(entryFilePath)
|
||||
if err != nil {
|
||||
logger.Error("read entry file error", zap.Error(err))
|
||||
return ""
|
||||
}
|
||||
return string(by)
|
||||
}
|
||||
func (c *systemService) GetMacAddress() (string, error) {
|
||||
interfaces, err := net.Interfaces()
|
||||
if err != nil {
|
||||
|
Reference in New Issue
Block a user