d0f3dc806e
- [Apps] This is a feature that has been highly requested by the community. Import the original Docker application into CasaOS. Now it's easy to import with just a few clicks! - [Apps] App list supports a custom sorting function! You can arrange apps in different orders by dragging the icons. - [Apps] App custom installation supports Docker Compose configuration import in YAML format. - [Files] Added thumbnail preview function for image files. - [Connect] Multiple CasaConenct devices in the LAN will be transmitted through the LAN network. - [System] Added a switch for auto-mounting USB disk devices. 🎈 Enhancement - [System] Optimized the system update alert, you will see the new version update log from the next version. - [Apps] Added live preview for icons in custom installed apps. - [Apps] Optimized the input of WebUI. - [Files] Completely updated the image preview, now it supports switching all images in the same folder, as well as dragging, zooming, rotating and resetting. - [Widgets] Added color levels for CPU and RAM charts. - [Conenct] Optimized the display of the right-click menu of the Connect friends list. 🎈 Changed - [Files] Change the initial display directory to /DATA 🐞 Fixed - [System] Fixed an issue with Raspberry Pi devices failing to boot using USB disks. (Achieved by disabling USB disk auto-mount) - [Apps] Fixed the issue that some Docker CLI commands failed to import. - [Apps] Fixed the issue that the app is not easily recognized in /DATA/AppData directory and docker command line after installation, it will be shown as the app name. (Newly installed apps only) - [Apps] Fixed the issue that Pi-hole cannot be launched after installation in the app store. - [Apps] Fixed the issue that apps cannot be updated with WatchTower. - [Files] Fixed the issue that when there is an upload task, the task status is lost after closing Files.
117 lines
3.7 KiB
Go
117 lines
3.7 KiB
Go
package service
|
|
|
|
import (
|
|
"io/ioutil"
|
|
"net"
|
|
"os"
|
|
|
|
"github.com/IceWhaleTech/CasaOS/pkg/config"
|
|
command2 "github.com/IceWhaleTech/CasaOS/pkg/utils/command"
|
|
"github.com/IceWhaleTech/CasaOS/pkg/utils/file"
|
|
"github.com/IceWhaleTech/CasaOS/pkg/utils/loger"
|
|
)
|
|
|
|
type SystemService interface {
|
|
UpSystemConfig(str string, widget string)
|
|
UpdateSystemVersion(version string)
|
|
GetSystemConfigDebug() []string
|
|
GetCasaOSLogs(lineNumber int) string
|
|
UpdateAssist()
|
|
UpSystemPort(port string)
|
|
GetTimeZone() string
|
|
UpdateUSBAutoMount(state string)
|
|
ExecUSBAutoMountShell(state string)
|
|
UpAppOrderFile(str string)
|
|
GetAppOrderFile() []byte
|
|
}
|
|
type systemService struct {
|
|
log loger.OLog
|
|
}
|
|
|
|
func (s *systemService) UpdateSystemVersion(version string) {
|
|
//command2.OnlyExec(config.AppInfo.ProjectPath + "/shell/tool.sh -r " + version)
|
|
//s.log.Error(config.AppInfo.ProjectPath + "/shell/tool.sh -r " + version)
|
|
s.log.Error(command2.ExecResultStrArray("source " + config.AppInfo.ProjectPath + "/shell/tools.sh ;update " + version))
|
|
//s.log.Error(command2.ExecResultStr(config.AppInfo.ProjectPath + "/shell/tool.sh -r " + version))
|
|
}
|
|
func (s *systemService) UpdateAssist() {
|
|
s.log.Error(command2.ExecResultStrArray("source " + config.AppInfo.ProjectPath + "/shell/assist.sh"))
|
|
}
|
|
|
|
func (s *systemService) GetTimeZone() string {
|
|
return command2.ExecResultStr("source " + config.AppInfo.ProjectPath + "/shell/helper.sh ;GetTimeZone")
|
|
}
|
|
|
|
func (s *systemService) ExecUSBAutoMountShell(state string) {
|
|
if state == "False" {
|
|
command2.OnlyExec("source " + config.AppInfo.ProjectPath + "/shell/helper.sh ;USB_Remove_File")
|
|
} else {
|
|
command2.OnlyExec("source " + config.AppInfo.ProjectPath + "/shell/helper.sh ;USB_Move_File")
|
|
}
|
|
|
|
}
|
|
|
|
func (s *systemService) GetSystemConfigDebug() []string {
|
|
return command2.ExecResultStrArray("source " + config.AppInfo.ProjectPath + "/shell/helper.sh ;GetSysInfo")
|
|
}
|
|
func (s *systemService) UpSystemConfig(str string, widget string) {
|
|
if len(str) > 0 && str != config.SystemConfigInfo.ConfigStr {
|
|
config.Cfg.Section("system").Key("ConfigStr").SetValue(str)
|
|
config.SystemConfigInfo.ConfigStr = str
|
|
}
|
|
if len(widget) > 0 && widget != config.SystemConfigInfo.WidgetList {
|
|
config.Cfg.Section("system").Key("WidgetList").SetValue(widget)
|
|
config.SystemConfigInfo.WidgetList = widget
|
|
}
|
|
config.Cfg.SaveTo(config.SystemConfigInfo.ConfigPath)
|
|
}
|
|
func (s *systemService) UpAppOrderFile(str string) {
|
|
file.WriteToPath([]byte(str), config.AppInfo.ProjectPath+"/conf", "app_order.json")
|
|
}
|
|
func (s *systemService) GetAppOrderFile() []byte {
|
|
return file.ReadFullFile(config.AppInfo.ProjectPath + "/conf/app_order.json")
|
|
}
|
|
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 (s *systemService) UpSystemPort(port string) {
|
|
if len(port) > 0 && port != config.ServerInfo.HttpPort {
|
|
config.Cfg.Section("server").Key("HttpPort").SetValue(port)
|
|
config.ServerInfo.HttpPort = port
|
|
}
|
|
config.Cfg.SaveTo(config.SystemConfigInfo.ConfigPath)
|
|
}
|
|
func (s *systemService) GetCasaOSLogs(lineNumber int) string {
|
|
file, err := os.Open(s.log.Path())
|
|
if err != nil {
|
|
return err.Error()
|
|
}
|
|
defer file.Close()
|
|
content, err := ioutil.ReadAll(file)
|
|
if err != nil {
|
|
return err.Error()
|
|
}
|
|
|
|
return string(content)
|
|
}
|
|
|
|
func GetDeviceAllIP() []string {
|
|
var address []string
|
|
addrs, err := net.InterfaceAddrs()
|
|
if err != nil {
|
|
return address
|
|
}
|
|
for _, a := range addrs {
|
|
if ipNet, ok := a.(*net.IPNet); ok && !ipNet.IP.IsLoopback() {
|
|
if ipNet.IP.To16() != nil {
|
|
address = append(address, ipNet.IP.String())
|
|
}
|
|
}
|
|
}
|
|
return address
|
|
}
|
|
func NewSystemService(log loger.OLog) SystemService {
|
|
return &systemService{log: log}
|
|
}
|