mirror of
https://github.com/0xJacky/nginx-ui.git
synced 2025-05-10 18:05:48 +02:00
refactor: use zap as logger ⚡
This commit is contained in:
parent
2831208de3
commit
f305701b30
34 changed files with 327 additions and 175 deletions
|
@ -15,7 +15,7 @@ full_bin = "APP_ENV=dev APP_USER=air ./tmp/main"
|
|||
# Watch these filename extensions.
|
||||
include_ext = ["go", "tpl", "tmpl", "html", "conf", "ini", "toml"]
|
||||
# Ignore these filename extensions or directories.
|
||||
exclude_dir = ["assets", "tmp", "vendor", "frontend/node_modules", "upload"]
|
||||
exclude_dir = ["assets", "tmp", "vendor", "frontend/node_modules", "upload", "docs", "resources"]
|
||||
# Watch these directories if you specified.
|
||||
include_dir = []
|
||||
# Exclude files.
|
||||
|
|
|
@ -189,7 +189,7 @@ const selectedRowKeys = ref([])
|
|||
</template>
|
||||
|
||||
<style lang="less" scoped>
|
||||
.before-edit {
|
||||
margin-bottom: 20px;
|
||||
.before-edit:last-child {
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
</style>
|
||||
|
|
|
@ -31,5 +31,6 @@ export const msg = [
|
|||
$gettext('Perform core upgrade error'),
|
||||
$gettext('Upgraded successfully'),
|
||||
|
||||
$gettext('File exists')
|
||||
$gettext('File exists'),
|
||||
$gettext('Requested with wrong parameters')
|
||||
]
|
||||
|
|
|
@ -1054,6 +1054,10 @@ msgstr ""
|
|||
msgid "Reloading nginx"
|
||||
msgstr ""
|
||||
|
||||
#: src/language/constants.ts:35
|
||||
msgid "Requested with wrong parameters"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/StdDataDisplay/StdTable.vue:10
|
||||
#: src/components/StdDataDisplay/StdTable.vue:15
|
||||
#: src/components/StdDataDisplay/StdTable.vue:9
|
||||
|
|
|
@ -1089,6 +1089,10 @@ msgstr ""
|
|||
msgid "Reloading nginx"
|
||||
msgstr ""
|
||||
|
||||
#: src/language/constants.ts:35
|
||||
msgid "Requested with wrong parameters"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/StdDataDisplay/StdTable.vue:10
|
||||
#: src/components/StdDataDisplay/StdTable.vue:15
|
||||
#: src/components/StdDataDisplay/StdTable.vue:9
|
||||
|
|
File diff suppressed because one or more lines are too long
Binary file not shown.
|
@ -1030,6 +1030,10 @@ msgstr "重载中"
|
|||
msgid "Reloading nginx"
|
||||
msgstr "正在重载 Nginx"
|
||||
|
||||
#: src/language/constants.ts:35
|
||||
msgid "Requested with wrong parameters"
|
||||
msgstr "请求参数错误"
|
||||
|
||||
#: src/components/StdDataDisplay/StdTable.vue:10
|
||||
#: src/components/StdDataDisplay/StdTable.vue:15
|
||||
#: src/components/StdDataDisplay/StdTable.vue:9
|
||||
|
|
|
@ -1031,6 +1031,10 @@ msgstr "换弹中"
|
|||
msgid "Reloading nginx"
|
||||
msgstr "重载 Nginx"
|
||||
|
||||
#: src/language/constants.ts:35
|
||||
msgid "Requested with wrong parameters"
|
||||
msgstr ""
|
||||
|
||||
#: src/components/StdDataDisplay/StdTable.vue:10
|
||||
#: src/components/StdDataDisplay/StdTable.vue:15
|
||||
#: src/components/StdDataDisplay/StdTable.vue:9
|
||||
|
|
5
go.mod
5
go.mod
|
@ -6,6 +6,7 @@ require (
|
|||
github.com/BurntSushi/toml v1.2.1
|
||||
github.com/creack/pty v1.1.18
|
||||
github.com/dustin/go-humanize v1.0.1
|
||||
github.com/fatih/color v1.13.0
|
||||
github.com/gin-contrib/static v0.0.1
|
||||
github.com/gin-gonic/gin v1.9.0
|
||||
github.com/go-acme/lego/v4 v4.10.2
|
||||
|
@ -25,6 +26,7 @@ require (
|
|||
github.com/spf13/cast v1.5.0
|
||||
github.com/tufanbarisyildirim/gonginx v0.0.0-20230325082000-26dcb15a9df4
|
||||
github.com/unknwon/com v1.0.1
|
||||
go.uber.org/zap v1.24.0
|
||||
golang.org/x/crypto v0.8.0
|
||||
gopkg.in/ini.v1 v1.67.0
|
||||
gorm.io/driver/sqlite v1.5.0
|
||||
|
@ -107,6 +109,7 @@ require (
|
|||
github.com/liquidweb/liquidweb-cli v0.6.10 // indirect
|
||||
github.com/liquidweb/liquidweb-go v1.6.3 // indirect
|
||||
github.com/lufia/plan9stats v0.0.0-20230326075908-cb1d2100619a // indirect
|
||||
github.com/mattn/go-colorable v0.1.13 // indirect
|
||||
github.com/mattn/go-isatty v0.0.18 // indirect
|
||||
github.com/mattn/go-sqlite3 v1.14.16 // indirect
|
||||
github.com/miekg/dns v1.1.53 // indirect
|
||||
|
@ -158,6 +161,8 @@ require (
|
|||
github.com/yandex-cloud/go-sdk v0.0.0-20230403093608-cc5174142a48 // indirect
|
||||
github.com/yusufpapurcu/wmi v1.2.2 // indirect
|
||||
go.opencensus.io v0.24.0 // indirect
|
||||
go.uber.org/atomic v1.11.0 // indirect
|
||||
go.uber.org/multierr v1.11.0 // indirect
|
||||
go.uber.org/ratelimit v0.2.0 // indirect
|
||||
golang.org/x/arch v0.3.0 // indirect
|
||||
golang.org/x/mod v0.10.0 // indirect
|
||||
|
|
15
go.sum
15
go.sum
|
@ -72,6 +72,7 @@ github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmV
|
|||
github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8=
|
||||
github.com/aws/aws-sdk-go v1.44.242 h1:bb6Rqd7dxh1gTUoVXLJTNC2c+zNaHpLRlNKk0kGN3fc=
|
||||
github.com/aws/aws-sdk-go v1.44.242/go.mod h1:aVsgQcEevwlmQ7qHE9I3h+dtQgpqhFB+i8Phjh7fkwI=
|
||||
github.com/benbjohnson/clock v1.1.0 h1:Q92kusRqC1XV2MjkWETPvjJVqKetz1OzxZB7mHJLju8=
|
||||
github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q=
|
||||
github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8=
|
||||
github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw=
|
||||
|
@ -144,6 +145,7 @@ github.com/exoscale/egoscale v0.90.0 h1:DZBXVU3iHqu5Ju5lQ5jWVlPo0IpI98SUo8Aa1UQV
|
|||
github.com/exoscale/egoscale v0.90.0/go.mod h1:wyXE5zrnFynMXA0jMhwQqSe24CfUhmBk2WI5wFZcq6Y=
|
||||
github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4=
|
||||
github.com/fatih/color v1.13.0 h1:8LOYc1KYPPmyKMuN8QV2DNRWNbLo6LZ0iLs8+mlH53w=
|
||||
github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk=
|
||||
github.com/fatih/structs v1.1.0 h1:Q7juDM0QtcnhCpeyLGQKyg4TOIghuNXrkL32pHAUMxo=
|
||||
github.com/fatih/structs v1.1.0/go.mod h1:9NiDSp5zOcgEDl+j00MP/WkGVPOlPRLejGD8Ga6PJ7M=
|
||||
github.com/frankban/quicktest v1.14.3 h1:FJKSZTDHjyhriyC81FLQ0LY93eSai0ZyR/ZIkd3ZUKE=
|
||||
|
@ -407,11 +409,15 @@ github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaO
|
|||
github.com/mattn/go-colorable v0.1.4/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE=
|
||||
github.com/mattn/go-colorable v0.1.7/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc=
|
||||
github.com/mattn/go-colorable v0.1.8/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc=
|
||||
github.com/mattn/go-colorable v0.1.9/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc=
|
||||
github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA=
|
||||
github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg=
|
||||
github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4=
|
||||
github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s=
|
||||
github.com/mattn/go-isatty v0.0.10/go.mod h1:qgIWMr58cqv1PHHyhnkY9lrL7etaEgOFcMEpPG5Rm84=
|
||||
github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU=
|
||||
github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94=
|
||||
github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM=
|
||||
github.com/mattn/go-isatty v0.0.18 h1:DOKFKCQ7FNG2L1rbrmstDN4QVRdS89Nkh85u68Uwp98=
|
||||
github.com/mattn/go-isatty v0.0.18/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
|
||||
github.com/mattn/go-runewidth v0.0.6/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI=
|
||||
|
@ -661,12 +667,18 @@ go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo=
|
|||
go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI=
|
||||
go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE=
|
||||
go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc=
|
||||
go.uber.org/atomic v1.9.0 h1:ECmE8Bn/WFTYwEW/bpKD3M8VtR/zQVbavAoalC1PYyE=
|
||||
go.uber.org/atomic v1.9.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc=
|
||||
go.uber.org/atomic v1.11.0 h1:ZvwS0R+56ePWxUNi+Atn9dWONBPp/AUETXlHW0DxSjE=
|
||||
go.uber.org/atomic v1.11.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0=
|
||||
go.uber.org/goleak v1.2.1 h1:NBol2c7O1ZokfZ0LEU9K6Whx/KnwvepVetCUhtKja4A=
|
||||
go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0=
|
||||
go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0=
|
||||
go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y=
|
||||
go.uber.org/ratelimit v0.2.0 h1:UQE2Bgi7p2B85uP5dC2bbRtig0C+OeNRnNEafLjsLPA=
|
||||
go.uber.org/ratelimit v0.2.0/go.mod h1:YYBV4e4naJvhpitQrWJu1vCpgB7CboMe0qhltKt6mUg=
|
||||
go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q=
|
||||
go.uber.org/zap v1.24.0 h1:FiJd5l1UOLj0wCgbSE0rwwXHzEdAZS6hiiSnxJN/D60=
|
||||
go.uber.org/zap v1.24.0/go.mod h1:2kMP+WWQ8aoFoedH3T2sq6iJ2yDWpHbP0f6MQbS9Gkg=
|
||||
golang.org/x/arch v0.0.0-20210923205945-b76863e36670/go.mod h1:5om86z9Hs0C8fWVUuoMHwpExlXzs5Tkyp9hOrfG7pp8=
|
||||
golang.org/x/arch v0.3.0 h1:02VY4/ZcO/gBOH6PUaoiptASxtXU10jazRCP865E97k=
|
||||
golang.org/x/arch v0.3.0/go.mod h1:5om86z9Hs0C8fWVUuoMHwpExlXzs5Tkyp9hOrfG7pp8=
|
||||
|
@ -805,6 +817,7 @@ golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBc
|
|||
golang.org/x/sys v0.0.0-20220704084225-05e143d24a9e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.0.0-20220908164124-27713097b956/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
|
|
27
logger/color.go
Normal file
27
logger/color.go
Normal file
|
@ -0,0 +1,27 @@
|
|||
package logger
|
||||
|
||||
import (
|
||||
"github.com/fatih/color"
|
||||
"go.uber.org/zap/zapcore"
|
||||
)
|
||||
|
||||
func colorLevelEncoder(l zapcore.Level, enc zapcore.PrimitiveArrayEncoder) {
|
||||
colorLevel := color.New()
|
||||
|
||||
switch l {
|
||||
case zapcore.DebugLevel:
|
||||
colorLevel.Add(color.FgCyan)
|
||||
case zapcore.InfoLevel:
|
||||
colorLevel.Add(color.FgGreen)
|
||||
case zapcore.WarnLevel:
|
||||
colorLevel.Add(color.FgYellow)
|
||||
case zapcore.ErrorLevel, zapcore.DPanicLevel:
|
||||
colorLevel.Add(color.FgHiRed)
|
||||
case zapcore.PanicLevel, zapcore.FatalLevel:
|
||||
colorLevel.Add(color.FgRed)
|
||||
default:
|
||||
colorLevel.Add(color.Reset)
|
||||
}
|
||||
|
||||
enc.AppendString(colorLevel.Sprint(l.CapitalString()))
|
||||
}
|
86
logger/logger.go
Normal file
86
logger/logger.go
Normal file
|
@ -0,0 +1,86 @@
|
|||
package logger
|
||||
|
||||
import (
|
||||
"go.uber.org/zap"
|
||||
"go.uber.org/zap/zapcore"
|
||||
"os"
|
||||
)
|
||||
|
||||
var logger *zap.SugaredLogger
|
||||
|
||||
func init() {
|
||||
// First, define our level-handling logic.
|
||||
highPriority := zap.LevelEnablerFunc(func(lvl zapcore.Level) bool {
|
||||
return lvl >= zapcore.ErrorLevel
|
||||
})
|
||||
lowPriority := zap.LevelEnablerFunc(func(lvl zapcore.Level) bool {
|
||||
return lvl < zapcore.ErrorLevel
|
||||
})
|
||||
|
||||
// Directly output to stdout and stderr, and add caller information.
|
||||
consoleDebugging := zapcore.Lock(os.Stdout)
|
||||
consoleErrors := zapcore.Lock(os.Stderr)
|
||||
encoderConfig := zap.NewDevelopmentEncoderConfig()
|
||||
encoderConfig.EncodeTime = zapcore.TimeEncoderOfLayout("2006-01-02 15:04:05")
|
||||
encoderConfig.ConsoleSeparator = " "
|
||||
encoderConfig.EncodeLevel = colorLevelEncoder
|
||||
consoleEncoder := zapcore.NewConsoleEncoder(encoderConfig)
|
||||
|
||||
// Join the outputs, encoders, and level-handling functions into
|
||||
// zapcore.Cores, then tee the two cores together.
|
||||
core := zapcore.NewTee(
|
||||
zapcore.NewCore(consoleEncoder, consoleErrors, highPriority),
|
||||
zapcore.NewCore(consoleEncoder, consoleDebugging, lowPriority),
|
||||
)
|
||||
|
||||
// From a zapcore.Core, it's easy to construct a Logger.
|
||||
logger = zap.New(core, zap.AddCaller()).WithOptions(zap.AddCallerSkip(1)).Sugar()
|
||||
}
|
||||
|
||||
func Sync() {
|
||||
_ = logger.Sync()
|
||||
}
|
||||
|
||||
func GetLogger() *zap.SugaredLogger {
|
||||
return logger
|
||||
}
|
||||
|
||||
func Info(args ...interface{}) {
|
||||
logger.Infoln(args...)
|
||||
}
|
||||
|
||||
func Error(args ...interface{}) {
|
||||
logger.Errorln(args...)
|
||||
}
|
||||
|
||||
func Fatal(args ...interface{}) {
|
||||
logger.Fatalln(args...)
|
||||
}
|
||||
|
||||
func Warn(args ...interface{}) {
|
||||
logger.Warnln(args...)
|
||||
}
|
||||
|
||||
func Debug(args ...interface{}) {
|
||||
logger.Debugln(args...)
|
||||
}
|
||||
|
||||
func Infof(format string, args ...interface{}) {
|
||||
logger.Infof(format, args...)
|
||||
}
|
||||
|
||||
func Errorf(format string, args ...interface{}) {
|
||||
logger.Errorf(format, args...)
|
||||
}
|
||||
|
||||
func Fatalf(format string, args ...interface{}) {
|
||||
logger.Fatalf(format, args...)
|
||||
}
|
||||
|
||||
func Warnf(format string, args ...interface{}) {
|
||||
logger.Warnf(format, args...)
|
||||
}
|
||||
|
||||
func Debugf(format string, args ...interface{}) {
|
||||
logger.Debugf(format, args...)
|
||||
}
|
51
main.go
51
main.go
|
@ -1,36 +1,39 @@
|
|||
package main
|
||||
|
||||
import (
|
||||
"flag"
|
||||
"fmt"
|
||||
"github.com/0xJacky/Nginx-UI/server"
|
||||
"github.com/0xJacky/Nginx-UI/server/service"
|
||||
"github.com/0xJacky/Nginx-UI/server/settings"
|
||||
"github.com/gin-gonic/gin"
|
||||
"github.com/jpillora/overseer"
|
||||
"github.com/jpillora/overseer/fetcher"
|
||||
"log"
|
||||
"flag"
|
||||
"fmt"
|
||||
"github.com/0xJacky/Nginx-UI/logger"
|
||||
"github.com/0xJacky/Nginx-UI/server"
|
||||
"github.com/0xJacky/Nginx-UI/server/service"
|
||||
"github.com/0xJacky/Nginx-UI/server/settings"
|
||||
"github.com/gin-gonic/gin"
|
||||
"github.com/jpillora/overseer"
|
||||
"github.com/jpillora/overseer/fetcher"
|
||||
"log"
|
||||
)
|
||||
|
||||
func main() {
|
||||
var confPath string
|
||||
flag.StringVar(&confPath, "config", "app.ini", "Specify the configuration file")
|
||||
flag.Parse()
|
||||
var confPath string
|
||||
flag.StringVar(&confPath, "config", "app.ini", "Specify the configuration file")
|
||||
flag.Parse()
|
||||
|
||||
settings.Init(confPath)
|
||||
settings.Init(confPath)
|
||||
|
||||
gin.SetMode(settings.ServerSettings.RunMode)
|
||||
gin.SetMode(settings.ServerSettings.RunMode)
|
||||
|
||||
r, err := service.GetRuntimeInfo()
|
||||
r, err := service.GetRuntimeInfo()
|
||||
|
||||
if err != nil {
|
||||
log.Fatalln(err)
|
||||
}
|
||||
defer logger.Sync()
|
||||
|
||||
overseer.Run(overseer.Config{
|
||||
Program: server.Program,
|
||||
Address: fmt.Sprintf(":%s", settings.ServerSettings.HttpPort),
|
||||
Fetcher: &fetcher.File{Path: r.ExPath},
|
||||
TerminateTimeout: 0,
|
||||
})
|
||||
if err != nil {
|
||||
log.Fatalln(err)
|
||||
}
|
||||
|
||||
overseer.Run(overseer.Config{
|
||||
Program: server.Program,
|
||||
Address: fmt.Sprintf(":%s", settings.ServerSettings.HttpPort),
|
||||
Fetcher: &fetcher.File{Path: r.ExPath},
|
||||
TerminateTimeout: 0,
|
||||
})
|
||||
}
|
||||
|
|
|
@ -2,6 +2,7 @@ package api
|
|||
|
||||
import (
|
||||
"fmt"
|
||||
"github.com/0xJacky/Nginx-UI/logger"
|
||||
"github.com/0xJacky/Nginx-UI/server/internal/analytic"
|
||||
"github.com/pkg/errors"
|
||||
"github.com/shirou/gopsutil/v3/cpu"
|
||||
|
@ -11,7 +12,6 @@ import (
|
|||
"github.com/shirou/gopsutil/v3/mem"
|
||||
"github.com/shirou/gopsutil/v3/net"
|
||||
"github.com/spf13/cast"
|
||||
"log"
|
||||
"math"
|
||||
"net/http"
|
||||
"runtime"
|
||||
|
@ -102,7 +102,7 @@ func Analytic(c *gin.Context) {
|
|||
// upgrade http to websocket
|
||||
ws, err := upGrader.Upgrade(c.Writer, c.Request, nil)
|
||||
if err != nil {
|
||||
log.Println("[Error] Analytic Upgrade", err)
|
||||
logger.Error(err)
|
||||
return
|
||||
}
|
||||
|
||||
|
@ -114,7 +114,7 @@ func Analytic(c *gin.Context) {
|
|||
stat.Memory, err = getMemoryStat()
|
||||
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
logger.Error(err)
|
||||
return
|
||||
}
|
||||
|
||||
|
@ -139,7 +139,7 @@ func Analytic(c *gin.Context) {
|
|||
stat.Disk, err = getDiskStat()
|
||||
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
logger.Error(err)
|
||||
return
|
||||
}
|
||||
|
||||
|
@ -152,7 +152,7 @@ func Analytic(c *gin.Context) {
|
|||
// write
|
||||
err = ws.WriteJSON(stat)
|
||||
if err != nil {
|
||||
log.Println("[Error] analytic WriteJSON", err)
|
||||
logger.Error(err)
|
||||
break
|
||||
}
|
||||
time.Sleep(800 * time.Microsecond)
|
||||
|
@ -166,14 +166,14 @@ func GetAnalyticInit(c *gin.Context) {
|
|||
memory, err := getMemoryStat()
|
||||
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
logger.Error(err)
|
||||
return
|
||||
}
|
||||
|
||||
diskStat, err := getDiskStat()
|
||||
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
logger.Error(err)
|
||||
return
|
||||
}
|
||||
|
||||
|
|
|
@ -1,68 +1,68 @@
|
|||
package api
|
||||
|
||||
import (
|
||||
"github.com/gin-gonic/gin"
|
||||
"github.com/gin-gonic/gin/binding"
|
||||
"github.com/go-playground/locales/zh"
|
||||
ut "github.com/go-playground/universal-translator"
|
||||
val "github.com/go-playground/validator/v10"
|
||||
zhTranslations "github.com/go-playground/validator/v10/translations/zh"
|
||||
"log"
|
||||
"net/http"
|
||||
"reflect"
|
||||
"github.com/0xJacky/Nginx-UI/logger"
|
||||
"github.com/gin-gonic/gin"
|
||||
"github.com/gin-gonic/gin/binding"
|
||||
"github.com/go-playground/locales/zh"
|
||||
ut "github.com/go-playground/universal-translator"
|
||||
val "github.com/go-playground/validator/v10"
|
||||
zhTranslations "github.com/go-playground/validator/v10/translations/zh"
|
||||
"net/http"
|
||||
"reflect"
|
||||
)
|
||||
|
||||
func ErrHandler(c *gin.Context, err error) {
|
||||
log.Println(err)
|
||||
c.JSON(http.StatusInternalServerError, gin.H{
|
||||
"message": err.Error(),
|
||||
})
|
||||
logger.GetLogger().Errorln(err)
|
||||
c.JSON(http.StatusInternalServerError, gin.H{
|
||||
"message": err.Error(),
|
||||
})
|
||||
}
|
||||
|
||||
type ValidError struct {
|
||||
Key string
|
||||
Message string
|
||||
Key string
|
||||
Message string
|
||||
}
|
||||
|
||||
func BindAndValid(c *gin.Context, target interface{}) bool {
|
||||
errs := make(map[string]string)
|
||||
err := c.ShouldBindJSON(target)
|
||||
if err != nil {
|
||||
log.Println("raw err", err)
|
||||
uni := ut.New(zh.New())
|
||||
trans, _ := uni.GetTranslator("zh")
|
||||
v, ok := binding.Validator.Engine().(*val.Validate)
|
||||
if ok {
|
||||
_ = zhTranslations.RegisterDefaultTranslations(v, trans)
|
||||
}
|
||||
errs := make(map[string]string)
|
||||
err := c.ShouldBindJSON(target)
|
||||
if err != nil {
|
||||
logger.Error("bind err", err)
|
||||
uni := ut.New(zh.New())
|
||||
trans, _ := uni.GetTranslator("zh")
|
||||
v, ok := binding.Validator.Engine().(*val.Validate)
|
||||
if ok {
|
||||
_ = zhTranslations.RegisterDefaultTranslations(v, trans)
|
||||
}
|
||||
|
||||
verrs, ok := err.(val.ValidationErrors)
|
||||
verrs, ok := err.(val.ValidationErrors)
|
||||
|
||||
if !ok {
|
||||
log.Println("verrs", verrs)
|
||||
c.JSON(http.StatusNotAcceptable, gin.H{
|
||||
"message": "Requested with wrong parameters",
|
||||
"code": http.StatusNotAcceptable,
|
||||
"error": verrs,
|
||||
})
|
||||
return false
|
||||
}
|
||||
if !ok {
|
||||
logger.Error("valid err", verrs)
|
||||
c.JSON(http.StatusNotAcceptable, gin.H{
|
||||
"message": "Requested with wrong parameters",
|
||||
"code": http.StatusNotAcceptable,
|
||||
"error": verrs,
|
||||
})
|
||||
return false
|
||||
}
|
||||
|
||||
for _, value := range verrs {
|
||||
t := reflect.ValueOf(target)
|
||||
realType := t.Type().Elem()
|
||||
field, _ := realType.FieldByName(value.StructField())
|
||||
errs[field.Tag.Get("json")] = value.Translate(trans)
|
||||
}
|
||||
for _, value := range verrs {
|
||||
t := reflect.ValueOf(target)
|
||||
realType := t.Type().Elem()
|
||||
field, _ := realType.FieldByName(value.StructField())
|
||||
errs[field.Tag.Get("json")] = value.Translate(trans)
|
||||
}
|
||||
|
||||
c.JSON(http.StatusNotAcceptable, gin.H{
|
||||
"errors": errs,
|
||||
"message": "Requested with wrong parameters",
|
||||
"code": http.StatusNotAcceptable,
|
||||
})
|
||||
c.JSON(http.StatusNotAcceptable, gin.H{
|
||||
"errors": errs,
|
||||
"message": "Requested with wrong parameters",
|
||||
"code": http.StatusNotAcceptable,
|
||||
})
|
||||
|
||||
return false
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
return true
|
||||
return true
|
||||
}
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
package api
|
||||
|
||||
import (
|
||||
"github.com/0xJacky/Nginx-UI/logger"
|
||||
"github.com/0xJacky/Nginx-UI/server/internal/cert"
|
||||
"github.com/0xJacky/Nginx-UI/server/internal/cert/dns"
|
||||
"github.com/0xJacky/Nginx-UI/server/internal/nginx"
|
||||
|
@ -8,7 +9,6 @@ import (
|
|||
"github.com/gin-gonic/gin"
|
||||
"github.com/gorilla/websocket"
|
||||
"github.com/spf13/cast"
|
||||
"log"
|
||||
"net/http"
|
||||
"os"
|
||||
"path/filepath"
|
||||
|
@ -31,7 +31,7 @@ type IssueCertResponse struct {
|
|||
func handleIssueCertLogChan(conn *websocket.Conn, logChan chan string) {
|
||||
defer func() {
|
||||
if err := recover(); err != nil {
|
||||
log.Println("api.handleIssueCertLogChan recover", err)
|
||||
logger.Error(err)
|
||||
}
|
||||
}()
|
||||
|
||||
|
@ -43,7 +43,7 @@ func handleIssueCertLogChan(conn *websocket.Conn, logChan chan string) {
|
|||
})
|
||||
|
||||
if err != nil {
|
||||
log.Println("Error handleIssueCertLogChan", err)
|
||||
logger.Error(err)
|
||||
return
|
||||
}
|
||||
|
||||
|
@ -60,15 +60,12 @@ func IssueCert(c *gin.Context) {
|
|||
// upgrade http to websocket
|
||||
ws, err := upGrader.Upgrade(c.Writer, c.Request, nil)
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
logger.Error(err)
|
||||
return
|
||||
}
|
||||
|
||||
defer func(ws *websocket.Conn) {
|
||||
err := ws.Close()
|
||||
if err != nil {
|
||||
log.Println("defer websocket close err", err)
|
||||
}
|
||||
_ = ws.Close()
|
||||
}(ws)
|
||||
|
||||
// read
|
||||
|
@ -77,14 +74,15 @@ func IssueCert(c *gin.Context) {
|
|||
err = ws.ReadJSON(buffer)
|
||||
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
logger.Error(err)
|
||||
return
|
||||
}
|
||||
|
||||
certModel, err := model.FirstOrCreateCert(c.Param("name"))
|
||||
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
logger.Error(err)
|
||||
return
|
||||
}
|
||||
|
||||
logChan := make(chan string, 1)
|
||||
|
@ -106,7 +104,7 @@ func IssueCert(c *gin.Context) {
|
|||
})
|
||||
|
||||
if err != nil {
|
||||
log.Println("Error WriteJSON", err)
|
||||
logger.Error(err)
|
||||
return
|
||||
}
|
||||
|
||||
|
@ -124,7 +122,7 @@ func IssueCert(c *gin.Context) {
|
|||
})
|
||||
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
logger.Error(err)
|
||||
err = ws.WriteJSON(IssueCertResponse{
|
||||
Status: Error,
|
||||
Message: err.Error(),
|
||||
|
@ -142,7 +140,7 @@ func IssueCert(c *gin.Context) {
|
|||
})
|
||||
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
logger.Error(err)
|
||||
return
|
||||
}
|
||||
|
||||
|
@ -268,7 +266,6 @@ func AddCert(c *gin.Context) {
|
|||
|
||||
func ModifyCert(c *gin.Context) {
|
||||
id := cast.ToInt(c.Param("id"))
|
||||
certModel, err := model.FirstCertByID(id)
|
||||
|
||||
var json struct {
|
||||
Name string `json:"name"`
|
||||
|
@ -282,6 +279,7 @@ func ModifyCert(c *gin.Context) {
|
|||
return
|
||||
}
|
||||
|
||||
certModel, err := model.FirstCertByID(id)
|
||||
if err != nil {
|
||||
ErrHandler(c, err)
|
||||
return
|
||||
|
|
|
@ -1,11 +1,11 @@
|
|||
package api
|
||||
|
||||
import (
|
||||
"github.com/0xJacky/Nginx-UI/logger"
|
||||
"github.com/0xJacky/Nginx-UI/server/internal/config_list"
|
||||
"github.com/0xJacky/Nginx-UI/server/internal/nginx"
|
||||
"github.com/0xJacky/Nginx-UI/server/query"
|
||||
"github.com/gin-gonic/gin"
|
||||
"log"
|
||||
"net/http"
|
||||
"os"
|
||||
)
|
||||
|
@ -43,14 +43,14 @@ func GetConfigs(c *gin.Context) {
|
|||
var targetPath string
|
||||
targetPath, err = os.Readlink(nginx.GetConfPath(file.Name()))
|
||||
if err != nil {
|
||||
log.Println("GetConfigs Read Symlink Error", targetPath, err)
|
||||
logger.Error("Read Symlink Error", targetPath, err)
|
||||
continue
|
||||
}
|
||||
|
||||
var targetInfo os.FileInfo
|
||||
targetInfo, err = os.Stat(targetPath)
|
||||
if err != nil {
|
||||
log.Println("GetConfigs Stat Error", targetPath, err)
|
||||
logger.Error("Stat Error", targetPath, err)
|
||||
continue
|
||||
}
|
||||
// but target file is not a dir
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
package api
|
||||
|
||||
import (
|
||||
"github.com/0xJacky/Nginx-UI/logger"
|
||||
"github.com/0xJacky/Nginx-UI/server/internal/cert"
|
||||
"github.com/0xJacky/Nginx-UI/server/internal/config_list"
|
||||
"github.com/0xJacky/Nginx-UI/server/internal/helper"
|
||||
|
@ -8,7 +9,6 @@ import (
|
|||
"github.com/0xJacky/Nginx-UI/server/model"
|
||||
"github.com/0xJacky/Nginx-UI/server/query"
|
||||
"github.com/gin-gonic/gin"
|
||||
"log"
|
||||
"net/http"
|
||||
"os"
|
||||
"strings"
|
||||
|
@ -148,7 +148,7 @@ func GetDomain(c *gin.Context) {
|
|||
pubKey, err := cert.GetCertInfo(directive.Params)
|
||||
|
||||
if err != nil {
|
||||
log.Println("Failed to get certificate information", err)
|
||||
logger.Error("Failed to get certificate information", err)
|
||||
break
|
||||
}
|
||||
|
||||
|
|
|
@ -2,6 +2,7 @@ package api
|
|||
|
||||
import (
|
||||
"encoding/json"
|
||||
"github.com/0xJacky/Nginx-UI/logger"
|
||||
"github.com/0xJacky/Nginx-UI/server/internal/helper"
|
||||
"github.com/0xJacky/Nginx-UI/server/internal/nginx"
|
||||
"github.com/0xJacky/Nginx-UI/server/settings"
|
||||
|
@ -11,7 +12,6 @@ import (
|
|||
"github.com/pkg/errors"
|
||||
"github.com/spf13/cast"
|
||||
"io"
|
||||
"log"
|
||||
"net/http"
|
||||
"os"
|
||||
)
|
||||
|
@ -46,7 +46,7 @@ func GetNginxLogPage(c *gin.Context) {
|
|||
logPath, err := getLogPath(&control)
|
||||
|
||||
if err != nil {
|
||||
log.Println("error GetNginxLogPage", err)
|
||||
logger.Error(err)
|
||||
return
|
||||
}
|
||||
|
||||
|
@ -54,7 +54,7 @@ func GetNginxLogPage(c *gin.Context) {
|
|||
|
||||
if err != nil {
|
||||
c.JSON(http.StatusOK, nginxLogPageResp{})
|
||||
log.Println("error GetNginxLogPage open file", err)
|
||||
logger.Error(err)
|
||||
return
|
||||
}
|
||||
|
||||
|
@ -62,7 +62,7 @@ func GetNginxLogPage(c *gin.Context) {
|
|||
|
||||
if err != nil {
|
||||
c.JSON(http.StatusOK, nginxLogPageResp{})
|
||||
log.Println("error GetNginxLogPage stat", err)
|
||||
logger.Error(err)
|
||||
return
|
||||
}
|
||||
|
||||
|
@ -85,7 +85,7 @@ func GetNginxLogPage(c *gin.Context) {
|
|||
_, err = f.Seek(offset, io.SeekStart)
|
||||
if err != nil && err != io.EOF {
|
||||
c.JSON(http.StatusOK, nginxLogPageResp{})
|
||||
log.Println("error GetNginxLogPage seek", err)
|
||||
logger.Error(err)
|
||||
return
|
||||
}
|
||||
|
||||
|
@ -93,7 +93,7 @@ func GetNginxLogPage(c *gin.Context) {
|
|||
|
||||
if err != nil && err != io.EOF {
|
||||
c.JSON(http.StatusOK, nginxLogPageResp{})
|
||||
log.Println("error GetNginxLogPage read buf", err)
|
||||
logger.Error(err)
|
||||
return
|
||||
}
|
||||
|
||||
|
@ -163,7 +163,7 @@ func getLogPath(control *controlStruct) (logPath string, err error) {
|
|||
func tailNginxLog(ws *websocket.Conn, controlChan chan controlStruct, errChan chan error) {
|
||||
defer func() {
|
||||
if err := recover(); err != nil {
|
||||
log.Println("tailNginxLog recovery", err)
|
||||
logger.Error(err)
|
||||
return
|
||||
}
|
||||
}()
|
||||
|
@ -226,7 +226,7 @@ func tailNginxLog(ws *websocket.Conn, controlChan chan controlStruct, errChan ch
|
|||
func handleLogControl(ws *websocket.Conn, controlChan chan controlStruct, errChan chan error) {
|
||||
defer func() {
|
||||
if err := recover(); err != nil {
|
||||
log.Println("handleLogControl recovery", err)
|
||||
logger.Error(err)
|
||||
return
|
||||
}
|
||||
}()
|
||||
|
@ -262,7 +262,7 @@ func NginxLog(c *gin.Context) {
|
|||
// upgrade http to websocket
|
||||
ws, err := upGrader.Upgrade(c.Writer, c.Request, nil)
|
||||
if err != nil {
|
||||
log.Println("[Error] NginxLog Upgrade", err)
|
||||
logger.Error(err)
|
||||
return
|
||||
}
|
||||
|
||||
|
@ -275,7 +275,7 @@ func NginxLog(c *gin.Context) {
|
|||
go handleLogControl(ws, controlChan, errChan)
|
||||
|
||||
if err = <-errChan; err != nil {
|
||||
log.Println(err)
|
||||
logger.Error(err)
|
||||
_ = ws.WriteMessage(websocket.TextMessage, []byte(err.Error()))
|
||||
return
|
||||
}
|
||||
|
|
|
@ -1,10 +1,10 @@
|
|||
package api
|
||||
|
||||
import (
|
||||
"github.com/0xJacky/Nginx-UI/logger"
|
||||
"github.com/0xJacky/Nginx-UI/server/internal/pty"
|
||||
"github.com/gin-gonic/gin"
|
||||
"github.com/gorilla/websocket"
|
||||
"log"
|
||||
"net/http"
|
||||
)
|
||||
|
||||
|
@ -17,7 +17,7 @@ func Pty(c *gin.Context) {
|
|||
// upgrade http to websocket
|
||||
ws, err := upGrader.Upgrade(c.Writer, c.Request, nil)
|
||||
if err != nil {
|
||||
log.Println("pty ws upgrade error", err)
|
||||
logger.Error(err)
|
||||
return
|
||||
}
|
||||
|
||||
|
@ -26,7 +26,7 @@ func Pty(c *gin.Context) {
|
|||
p, err := pty.NewPipeLine(ws)
|
||||
|
||||
if err != nil {
|
||||
log.Println("pty.NewPipLine error", err)
|
||||
logger.Error(err)
|
||||
return
|
||||
}
|
||||
|
||||
|
@ -38,8 +38,9 @@ func Pty(c *gin.Context) {
|
|||
|
||||
err = <-errorChan
|
||||
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
if err != nil && websocket.IsUnexpectedCloseError(err, websocket.CloseGoingAway, websocket.CloseNoStatusReceived,
|
||||
websocket.CloseNormalClosure) {
|
||||
logger.Error(err)
|
||||
}
|
||||
|
||||
return
|
||||
|
|
|
@ -1,10 +1,10 @@
|
|||
package api
|
||||
|
||||
import (
|
||||
"github.com/0xJacky/Nginx-UI/logger"
|
||||
"github.com/0xJacky/Nginx-UI/server/service"
|
||||
"github.com/gin-gonic/gin"
|
||||
"github.com/gorilla/websocket"
|
||||
"log"
|
||||
"net/http"
|
||||
"os"
|
||||
)
|
||||
|
@ -48,7 +48,7 @@ func PerformCoreUpgrade(c *gin.Context) {
|
|||
// upgrade http to websocket
|
||||
ws, err := upGrader.Upgrade(c.Writer, c.Request, nil)
|
||||
if err != nil {
|
||||
log.Println("[Error] PerformCoreUpgrade Upgrade", err)
|
||||
logger.Error(err)
|
||||
return
|
||||
}
|
||||
defer ws.Close()
|
||||
|
@ -61,7 +61,7 @@ func PerformCoreUpgrade(c *gin.Context) {
|
|||
err = ws.ReadJSON(&control)
|
||||
|
||||
if err != nil {
|
||||
log.Println("[Error] PerformCoreUpgrade ws.ReadJSON(&control)", err)
|
||||
logger.Error(err)
|
||||
return
|
||||
}
|
||||
|
||||
|
@ -81,7 +81,7 @@ func PerformCoreUpgrade(c *gin.Context) {
|
|||
"status": "error",
|
||||
"message": err.Error(),
|
||||
})
|
||||
log.Println("[Error] PerformCoreUpgrade service.NewUpgrader()", err)
|
||||
logger.Error(err)
|
||||
return
|
||||
}
|
||||
_ = ws.WriteJSON(gin.H{
|
||||
|
@ -109,7 +109,7 @@ func PerformCoreUpgrade(c *gin.Context) {
|
|||
"status": "error",
|
||||
"message": err.Error(),
|
||||
})
|
||||
log.Println("[Error] PerformCoreUpgrade DownloadLatestRelease", err)
|
||||
logger.Error(err)
|
||||
return
|
||||
}
|
||||
|
||||
|
@ -138,7 +138,7 @@ func PerformCoreUpgrade(c *gin.Context) {
|
|||
"status": "error",
|
||||
"message": err.Error(),
|
||||
})
|
||||
log.Println("[Error] PerformCoreUpgrade", err)
|
||||
logger.Error(err)
|
||||
return
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
package analytic
|
||||
|
||||
import (
|
||||
"github.com/0xJacky/Nginx-UI/logger"
|
||||
"github.com/shirou/gopsutil/v3/net"
|
||||
"log"
|
||||
"time"
|
||||
)
|
||||
|
||||
|
@ -48,7 +48,7 @@ func init() {
|
|||
}
|
||||
|
||||
func RecordServerAnalytic() {
|
||||
log.Println("[Nginx UI] RecordServerAnalytic Started")
|
||||
logger.Info("RecordServerAnalytic Started")
|
||||
for {
|
||||
now := time.Now()
|
||||
recordCpu(now) // this func will spend more than 1 second.
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
package analytic
|
||||
|
||||
import (
|
||||
"github.com/go-acme/lego/v4/log"
|
||||
"github.com/0xJacky/Nginx-UI/logger"
|
||||
"github.com/shirou/gopsutil/v3/cpu"
|
||||
"github.com/shirou/gopsutil/v3/disk"
|
||||
"github.com/shirou/gopsutil/v3/net"
|
||||
|
@ -12,7 +12,7 @@ import (
|
|||
func getTotalDiskIO() (read, write uint64) {
|
||||
diskIOCounters, err := disk.IOCounters()
|
||||
if err != nil {
|
||||
log.Println("getTotalDiskIO: get diskIOCounters err", err)
|
||||
logger.Error(err.Error())
|
||||
return
|
||||
}
|
||||
for _, v := range diskIOCounters {
|
||||
|
@ -25,13 +25,13 @@ func getTotalDiskIO() (read, write uint64) {
|
|||
func recordCpu(now time.Time) {
|
||||
cpuTimesBefore, err := cpu.Times(false)
|
||||
if err != nil {
|
||||
log.Println("recordCpu: get cpuTimesBefore err", err)
|
||||
logger.Error(err.Error())
|
||||
return
|
||||
}
|
||||
time.Sleep(1000 * time.Millisecond)
|
||||
cpuTimesAfter, err := cpu.Times(false)
|
||||
if err != nil {
|
||||
log.Println("recordCpu: get cpuTimesAfter err", err)
|
||||
logger.Error(err.Error())
|
||||
return
|
||||
}
|
||||
threadNum := runtime.GOMAXPROCS(0)
|
||||
|
@ -68,7 +68,7 @@ func recordNetwork(now time.Time) {
|
|||
network, err := net.IOCounters(false)
|
||||
|
||||
if err != nil {
|
||||
log.Println("recordNetwork: get network err", err)
|
||||
logger.Error(err.Error())
|
||||
return
|
||||
}
|
||||
|
||||
|
|
|
@ -2,21 +2,21 @@ package cert
|
|||
|
||||
import (
|
||||
"fmt"
|
||||
"github.com/0xJacky/Nginx-UI/logger"
|
||||
"github.com/0xJacky/Nginx-UI/server/model"
|
||||
"github.com/pkg/errors"
|
||||
"log"
|
||||
"time"
|
||||
)
|
||||
|
||||
func handleIssueCertLogChan(logChan chan string) {
|
||||
defer func() {
|
||||
if err := recover(); err != nil {
|
||||
log.Println("[Auto Cert] handleIssueCertLogChan", err)
|
||||
logger.Error(err)
|
||||
}
|
||||
}()
|
||||
|
||||
for logString := range logChan {
|
||||
log.Println("[Auto Cert] Info", logString)
|
||||
logger.Info("Auto Cert", logString)
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -31,12 +31,12 @@ func (t *AutoCertErrorLog) SetCertModel(cert *model.Cert) {
|
|||
|
||||
func (t *AutoCertErrorLog) Push(text string, err error) {
|
||||
t.buffer = append(t.buffer, text+" "+err.Error())
|
||||
log.Println("[AutoCert Error]", text, err)
|
||||
logger.Error("AutoCert", text, err)
|
||||
}
|
||||
|
||||
func (t *AutoCertErrorLog) Exit(text string, err error) {
|
||||
t.buffer = append(t.buffer, text+" "+err.Error())
|
||||
log.Println("[AutoCert Error]", text, err)
|
||||
logger.Error("AutoCert", text, err)
|
||||
|
||||
if t.cert == nil {
|
||||
return
|
||||
|
@ -59,10 +59,10 @@ func (t *AutoCertErrorLog) ToString() (content string) {
|
|||
func AutoObtain() {
|
||||
defer func() {
|
||||
if err := recover(); err != nil {
|
||||
log.Println("[AutoCert] Recover", err)
|
||||
logger.Error("AutoCert Recover", err)
|
||||
}
|
||||
}()
|
||||
log.Println("[AutoCert] Start")
|
||||
logger.Info("AutoCert Worker Started")
|
||||
autoCertList := model.GetAutoCertList()
|
||||
for _, certModel := range autoCertList {
|
||||
confName := certModel.Filename
|
||||
|
@ -124,5 +124,5 @@ func AutoObtain() {
|
|||
|
||||
close(logChan)
|
||||
}
|
||||
log.Println("[AutoCert] End")
|
||||
logger.Info("AutoCert Worker End")
|
||||
}
|
||||
|
|
|
@ -6,6 +6,7 @@ import (
|
|||
"crypto/elliptic"
|
||||
"crypto/rand"
|
||||
"crypto/tls"
|
||||
"github.com/0xJacky/Nginx-UI/logger"
|
||||
dns2 "github.com/0xJacky/Nginx-UI/server/internal/cert/dns"
|
||||
"github.com/0xJacky/Nginx-UI/server/internal/nginx"
|
||||
"github.com/0xJacky/Nginx-UI/server/query"
|
||||
|
@ -17,7 +18,6 @@ import (
|
|||
"github.com/go-acme/lego/v4/providers/dns"
|
||||
"github.com/go-acme/lego/v4/registration"
|
||||
"github.com/pkg/errors"
|
||||
"log"
|
||||
"net/http"
|
||||
"os"
|
||||
"path/filepath"
|
||||
|
@ -55,7 +55,7 @@ type ConfigPayload struct {
|
|||
func IssueCert(payload *ConfigPayload, logChan chan string, errChan chan error) {
|
||||
defer func() {
|
||||
if err := recover(); err != nil {
|
||||
log.Println("Issue Cert recover", err)
|
||||
logger.Error(err)
|
||||
}
|
||||
}()
|
||||
|
||||
|
|
|
@ -3,15 +3,15 @@ package helper
|
|||
import (
|
||||
"crypto/sha512"
|
||||
"fmt"
|
||||
"github.com/0xJacky/Nginx-UI/logger"
|
||||
"io"
|
||||
"log"
|
||||
"os"
|
||||
)
|
||||
|
||||
func DigestSHA512(filepath string) (hashString string) {
|
||||
file, err := os.Open(filepath)
|
||||
if err != nil {
|
||||
log.Println("DigestSHA512 open file error")
|
||||
logger.Error(err)
|
||||
return
|
||||
}
|
||||
defer file.Close()
|
||||
|
@ -20,7 +20,7 @@ func DigestSHA512(filepath string) (hashString string) {
|
|||
|
||||
_, err = io.Copy(hash, file)
|
||||
if err != nil {
|
||||
log.Println("DigestSHA512 io.Copy error")
|
||||
logger.Error(err)
|
||||
return
|
||||
}
|
||||
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
package nginx
|
||||
|
||||
import (
|
||||
"github.com/0xJacky/Nginx-UI/logger"
|
||||
"github.com/0xJacky/Nginx-UI/server/settings"
|
||||
"log"
|
||||
"os/exec"
|
||||
"path/filepath"
|
||||
"regexp"
|
||||
|
@ -11,7 +11,7 @@ import (
|
|||
func TestConf() string {
|
||||
out, err := exec.Command("nginx", "-t").CombinedOutput()
|
||||
if err != nil {
|
||||
log.Println("[error] nginx.TestConf", err)
|
||||
logger.Error(err)
|
||||
}
|
||||
|
||||
return string(out)
|
||||
|
@ -21,7 +21,7 @@ func Reload() string {
|
|||
out, err := exec.Command("nginx", "-s", "reload").CombinedOutput()
|
||||
|
||||
if err != nil {
|
||||
log.Println("[error] nginx.Reload", err)
|
||||
logger.Error(err)
|
||||
}
|
||||
|
||||
return string(out)
|
||||
|
@ -31,7 +31,7 @@ func Restart() string {
|
|||
out, err := exec.Command("nginx", "-s", "reopen").CombinedOutput()
|
||||
|
||||
if err != nil {
|
||||
log.Println("[error] nginx.Restart", err)
|
||||
logger.Error(err)
|
||||
}
|
||||
|
||||
return string(out)
|
||||
|
@ -43,13 +43,13 @@ func GetConfPath(dir ...string) string {
|
|||
if settings.ServerSettings.NginxConfigDir == "" {
|
||||
out, err := exec.Command("nginx", "-V").CombinedOutput()
|
||||
if err != nil {
|
||||
log.Println("nginx.GetConfPath exec.Command error", err)
|
||||
logger.Error(err)
|
||||
return ""
|
||||
}
|
||||
r, _ := regexp.Compile("--conf-path=(.*)/(.*.conf)")
|
||||
match := r.FindStringSubmatch(string(out))
|
||||
if len(match) < 1 {
|
||||
log.Println("nginx.GetConfPath len(match) < 1")
|
||||
logger.Error("nginx.GetConfPath len(match) < 1")
|
||||
return ""
|
||||
}
|
||||
confPath = r.FindStringSubmatch(string(out))[1]
|
||||
|
@ -66,13 +66,13 @@ func GetNginxPIDPath() string {
|
|||
if settings.ServerSettings.NginxPIDPath == "" {
|
||||
out, err := exec.Command("nginx", "-V").CombinedOutput()
|
||||
if err != nil {
|
||||
log.Println("nginx.GetNginxPIDPath exec.Command error", err)
|
||||
logger.Error(err)
|
||||
return ""
|
||||
}
|
||||
r, _ := regexp.Compile("--pid-path=(.*.pid)")
|
||||
match := r.FindStringSubmatch(string(out))
|
||||
if len(match) < 1 {
|
||||
log.Println("nginx.GetNginxPIDPath len(match) < 1")
|
||||
logger.Error("nginx.GetNginxPIDPath len(match) < 1")
|
||||
return ""
|
||||
}
|
||||
confPath = r.FindStringSubmatch(string(out))[1]
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
package model
|
||||
|
||||
import (
|
||||
"log"
|
||||
"os"
|
||||
"path/filepath"
|
||||
"github.com/0xJacky/Nginx-UI/logger"
|
||||
"os"
|
||||
"path/filepath"
|
||||
)
|
||||
|
||||
type ConfigBackup struct {
|
||||
|
@ -38,12 +38,12 @@ func GetBackup(id int) (config ConfigBackup) {
|
|||
func CreateBackup(path string) {
|
||||
content, err := os.ReadFile(path)
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
logger.Error(err)
|
||||
}
|
||||
|
||||
config := ConfigBackup{Name: filepath.Base(path), FilePath: path, Content: string(content)}
|
||||
result := db.Create(&config)
|
||||
if result.Error != nil {
|
||||
log.Println(result.Error)
|
||||
logger.Error(result.Error)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -2,14 +2,14 @@ package model
|
|||
|
||||
import (
|
||||
"fmt"
|
||||
"github.com/0xJacky/Nginx-UI/logger"
|
||||
"github.com/0xJacky/Nginx-UI/server/settings"
|
||||
"github.com/gin-gonic/gin"
|
||||
"github.com/spf13/cast"
|
||||
"gorm.io/driver/sqlite"
|
||||
"gorm.io/gen"
|
||||
"gorm.io/gorm"
|
||||
"gorm.io/gorm/logger"
|
||||
"log"
|
||||
gormlogger "gorm.io/gorm/logger"
|
||||
"path"
|
||||
"time"
|
||||
)
|
||||
|
@ -40,19 +40,19 @@ func Init() *gorm.DB {
|
|||
|
||||
var err error
|
||||
db, err = gorm.Open(sqlite.Open(dbPath), &gorm.Config{
|
||||
Logger: logger.Default.LogMode(logger.Info),
|
||||
Logger: gormlogger.Default.LogMode(gormlogger.Info),
|
||||
PrepareStmt: true,
|
||||
DisableForeignKeyConstraintWhenMigrating: true,
|
||||
})
|
||||
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
logger.Fatal(err.Error())
|
||||
}
|
||||
|
||||
// Migrate the schema
|
||||
err = db.AutoMigrate(GenerateAllModel()...)
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
logger.Fatal(err.Error())
|
||||
}
|
||||
|
||||
return db
|
||||
|
|
|
@ -3,13 +3,13 @@ package router
|
|||
import (
|
||||
"encoding/base64"
|
||||
"github.com/0xJacky/Nginx-UI/frontend"
|
||||
"github.com/0xJacky/Nginx-UI/logger"
|
||||
"github.com/0xJacky/Nginx-UI/server/model"
|
||||
"github.com/0xJacky/Nginx-UI/server/settings"
|
||||
"github.com/gin-contrib/static"
|
||||
"github.com/gin-gonic/gin"
|
||||
"github.com/spf13/cast"
|
||||
"io/fs"
|
||||
"log"
|
||||
"net/http"
|
||||
"path"
|
||||
"strings"
|
||||
|
@ -26,7 +26,7 @@ func recovery() gin.HandlerFunc {
|
|||
errorAction = errorActionMsg
|
||||
}
|
||||
}
|
||||
log.Println(err.(error).Error())
|
||||
logger.Error(err)
|
||||
c.JSON(http.StatusInternalServerError, gin.H{
|
||||
"message": err.(error).Error(),
|
||||
"error": errorAction,
|
||||
|
@ -83,7 +83,7 @@ func mustFS(dir string) (serverFileSystem static.ServeFileSystem) {
|
|||
sub, err := fs.Sub(frontend.DistFS, path.Join("dist", dir))
|
||||
|
||||
if err != nil {
|
||||
log.Println(err)
|
||||
logger.Error(err)
|
||||
return
|
||||
}
|
||||
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
package server
|
||||
|
||||
import (
|
||||
"github.com/0xJacky/Nginx-UI/logger"
|
||||
"github.com/0xJacky/Nginx-UI/server/internal/analytic"
|
||||
"github.com/0xJacky/Nginx-UI/server/internal/cert"
|
||||
"github.com/0xJacky/Nginx-UI/server/internal/nginx"
|
||||
|
@ -21,7 +22,8 @@ func Program(state overseer.State) {
|
|||
// See https://github.com/golang/go/issues/32350
|
||||
_ = mime.AddExtensionType(".js", "text/javascript; charset=utf-8")
|
||||
|
||||
log.Printf("Nginx config dir path: %s", nginx.GetConfPath())
|
||||
logger.Info("Nginx config dir path: " + nginx.GetConfPath())
|
||||
|
||||
if "" != settings.ServerSettings.JwtSecret {
|
||||
db := model.Init()
|
||||
query.Init(db)
|
||||
|
@ -31,7 +33,7 @@ func Program(state overseer.State) {
|
|||
job, err := s.Every(30).Minute().SingletonMode().Do(cert.AutoObtain)
|
||||
|
||||
if err != nil {
|
||||
log.Fatalf("AutoCert Job: %v, Err: %v\n", job, err)
|
||||
logger.Fatalf("AutoCert Job: %v, Err: %v\n", job, err)
|
||||
}
|
||||
|
||||
s.StartAsync()
|
||||
|
@ -42,5 +44,5 @@ func Program(state overseer.State) {
|
|||
if err != nil {
|
||||
log.Fatalln(err)
|
||||
}
|
||||
log.Println("[Nginx UI] server exiting")
|
||||
logger.Info("Server exiting")
|
||||
}
|
||||
|
|
|
@ -3,6 +3,7 @@ package service
|
|||
import (
|
||||
"bufio"
|
||||
"bytes"
|
||||
"github.com/0xJacky/Nginx-UI/logger"
|
||||
"github.com/0xJacky/Nginx-UI/server/internal/nginx"
|
||||
"github.com/0xJacky/Nginx-UI/server/settings"
|
||||
templ "github.com/0xJacky/Nginx-UI/template"
|
||||
|
@ -11,7 +12,6 @@ import (
|
|||
"github.com/pkg/errors"
|
||||
"github.com/tufanbarisyildirim/gonginx/parser"
|
||||
"io"
|
||||
"log"
|
||||
"path/filepath"
|
||||
"strings"
|
||||
"text/template"
|
||||
|
@ -64,7 +64,7 @@ func GetTemplateInfo(path, name string) (configListItem ConfigInfoItem) {
|
|||
|
||||
_, err = toml.Decode(content, &configListItem)
|
||||
if err != nil {
|
||||
log.Println("toml.Decode", err.Error())
|
||||
logger.Error(err)
|
||||
}
|
||||
return
|
||||
}
|
||||
|
|
|
@ -5,11 +5,11 @@ import (
|
|||
"fmt"
|
||||
_github "github.com/0xJacky/Nginx-UI/.github"
|
||||
"github.com/0xJacky/Nginx-UI/frontend"
|
||||
"github.com/0xJacky/Nginx-UI/logger"
|
||||
"github.com/0xJacky/Nginx-UI/server/internal/helper"
|
||||
"github.com/0xJacky/Nginx-UI/server/settings"
|
||||
"github.com/pkg/errors"
|
||||
"io"
|
||||
"log"
|
||||
"net/http"
|
||||
"net/url"
|
||||
"os"
|
||||
|
@ -322,8 +322,8 @@ func (u *Upgrader) DownloadLatestRelease(progressChan chan float64) (tarName str
|
|||
|
||||
digestFileContent := strings.TrimSpace(string(digestFileBytes))
|
||||
|
||||
log.Println("DownloadLatestRelease tar digest", helper.DigestSHA512(tarName))
|
||||
log.Println("DownloadLatestRelease digestFileContent", digestFileContent)
|
||||
logger.Debug("DownloadLatestRelease tar digest", helper.DigestSHA512(tarName))
|
||||
logger.Debug("DownloadLatestRelease digestFileContent", digestFileContent)
|
||||
|
||||
if digestFileContent != helper.DigestSHA512(tarName) {
|
||||
err = errors.Wrap(err, "digest not equal")
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue