From 7f61793b36516a7118693abf9bbd7533359454de Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=80=97=E5=AD=90?= Date: Mon, 25 Nov 2024 01:45:19 +0800 Subject: [PATCH] feat: php 8.4 --- internal/app/global.go | 2 ++ internal/apps/php/init.go | 2 +- internal/biz/database_server.go | 16 +++------------- internal/biz/database_user.go | 16 +++------------- internal/biz/ssh.go | 20 +++++--------------- internal/bootstrap/app.go | 1 + internal/bootstrap/crypter.go | 18 ++++++++++++++++++ 7 files changed, 33 insertions(+), 42 deletions(-) create mode 100644 internal/bootstrap/crypter.go diff --git a/internal/app/global.go b/internal/app/global.go index 08b9cdd6..f10893b9 100644 --- a/internal/app/global.go +++ b/internal/app/global.go @@ -7,6 +7,7 @@ import ( ut "github.com/go-playground/universal-translator" "github.com/go-playground/validator/v10" "github.com/go-rat/sessions" + "github.com/go-rat/utils/crypt" "github.com/knadh/koanf/v2" "github.com/robfig/cron/v3" "gorm.io/gorm" @@ -24,6 +25,7 @@ var ( Cron *cron.Cron Queue *queue.Queue Logger *slog.Logger + Crypter crypt.Crypter ) // 定义面板状态常量 diff --git a/internal/apps/php/init.go b/internal/apps/php/init.go index 47ce95b0..8f6a1b55 100644 --- a/internal/apps/php/init.go +++ b/internal/apps/php/init.go @@ -10,7 +10,7 @@ import ( ) func init() { - php := []uint{74, 80, 81, 82, 83} + php := []uint{74, 80, 81, 82, 83, 84} for _, version := range php { apploader.Register(&types.App{ Slug: fmt.Sprintf("php%d", version), diff --git a/internal/biz/database_server.go b/internal/biz/database_server.go index d0ee12f3..f06d01f4 100644 --- a/internal/biz/database_server.go +++ b/internal/biz/database_server.go @@ -3,7 +3,6 @@ package biz import ( "time" - "github.com/go-rat/utils/crypt" "gorm.io/gorm" "github.com/TheTNB/panel/internal/app" @@ -32,12 +31,8 @@ type DatabaseServer struct { } func (r *DatabaseServer) BeforeSave(tx *gorm.DB) error { - crypter, err := crypt.NewXChacha20Poly1305([]byte(app.Key)) - if err != nil { - return err - } - - r.Password, err = crypter.Encrypt([]byte(r.Password)) + var err error + r.Password, err = app.Crypter.Encrypt([]byte(r.Password)) if err != nil { return err } @@ -47,12 +42,7 @@ func (r *DatabaseServer) BeforeSave(tx *gorm.DB) error { } func (r *DatabaseServer) AfterFind(tx *gorm.DB) error { - crypter, err := crypt.NewXChacha20Poly1305([]byte(app.Key)) - if err != nil { - return err - } - - password, err := crypter.Decrypt(r.Password) + password, err := app.Crypter.Decrypt(r.Password) if err == nil { r.Password = string(password) } diff --git a/internal/biz/database_user.go b/internal/biz/database_user.go index 8ab8bed4..6dbc72a4 100644 --- a/internal/biz/database_user.go +++ b/internal/biz/database_user.go @@ -3,7 +3,6 @@ package biz import ( "time" - "github.com/go-rat/utils/crypt" "gorm.io/gorm" "github.com/TheTNB/panel/internal/app" @@ -21,12 +20,8 @@ type DatabaseUser struct { } func (r *DatabaseUser) BeforeSave(tx *gorm.DB) error { - crypter, err := crypt.NewXChacha20Poly1305([]byte(app.Key)) - if err != nil { - return err - } - - r.Password, err = crypter.Encrypt([]byte(r.Password)) + var err error + r.Password, err = app.Crypter.Encrypt([]byte(r.Password)) if err != nil { return err } @@ -36,12 +31,7 @@ func (r *DatabaseUser) BeforeSave(tx *gorm.DB) error { } func (r *DatabaseUser) AfterFind(tx *gorm.DB) error { - crypter, err := crypt.NewXChacha20Poly1305([]byte(app.Key)) - if err != nil { - return err - } - - password, err := crypter.Decrypt(r.Password) + password, err := app.Crypter.Decrypt(r.Password) if err == nil { r.Password = string(password) } diff --git a/internal/biz/ssh.go b/internal/biz/ssh.go index 93a9ebec..c944d3a8 100644 --- a/internal/biz/ssh.go +++ b/internal/biz/ssh.go @@ -3,7 +3,6 @@ package biz import ( "time" - "github.com/go-rat/utils/crypt" "gorm.io/gorm" "github.com/TheTNB/panel/internal/app" @@ -23,16 +22,12 @@ type SSH struct { } func (r *SSH) BeforeSave(tx *gorm.DB) error { - crypter, err := crypt.NewXChacha20Poly1305([]byte(app.Key)) + var err error + r.Config.Key, err = app.Crypter.Encrypt([]byte(r.Config.Key)) if err != nil { return err } - - r.Config.Key, err = crypter.Encrypt([]byte(r.Config.Key)) - if err != nil { - return err - } - r.Config.Password, err = crypter.Encrypt([]byte(r.Config.Password)) + r.Config.Password, err = app.Crypter.Encrypt([]byte(r.Config.Password)) if err != nil { return err } @@ -42,16 +37,11 @@ func (r *SSH) BeforeSave(tx *gorm.DB) error { } func (r *SSH) AfterFind(tx *gorm.DB) error { - crypter, err := crypt.NewXChacha20Poly1305([]byte(app.Key)) - if err != nil { - return err - } - - key, err := crypter.Decrypt(r.Config.Key) + key, err := app.Crypter.Decrypt(r.Config.Key) if err == nil { r.Config.Key = string(key) } - password, err := crypter.Decrypt(r.Config.Password) + password, err := app.Crypter.Decrypt(r.Config.Password) if err == nil { r.Config.Password = string(password) } diff --git a/internal/bootstrap/app.go b/internal/bootstrap/app.go index 7beb3185..907d5a15 100644 --- a/internal/bootstrap/app.go +++ b/internal/bootstrap/app.go @@ -18,6 +18,7 @@ func boot() { initLogger() initOrm() runMigrate() + bootCrypter() } func BootWeb() { diff --git a/internal/bootstrap/crypter.go b/internal/bootstrap/crypter.go new file mode 100644 index 00000000..9aab50e2 --- /dev/null +++ b/internal/bootstrap/crypter.go @@ -0,0 +1,18 @@ +package bootstrap + +import ( + "log" + + "github.com/go-rat/utils/crypt" + + "github.com/TheTNB/panel/internal/app" +) + +func bootCrypter() { + crypter, err := crypt.NewXChacha20Poly1305([]byte(app.Key)) + if err != nil { + log.Fatalf("failed to create crypter: %v", err) + } + + app.Crypter = crypter +}