Modify log help class

This commit is contained in:
a624669980@163.com 2022-06-06 14:59:05 +08:00
parent e172421b8c
commit dd3189ba70
55 changed files with 6003 additions and 19587 deletions

View File

@ -27,15 +27,24 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
### Changed ### Changed
- [Apps] Hide the display of non-essential environment variables in the application. - [Apps] Hide the display of non-essential environment variables in the application.([#196](https://github.com/IceWhaleTech/CasaOS/issues/196))
- [System] Network, disk, cpu, memory, etc. information is modified to be pushed via socket. - [System] Network, disk, cpu, memory, etc. information is modified to be pushed via socket.
- [System] Optimize opening speed.([#214](https://github.com/IceWhaleTech/CasaOS/issues/214)) - [System] Optimize opening speed.([#214](https://github.com/IceWhaleTech/CasaOS/issues/214))
- [Language] Update language pack [zarevskaya](https://github.com/zarevskaya) [patrickhilker](https://github.com/patrickhilker)
- [System] Interface path adjustment
### Removed
- [Files] Remove the online preview function of PDF files
### Fixed ### Fixed
- [System] Fixed the problem that sync data cannot submit the device ID ([#68](https://github.com/IceWhaleTech/CasaOS/issues/68)) - [System] Fixed the problem that sync data cannot submit the device ID ([#68](https://github.com/IceWhaleTech/CasaOS/issues/68))
- [Files] Fixed the code editor center alignment display problem.([#210](https://github.com/IceWhaleTech/CasaOS/issues/210)) - [Files] Fixed the code editor center alignment display problem.([#210](https://github.com/IceWhaleTech/CasaOS/issues/210))
- [Files] Fixed the problem of wrong name when downloading files.([#240](https://github.com/IceWhaleTech/CasaOS/issues/240)) - [Files] Fixed the problem of wrong name when downloading files.([#240](https://github.com/IceWhaleTech/CasaOS/issues/240))
- [System] Fixed the network display as a negative number problem.([#224](https://github.com/IceWhaleTech/CasaOS/issues/224)) - [System] Fixed the network display as a negative number problem.([#224](https://github.com/IceWhaleTech/CasaOS/issues/224))
- [System] Fixed the problem of wireless network card traffic display.([#222](https://github.com/IceWhaleTech/CasaOS/issues/222))
## [0.3.1.1] - 2022-05-17 ## [0.3.1.1] - 2022-05-17

2
go.mod
View File

@ -64,6 +64,7 @@ require (
github.com/tklauser/go-sysconf v0.3.6 // indirect github.com/tklauser/go-sysconf v0.3.6 // indirect
github.com/ugorji/go v1.2.6 // indirect github.com/ugorji/go v1.2.6 // indirect
go.opencensus.io v0.23.0 // indirect go.opencensus.io v0.23.0 // indirect
go.uber.org/zap v1.10.0
golang.org/x/crypto v0.0.0-20210817164053-32db794688a5 golang.org/x/crypto v0.0.0-20210817164053-32db794688a5
golang.org/x/mod v0.5.0 // indirect golang.org/x/mod v0.5.0 // indirect
golang.org/x/net v0.0.0-20211020060615-d418f374d309 // indirect golang.org/x/net v0.0.0-20211020060615-d418f374d309 // indirect
@ -77,6 +78,7 @@ require (
google.golang.org/grpc v1.41.0 // indirect google.golang.org/grpc v1.41.0 // indirect
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c // indirect gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c // indirect
gopkg.in/ini.v1 v1.62.0 // indirect gopkg.in/ini.v1 v1.62.0 // indirect
gopkg.in/natefinch/lumberjack.v2 v2.0.0
gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b // indirect gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b // indirect
gorm.io/driver/sqlite v1.2.6 gorm.io/driver/sqlite v1.2.6
gorm.io/gorm v1.22.5 gorm.io/gorm v1.22.5

5
go.sum
View File

@ -54,6 +54,7 @@ github.com/Azure/go-autorest/autorest/mocks v0.4.0/go.mod h1:LTp+uSrOhSkaKrUy935
github.com/Azure/go-autorest/autorest/mocks v0.4.1/go.mod h1:LTp+uSrOhSkaKrUy935gNZuuIPPVsHlr9DSOxSayd+k= github.com/Azure/go-autorest/autorest/mocks v0.4.1/go.mod h1:LTp+uSrOhSkaKrUy935gNZuuIPPVsHlr9DSOxSayd+k=
github.com/Azure/go-autorest/logger v0.2.0/go.mod h1:T9E3cAhj2VqvPOtCYAvby9aBXkZmbF5NWuPV8+WeEW8= github.com/Azure/go-autorest/logger v0.2.0/go.mod h1:T9E3cAhj2VqvPOtCYAvby9aBXkZmbF5NWuPV8+WeEW8=
github.com/Azure/go-autorest/tracing v0.6.0/go.mod h1:+vhtPC754Xsa23ID7GlGsrdKBpUA79WCAKPPZVC2DeU= github.com/Azure/go-autorest/tracing v0.6.0/go.mod h1:+vhtPC754Xsa23ID7GlGsrdKBpUA79WCAKPPZVC2DeU=
github.com/BurntSushi/toml v0.3.1 h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ=
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo=
github.com/Curtis-Milo/nat-type-identifier-go v0.0.0-20220215191915-18d42168c63d h1:62lEBImTxZ83pgzywgDNIrPPuQ+j4ep9QjqrWBn1hrU= github.com/Curtis-Milo/nat-type-identifier-go v0.0.0-20220215191915-18d42168c63d h1:62lEBImTxZ83pgzywgDNIrPPuQ+j4ep9QjqrWBn1hrU=
@ -952,8 +953,11 @@ go.opencensus.io v0.23.0 h1:gqCw0LfLxScz8irSi8exQc7fyQ0fKQU/qnC/X8+V/1M=
go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E= go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E=
go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI=
go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE=
go.uber.org/atomic v1.4.0 h1:cxzIVoETapQEqDhQu3QfnvXAV4AlzcvUCxkVUFw3+EU=
go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE=
go.uber.org/multierr v1.1.0 h1:HoEmRHQPVSqub6w2z2d2EOVs2fjyFRGyofhKuyDq0QI=
go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0=
go.uber.org/zap v1.10.0 h1:ORx85nbTijNz8ljznvCMR1ZBIPKFn3jQrag10X2AsuM=
go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q=
go4.org v0.0.0-20180809161055-417644f6feb5/go.mod h1:MkTOUMDaeVYJUOUsaDXIhWPZYa1yOyC1qaOBpL57BhE= go4.org v0.0.0-20180809161055-417644f6feb5/go.mod h1:MkTOUMDaeVYJUOUsaDXIhWPZYa1yOyC1qaOBpL57BhE=
golang.org/x/build v0.0.0-20190111050920-041ab4dc3f9d/go.mod h1:OWs+y06UdEOHN4y+MfF/py+xQ/tYqIWW03b70/CG9Rw= golang.org/x/build v0.0.0-20190111050920-041ab4dc3f9d/go.mod h1:OWs+y06UdEOHN4y+MfF/py+xQ/tYqIWW03b70/CG9Rw=
@ -1383,6 +1387,7 @@ gopkg.in/go-playground/validator.v8 v8.18.2/go.mod h1:RX2a/7Ha8BgOhfk7j780h4/u/R
gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw=
gopkg.in/ini.v1 v1.62.0 h1:duBzk771uxoUuOlyRLkHsygud9+5lrlGjdFBb4mSKDU= gopkg.in/ini.v1 v1.62.0 h1:duBzk771uxoUuOlyRLkHsygud9+5lrlGjdFBb4mSKDU=
gopkg.in/ini.v1 v1.62.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/ini.v1 v1.62.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=
gopkg.in/natefinch/lumberjack.v2 v2.0.0 h1:1Lc07Kr7qY4U2YPouBjpCLxpiyxIVoxqXgkXLknAOE8=
gopkg.in/natefinch/lumberjack.v2 v2.0.0/go.mod h1:l0ndWWf7gzL7RNwBG7wST/UCcT4T24xpD6X8LsfU/+k= gopkg.in/natefinch/lumberjack.v2 v2.0.0/go.mod h1:l0ndWWf7gzL7RNwBG7wST/UCcT4T24xpD6X8LsfU/+k=
gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo=
gopkg.in/square/go-jose.v2 v2.2.2/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI= gopkg.in/square/go-jose.v2 v2.2.2/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI=

View File

@ -12,7 +12,7 @@ import (
"github.com/IceWhaleTech/CasaOS/pkg/cache" "github.com/IceWhaleTech/CasaOS/pkg/cache"
"github.com/IceWhaleTech/CasaOS/pkg/config" "github.com/IceWhaleTech/CasaOS/pkg/config"
"github.com/IceWhaleTech/CasaOS/pkg/sqlite" "github.com/IceWhaleTech/CasaOS/pkg/sqlite"
loger2 "github.com/IceWhaleTech/CasaOS/pkg/utils/loger" "github.com/IceWhaleTech/CasaOS/pkg/utils/loger"
"github.com/IceWhaleTech/CasaOS/pkg/utils/port" "github.com/IceWhaleTech/CasaOS/pkg/utils/port"
"github.com/IceWhaleTech/CasaOS/route" "github.com/IceWhaleTech/CasaOS/route"
"github.com/IceWhaleTech/CasaOS/service" "github.com/IceWhaleTech/CasaOS/service"
@ -31,18 +31,18 @@ func init() {
flag.Parse() flag.Parse()
config.InitSetup(*configFlag) config.InitSetup(*configFlag)
config.UpdateSetup() config.UpdateSetup()
loger2.LogSetup() loger.LogInit()
if len(*dbFlag) == 0 { if len(*dbFlag) == 0 {
*dbFlag = config.AppInfo.ProjectPath + "/db" *dbFlag = config.AppInfo.ProjectPath + "/db"
} }
sqliteDB = sqlite.GetDb(*dbFlag) sqliteDB = sqlite.GetDb(*dbFlag)
//gredis.GetRedisConn(config.RedisInfo), //gredis.GetRedisConn(config.RedisInfo),
service.MyService = service.NewService(sqliteDB, loger2.NewOLoger()) service.MyService = service.NewService(sqliteDB)
service.Cache = cache.Init() service.Cache = cache.Init()
go service.UDPService() go service.UDPService()
fmt.Println("token", service.GetToken()) fmt.Println("t", service.GetToken())
service.UDPAddressMap = make(map[string]string) service.UDPAddressMap = make(map[string]string)
//go service.SocketConnect() //go service.SocketConnect()
service.CancelList = make(map[string]string) service.CancelList = make(map[string]string)
@ -69,7 +69,6 @@ func init() {
// @name Authorization // @name Authorization
// @BasePath /v1 // @BasePath /v1
func main() { func main() {
service.NotifyMsg = make(chan notify.Message, 10) service.NotifyMsg = make(chan notify.Message, 10)
if *showUserInfo { if *showUserInfo {
fmt.Println("CasaOS User Info") fmt.Println("CasaOS User Info")

View File

@ -2,7 +2,7 @@
* @Author: LinkLeong link@icewhale.com * @Author: LinkLeong link@icewhale.com
* @Date: 2022-05-26 14:21:57 * @Date: 2022-05-26 14:21:57
* @LastEditors: LinkLeong * @LastEditors: LinkLeong
* @LastEditTime: 2022-05-30 18:51:36 * @LastEditTime: 2022-06-02 11:14:15
* @FilePath: /CasaOS/model/notify/file.go * @FilePath: /CasaOS/model/notify/file.go
* @Description: * @Description:
* @Website: https://www.casaos.io * @Website: https://www.casaos.io
@ -18,4 +18,5 @@ type File struct {
TotalSize int64 `json:"total_size"` TotalSize int64 `json:"total_size"`
Id string `json:"id"` Id string `json:"id"`
To string `json:"to"` To string `json:"to"`
Type string `json:"type"`
} }

View File

@ -1,109 +1,92 @@
/*
* @Author: LinkLeong link@icewhale.com
* @Date: 2022-06-02 15:09:38
* @LastEditors: LinkLeong
* @LastEditTime: 2022-06-02 17:43:38
* @FilePath: /CasaOS/pkg/utils/loger/log.go
* @Description:
* @Website: https://www.casaos.io
* Copyright (c) 2022 by icewhale, All Rights Reserved.
*/
package loger package loger
import ( import (
"fmt" "fmt"
"log"
"os" "os"
"path"
"path/filepath" "path/filepath"
"runtime" "runtime"
"github.com/IceWhaleTech/CasaOS/pkg/config" "github.com/IceWhaleTech/CasaOS/pkg/config"
file2 "github.com/IceWhaleTech/CasaOS/pkg/utils/file" "go.uber.org/zap"
"go.uber.org/zap/zapcore"
"gopkg.in/natefinch/lumberjack.v2"
) )
//定义一个int的别名 var loggers *zap.Logger
type Level int
type OLog interface { func getFileLogWriter() (writeSyncer zapcore.WriteSyncer) {
Debug(v ...interface{}) // 使用 lumberjack 实现 log rotate
Info(v ...interface{}) lumberJackLogger := &lumberjack.Logger{
Warn(v ...interface{}) Filename: filepath.Join(config.AppInfo.LogSavePath, fmt.Sprintf("%s.%s",
Error(v ...interface{}) config.AppInfo.LogSaveName,
Fatal(v ...interface{}) config.AppInfo.LogFileExt,
Path() string )),
} MaxSize: 100,
MaxBackups: 60,
type oLog struct { MaxAge: 1,
} Compress: true,
var (
F *os.File
DefaultPrefix = ""
DefaultCallerDepth = 2
logger *log.Logger
logPrefix = ""
levelFlags = []string{"DEBUG", "INFO", "WARN", "ERROR", "FATAL"}
)
//iota在const关键字出现时将被重置为0(const内部的第一行之前)const中每新增一行常量声明将使iota计数一次(iota可理解为const语句块中的行索引)。
const (
DEBUG Level = iota
INFO
WARN
ERROR
FATAL
)
//日志初始化
func LogSetup() {
var err error
filePath := fmt.Sprintf("%s", config.AppInfo.LogSavePath)
fileName := fmt.Sprintf("%s.%s",
config.AppInfo.LogSaveName,
config.AppInfo.LogFileExt,
)
F, err = file2.MustOpen(fileName, filePath)
if err != nil {
log.Fatalf("logging.Setup err: %v", err)
} }
logger = log.New(F, DefaultPrefix, log.LstdFlags) return zapcore.AddSync(lumberJackLogger)
} }
func (o *oLog) Path() string {
filePath := fmt.Sprintf("%s", config.AppInfo.LogSavePath) func LogInit() {
fileName := fmt.Sprintf("%s.%s", encoderConfig := zap.NewProductionEncoderConfig()
config.AppInfo.LogSaveName, encoderConfig.EncodeTime = zapcore.EpochTimeEncoder
config.AppInfo.LogFileExt, encoder := zapcore.NewJSONEncoder(encoderConfig)
fileWriteSyncer := getFileLogWriter()
core := zapcore.NewTee(
zapcore.NewCore(encoder, zapcore.AddSync(os.Stdout), zapcore.DebugLevel),
zapcore.NewCore(encoder, fileWriteSyncer, zapcore.DebugLevel),
) )
return filePath + fileName loggers = zap.New(core)
}
func (o *oLog) Debug(v ...interface{}) {
setPrefix(DEBUG)
logger.Println(v)
} }
func (o *oLog) Info(v ...interface{}) { func Info(message string, fields ...zap.Field) {
setPrefix(INFO) callerFields := getCallerInfoForLog()
logger.Println(v) fields = append(fields, callerFields...)
loggers.Info(message, fields...)
} }
func (o *oLog) Warn(v ...interface{}) { func Debug(message string, fields ...zap.Field) {
setPrefix(WARN) callerFields := getCallerInfoForLog()
logger.Println(v) fields = append(fields, callerFields...)
loggers.Debug(message, fields...)
} }
func (o *oLog) Error(v ...interface{}) { func Error(message string, fields ...zap.Field) {
setPrefix(ERROR) callerFields := getCallerInfoForLog()
logger.Println(v) fields = append(fields, callerFields...)
loggers.Error(message, fields...)
} }
func (o *oLog) Fatal(v ...interface{}) { func Warn(message string, fields ...zap.Field) {
setPrefix(FATAL) callerFields := getCallerInfoForLog()
logger.Println(v) fields = append(fields, callerFields...)
loggers.Warn(message, fields...)
} }
func setPrefix(level Level) { func getCallerInfoForLog() (callerFields []zap.Field) {
_, file, line, ok := runtime.Caller(DefaultCallerDepth)
if ok { pc, file, line, ok := runtime.Caller(2) // 回溯两层,拿到写日志的调用方的函数信息
logPrefix = fmt.Sprintf("[%s][%s:%d]", levelFlags[level], filepath.Base(file), line) if !ok {
} else { return
logPrefix = fmt.Sprintf("[%s]", levelFlags[level])
} }
funcName := runtime.FuncForPC(pc).Name()
funcName = path.Base(funcName) //Base函数返回路径的最后一个元素只保留函数名
logger.SetPrefix(logPrefix) callerFields = append(callerFields, zap.String("func", funcName), zap.String("file", file), zap.Int("line", line))
} return
func NewOLoger() OLog {
return &oLog{}
} }

109
pkg/utils/loger/log_old.go Normal file
View File

@ -0,0 +1,109 @@
package loger
import (
"fmt"
"log"
"os"
"path/filepath"
"runtime"
"github.com/IceWhaleTech/CasaOS/pkg/config"
file2 "github.com/IceWhaleTech/CasaOS/pkg/utils/file"
)
//定义一个int的别名
type Level int
type OLog interface {
Debug(v ...interface{})
Info(v ...interface{})
Warn(v ...interface{})
Error(v ...interface{})
Fatal(v ...interface{})
Path() string
}
type oLog struct {
}
var (
F *os.File
DefaultPrefix = ""
DefaultCallerDepth = 2
logger *log.Logger
logPrefix = ""
levelFlags = []string{"DEBUG", "INFO", "WARN", "ERROR", "FATAL"}
)
//iota在const关键字出现时将被重置为0(const内部的第一行之前)const中每新增一行常量声明将使iota计数一次(iota可理解为const语句块中的行索引)。
const (
DEBUG Level = iota
INFO
WARN
ERROR
FATAL
)
//日志初始化
func LogSetupOld() {
var err error
filePath := fmt.Sprintf("%s", config.AppInfo.LogSavePath)
fileName := fmt.Sprintf("%s.%s",
config.AppInfo.LogSaveName,
config.AppInfo.LogFileExt,
)
F, err = file2.MustOpen(fileName, filePath)
if err != nil {
log.Fatalf("logging.Setup err: %v", err)
}
logger = log.New(F, DefaultPrefix, log.LstdFlags)
}
func (o *oLog) Path() string {
filePath := fmt.Sprintf("%s", config.AppInfo.LogSavePath)
fileName := fmt.Sprintf("%s.%s",
config.AppInfo.LogSaveName,
config.AppInfo.LogFileExt,
)
return filePath + fileName
}
func (o *oLog) Debug(v ...interface{}) {
setPrefix(DEBUG)
logger.Println(v)
}
func (o *oLog) Info(v ...interface{}) {
setPrefix(INFO)
logger.Println(v)
}
func (o *oLog) Warn(v ...interface{}) {
setPrefix(WARN)
logger.Println(v)
}
func (o *oLog) Error(v ...interface{}) {
setPrefix(ERROR)
logger.Println(v)
}
func (o *oLog) Fatal(v ...interface{}) {
setPrefix(FATAL)
logger.Println(v)
}
func setPrefix(level Level) {
_, file, line, ok := runtime.Caller(DefaultCallerDepth)
if ok {
logPrefix = fmt.Sprintf("[%s][%s:%d]", levelFlags[level], filepath.Base(file), line)
} else {
logPrefix = fmt.Sprintf("[%s]", levelFlags[level])
}
logger.SetPrefix(logPrefix)
}
func NewOLoger() OLog {
return &oLog{}
}

View File

@ -1,3 +1,13 @@
/*
* @Author: LinkLeong link@icewhale.com
* @Date: 2022-05-13 18:15:46
* @LastEditors: LinkLeong
* @LastEditTime: 2022-06-02 17:41:47
* @FilePath: /CasaOS/pkg/utils/version/version.go
* @Description:
* @Website: https://www.casaos.io
* Copyright (c) 2022 by icewhale, All Rights Reserved.
*/
package version package version
import ( import (
@ -32,31 +42,8 @@ func IsNeedUpdate() (bool, model.Version) {
b, _ := strconv.Atoi(v2[i]) b, _ := strconv.Atoi(v2[i])
if a > b { if a > b {
return true, version return true, version
} } else {
} return false, version
return false, version
}
func IsClientNeedUpdate() (bool, model.Version) {
var version model.Version
v := httper.OasisGet(config.ServerInfo.ServerApi + "/v1/sys/client/version")
data := gjson.Get(v, "data")
json2.Unmarshal([]byte(data.String()), &version)
v1 := strings.Split(version.Version, ".")
v2 := strings.Split(types.CURRENTVERSION, ".")
for len(v1) < len(v2) {
v1 = append(v1, "0")
}
for len(v2) < len(v1) {
v2 = append(v2, "0")
}
for i := 0; i < len(v1); i++ {
a, _ := strconv.Atoi(v1[i])
b, _ := strconv.Atoi(v2[i])
if a > b {
return true, version
} }
} }
return false, version return false, version

View File

@ -66,39 +66,6 @@ func InitRouter() *gin.Engine {
v1UserGroup.GET("/shareid", v1.GetUserShareID) v1UserGroup.GET("/shareid", v1.GetUserShareID)
} }
v1ZiMaGroup := v1Group.Group("/zima")
v1ZiMaGroup.Use()
{
//获取cpu信息
v1ZiMaGroup.GET("/getcpuinfo", v1.CupInfo)
//获取内存信息
v1ZiMaGroup.GET("/getmeminfo", v1.MemInfo)
//获取硬盘信息
v1ZiMaGroup.GET("/getdiskinfo", v1.DiskInfo)
//获取网络信息
v1ZiMaGroup.GET("/getnetinfo", v1.NetInfo)
//获取系统信息
v1ZiMaGroup.GET("/sysinfo", v1.SysInfo)
}
v1DDNSGroup := v1Group.Group("/ddns")
v1DDNSGroup.Use()
{
//获取ddns列表
v1DDNSGroup.GET("/getlist", v1.DDNSGetDomainList)
//测试连接性
v1DDNSGroup.GET("/ping/:api_host", v1.DDNSPing)
//获取ip
v1DDNSGroup.GET("/ip", v1.DDNSGetIP)
//设置ddns
v1DDNSGroup.POST("/set", v1.DDNSAddConfig)
//获取ddns
v1DDNSGroup.GET("/list", v1.DDNSConfigList)
//获取ddns
v1DDNSGroup.DELETE("/delete/:id", v1.DDNSDelete)
}
v1AppGroup := v1Group.Group("/app") v1AppGroup := v1Group.Group("/app")
v1AppGroup.Use() v1AppGroup.Use()
{ {
@ -130,8 +97,6 @@ func InitRouter() *gin.Engine {
v1AppGroup.POST("/install", v1.InstallApp) v1AppGroup.POST("/install", v1.InstallApp)
//卸载app //卸载app
v1AppGroup.DELETE("/uninstall/:id", v1.UnInstallApp) v1AppGroup.DELETE("/uninstall/:id", v1.UnInstallApp)
//获取安装进度
v1AppGroup.GET("/speed/:id", v1.GetInstallSpeed)
//获取进度 //获取进度
v1AppGroup.GET("/state/:id", v1.GetContainerState) v1AppGroup.GET("/state/:id", v1.GetContainerState)
//更新容器配置 //更新容器配置
@ -149,7 +114,6 @@ func InitRouter() *gin.Engine {
{ {
v1SysGroup.GET("/check", v1.CheckVersion) v1SysGroup.GET("/check", v1.CheckVersion)
v1SysGroup.GET("/hardware/info", v1.GetSystemHardwareInfo) v1SysGroup.GET("/hardware/info", v1.GetSystemHardwareInfo)
v1SysGroup.GET("/client/version", v1.GetClientVersion)
v1SysGroup.POST("/update", v1.SystemUpdate) v1SysGroup.POST("/update", v1.SystemUpdate)
v1SysGroup.GET("/wsssh", v1.WsSsh) v1SysGroup.GET("/wsssh", v1.WsSsh)
v1SysGroup.GET("/config", v1.GetSystemConfig) v1SysGroup.GET("/config", v1.GetSystemConfig)
@ -164,6 +128,10 @@ func InitRouter() *gin.Engine {
v1SysGroup.PUT("/usb/off", v1.PutSystemOffUSBAutoMount) v1SysGroup.PUT("/usb/off", v1.PutSystemOffUSBAutoMount)
v1SysGroup.PUT("/usb/on", v1.PutSystemOnUSBAutoMount) v1SysGroup.PUT("/usb/on", v1.PutSystemOnUSBAutoMount)
v1SysGroup.GET("/usb", v1.GetSystemUSBAutoMount) v1SysGroup.GET("/usb", v1.GetSystemUSBAutoMount)
v1SysGroup.GET("/cpu", v1.CupInfo)
v1SysGroup.GET("/mem", v1.MemInfo)
v1SysGroup.GET("/disk", v1.DiskInfo)
v1SysGroup.GET("/network", v1.NetInfo)
} }
v1FileGroup := v1Group.Group("/file") v1FileGroup := v1Group.Group("/file")
@ -233,16 +201,8 @@ func InitRouter() *gin.Engine {
v1TaskGroup.PUT("/update", v1.PutTaskUpdate) v1TaskGroup.PUT("/update", v1.PutTaskUpdate)
v1TaskGroup.POST("/add", v1.PostTaskAdd) v1TaskGroup.POST("/add", v1.PostTaskAdd)
v1TaskGroup.PUT("/completion/:id", v1.PutTaskMarkerCompletion) v1TaskGroup.PUT("/completion/:id", v1.PutTaskMarkerCompletion)
} }
// v1NotifyGroup := v1Group.Group("/notify")
// v1NotifyGroup.Use()
// {
// v1NotifyGroup.GET("/ws", v1.NotifyWS)
// v1NotifyGroup.PUT("/read/:id", v1.PutNotifyRead)
// }
v1PersonGroup := v1Group.Group("/person") v1PersonGroup := v1Group.Group("/person")
v1PersonGroup.Use() v1PersonGroup.Use()
{ {

View File

@ -791,20 +791,6 @@ func ContainerLog(c *gin.Context) {
c.JSON(http.StatusOK, model.Result{Success: oasis_err2.SUCCESS, Message: oasis_err2.GetMsg(oasis_err2.SUCCESS), Data: log}) c.JSON(http.StatusOK, model.Result{Success: oasis_err2.SUCCESS, Message: oasis_err2.GetMsg(oasis_err2.SUCCESS), Data: log})
} }
// @Summary 获取安装进度
// @Produce application/json
// @Accept application/json
// @Tags app
// @Param id path string true "容器id"
// @Security ApiKeyAuth
// @Success 200 {string} string "ok"
// @Router /app/speed/{id} [get]
func GetInstallSpeed(c *gin.Context) {
id := c.Param("id")
b := service.MyService.Notify().GetLog(id)
c.JSON(http.StatusOK, model.Result{Success: oasis_err2.SUCCESS, Message: oasis_err2.GetMsg(oasis_err2.SUCCESS), Data: b})
}
// @Summary 获取容器状态 // @Summary 获取容器状态
// @Produce application/json // @Produce application/json
// @Accept application/json // @Accept application/json

View File

@ -29,7 +29,7 @@ import (
// @Tags sys // @Tags sys
// @Security ApiKeyAuth // @Security ApiKeyAuth
// @Success 200 {string} string "ok" // @Success 200 {string} string "ok"
// @Router /sys/chackversion [get] // @Router /sys/check [get]
func CheckVersion(c *gin.Context) { func CheckVersion(c *gin.Context) {
need, version := version.IsNeedUpdate() need, version := version.IsNeedUpdate()
if need { if need {
@ -50,32 +50,6 @@ func CheckVersion(c *gin.Context) {
return return
} }
// @Summary check client version
// @Produce application/json
// @Accept application/json
// @Tags sys
// @Security ApiKeyAuth
// @Success 200 {string} string "ok"
// @Router /sys/client/version [get]
func GetClientVersion(c *gin.Context) {
need, version := version.IsClientNeedUpdate()
if need {
installLog := model2.AppNotify{}
installLog.State = 0
installLog.Message = "New version " + version.Version + " is ready, ready to upgrade"
installLog.Type = types.NOTIFY_TYPE_NEED_CONFIRM
installLog.CreatedAt = strconv.FormatInt(time.Now().Unix(), 10)
installLog.UpdatedAt = strconv.FormatInt(time.Now().Unix(), 10)
installLog.Name = "CasaOS System"
service.MyService.Notify().AddLog(installLog)
}
data := make(map[string]interface{}, 1)
data["is_need"] = need
data["version"] = version
data["current_version"] = types.CURRENTVERSION
c.JSON(http.StatusOK, model.Result{Success: oasis_err.SUCCESS, Message: oasis_err.GetMsg(oasis_err.SUCCESS), Data: data})
}
// @Summary 系统信息 // @Summary 系统信息
// @Produce application/json // @Produce application/json
// @Accept application/json // @Accept application/json

View File

@ -15,13 +15,14 @@ import (
"github.com/IceWhaleTech/CasaOS/model" "github.com/IceWhaleTech/CasaOS/model"
"github.com/IceWhaleTech/CasaOS/pkg/config" "github.com/IceWhaleTech/CasaOS/pkg/config"
"github.com/IceWhaleTech/CasaOS/pkg/utils/command" "github.com/IceWhaleTech/CasaOS/pkg/utils/command"
loger2 "github.com/IceWhaleTech/CasaOS/pkg/utils/loger" "github.com/IceWhaleTech/CasaOS/pkg/utils/loger"
model2 "github.com/IceWhaleTech/CasaOS/service/model" model2 "github.com/IceWhaleTech/CasaOS/service/model"
"github.com/docker/docker/api/types" "github.com/docker/docker/api/types"
"github.com/docker/docker/api/types/filters" "github.com/docker/docker/api/types/filters"
client2 "github.com/docker/docker/client" client2 "github.com/docker/docker/client"
"github.com/pkg/errors" "github.com/pkg/errors"
uuid "github.com/satori/go.uuid" uuid "github.com/satori/go.uuid"
"go.uber.org/zap"
"gorm.io/gorm" "gorm.io/gorm"
) )
@ -50,8 +51,7 @@ type AppService interface {
} }
type appStruct struct { type appStruct struct {
db *gorm.DB db *gorm.DB
log loger2.OLog
} }
func (a *appStruct) GetApplicationById(id string) (m model2.ApplicationModel) { func (a *appStruct) GetApplicationById(id string) (m model2.ApplicationModel) {
@ -159,10 +159,9 @@ func (a *appStruct) ImportApplications(casaApp bool) {
} }
func (a *appStruct) GetCasaOSCount() int { func (a *appStruct) GetCasaOSCount() int {
//获取docker应用
cli, err := client2.NewClientWithOpts(client2.FromEnv, client2.WithTimeout(time.Second*5)) cli, err := client2.NewClientWithOpts(client2.FromEnv, client2.WithTimeout(time.Second*5))
if err != nil { if err != nil {
a.log.Error("初始化client失败", "app.getmylist", "line:36", err) loger.Error("Failed to init client", zap.Any("err", err))
return 0 return 0
} }
defer cli.Close() defer cli.Close()
@ -172,7 +171,7 @@ func (a *appStruct) GetCasaOSCount() int {
containers, err := cli.ContainerList(context.Background(), types.ContainerListOptions{Filters: fts, Limit: 200}) containers, err := cli.ContainerList(context.Background(), types.ContainerListOptions{Filters: fts, Limit: 200})
if err != nil { if err != nil {
a.log.Error("获取docker容器失败", "app.getmylist", "line:42", err) loger.Error("failed to get container_list", zap.Any("err", err))
return 0 return 0
} }
@ -182,10 +181,9 @@ func (a *appStruct) GetCasaOSCount() int {
//获取我的应用列表 //获取我的应用列表
func (a *appStruct) GetMyList(index, size int, position bool) (*[]model2.MyAppList, *[]model2.MyAppList) { func (a *appStruct) GetMyList(index, size int, position bool) (*[]model2.MyAppList, *[]model2.MyAppList) {
//获取docker应用
cli, err := client2.NewClientWithOpts(client2.FromEnv, client2.WithTimeout(time.Second*5)) cli, err := client2.NewClientWithOpts(client2.FromEnv, client2.WithTimeout(time.Second*5))
if err != nil { if err != nil {
a.log.Error("初始化client失败", "app.getmylist", "line:36", err) loger.Error("Failed to init client", zap.Any("err", err))
} }
defer cli.Close() defer cli.Close()
// fts := filters.NewArgs() // fts := filters.NewArgs()
@ -194,7 +192,7 @@ func (a *appStruct) GetMyList(index, size int, position bool) (*[]model2.MyAppLi
//fts.Add("casaos", "casaos") //fts.Add("casaos", "casaos")
containers, err := cli.ContainerList(context.Background(), types.ContainerListOptions{All: true}) containers, err := cli.ContainerList(context.Background(), types.ContainerListOptions{All: true})
if err != nil { if err != nil {
a.log.Error("获取docker容器失败", "app.getmylist", "line:42", err) loger.Error("Failed to get container_list", zap.Any("err", err))
} }
//获取本地数据库应用 //获取本地数据库应用
@ -310,14 +308,14 @@ func (a *appStruct) GetSystemAppList() []types.Container {
//获取docker应用 //获取docker应用
cli, err := client2.NewClientWithOpts(client2.FromEnv) cli, err := client2.NewClientWithOpts(client2.FromEnv)
if err != nil { if err != nil {
a.log.Error("初始化client失败", "app.getmylist", "line:36", err) loger.Error("Failed to init client", zap.Any("err", err))
} }
defer cli.Close() defer cli.Close()
fts := filters.NewArgs() fts := filters.NewArgs()
fts.Add("label", "origin=system") fts.Add("label", "origin=system")
containers, err := cli.ContainerList(context.Background(), types.ContainerListOptions{All: true, Filters: fts}) containers, err := cli.ContainerList(context.Background(), types.ContainerListOptions{All: true, Filters: fts})
if err != nil { if err != nil {
a.log.Error("获取docker容器失败", "app.sys", "line:123", err) loger.Error("Failed to get container_list", zap.Any("err", err))
} }
//获取本地数据库应用 //获取本地数据库应用
@ -345,13 +343,13 @@ func (a *appStruct) GetContainerInfo(name string) (types.Container, error) {
//获取docker应用 //获取docker应用
cli, err := client2.NewClientWithOpts(client2.FromEnv) cli, err := client2.NewClientWithOpts(client2.FromEnv)
if err != nil { if err != nil {
a.log.Error("初始化client失败", "app.getmylist", "line:36", err) loger.Error("Failed to init client", zap.Any("err", err))
} }
filters := filters.NewArgs() filters := filters.NewArgs()
filters.Add("name", name) filters.Add("name", name)
containers, err := cli.ContainerList(context.Background(), types.ContainerListOptions{All: true, Filters: filters}) containers, err := cli.ContainerList(context.Background(), types.ContainerListOptions{All: true, Filters: filters})
if err != nil { if err != nil {
a.log.Error("获取docker容器失败", "app.getcontainerinfo", "line:182", err) loger.Error("Failed to get container_list", zap.Any("err", err))
} }
if len(containers) > 0 { if len(containers) > 0 {
@ -470,7 +468,7 @@ func (a *appStruct) GetHardwareUsageSteam() {
//fts.Add("casaos", "casaos") //fts.Add("casaos", "casaos")
containers, err := cli.ContainerList(context.Background(), types.ContainerListOptions{All: true, Filters: fts}) containers, err := cli.ContainerList(context.Background(), types.ContainerListOptions{All: true, Filters: fts})
if err != nil { if err != nil {
a.log.Error("获取docker容器失败", "app.getmylist", "line:42", err) loger.Error("Failed to get container_list", zap.Any("err", err))
} }
for i := 0; i < 100; i++ { for i := 0; i < 100; i++ {
if config.CasaOSGlobalVariables.AppChange { if config.CasaOSGlobalVariables.AppChange {
@ -517,6 +515,6 @@ func (a *appStruct) GetHardwareUsageSteam() {
cancel() cancel()
} }
func NewAppService(db *gorm.DB, logger loger2.OLog) AppService { func NewAppService(db *gorm.DB) AppService {
return &appStruct{db: db, log: logger} return &appStruct{db: db}
} }

View File

@ -11,10 +11,11 @@ import (
"github.com/IceWhaleTech/CasaOS/model" "github.com/IceWhaleTech/CasaOS/model"
"github.com/IceWhaleTech/CasaOS/pkg/config" "github.com/IceWhaleTech/CasaOS/pkg/config"
command2 "github.com/IceWhaleTech/CasaOS/pkg/utils/command" command2 "github.com/IceWhaleTech/CasaOS/pkg/utils/command"
loger2 "github.com/IceWhaleTech/CasaOS/pkg/utils/loger" "github.com/IceWhaleTech/CasaOS/pkg/utils/loger"
model2 "github.com/IceWhaleTech/CasaOS/service/model" model2 "github.com/IceWhaleTech/CasaOS/service/model"
"github.com/shirou/gopsutil/v3/disk" "github.com/shirou/gopsutil/v3/disk"
"github.com/tidwall/gjson" "github.com/tidwall/gjson"
"go.uber.org/zap"
"gorm.io/gorm" "gorm.io/gorm"
) )
@ -37,8 +38,7 @@ type DiskService interface {
RemoveLSBLKCache() RemoveLSBLKCache()
} }
type diskService struct { type diskService struct {
log loger2.OLog db *gorm.DB
db *gorm.DB
} }
func (d *diskService) RemoveLSBLKCache() { func (d *diskService) RemoveLSBLKCache() {
@ -58,13 +58,13 @@ func (d *diskService) SmartCTL(path string) model.SmartctlA {
var m model.SmartctlA var m model.SmartctlA
str := command2.ExecSmartCTLByPath(path) str := command2.ExecSmartCTLByPath(path)
if str == nil { if str == nil {
d.log.Error("smartctl exec error,smartctl") loger.Error("failed to exec shell ", zap.Any("err", "smartctl exec error"))
return m return m
} }
err := json2.Unmarshal([]byte(str), &m) err := json2.Unmarshal([]byte(str), &m)
if err != nil { if err != nil {
d.log.Error("json ummarshal error", err) loger.Error("Failed to unmarshal json", zap.Any("err", err))
} }
if !reflect.DeepEqual(m, model.SmartctlA{}) { if !reflect.DeepEqual(m, model.SmartctlA{}) {
Cache.Add(key, m, time.Second*10) Cache.Add(key, m, time.Second*10)
@ -133,47 +133,13 @@ func (d *diskService) LSBLK(isUseCache bool) []model.LSBLKModel {
str := command2.ExecLSBLK() str := command2.ExecLSBLK()
if str == nil { if str == nil {
d.log.Error("lsblk exec error,lsblk") loger.Error("Failed to exec shell", zap.Any("err", "lsblk exec error"))
return nil return nil
} }
var m []model.LSBLKModel var m []model.LSBLKModel
// strStr := `{
// "blockdevices": [
// {"name":"loop0", "kname":"loop0", "path":"/dev/loop0", "maj:min":"7:0", "fsavail":"0", "fssize":"62M", "fstype":"squashfs", "fsused":"62M", "fsuse%":"100%", "fsver":"4.0", "mountpoint":"/snap/core20/1405", "label":null, "uuid":null, "ptuuid":null, "pttype":null, "parttype":null, "parttypename":null, "partlabel":null, "partuuid":null, "partflags":null, "ra":128, "ro":true, "rm":false, "hotplug":false, "model":null, "serial":null, "size":619, "state":null, "owner":"root", "group":"disk", "mode":"brw-rw----", "alignment":0, "min-io":512, "opt-io":0, "phy-sec":512, "log-sec":512, "rota":false, "sched":"mq-deadline", "rq-size":256, "type":"loop", "disc-aln":0, "disc-gran":"4K", "disc-max":"4G", "disc-zero":false, "wsame":"0B", "wwn":null, "rand":false, "pkname":null, "hctl":null, "tran":null, "subsystems":"block", "rev":null, "vendor":null, "zoned":"none", "dax":false},
// {"name":"loop1", "kname":"loop1", "path":"/dev/loop1", "maj:min":"7:1", "fsavail":"0", "fssize":"55.6M", "fstype":"squashfs", "fsused":"55.6M", "fsuse%":"100%", "fsver":"4.0", "mountpoint":"/snap/core18/2344", "label":null, "uuid":null, "ptuuid":null, "pttype":null, "parttype":null, "parttypename":null, "partlabel":null, "partuuid":null, "partflags":null, "ra":128, "ro":true, "rm":false, "hotplug":false, "model":null, "serial":null, "size":55, "state":null, "owner":"root", "group":"disk", "mode":"brw-rw----", "alignment":0, "min-io":512, "opt-io":0, "phy-sec":512, "log-sec":512, "rota":false, "sched":"mq-deadline", "rq-size":256, "type":"loop", "disc-aln":0, "disc-gran":"4K", "disc-max":"4G", "disc-zero":false, "wsame":"0B", "wwn":null, "rand":false, "pkname":null, "hctl":null, "tran":null, "subsystems":"block", "rev":null, "vendor":null, "zoned":"none", "dax":false},
// {"name":"loop2", "kname":"loop2", "path":"/dev/loop2", "maj:min":"7:2", "fsavail":"0", "fssize":"44.8M", "fstype":"squashfs", "fsused":"44.8M", "fsuse%":"100%", "fsver":"4.0", "mountpoint":"/snap/snapd/15314", "label":null, "uuid":null, "ptuuid":null, "pttype":null, "parttype":null, "parttypename":null, "partlabel":null, "partuuid":null, "partflags":null, "ra":128, "ro":true, "rm":false, "hotplug":false, "model":null, "serial":null, "size":446, "state":null, "owner":"root", "group":"disk", "mode":"brw-rw----", "alignment":0, "min-io":512, "opt-io":0, "phy-sec":512, "log-sec":512, "rota":false, "sched":"mq-deadline", "rq-size":256, "type":"loop", "disc-aln":0, "disc-gran":"4K", "disc-max":"4G", "disc-zero":false, "wsame":"0B", "wwn":null, "rand":false, "pkname":null, "hctl":null, "tran":null, "subsystems":"block", "rev":null, "vendor":null, "zoned":"none", "dax":false},
// {"name":"loop3", "kname":"loop3", "path":"/dev/loop3", "maj:min":"7:3", "fsavail":"0", "fssize":"78.9M", "fstype":"squashfs", "fsused":"78.9M", "fsuse%":"100%", "fsver":"4.0", "mountpoint":"/snap/lxd/22754", "label":null, "uuid":null, "ptuuid":null, "pttype":null, "parttype":null, "parttypename":null, "partlabel":null, "partuuid":null, "partflags":null, "ra":128, "ro":true, "rm":false, "hotplug":false, "model":null, "serial":null, "size":788, "state":null, "owner":"root", "group":"disk", "mode":"brw-rw----", "alignment":0, "min-io":512, "opt-io":0, "phy-sec":512, "log-sec":512, "rota":false, "sched":"mq-deadline", "rq-size":256, "type":"loop", "disc-aln":0, "disc-gran":"4K", "disc-max":"4G", "disc-zero":false, "wsame":"0B", "wwn":null, "rand":false, "pkname":null, "hctl":null, "tran":null, "subsystems":"block", "rev":null, "vendor":null, "zoned":"none", "dax":false},
// {"name":"loop4", "kname":"loop4", "path":"/dev/loop4", "maj:min":"7:4", "fsavail":"0", "fssize":"43.8M", "fstype":"squashfs", "fsused":"43.8M", "fsuse%":"100%", "fsver":"4.0", "mountpoint":"/snap/snapd/15177", "label":null, "uuid":null, "ptuuid":null, "pttype":null, "parttype":null, "parttypename":null, "partlabel":null, "partuuid":null, "partflags":null, "ra":128, "ro":true, "rm":false, "hotplug":false, "model":null, "serial":null, "size":436, "state":null, "owner":"root", "group":"disk", "mode":"brw-rw----", "alignment":0, "min-io":512, "opt-io":0, "phy-sec":512, "log-sec":512, "rota":false, "sched":"mq-deadline", "rq-size":256, "type":"loop", "disc-aln":0, "disc-gran":"4K", "disc-max":"4G", "disc-zero":false, "wsame":"0B", "wwn":null, "rand":false, "pkname":null, "hctl":null, "tran":null, "subsystems":"block", "rev":null, "vendor":null, "zoned":"none", "dax":false},
// {"name":"loop5", "kname":"loop5", "path":"/dev/loop5", "maj:min":"7:5", "fsavail":"0", "fssize":"55.5M", "fstype":"squashfs", "fsused":"55.5M", "fsuse%":"100%", "fsver":"4.0", "mountpoint":"/snap/core18/1997", "label":null, "uuid":null, "ptuuid":null, "pttype":null, "parttype":null, "parttypename":null, "partlabel":null, "partuuid":null, "partflags":null, "ra":128, "ro":true, "rm":false, "hotplug":false, "model":null, "serial":null, "size":554, "state":null, "owner":"root", "group":"disk", "mode":"brw-rw----", "alignment":0, "min-io":512, "opt-io":0, "phy-sec":512, "log-sec":512, "rota":false, "sched":"mq-deadline", "rq-size":256, "type":"loop", "disc-aln":0, "disc-gran":"4K", "disc-max":"4G", "disc-zero":false, "wsame":"0B", "wwn":null, "rand":false, "pkname":null, "hctl":null, "tran":null, "subsystems":"block", "rev":null, "vendor":null, "zoned":"none", "dax":false},
// {"name":"loop6", "kname":"loop6", "path":"/dev/loop6", "maj:min":"7:6", "fsavail":"0", "fssize":"80M", "fstype":"squashfs", "fsused":"80M", "fsuse%":"100%", "fsver":"4.0", "mountpoint":"/snap/lxd/22826", "label":null, "uuid":null, "ptuuid":null, "pttype":null, "parttype":null, "parttypename":null, "partlabel":null, "partuuid":null, "partflags":null, "ra":128, "ro":true, "rm":false, "hotplug":false, "model":null, "serial":null, "size":799, "state":null, "owner":"root", "group":"disk", "mode":"brw-rw----", "alignment":0, "min-io":512, "opt-io":0, "phy-sec":512, "log-sec":512, "rota":false, "sched":"mq-deadline", "rq-size":256, "type":"loop", "disc-aln":0, "disc-gran":"4K", "disc-max":"4G", "disc-zero":false, "wsame":"0B", "wwn":null, "rand":false, "pkname":null, "hctl":null, "tran":null, "subsystems":"block", "rev":null, "vendor":null, "zoned":"none", "dax":false},
// {"name":"sda", "kname":"sda", "path":"/dev/sda", "maj:min":"8:0", "fsavail":null, "fssize":null, "fstype":null, "fsused":null, "fsuse%":null, "fsver":null, "mountpoint":null, "label":null, "uuid":null, "ptuuid":"1596101a-e20d-4296-96e2-0870efce554a", "pttype":"gpt", "parttype":null, "parttypename":null, "partlabel":null, "partuuid":null, "partflags":null, "ra":128, "ro":false, "rm":false, "hotplug":false, "model":"ST1000DM003-1ER1", "serial":"Z4YCS1B6", "size":9315, "state":"running", "owner":"root", "group":"disk", "mode":"brw-rw----", "alignment":0, "min-io":4096, "opt-io":0, "phy-sec":4096, "log-sec":512, "rota":true, "sched":"mq-deadline", "rq-size":64, "type":"disk", "disc-aln":0, "disc-gran":"0B", "disc-max":"0B", "disc-zero":false, "wsame":"0B", "wwn":"0x5000c50090db103a", "rand":true, "pkname":null, "hctl":"0:0:0:0", "tran":"sata", "subsystems":"block:scsi:pci", "rev":"CC61", "vendor":"ATA ", "zoned":"none", "dax":false,
// "children": [
// {"name":"sda1", "kname":"sda1", "path":"/dev/sda1", "maj:min":"8:1", "fsavail":null, "fssize":null, "fstype":null, "fsused":null, "fsuse%":null, "fsver":null, "mountpoint":null, "label":null, "uuid":null, "ptuuid":"1596101a-e20d-4296-96e2-0870efce554a", "pttype":"gpt", "parttype":null, "parttypename":null, "partlabel":null, "partuuid":null, "partflags":null, "ra":128, "ro":false, "rm":false, "hotplug":false, "model":null, "serial":null, "size":9315, "state":null, "owner":"root", "group":"disk", "mode":"brw-rw----", "alignment":3072, "min-io":4096, "opt-io":0, "phy-sec":4096, "log-sec":512, "rota":true, "sched":"mq-deadline", "rq-size":64, "type":"part", "disc-aln":0, "disc-gran":"0B", "disc-max":"0B", "disc-zero":false, "wsame":"0B", "wwn":"0x5000c50090db103a", "rand":true, "pkname":"sda", "hctl":null, "tran":null, "subsystems":"block:scsi:pci", "rev":null, "vendor":null, "zoned":"none", "dax":false}
// ]
// },
// {"name":"sdb", "kname":"sdb", "path":"/dev/sdb", "maj:min":"8:16", "fsavail":null, "fssize":null, "fstype":null, "fsused":null, "fsuse%":null, "fsver":null, "mountpoint":null, "label":null, "uuid":null, "ptuuid":"baed02d0-e92d-4a00-9609-f94f31271a0e", "pttype":"gpt", "parttype":null, "parttypename":null, "partlabel":null, "partuuid":null, "partflags":null, "ra":128, "ro":false, "rm":false, "hotplug":false, "model":"ST1000DM003-1ER1", "serial":"W4Y51MFH", "size":9315, "state":"running", "owner":"root", "group":"disk", "mode":"brw-rw----", "alignment":0, "min-io":4096, "opt-io":0, "phy-sec":4096, "log-sec":512, "rota":true, "sched":"mq-deadline", "rq-size":64, "type":"disk", "disc-aln":0, "disc-gran":"0B", "disc-max":"0B", "disc-zero":false, "wsame":"0B", "wwn":"0x5000c5008acd2f00", "rand":true, "pkname":null, "hctl":"1:0:0:0", "tran":"sata", "subsystems":"block:scsi:pci", "rev":"CC46", "vendor":"ATA ", "zoned":"none", "dax":false,
// "children": [
// {"name":"sdb1", "kname":"sdb1", "path":"/dev/sdb1", "maj:min":"8:17", "fsavail":null, "fssize":null, "fstype":"zfs_member", "fsused":null, "fsuse%":null, "fsver":"5000", "mountpoint":null, "label":null, "uuid":null, "ptuuid":"baed02d0-e92d-4a00-9609-f94f31271a0e", "pttype":"gpt", "parttype":"0fc63daf-8483-4772-8e79-3d69d8477de4", "parttypename":"Linux filesystem", "partlabel":"primary", "partuuid":"57880cc0-2695-41c3-bf14-7161693e5bff", "partflags":null, "ra":128, "ro":false, "rm":false, "hotplug":false, "model":null, "serial":null, "size":9315, "state":null, "owner":"root", "group":"disk", "mode":"brw-rw----", "alignment":3072, "min-io":4096, "opt-io":0, "phy-sec":4096, "log-sec":512, "rota":true, "sched":"mq-deadline", "rq-size":64, "type":"part", "disc-aln":0, "disc-gran":"0B", "disc-max":"0B", "disc-zero":false, "wsame":"0B", "wwn":"0x5000c5008acd2f00", "rand":true, "pkname":"sdb", "hctl":null, "tran":null, "subsystems":"block:scsi:pci", "rev":null, "vendor":null, "zoned":"none", "dax":false}
// ]
// },
// {"name":"nvme0n1", "kname":"nvme0n1", "path":"/dev/nvme0n1", "maj:min":"259:0", "fsavail":null, "fssize":null, "fstype":null, "fsused":null, "fsuse%":null, "fsver":null, "mountpoint":null, "label":null, "uuid":null, "ptuuid":"338abc31-a3d4-4af2-9342-b53268d9e5ac", "pttype":"gpt", "parttype":null, "parttypename":null, "partlabel":null, "partuuid":null, "partflags":null, "ra":128, "ro":false, "rm":false, "hotplug":false, "model":"LITEON CL1-8D128-HP", "serial":"UJDJA01PJDH3UI", "size":1192, "state":"live", "owner":"root", "group":"disk", "mode":"brw-rw----", "alignment":0, "min-io":512, "opt-io":0, "phy-sec":512, "log-sec":512, "rota":false, "sched":"none", "rq-size":255, "type":"disk", "disc-aln":0, "disc-gran":"512B", "disc-max":"2T", "disc-zero":false, "wsame":"0B", "wwn":"eui.0023035630392fe7", "rand":false, "pkname":null, "hctl":null, "tran":"nvme", "subsystems":"block:nvme:pci", "rev":null, "vendor":null, "zoned":"none", "dax":false,
// "children": [
// {"name":"nvme0n1p1", "kname":"nvme0n1p1", "path":"/dev/nvme0n1p1", "maj:min":"259:1", "fsavail":null, "fssize":null, "fstype":null, "fsused":null, "fsuse%":null, "fsver":null, "mountpoint":null, "label":null, "uuid":null, "ptuuid":"338abc31-a3d4-4af2-9342-b53268d9e5ac", "pttype":"gpt", "parttype":"21686148-6449-6e6f-744e-656564454649", "parttypename":"BIOS boot", "partlabel":null, "partuuid":"b2bac638-9468-449f-9669-79be44e3c80d", "partflags":null, "ra":128, "ro":false, "rm":false, "hotplug":false, "model":null, "serial":null, "size":1, "state":null, "owner":"root", "group":"disk", "mode":"brw-rw----", "alignment":0, "min-io":512, "opt-io":0, "phy-sec":512, "log-sec":512, "rota":false, "sched":"none", "rq-size":255, "type":"part", "disc-aln":0, "disc-gran":"512B", "disc-max":"2T", "disc-zero":false, "wsame":"0B", "wwn":"eui.0023035630392fe7", "rand":false, "pkname":"nvme0n1", "hctl":null, "tran":"nvme", "subsystems":"block:nvme:pci", "rev":null, "vendor":null, "zoned":"none", "dax":false},
// {"name":"nvme0n1p2", "kname":"nvme0n1p2", "path":"/dev/nvme0n1p2", "maj:min":"259:2", "fsavail":"1.2G", "fssize":"1.4G", "fstype":"ext4", "fsused":"131.5M", "fsuse%":"9%", "fsver":"1.0", "mountpoint":"/boot", "label":null, "uuid":"cd8164e9-bf7a-4684-8a3b-1d9f209b4930", "ptuuid":"338abc31-a3d4-4af2-9342-b53268d9e5ac", "pttype":"gpt", "parttype":"0fc63daf-8483-4772-8e79-3d69d8477de4", "parttypename":"Linux filesystem", "partlabel":null, "partuuid":"42ed9ed6-1221-4bea-901a-bc2f7b7cb9e1", "partflags":null, "ra":128, "ro":false, "rm":false, "hotplug":false, "model":null, "serial":null, "size":15, "state":null, "owner":"root", "group":"disk", "mode":"brw-rw----", "alignment":0, "min-io":512, "opt-io":0, "phy-sec":512, "log-sec":512, "rota":false, "sched":"none", "rq-size":255, "type":"part", "disc-aln":0, "disc-gran":"512B", "disc-max":"2T", "disc-zero":false, "wsame":"0B", "wwn":"eui.0023035630392fe7", "rand":false, "pkname":"nvme0n1", "hctl":null, "tran":"nvme", "subsystems":"block:nvme:pci", "rev":null, "vendor":null, "zoned":"none", "dax":false},
// {"name":"nvme0n1p3", "kname":"nvme0n1p3", "path":"/dev/nvme0n1p3", "maj:min":"259:3", "fsavail":null, "fssize":null, "fstype":"LVM2_member", "fsused":null, "fsuse%":null, "fsver":"LVM2 001", "mountpoint":null, "label":null, "uuid":"0G7ryL-p2Ks-i9HS-wvEO-lXHs-oyZX-1KIlZO", "ptuuid":"338abc31-a3d4-4af2-9342-b53268d9e5ac", "pttype":"gpt", "parttype":"0fc63daf-8483-4772-8e79-3d69d8477de4", "parttypename":"Linux filesystem", "partlabel":null, "partuuid":"f6ae2e8c-14ae-4d94-89f1-2c154e909843", "partflags":null, "ra":128, "ro":false, "rm":false, "hotplug":false, "model":null, "serial":null, "size":1177, "state":null, "owner":"root", "group":"disk", "mode":"brw-rw----", "alignment":0, "min-io":512, "opt-io":0, "phy-sec":512, "log-sec":512, "rota":false, "sched":"none", "rq-size":255, "type":"part", "disc-aln":0, "disc-gran":"512B", "disc-max":"2T", "disc-zero":false, "wsame":"0B", "wwn":"eui.0023035630392fe7", "rand":false, "pkname":"nvme0n1", "hctl":null, "tran":"nvme", "subsystems":"block:nvme:pci", "rev":null, "vendor":null, "zoned":"none", "dax":false,
// "children": [
// {"name":"ubuntu--vg-ubuntu--lv", "kname":"dm-0", "path":"/dev/mapper/ubuntu--vg-ubuntu--lv", "maj:min":"253:0", "fsavail":"78.6G", "fssize":"115.4G", "fstype":"ext4", "fsused":"30.9G", "fsuse%":"27%", "fsver":"1.0", "mountpoint":"/", "label":null, "uuid":"e8a9082f-3643-4820-a5e5-05817d7738c6", "ptuuid":null, "pttype":null, "parttype":null, "parttypename":null, "partlabel":null, "partuuid":null, "partflags":null, "ra":128, "ro":false, "rm":false, "hotplug":false, "model":null, "serial":null, "size":1177, "state":"running", "owner":"root", "group":"disk", "mode":"brw-rw----", "alignment":0, "min-io":512, "opt-io":0, "phy-sec":512, "log-sec":512, "rota":false, "sched":null, "rq-size":128, "type":"lvm", "disc-aln":0, "disc-gran":"512B", "disc-max":"2T", "disc-zero":false, "wsame":"0B", "wwn":null, "rand":false, "pkname":"nvme0n1p3", "hctl":null, "tran":null, "subsystems":"block", "rev":null, "vendor":null, "zoned":"none", "dax":false}
// ]
// }
// ]
// }
// ]
// }`
// fmt.Println(gjson.Get(strStr, "blockdevices").String())
err := json2.Unmarshal([]byte(gjson.Get(string(str), "blockdevices").String()), &m) err := json2.Unmarshal([]byte(gjson.Get(string(str), "blockdevices").String()), &m)
if err != nil { if err != nil {
fmt.Println(err) loger.Error("Failed to unmarshal json", zap.Any("err", err))
d.log.Error("json ummarshal error", err)
} }
var c []model.LSBLKModel var c []model.LSBLKModel
@ -206,7 +172,7 @@ func (d *diskService) LSBLK(isUseCache bool) []model.LSBLKModel {
if fsused > 0 { if fsused > 0 {
i.UsedPercent, err = strconv.ParseFloat(fmt.Sprintf("%.4f", float64(fsused)/float64(i.Size)), 64) i.UsedPercent, err = strconv.ParseFloat(fmt.Sprintf("%.4f", float64(fsused)/float64(i.Size)), 64)
if err != nil { if err != nil {
d.log.Fatal("diskservice_lsblk_fsused", err) loger.Error("Failed to parse float", zap.Any("err", err))
} }
} }
n = append(n, i) n = append(n, i)
@ -224,15 +190,14 @@ func (d *diskService) LSBLK(isUseCache bool) []model.LSBLKModel {
func (d *diskService) GetDiskInfo(path string) model.LSBLKModel { func (d *diskService) GetDiskInfo(path string) model.LSBLKModel {
str := command2.ExecLSBLKByPath(path) str := command2.ExecLSBLKByPath(path)
if str == nil { if str == nil {
d.log.Error("lsblk exec error,str") loger.Error("Failed to exec shell", zap.Any("err", "lsblk exec error"))
return model.LSBLKModel{} return model.LSBLKModel{}
} }
var ml []model.LSBLKModel var ml []model.LSBLKModel
err := json2.Unmarshal([]byte(gjson.Get(string(str), "blockdevices").String()), &ml) err := json2.Unmarshal([]byte(gjson.Get(string(str), "blockdevices").String()), &ml)
if err != nil { if err != nil {
d.log.Info(string(str)) loger.Error("Failed to unmarshal json", zap.Any("err", err))
d.log.Error("json ummarshal error", err)
return model.LSBLKModel{} return model.LSBLKModel{}
} }
@ -245,8 +210,7 @@ func (d *diskService) GetDiskInfo(path string) model.LSBLKModel {
chiArr := make(map[string]string) chiArr := make(map[string]string)
chiList := command2.ExecResultStrArray("source " + config.AppInfo.ProjectPath + "/shell/helper.sh ;GetPartitionSectors " + m.Path) chiList := command2.ExecResultStrArray("source " + config.AppInfo.ProjectPath + "/shell/helper.sh ;GetPartitionSectors " + m.Path)
if len(chiList) == 0 { if len(chiList) == 0 {
d.log.Error(m.Path, chiList) loger.Error("chiList length error", zap.Any("err", "chiList length error"))
d.log.Error("chiList length error")
} }
for i := 0; i < len(chiList); i++ { for i := 0; i < len(chiList); i++ {
tempArr := strings.Split(chiList[i], ",") tempArr := strings.Split(chiList[i], ",")
@ -265,7 +229,7 @@ func (d *diskService) GetDiskInfo(path string) model.LSBLKModel {
diskEndSector := command2.ExecResultStrArray("source " + config.AppInfo.ProjectPath + "/shell/helper.sh ;GetDiskSizeAndSectors " + m.Path) diskEndSector := command2.ExecResultStrArray("source " + config.AppInfo.ProjectPath + "/shell/helper.sh ;GetDiskSizeAndSectors " + m.Path)
if len(diskEndSector) < 2 { if len(diskEndSector) < 2 {
d.log.Error("diskEndSector length error") loger.Error("diskEndSector length error", zap.Any("err", "diskEndSector length error"))
} }
diskEndSectorInt, _ := strconv.ParseUint(diskEndSector[len(diskEndSector)-1], 10, 64) diskEndSectorInt, _ := strconv.ParseUint(diskEndSector[len(diskEndSector)-1], 10, 64)
if (diskEndSectorInt-maxSector)*m.MinIO/1024/1024 > 100 { if (diskEndSectorInt-maxSector)*m.MinIO/1024/1024 > 100 {
@ -309,6 +273,6 @@ func (d *diskService) GetSerialAll() []model2.SerialDisk {
return m return m
} }
func NewDiskService(log loger2.OLog, db *gorm.DB) DiskService { func NewDiskService(db *gorm.DB) DiskService {
return &diskService{log: log, db: db} return &diskService{db: db}
} }

View File

@ -15,13 +15,14 @@ import (
"github.com/containerd/containerd/namespaces" "github.com/containerd/containerd/namespaces"
"github.com/containerd/containerd/oci" "github.com/containerd/containerd/oci"
"github.com/pkg/errors" "github.com/pkg/errors"
"go.uber.org/zap"
"github.com/IceWhaleTech/CasaOS/model" "github.com/IceWhaleTech/CasaOS/model"
"github.com/IceWhaleTech/CasaOS/pkg/docker" "github.com/IceWhaleTech/CasaOS/pkg/docker"
command2 "github.com/IceWhaleTech/CasaOS/pkg/utils/command" command2 "github.com/IceWhaleTech/CasaOS/pkg/utils/command"
"github.com/IceWhaleTech/CasaOS/pkg/utils/env_helper" "github.com/IceWhaleTech/CasaOS/pkg/utils/env_helper"
"github.com/IceWhaleTech/CasaOS/pkg/utils/file" "github.com/IceWhaleTech/CasaOS/pkg/utils/file"
loger2 "github.com/IceWhaleTech/CasaOS/pkg/utils/loger" "github.com/IceWhaleTech/CasaOS/pkg/utils/loger"
//"github.com/containerd/containerd/oci" //"github.com/containerd/containerd/oci"
"io" "io"
@ -67,7 +68,6 @@ type DockerService interface {
type dockerService struct { type dockerService struct {
rootDir string rootDir string
log loger2.OLog
} }
func (ds *dockerService) DockerContainerList() []types.Container { func (ds *dockerService) DockerContainerList() []types.Container {
@ -482,7 +482,7 @@ func (ds *dockerService) DockerContainerCreate(imageName string, m model.Customi
//if len(result1) == 0 { //if len(result1) == 0 {
err = file.IsNotExistMkDir(path) err = file.IsNotExistMkDir(path)
if err != nil { if err != nil {
ds.log.Error("mkdir error", err) loger.Error("Failed to create a folder", zap.Any("err", err))
continue continue
} }
//} //}
@ -836,8 +836,8 @@ func (ds *dockerService) DockerNetworkModelList() []types.NetworkResource {
networks, _ := cli.NetworkList(context.Background(), types.NetworkListOptions{}) networks, _ := cli.NetworkList(context.Background(), types.NetworkListOptions{})
return networks return networks
} }
func NewDockerService(log loger2.OLog) DockerService { func NewDockerService() DockerService {
return &dockerService{rootDir: command2.ExecResultStr(`source ./shell/helper.sh ;GetDockerRootDir`), log: log} return &dockerService{rootDir: command2.ExecResultStr(`source ./shell/helper.sh ;GetDockerRootDir`)}
} }
// ---------------------------------------test------------------------------------ // ---------------------------------------test------------------------------------

View File

@ -59,6 +59,7 @@ func (i *notifyServer) SendFileOperateNotify() {
task.ProcessedSize = v.ProcessedSize task.ProcessedSize = v.ProcessedSize
task.TotalSize = v.TotalSize task.TotalSize = v.TotalSize
task.To = v.To task.To = v.To
task.Type = v.Type
if task.ProcessedSize == 0 { if task.ProcessedSize == 0 {
task.Status = "STARTING" task.Status = "STARTING"
} else { } else {

View File

@ -1,7 +1,16 @@
/*
* @Author: LinkLeong link@icewhale.com
* @Date: 2021-09-30 18:18:14
* @LastEditors: LinkLeong
* @LastEditTime: 2022-06-02 18:00:57
* @FilePath: /CasaOS/service/rely.go
* @Description:
* @Website: https://www.casaos.io
* Copyright (c) 2022 by icewhale, All Rights Reserved.
*/
package service package service
import ( import (
loger2 "github.com/IceWhaleTech/CasaOS/pkg/utils/loger"
model2 "github.com/IceWhaleTech/CasaOS/service/model" model2 "github.com/IceWhaleTech/CasaOS/service/model"
"gorm.io/gorm" "gorm.io/gorm"
) )
@ -13,8 +22,7 @@ type RelyService interface {
} }
type relyService struct { type relyService struct {
db *gorm.DB db *gorm.DB
log loger2.OLog
} }
func (r *relyService) Create(rely model2.RelyDBModel) { func (r *relyService) Create(rely model2.RelyDBModel) {
@ -35,6 +43,6 @@ func (r *relyService) Delete(id string) {
r.db.Where("custom_id = ?", id).Delete(&c) r.db.Where("custom_id = ?", id).Delete(&c)
} }
func NewRelyService(db *gorm.DB, log loger2.OLog) RelyService { func NewRelyService(db *gorm.DB) RelyService {
return &relyService{db: db, log: log} return &relyService{db: db}
} }

View File

@ -1,7 +1,6 @@
package service package service
import ( import (
loger2 "github.com/IceWhaleTech/CasaOS/pkg/utils/loger"
"github.com/gorilla/websocket" "github.com/gorilla/websocket"
"github.com/patrickmn/go-cache" "github.com/patrickmn/go-cache"
"gorm.io/gorm" "gorm.io/gorm"
@ -37,22 +36,21 @@ type Repository interface {
DownRecord() DownRecordService DownRecord() DownRecordService
} }
func NewService(db *gorm.DB, log loger2.OLog) Repository { func NewService(db *gorm.DB) Repository {
return &store{ return &store{
app: NewAppService(db, log), app: NewAppService(db),
ddns: NewDDNSService(db, log),
user: NewUserService(), user: NewUserService(),
docker: NewDockerService(log), docker: NewDockerService(),
//redis: NewRedisService(rp), //redis: NewRedisService(rp),
zima: NewZiMaService(), zima: NewZiMaService(),
casa: NewCasaService(), casa: NewCasaService(),
disk: NewDiskService(log, db), disk: NewDiskService(db),
notify: NewNotifyService(db), notify: NewNotifyService(db),
shareDirectory: NewShareDirService(db, log), shareDirectory: NewShareDirService(db),
task: NewTaskService(db, log), task: NewTaskService(db),
rely: NewRelyService(db, log), rely: NewRelyService(db),
system: NewSystemService(log), system: NewSystemService(),
shortcuts: NewShortcutsService(db), shortcuts: NewShortcutsService(db),
search: NewSearchService(), search: NewSearchService(),
person: NewPersonService(db), person: NewPersonService(db),

View File

@ -1,13 +1,15 @@
package service package service
import ( import (
"github.com/IceWhaleTech/CasaOS/pkg/config"
"github.com/IceWhaleTech/CasaOS/pkg/utils/command"
loger2 "github.com/IceWhaleTech/CasaOS/pkg/utils/loger"
"github.com/IceWhaleTech/CasaOS/service/model"
"gorm.io/gorm"
"os" "os"
"strconv" "strconv"
"github.com/IceWhaleTech/CasaOS/pkg/config"
"github.com/IceWhaleTech/CasaOS/pkg/utils/command"
"github.com/IceWhaleTech/CasaOS/pkg/utils/loger"
"github.com/IceWhaleTech/CasaOS/service/model"
"go.uber.org/zap"
"gorm.io/gorm"
) )
type ShareDirService interface { type ShareDirService interface {
@ -20,8 +22,7 @@ type ShareDirService interface {
} }
type shareDirService struct { type shareDirService struct {
db *gorm.DB db *gorm.DB
log loger2.OLog
} }
func (s *shareDirService) List(desc bool) []model.ShareDirDBModel { func (s *shareDirService) List(desc bool) []model.ShareDirDBModel {
@ -305,7 +306,7 @@ func (s *shareDirService) UpConfig() {
// /etc/samba/smb.conf // /etc/samba/smb.conf
f, err := os.OpenFile("/etc/samba/smb.conf", os.O_WRONLY|os.O_TRUNC|os.O_CREATE, 0644) f, err := os.OpenFile("/etc/samba/smb.conf", os.O_WRONLY|os.O_TRUNC|os.O_CREATE, 0644)
if err != nil { if err != nil {
s.log.Error("file create failed. err: " + err.Error()) loger.Error("Failed to create file", zap.Any("err", err))
} else { } else {
defer f.Close() defer f.Close()
f.WriteString(str) f.WriteString(str)
@ -318,6 +319,6 @@ func (s *shareDirService) Info(id string) model.ShareDirDBModel {
return m return m
} }
func NewShareDirService(db *gorm.DB, log loger2.OLog) ShareDirService { func NewShareDirService(db *gorm.DB) ShareDirService {
return &shareDirService{db: db, log: log} return &shareDirService{db: db}
} }

View File

@ -152,6 +152,6 @@ func GetDeviceAllIP() []string {
} }
return address return address
} }
func NewSystemService(log loger.OLog) SystemService { func NewSystemService() SystemService {
return &systemService{log: log} return &systemService{}
} }

View File

@ -6,7 +6,6 @@ import (
"github.com/IceWhaleTech/CasaOS/pkg/config" "github.com/IceWhaleTech/CasaOS/pkg/config"
httper2 "github.com/IceWhaleTech/CasaOS/pkg/utils/httper" httper2 "github.com/IceWhaleTech/CasaOS/pkg/utils/httper"
loger2 "github.com/IceWhaleTech/CasaOS/pkg/utils/loger"
"github.com/IceWhaleTech/CasaOS/service/model" "github.com/IceWhaleTech/CasaOS/service/model"
"github.com/IceWhaleTech/CasaOS/types" "github.com/IceWhaleTech/CasaOS/types"
"github.com/tidwall/gjson" "github.com/tidwall/gjson"
@ -24,8 +23,7 @@ type TaskService interface {
} }
type taskService struct { type taskService struct {
db *gorm.DB db *gorm.DB
log loger2.OLog
} }
func (s *taskService) List(desc bool) []model.TaskDBModel { func (s *taskService) List(desc bool) []model.TaskDBModel {
@ -141,6 +139,6 @@ func SyncTask(db *gorm.DB) {
} }
}(list) }(list)
} }
func NewTaskService(db *gorm.DB, log loger2.OLog) TaskService { func NewTaskService(db *gorm.DB) TaskService {
return &taskService{db: db, log: log} return &taskService{db: db}
} }

View File

@ -2,7 +2,7 @@
* @Author: LinkLeong link@icewhale.com * @Author: LinkLeong link@icewhale.com
* @Date: 2022-02-17 18:53:22 * @Date: 2022-02-17 18:53:22
* @LastEditors: LinkLeong * @LastEditors: LinkLeong
* @LastEditTime: 2022-06-01 18:05:37 * @LastEditTime: 2022-06-02 20:40:36
* @FilePath: /CasaOS/types/system.go * @FilePath: /CasaOS/types/system.go
* @Description: * @Description:
* @Website: https://www.casaos.io * @Website: https://www.casaos.io

1
web/css/10.0cf49524.css Normal file

File diff suppressed because one or more lines are too long

1
web/css/11.8c31370d.css Normal file
View File

@ -0,0 +1 @@
.animation{height:120px;width:120px}

9
web/css/16.4aea6393.css Normal file

File diff suppressed because one or more lines are too long

1
web/css/17.177dd094.css Normal file

File diff suppressed because one or more lines are too long

1
web/css/8.d8b7d85d.css Normal file
View File

@ -0,0 +1 @@
.search-bar input{-webkit-appearance:none;-moz-appearance:none;appearance:none;-webkit-backdrop-filter:blur(.875rem);backdrop-filter:blur(.875rem);background:hsla(0,0%,48%,.16);border:none;border-radius:8px;color:#fff;font-size:1.5rem;outline:none;transition:all .2s}.search-bar input:focus{border:none;box-shadow:none}.search-bar input::-moz-placeholder{color:#fff}.search-bar input:-ms-input-placeholder{color:#fff}.search-bar input::placeholder{color:#fff}.search-bar .ovh{overflow:hidden}.search-bar .ovh .icon.is-left{left:0;transition:all .2s}.search-bar .ovh .icon.is-right{color:#fff!important;right:-3rem!important;transition:all .2s}.search-bar .ovh input{padding-left:2.5em!important;padding-right:1em!important}.search-bar .fo .icon.is-left{left:-3rem!important}.search-bar .fo .icon.is-right{right:0!important;transition:all .2s}.search-bar .fo input{padding-left:1em!important;padding-right:2.5em!important}.clock{font-style:normal;font-weight:300;text-align:left}.clock .time{font-size:2.75rem;line-height:4.25rem;opacity:.9}.clock .data{line-height:1.5rem;opacity:.9}.disk .progress{border-radius:6px;height:12px}.disk .progress::-webkit-progress-bar{background:rgba(0,0,0,.56)}.disk .progress::-webkit-progress-value{opacity:.7}.wsettings .item{margin:1.25rem 0}.wsettings .circle-btn{-webkit-backdrop-filter:blur(24px);backdrop-filter:blur(24px);background:hsla(0,0%,48%,.16);color:#fff;font-size:1rem;height:2.25rem;padding-left:0!important;padding-right:0!important;width:2.25rem}.wsettings .circle-btn:active,.wsettings .circle-btn:hover{color:#fff;opacity:.8;outline:none}.wsettings .circle-btn:focus{border-color:#fff;color:#fff}.wsettings .circle-btn:focus:not(:active){box-shadow:none}.wsettings .dropdown-content{-webkit-backdrop-filter:blur(1rem);backdrop-filter:blur(1rem);background:rgba(0,0,0,.48);border-radius:.5rem;width:16rem}.wsettings .dropdown-content .dropdown-item{padding:1rem 1.5rem 0}.wsettings .dropdown-content .switch input[type=checkbox]+.check{background:transparent;border:1px solid #fff}.scroll-area{height:calc(100% - 4rem);margin:auto;position:relative}.ps--focus>.ps__rail-x,.ps--focus>.ps__rail-y,.ps--scrolling-x>.ps__rail-x,.ps--scrolling-y>.ps__rail-y,.ps:hover>.ps__rail-x,.ps:hover>.ps__rail-y{opacity:.6}.ps .ps__rail-x.ps--clicking,.ps .ps__rail-x:focus,.ps .ps__rail-x:hover,.ps .ps__rail-y.ps--clicking,.ps .ps__rail-y:focus,.ps .ps__rail-y:hover{background-color:transparent;opacity:.6}.ps__rail-x.ps--clicking .ps__thumb-x,.ps__rail-x:focus>.ps__thumb-x,.ps__rail-x:hover>.ps__thumb-x{height:6px}.ps__rail-y.ps--clicking .ps__thumb-y,.ps__rail-y:focus>.ps__thumb-y,.ps__rail-y:hover>.ps__thumb-y{width:6px}.animation{height:350px;width:350px}.info{color:#5a5a5a;font-size:.875rem}.port-item{position:relative}.port-item .icon{bottom:.825rem;position:absolute;right:-1.25rem}.port-item:not(:last-child){margin-bottom:.5rem}.port-item .field.is-expanded .label{font-weight:400;text-align:center}.uploader-btn{background:none;border:1px solid #666;border-radius:2px;color:#666;cursor:pointer;display:inline-block;font-size:100%;line-height:1.4;outline:none;padding:4px 8px;position:relative}.uploader-btn:hover{background-color:rgba(0,0,0,.08)}.uploader-drop{background-color:#f5f5f5;border:1px dashed #ccc;overflow:hidden;padding:10px;position:relative}.uploader-dragover{background-color:#f7f7f7;border-color:#999}.uploader-unsupport{z-index:10}.uploader-file,.uploader-unsupport{overflow:hidden;position:relative}.uploader-list{position:relative}.uploader-list>ul{list-style:none;margin:0;padding:0}.uploader{position:relative}

1
web/css/9.3618979a.css Normal file

File diff suppressed because one or more lines are too long

3
web/css/app.238e290c.css Normal file

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

View File

@ -20,7 +20,7 @@
<title> <title>
CasaOS CasaOS
</title> </title>
<link href="/ui/js/0.js" rel="prefetch"><link href="/ui/js/1.js" rel="prefetch"><link href="/ui/js/2.js" rel="prefetch"><link href="/ui/js/3.js" rel="prefetch"><link href="/ui/js/4.js" rel="prefetch"><link href="/ui/js/5.js" rel="prefetch"><link href="/ui/js/6.js" rel="prefetch"><link href="/ui/js/7.js" rel="prefetch"><link href="/ui/js/app.js" rel="preload" as="script"><link href="/ui/js/chunk-vendors.js" rel="preload" as="script"></head> <link href="/ui/css/10.0cf49524.css" rel="prefetch"><link href="/ui/css/11.8c31370d.css" rel="prefetch"><link href="/ui/css/16.4aea6393.css" rel="prefetch"><link href="/ui/css/17.177dd094.css" rel="prefetch"><link href="/ui/css/8.d8b7d85d.css" rel="prefetch"><link href="/ui/css/9.3618979a.css" rel="prefetch"><link href="/ui/js/0.js" rel="prefetch"><link href="/ui/js/1.js" rel="prefetch"><link href="/ui/js/10.js" rel="prefetch"><link href="/ui/js/11.js" rel="prefetch"><link href="/ui/js/12.js" rel="prefetch"><link href="/ui/js/13.js" rel="prefetch"><link href="/ui/js/14.js" rel="prefetch"><link href="/ui/js/15.js" rel="prefetch"><link href="/ui/js/16.js" rel="prefetch"><link href="/ui/js/17.js" rel="prefetch"><link href="/ui/js/18.js" rel="prefetch"><link href="/ui/js/2.js" rel="prefetch"><link href="/ui/js/3.js" rel="prefetch"><link href="/ui/js/4.js" rel="prefetch"><link href="/ui/js/5.js" rel="prefetch"><link href="/ui/js/6.js" rel="prefetch"><link href="/ui/js/7.js" rel="prefetch"><link href="/ui/js/8.js" rel="prefetch"><link href="/ui/js/9.js" rel="prefetch"><link href="/ui/css/app.238e290c.css" rel="preload" as="style"><link href="/ui/css/vendors~app.37ae7cca.css" rel="preload" as="style"><link href="/ui/js/app.js" rel="preload" as="script"><link href="/ui/js/vendors~app.js" rel="preload" as="script"><link href="/ui/css/vendors~app.37ae7cca.css" rel="stylesheet"><link href="/ui/css/app.238e290c.css" rel="stylesheet"></head>
<body> <body>
<noscript> <noscript>
@ -29,6 +29,6 @@
</noscript> </noscript>
<div id="app"></div> <div id="app"></div>
<!-- built files will be auto injected --> <!-- built files will be auto injected -->
<script type="text/javascript" src="/ui/js/chunk-vendors.js"></script><script type="text/javascript" src="/ui/js/app.js"></script></body> <script type="text/javascript" src="/ui/js/vendors~app.js"></script><script type="text/javascript" src="/ui/js/app.js"></script></body>
</html> </html>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

245
web/js/10.js Normal file

File diff suppressed because one or more lines are too long

45
web/js/11.js Normal file

File diff suppressed because one or more lines are too long

29
web/js/12.js Normal file

File diff suppressed because one or more lines are too long

21
web/js/13.js Normal file

File diff suppressed because one or more lines are too long

21
web/js/14.js Normal file

File diff suppressed because one or more lines are too long

21
web/js/15.js Normal file

File diff suppressed because one or more lines are too long

13
web/js/16.js Normal file

File diff suppressed because one or more lines are too long

5
web/js/17.js Normal file
View File

@ -0,0 +1,5 @@
(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([[17],{"./node_modules/vue-plyr/dist/vue-plyr.css":
/*!*************************************************!*\
!*** ./node_modules/vue-plyr/dist/vue-plyr.css ***!
\*************************************************/
/*! no static exports found */function(module,exports,__webpack_require__){eval("// extracted by mini-css-extract-plugin\n if(false) { var cssReload; }\n \n\n//# sourceURL=webpack:///./node_modules/vue-plyr/dist/vue-plyr.css?")}}]);

5
web/js/18.js Normal file

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

1457
web/js/8.js Normal file

File diff suppressed because one or more lines are too long

677
web/js/9.js Normal file

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

2337
web/js/vendors~app.js Normal file

File diff suppressed because one or more lines are too long

View File

@ -1,17 +1,6 @@
/*
* @Author: Jerryk jerry@icewhale.org
* @Date: 2022-02-18 10:20:10
* @LastEditors: Jerryk jerry@icewhale.org
* @LastEditTime: 2022-05-16 14:56:14
* @FilePath: \CasaOS-UI\public\static.go
* @Description:
*
* Copyright (c) 2022 by IceWhale, All Rights Reserved.
*/
package web package web
import "embed" import "embed"
//go:embed index.html favicon.svg browserconfig.xml site.webmanifest robots.txt img js fonts *.worker.js //go:embed index.html favicon.svg browserconfig.xml site.webmanifest robots.txt img js fonts css
var Static embed.FS var Static embed.FS