diff --git a/internal/bootstrap/conf.go b/internal/bootstrap/conf.go index 2a5b7d96..f6867e04 100644 --- a/internal/bootstrap/conf.go +++ b/internal/bootstrap/conf.go @@ -7,18 +7,18 @@ import ( "github.com/knadh/koanf/providers/file" "github.com/knadh/koanf/v2" - "github.com/TheTNB/panel/internal/app" + "github.com/TheTNB/panel/internal/panel" ) func initConf() { - app.Conf = koanf.New(".") - if err := app.Conf.Load(file.Provider("config/config.yml"), yaml.Parser()); err != nil { + panel.Conf = koanf.New(".") + if err := panel.Conf.Load(file.Provider("config/config.yml"), yaml.Parser()); err != nil { panic(fmt.Sprintf("failed to load config: %v", err)) } } func initGlobal() { - app.Root = app.Conf.MustString("app.root") - app.Version = app.Conf.MustString("app.version") - app.Locale = app.Conf.MustString("app.locale") + panel.Root = panel.Conf.MustString("app.root") + panel.Version = panel.Conf.MustString("app.version") + panel.Locale = panel.Conf.MustString("app.locale") } diff --git a/internal/bootstrap/db.go b/internal/bootstrap/db.go index 9038afda..fc52ff23 100644 --- a/internal/bootstrap/db.go +++ b/internal/bootstrap/db.go @@ -8,13 +8,13 @@ import ( "gorm.io/gorm" "gorm.io/gorm/logger" - "github.com/TheTNB/panel/internal/app" "github.com/TheTNB/panel/internal/migration" + "github.com/TheTNB/panel/internal/panel" ) func initOrm() { logLevel := logger.Error - if app.Conf.Bool("database.debug") { + if panel.Conf.Bool("database.debug") { logLevel = logger.Info } // You can use any other database, like MySQL or PostgreSQL. @@ -26,11 +26,11 @@ func initOrm() { if err != nil { panic(fmt.Sprintf("failed to connect database: %v", err)) } - app.Orm = db + panel.Orm = db } func runMigrate() { - migrator := gormigrate.New(app.Orm, &gormigrate.Options{ + migrator := gormigrate.New(panel.Orm, &gormigrate.Options{ UseTransaction: true, // Note: MySQL not support DDL transaction ValidateUnknownMigrations: true, }, migration.Migrations) diff --git a/internal/bootstrap/http.go b/internal/bootstrap/http.go index 5539b480..a9dd876d 100644 --- a/internal/bootstrap/http.go +++ b/internal/bootstrap/http.go @@ -6,25 +6,25 @@ import ( "github.com/go-chi/chi/v5" - "github.com/TheTNB/panel/internal/app" "github.com/TheTNB/panel/internal/http/middleware" + "github.com/TheTNB/panel/internal/panel" "github.com/TheTNB/panel/internal/plugin" "github.com/TheTNB/panel/internal/route" ) func initHttp() { - app.Http = chi.NewRouter() + panel.Http = chi.NewRouter() // add middleware - app.Http.Use(middleware.GlobalMiddleware()...) + panel.Http.Use(middleware.GlobalMiddleware()...) // add route - route.Http(app.Http) - plugin.Boot(app.Http) + route.Http(panel.Http) + plugin.Boot(panel.Http) server := &http.Server{ - Addr: app.Conf.MustString("http.address"), - Handler: http.AllowQuerySemicolons(app.Http), + Addr: panel.Conf.MustString("http.address"), + Handler: http.AllowQuerySemicolons(panel.Http), MaxHeaderBytes: 2048 << 20, } if err := server.ListenAndServe(); err != nil { diff --git a/internal/bootstrap/queue.go b/internal/bootstrap/queue.go index 69fec45f..8ec02ebd 100644 --- a/internal/bootstrap/queue.go +++ b/internal/bootstrap/queue.go @@ -1,11 +1,11 @@ package bootstrap import ( - "github.com/TheTNB/panel/internal/app" + "github.com/TheTNB/panel/internal/panel" "github.com/TheTNB/panel/pkg/queue" ) func initQueue() { - app.Queue = queue.New() - go app.Queue.Run() + panel.Queue = queue.New() + go panel.Queue.Run() } diff --git a/internal/bootstrap/session.go b/internal/bootstrap/session.go index aeeb8416..ee767ce1 100644 --- a/internal/bootstrap/session.go +++ b/internal/bootstrap/session.go @@ -6,13 +6,13 @@ import ( "github.com/go-rat/gormstore" "github.com/go-rat/sessions" - "github.com/TheTNB/panel/internal/app" + "github.com/TheTNB/panel/internal/panel" ) func initSession() { // initialize session manager manager, err := sessions.NewManager(&sessions.ManagerOptions{ - Key: app.Conf.String("app.key"), + Key: panel.Conf.String("app.key"), Lifetime: 120, GcInterval: 30, DisableDefaultDriver: true, @@ -22,10 +22,10 @@ func initSession() { } // extend gorm store driver - store := gormstore.New(app.Orm) + store := gormstore.New(panel.Orm) if err = manager.Extend("default", store); err != nil { panic(fmt.Sprintf("failed to extend session manager: %v", err)) } - app.Session = manager + panel.Session = manager } diff --git a/internal/bootstrap/validator.go b/internal/bootstrap/validator.go index 2427fb1c..8841903d 100644 --- a/internal/bootstrap/validator.go +++ b/internal/bootstrap/validator.go @@ -8,7 +8,7 @@ import ( "github.com/go-playground/validator/v10" "github.com/go-playground/validator/v10/translations/zh" - "github.com/TheTNB/panel/internal/app" + "github.com/TheTNB/panel/internal/panel" ) func initValidator() { @@ -21,6 +21,6 @@ func initValidator() { panic(fmt.Sprintf("failed to register validator translations: %v", err)) } - app.Translator = &trans - app.Validator = validate + panel.Translator = &trans + panel.Validator = validate } diff --git a/internal/data/cert.go b/internal/data/cert.go index 208f311c..d38b1959 100644 --- a/internal/data/cert.go +++ b/internal/data/cert.go @@ -7,9 +7,9 @@ import ( "strings" "time" - "github.com/TheTNB/panel/internal/app" "github.com/TheTNB/panel/internal/biz" "github.com/TheTNB/panel/internal/http/request" + "github.com/TheTNB/panel/internal/panel" "github.com/TheTNB/panel/pkg/acme" "github.com/TheTNB/panel/pkg/io" "github.com/TheTNB/panel/pkg/shell" @@ -30,13 +30,13 @@ func NewCertRepo() biz.CertRepo { func (r *certRepo) List(page, limit uint) ([]*biz.Cert, int64, error) { var certs []*biz.Cert var total int64 - err := app.Orm.Model(&biz.Cert{}).Order("id desc").Count(&total).Offset(int((page - 1) * limit)).Limit(int(limit)).Find(&certs).Error + err := panel.Orm.Model(&biz.Cert{}).Order("id desc").Count(&total).Offset(int((page - 1) * limit)).Limit(int(limit)).Find(&certs).Error return certs, total, err } func (r *certRepo) Get(id uint) (*biz.Cert, error) { cert := new(biz.Cert) - err := app.Orm.Model(&biz.Cert{}).Where("id = ?", id).First(cert).Error + err := panel.Orm.Model(&biz.Cert{}).Where("id = ?", id).First(cert).Error return cert, err } @@ -49,14 +49,14 @@ func (r *certRepo) Create(req *request.CertCreate) (*biz.Cert, error) { Domains: req.Domains, AutoRenew: req.AutoRenew, } - if err := app.Orm.Create(cert).Error; err != nil { + if err := panel.Orm.Create(cert).Error; err != nil { return nil, err } return cert, nil } func (r *certRepo) Update(req *request.CertUpdate) error { - return app.Orm.Model(&biz.Cert{}).Where("id = ?", req.ID).Updates(&biz.Cert{ + return panel.Orm.Model(&biz.Cert{}).Where("id = ?", req.ID).Updates(&biz.Cert{ AccountID: req.AccountID, WebsiteID: req.WebsiteID, DNSID: req.DNSID, @@ -67,7 +67,7 @@ func (r *certRepo) Update(req *request.CertUpdate) error { } func (r *certRepo) Delete(id uint) error { - return app.Orm.Model(&biz.Cert{}).Where("id = ?", id).Delete(&biz.Cert{}).Error + return panel.Orm.Model(&biz.Cert{}).Where("id = ?", id).Delete(&biz.Cert{}).Error } func (r *certRepo) ObtainAuto(id uint) (*acme.Certificate, error) { @@ -92,7 +92,7 @@ func (r *certRepo) ObtainAuto(id uint) (*acme.Certificate, error) { return nil, errors.New("通配符域名无法使用 HTTP 验证") } } - conf := fmt.Sprintf("%s/server/vhost/acme/%s.conf", app.Root, cert.Website.Name) + conf := fmt.Sprintf("%s/server/vhost/acme/%s.conf", panel.Root, cert.Website.Name) client.UseHTTP(conf, cert.Website.Path) } } @@ -105,7 +105,7 @@ func (r *certRepo) ObtainAuto(id uint) (*acme.Certificate, error) { cert.CertURL = ssl.URL cert.Cert = string(ssl.ChainPEM) cert.Key = string(ssl.PrivateKey) - if err = app.Orm.Save(cert).Error; err != nil { + if err = panel.Orm.Save(cert).Error; err != nil { return nil, err } @@ -134,7 +134,7 @@ func (r *certRepo) ObtainManual(id uint) (*acme.Certificate, error) { cert.CertURL = ssl.URL cert.Cert = string(ssl.ChainPEM) cert.Key = string(ssl.PrivateKey) - if err = app.Orm.Save(cert).Error; err != nil { + if err = panel.Orm.Save(cert).Error; err != nil { return nil, err } @@ -184,7 +184,7 @@ func (r *certRepo) Renew(id uint) (*acme.Certificate, error) { cert.CertURL = ssl.URL cert.Cert = string(ssl.ChainPEM) cert.Key = string(ssl.PrivateKey) - if err = app.Orm.Save(cert).Error; err != nil { + if err = panel.Orm.Save(cert).Error; err != nil { return nil, err } @@ -236,10 +236,10 @@ func (r *certRepo) Deploy(ID, WebsiteID uint) error { return err } - if err = io.Write(fmt.Sprintf("%s/server/vhost/ssl/%s.pem", app.Root, website.Name), cert.Cert, 0644); err != nil { + if err = io.Write(fmt.Sprintf("%s/server/vhost/ssl/%s.pem", panel.Root, website.Name), cert.Cert, 0644); err != nil { return err } - if err = io.Write(fmt.Sprintf("%s/server/vhost/ssl/%s.key", app.Root, website.Name), cert.Key, 0644); err != nil { + if err = io.Write(fmt.Sprintf("%s/server/vhost/ssl/%s.key", panel.Root, website.Name), cert.Key, 0644); err != nil { return err } if err = systemctl.Reload("openresty"); err != nil { diff --git a/internal/data/cert_account.go b/internal/data/cert_account.go index d43e5e0b..c8229b11 100644 --- a/internal/data/cert_account.go +++ b/internal/data/cert_account.go @@ -7,9 +7,9 @@ import ( "github.com/go-resty/resty/v2" - "github.com/TheTNB/panel/internal/app" "github.com/TheTNB/panel/internal/biz" "github.com/TheTNB/panel/internal/http/request" + "github.com/TheTNB/panel/internal/panel" "github.com/TheTNB/panel/pkg/acme" "github.com/TheTNB/panel/pkg/cert" ) @@ -23,13 +23,13 @@ func NewCertAccountRepo() biz.CertAccountRepo { func (r certAccountRepo) List(page, limit uint) ([]*biz.CertAccount, int64, error) { var accounts []*biz.CertAccount var total int64 - err := app.Orm.Model(&biz.CertAccount{}).Order("id desc").Count(&total).Offset(int((page - 1) * limit)).Limit(int(limit)).Find(&accounts).Error + err := panel.Orm.Model(&biz.CertAccount{}).Order("id desc").Count(&total).Offset(int((page - 1) * limit)).Limit(int(limit)).Find(&accounts).Error return accounts, total, err } func (r certAccountRepo) Get(id uint) (*biz.CertAccount, error) { account := new(biz.CertAccount) - err := app.Orm.Model(&biz.CertAccount{}).Where("id = ?", id).First(account).Error + err := panel.Orm.Model(&biz.CertAccount{}).Where("id = ?", id).First(account).Error return account, err } @@ -72,7 +72,7 @@ func (r certAccountRepo) Create(req *request.CertAccountCreate) (*biz.CertAccoun } account.PrivateKey = string(privateKey) - if err = app.Orm.Create(account).Error; err != nil { + if err = panel.Orm.Create(account).Error; err != nil { return nil, err } @@ -121,11 +121,11 @@ func (r certAccountRepo) Update(req *request.CertAccountUpdate) error { } account.PrivateKey = string(privateKey) - return app.Orm.Save(account).Error + return panel.Orm.Save(account).Error } func (r certAccountRepo) Delete(id uint) error { - return app.Orm.Model(&biz.CertAccount{}).Where("id = ?", id).Delete(&biz.CertAccount{}).Error + return panel.Orm.Model(&biz.CertAccount{}).Where("id = ?", id).Delete(&biz.CertAccount{}).Error } // getZeroSSLEAB 获取 ZeroSSL EAB diff --git a/internal/data/cert_dns.go b/internal/data/cert_dns.go index a0c2158e..0b87641d 100644 --- a/internal/data/cert_dns.go +++ b/internal/data/cert_dns.go @@ -1,9 +1,9 @@ package data import ( - "github.com/TheTNB/panel/internal/app" "github.com/TheTNB/panel/internal/biz" "github.com/TheTNB/panel/internal/http/request" + "github.com/TheTNB/panel/internal/panel" ) type certDNSRepo struct{} @@ -15,13 +15,13 @@ func NewCertDNSRepo() biz.CertDNSRepo { func (r certDNSRepo) List(page, limit uint) ([]*biz.CertDNS, int64, error) { var certDNS []*biz.CertDNS var total int64 - err := app.Orm.Model(&biz.CertDNS{}).Order("id desc").Count(&total).Offset(int((page - 1) * limit)).Limit(int(limit)).Find(&certDNS).Error + err := panel.Orm.Model(&biz.CertDNS{}).Order("id desc").Count(&total).Offset(int((page - 1) * limit)).Limit(int(limit)).Find(&certDNS).Error return certDNS, total, err } func (r certDNSRepo) Get(id uint) (*biz.CertDNS, error) { certDNS := new(biz.CertDNS) - err := app.Orm.Model(&biz.CertDNS{}).Where("id = ?", id).First(certDNS).Error + err := panel.Orm.Model(&biz.CertDNS{}).Where("id = ?", id).First(certDNS).Error return certDNS, err } @@ -32,7 +32,7 @@ func (r certDNSRepo) Create(req *request.CertDNSCreate) (*biz.CertDNS, error) { Data: req.Data, } - if err := app.Orm.Create(certDNS).Error; err != nil { + if err := panel.Orm.Create(certDNS).Error; err != nil { return nil, err } @@ -49,9 +49,9 @@ func (r certDNSRepo) Update(req *request.CertDNSUpdate) error { cert.Type = req.Type cert.Data = req.Data - return app.Orm.Save(cert).Error + return panel.Orm.Save(cert).Error } func (r certDNSRepo) Delete(id uint) error { - return app.Orm.Model(&biz.CertDNS{}).Where("id = ?", id).Delete(&biz.CertDNS{}).Error + return panel.Orm.Model(&biz.CertDNS{}).Where("id = ?", id).Delete(&biz.CertDNS{}).Error } diff --git a/internal/data/cron.go b/internal/data/cron.go index df31f2b3..86f2a735 100644 --- a/internal/data/cron.go +++ b/internal/data/cron.go @@ -9,9 +9,9 @@ import ( "github.com/golang-module/carbon/v2" - "github.com/TheTNB/panel/internal/app" "github.com/TheTNB/panel/internal/biz" "github.com/TheTNB/panel/internal/http/request" + "github.com/TheTNB/panel/internal/panel" "github.com/TheTNB/panel/pkg/io" "github.com/TheTNB/panel/pkg/os" "github.com/TheTNB/panel/pkg/shell" @@ -31,7 +31,7 @@ func NewCronRepo() biz.CronRepo { func (r *cronRepo) Count() (int64, error) { var count int64 - if err := app.Orm.Model(&biz.Cron{}).Count(&count).Error; err != nil { + if err := panel.Orm.Model(&biz.Cron{}).Count(&count).Error; err != nil { return 0, err } @@ -41,13 +41,13 @@ func (r *cronRepo) Count() (int64, error) { func (r *cronRepo) List(page, limit uint) ([]*biz.Cron, int64, error) { var cron []*biz.Cron var total int64 - err := app.Orm.Model(&biz.Cert{}).Order("id desc").Count(&total).Offset(int((page - 1) * limit)).Limit(int(limit)).Find(&cron).Error + err := panel.Orm.Model(&biz.Cert{}).Order("id desc").Count(&total).Offset(int((page - 1) * limit)).Limit(int(limit)).Find(&cron).Error return cron, total, err } func (r *cronRepo) Get(id uint) (*biz.Cron, error) { cron := new(biz.Cron) - if err := app.Orm.Where("id = ?", id).First(cron).Error; err != nil { + if err := panel.Orm.Where("id = ?", id).First(cron).Error; err != nil { return nil, err } @@ -96,8 +96,8 @@ panel cutoff ${name} ${save} 2>&1 `, req.Target, req.Save) } - shellDir := fmt.Sprintf("%s/server/cron/", app.Root) - shellLogDir := fmt.Sprintf("%s/server/cron/logs/", app.Root) + shellDir := fmt.Sprintf("%s/server/cron/", panel.Root) + shellLogDir := fmt.Sprintf("%s/server/cron/logs/", panel.Root) if !io.Exists(shellDir) { return errors.New("计划任务目录不存在") } @@ -120,7 +120,7 @@ panel cutoff ${name} ${save} 2>&1 cron.Shell = shellDir + shellFile + ".sh" cron.Log = shellLogDir + shellFile + ".log" - if err := app.Orm.Create(cron).Error; err != nil { + if err := panel.Orm.Create(cron).Error; err != nil { return err } if err := r.addToSystem(cron); err != nil { @@ -146,7 +146,7 @@ func (r *cronRepo) Update(req *request.CronUpdate) error { cron.Time = req.Time cron.Name = req.Name - if err = app.Orm.Save(cron).Error; err != nil { + if err = panel.Orm.Save(cron).Error; err != nil { return err } @@ -182,7 +182,7 @@ func (r *cronRepo) Delete(id uint) error { return err } - return app.Orm.Delete(cron).Error + return panel.Orm.Delete(cron).Error } func (r *cronRepo) Status(id uint, status bool) error { @@ -200,7 +200,7 @@ func (r *cronRepo) Status(id uint, status bool) error { cron.Status = status - return app.Orm.Save(cron).Error + return panel.Orm.Save(cron).Error } func (r *cronRepo) Log(id uint) (string, error) { diff --git a/internal/data/monitor.go b/internal/data/monitor.go index 48c53048..5d677b89 100644 --- a/internal/data/monitor.go +++ b/internal/data/monitor.go @@ -6,9 +6,9 @@ import ( "github.com/golang-module/carbon/v2" "github.com/spf13/cast" - "github.com/TheTNB/panel/internal/app" "github.com/TheTNB/panel/internal/biz" "github.com/TheTNB/panel/internal/http/request" + "github.com/TheTNB/panel/internal/panel" ) type monitorRepo struct { @@ -50,12 +50,12 @@ func (r monitorRepo) UpdateSetting(setting *request.MonitorSetting) error { } func (r monitorRepo) Clear() error { - return app.Orm.Delete(&biz.Monitor{}).Error + return panel.Orm.Delete(&biz.Monitor{}).Error } func (r monitorRepo) List(start, end carbon.Carbon) ([]*biz.Monitor, error) { var monitors []*biz.Monitor - if err := app.Orm.Where("created_at BETWEEN ? AND ?", start, end).Find(&monitors).Error; err != nil { + if err := panel.Orm.Where("created_at BETWEEN ? AND ?", start, end).Find(&monitors).Error; err != nil { return nil, err } diff --git a/internal/data/plugin.go b/internal/data/plugin.go index b3dbe655..6cfe201c 100644 --- a/internal/data/plugin.go +++ b/internal/data/plugin.go @@ -4,9 +4,9 @@ import ( "errors" "fmt" - "github.com/TheTNB/panel/internal/app" "github.com/TheTNB/panel/internal/biz" "github.com/TheTNB/panel/internal/job" + "github.com/TheTNB/panel/internal/panel" "github.com/TheTNB/panel/pkg/pluginloader" "github.com/TheTNB/panel/pkg/types" ) @@ -27,7 +27,7 @@ func (r *pluginRepo) All() []*types.Plugin { func (r *pluginRepo) Installed() ([]*biz.Plugin, error) { var plugins []*biz.Plugin - if err := app.Orm.Find(&plugins).Error; err != nil { + if err := panel.Orm.Find(&plugins).Error; err != nil { return nil, err } @@ -41,7 +41,7 @@ func (r *pluginRepo) Get(slug string) (*types.Plugin, error) { func (r *pluginRepo) GetInstalled(slug string) (*biz.Plugin, error) { plugin := new(biz.Plugin) - if err := app.Orm.Where("slug = ?", slug).First(plugin).Error; err != nil { + if err := panel.Orm.Where("slug = ?", slug).First(plugin).Error; err != nil { return nil, err } @@ -50,7 +50,7 @@ func (r *pluginRepo) GetInstalled(slug string) (*biz.Plugin, error) { func (r *pluginRepo) GetInstalledAll(cond ...string) ([]*biz.Plugin, error) { var plugins []*biz.Plugin - if err := app.Orm.Where(cond).Find(&plugins).Error; err != nil { + if err := panel.Orm.Where(cond).Find(&plugins).Error; err != nil { return nil, err } @@ -59,7 +59,7 @@ func (r *pluginRepo) GetInstalledAll(cond ...string) ([]*biz.Plugin, error) { func (r *pluginRepo) IsInstalled(cond ...string) (bool, error) { var count int64 - if err := app.Orm.Model(&biz.Plugin{}).Where(cond).Count(&count).Error; err != nil { + if err := panel.Orm.Model(&biz.Plugin{}).Where(cond).Count(&count).Error; err != nil { return false, err } @@ -106,10 +106,10 @@ func (r *pluginRepo) Install(slug string) error { task.Shell = fmt.Sprintf("%s >> /tmp/%s.log 2>&1", plugin.Install, plugin.Slug) task.Log = "/tmp/" + plugin.Slug + ".log" - if err = app.Orm.Create(task).Error; err != nil { + if err = panel.Orm.Create(task).Error; err != nil { return err } - err = app.Queue.Push(job.NewProcessTask(r.taskRepo), []any{ + err = panel.Queue.Push(job.NewProcessTask(r.taskRepo), []any{ task.ID, }) @@ -155,10 +155,10 @@ func (r *pluginRepo) Uninstall(slug string) error { task.Shell = fmt.Sprintf("%s >> /tmp/%s.log 2>&1", plugin.Uninstall, plugin.Slug) task.Log = "/tmp/" + plugin.Slug + ".log" - if err = app.Orm.Create(task).Error; err != nil { + if err = panel.Orm.Create(task).Error; err != nil { return err } - err = app.Queue.Push(job.NewProcessTask(r.taskRepo), []any{ + err = panel.Queue.Push(job.NewProcessTask(r.taskRepo), []any{ task.ID, }) @@ -204,10 +204,10 @@ func (r *pluginRepo) Update(slug string) error { task.Shell = fmt.Sprintf("%s >> /tmp/%s.log 2>&1", plugin.Update, plugin.Slug) task.Log = "/tmp/" + plugin.Slug + ".log" - if err = app.Orm.Create(task).Error; err != nil { + if err = panel.Orm.Create(task).Error; err != nil { return err } - err = app.Queue.Push(job.NewProcessTask(r.taskRepo), []any{ + err = panel.Queue.Push(job.NewProcessTask(r.taskRepo), []any{ task.ID, }) @@ -222,5 +222,5 @@ func (r *pluginRepo) UpdateShow(slug string, show bool) error { plugin.Show = show - return app.Orm.Save(plugin).Error + return panel.Orm.Save(plugin).Error } diff --git a/internal/data/setting.go b/internal/data/setting.go index 42b0b68e..94a668ef 100644 --- a/internal/data/setting.go +++ b/internal/data/setting.go @@ -1,9 +1,9 @@ package data import ( - "github.com/TheTNB/panel/internal/app" "github.com/TheTNB/panel/internal/biz" "github.com/TheTNB/panel/internal/http/request" + "github.com/TheTNB/panel/internal/panel" ) type settingRepo struct{} @@ -14,7 +14,7 @@ func NewSettingRepo() biz.SettingRepo { func (r *settingRepo) Get(key biz.SettingKey, defaultValue ...string) (string, error) { setting := new(biz.Setting) - if err := app.Orm.Where("key = ?", key).First(setting).Error; err != nil { + if err := panel.Orm.Where("key = ?", key).First(setting).Error; err != nil { return "", err } @@ -27,17 +27,17 @@ func (r *settingRepo) Get(key biz.SettingKey, defaultValue ...string) (string, e func (r *settingRepo) Set(key biz.SettingKey, value string) error { setting := new(biz.Setting) - if err := app.Orm.Where("key = ?", key).First(setting).Error; err != nil { + if err := panel.Orm.Where("key = ?", key).First(setting).Error; err != nil { return err } setting.Value = value - return app.Orm.Save(setting).Error + return panel.Orm.Save(setting).Error } func (r *settingRepo) Delete(key biz.SettingKey) error { setting := new(biz.Setting) - if err := app.Orm.Where("key = ?", key).Delete(setting).Error; err != nil { + if err := panel.Orm.Where("key = ?", key).Delete(setting).Error; err != nil { return err } @@ -46,7 +46,7 @@ func (r *settingRepo) Delete(key biz.SettingKey) error { func (r *settingRepo) GetPanelSetting() (*request.PanelSetting, error) { setting := new(biz.Setting) - if err := app.Orm.Where("key = ?", biz.SettingKeyName).First(setting).Error; err != nil { + if err := panel.Orm.Where("key = ?", biz.SettingKeyName).First(setting).Error; err != nil { return nil, err } diff --git a/internal/data/task.go b/internal/data/task.go index 82fdc5bd..516647a2 100644 --- a/internal/data/task.go +++ b/internal/data/task.go @@ -1,8 +1,8 @@ package data import ( - "github.com/TheTNB/panel/internal/app" "github.com/TheTNB/panel/internal/biz" + "github.com/TheTNB/panel/internal/panel" ) type taskRepo struct{} @@ -13,27 +13,27 @@ func NewTaskRepo() biz.TaskRepo { func (r *taskRepo) HasRunningTask() bool { var count int64 - app.Orm.Model(&biz.Task{}).Where("status = ?", biz.TaskStatusRunning).Or("status = ?", biz.TaskStatusWaiting).Count(&count) + panel.Orm.Model(&biz.Task{}).Where("status = ?", biz.TaskStatusRunning).Or("status = ?", biz.TaskStatusWaiting).Count(&count) return count > 0 } func (r *taskRepo) List(page, limit uint) ([]*biz.Task, int64, error) { var tasks []*biz.Task var total int64 - err := app.Orm.Model(&biz.Task{}).Order("id desc").Count(&total).Offset(int((page - 1) * limit)).Limit(int(limit)).Find(&tasks).Error + err := panel.Orm.Model(&biz.Task{}).Order("id desc").Count(&total).Offset(int((page - 1) * limit)).Limit(int(limit)).Find(&tasks).Error return tasks, total, err } func (r *taskRepo) Get(id uint) (*biz.Task, error) { task := new(biz.Task) - err := app.Orm.Model(&biz.Task{}).Where("id = ?", id).First(task).Error + err := panel.Orm.Model(&biz.Task{}).Where("id = ?", id).First(task).Error return task, err } func (r *taskRepo) Delete(id uint) error { - return app.Orm.Model(&biz.Task{}).Where("id = ?", id).Delete(&biz.Task{}).Error + return panel.Orm.Model(&biz.Task{}).Where("id = ?", id).Delete(&biz.Task{}).Error } func (r *taskRepo) UpdateStatus(id uint, status biz.TaskStatus) error { - return app.Orm.Model(&biz.Task{}).Where("id = ?", id).Update("status", status).Error + return panel.Orm.Model(&biz.Task{}).Where("id = ?", id).Update("status", status).Error } diff --git a/internal/data/user.go b/internal/data/user.go index 79b45b13..b6f52760 100644 --- a/internal/data/user.go +++ b/internal/data/user.go @@ -6,8 +6,8 @@ import ( "github.com/go-rat/utils/hash" "gorm.io/gorm" - "github.com/TheTNB/panel/internal/app" "github.com/TheTNB/panel/internal/biz" + "github.com/TheTNB/panel/internal/panel" ) type userRepo struct { @@ -22,7 +22,7 @@ func NewUserRepo() biz.UserRepo { func (r *userRepo) CheckPassword(username, password string) (*biz.User, error) { user := new(biz.User) - if err := app.Orm.Where("username = ?", username).First(user).Error; err != nil { + if err := panel.Orm.Where("username = ?", username).First(user).Error; err != nil { if errors.Is(err, gorm.ErrRecordNotFound) { return nil, errors.New("用户名或密码错误") } else { @@ -39,7 +39,7 @@ func (r *userRepo) CheckPassword(username, password string) (*biz.User, error) { func (r *userRepo) Get(id uint) (*biz.User, error) { user := new(biz.User) - if err := app.Orm.First(user, id).Error; err != nil { + if err := panel.Orm.First(user, id).Error; err != nil { return nil, err } @@ -47,5 +47,5 @@ func (r *userRepo) Get(id uint) (*biz.User, error) { } func (r *userRepo) Save(user *biz.User) error { - return app.Orm.Save(user).Error + return panel.Orm.Save(user).Error } diff --git a/internal/data/website.go b/internal/data/website.go index 037b27c3..4e68f67d 100644 --- a/internal/data/website.go +++ b/internal/data/website.go @@ -11,10 +11,10 @@ import ( "github.com/spf13/cast" - "github.com/TheTNB/panel/internal/app" "github.com/TheTNB/panel/internal/biz" "github.com/TheTNB/panel/internal/embed" "github.com/TheTNB/panel/internal/http/request" + "github.com/TheTNB/panel/internal/panel" "github.com/TheTNB/panel/pkg/cert" "github.com/TheTNB/panel/pkg/db" "github.com/TheTNB/panel/pkg/io" @@ -35,10 +35,10 @@ func NewWebsiteRepo() biz.WebsiteRepo { } func (r *websiteRepo) UpdateDefaultConfig(req *request.WebsiteDefaultConfig) error { - if err := io.Write(filepath.Join(app.Root, "server/openresty/html/index.html"), req.Index, 0644); err != nil { + if err := io.Write(filepath.Join(panel.Root, "server/openresty/html/index.html"), req.Index, 0644); err != nil { return err } - if err := io.Write(filepath.Join(app.Root, "server/openresty/html/stop.html"), req.Stop, 0644); err != nil { + if err := io.Write(filepath.Join(panel.Root, "server/openresty/html/stop.html"), req.Stop, 0644); err != nil { return err } @@ -47,7 +47,7 @@ func (r *websiteRepo) UpdateDefaultConfig(req *request.WebsiteDefaultConfig) err func (r *websiteRepo) Count() (int64, error) { var count int64 - if err := app.Orm.Model(&biz.Website{}).Count(&count).Error; err != nil { + if err := panel.Orm.Model(&biz.Website{}).Count(&count).Error; err != nil { return 0, err } @@ -56,11 +56,11 @@ func (r *websiteRepo) Count() (int64, error) { func (r *websiteRepo) Get(id uint) (*types.WebsiteSetting, error) { website := new(biz.Website) - if err := app.Orm.Where("id", id).First(website).Error; err != nil { + if err := panel.Orm.Where("id", id).First(website).Error; err != nil { return nil, err } - config, err := io.Read(filepath.Join(app.Root, "server/vhost", website.Name+".conf")) + config, err := io.Read(filepath.Join(panel.Root, "server/vhost", website.Name+".conf")) if err != nil { return nil, err } @@ -120,9 +120,9 @@ func (r *websiteRepo) Get(id uint) (*types.WebsiteSetting, error) { } } - crt, _ := io.Read(filepath.Join(app.Root, "server/vhost/ssl", website.Name+".pem")) + crt, _ := io.Read(filepath.Join(panel.Root, "server/vhost/ssl", website.Name+".pem")) setting.SSLCertificate = crt - key, _ := io.Read(filepath.Join(app.Root, "server/vhost/ssl", website.Name+".key")) + key, _ := io.Read(filepath.Join(panel.Root, "server/vhost/ssl", website.Name+".key")) setting.SSLCertificateKey = key if setting.SSL { ssl := str.Cut(config, "# ssl标记位开始", "# ssl标记位结束") @@ -155,9 +155,9 @@ func (r *websiteRepo) Get(id uint) (*types.WebsiteSetting, error) { setting.WafCache = match[1] } - rewrite, _ := io.Read(filepath.Join(app.Root, "server/vhost/rewrite", website.Name+".conf")) + rewrite, _ := io.Read(filepath.Join(panel.Root, "server/vhost/rewrite", website.Name+".conf")) setting.Rewrite = rewrite - log, _ := shell.Execf(`tail -n 100 '%s/wwwlogs/%s.log'`, app.Root, website.Name) + log, _ := shell.Execf(`tail -n 100 '%s/wwwlogs/%s.log'`, panel.Root, website.Name) setting.Log = log return setting, err @@ -165,7 +165,7 @@ func (r *websiteRepo) Get(id uint) (*types.WebsiteSetting, error) { func (r *websiteRepo) GetByName(name string) (*types.WebsiteSetting, error) { website := new(biz.Website) - if err := app.Orm.Where("name", name).First(website).Error; err != nil { + if err := panel.Orm.Where("name", name).First(website).Error; err != nil { return nil, err } @@ -177,11 +177,11 @@ func (r *websiteRepo) List(page, limit uint) ([]*biz.Website, int64, error) { var websites []*biz.Website var total int64 - if err := app.Orm.Model(&biz.Website{}).Count(&total).Error; err != nil { + if err := panel.Orm.Model(&biz.Website{}).Count(&total).Error; err != nil { return nil, 0, err } - if err := app.Orm.Offset(int((page - 1) * limit)).Limit(int(limit)).Find(&websites).Error; err != nil { + if err := panel.Orm.Offset(int((page - 1) * limit)).Limit(int(limit)).Find(&websites).Error; err != nil { return nil, 0, err } @@ -196,7 +196,7 @@ func (r *websiteRepo) Create(req *request.WebsiteCreate) (*biz.Website, error) { PHP: cast.ToInt(req.PHP), SSL: false, } - if err := app.Orm.Create(w).Error; err != nil { + if err := panel.Orm.Create(w).Error; err != nil { return nil, err } @@ -302,21 +302,21 @@ server access_log %s/wwwlogs/%s.log; error_log %s/wwwlogs/%s.log; } -`, portList, domainList, req.Path, req.PHP, app.Root, app.Root, req.Name, app.Root, req.Name, app.Root, req.Name, app.Root, req.Name) +`, portList, domainList, req.Path, req.PHP, panel.Root, panel.Root, req.Name, panel.Root, req.Name, panel.Root, req.Name, panel.Root, req.Name) - if err = io.Write(filepath.Join(app.Root, "server/vhost", req.Name+".conf"), nginxConf, 0644); err != nil { + if err = io.Write(filepath.Join(panel.Root, "server/vhost", req.Name+".conf"), nginxConf, 0644); err != nil { return nil, err } - if err = io.Write(filepath.Join(app.Root, "server/vhost/rewrite", req.Name+".conf"), "", 0644); err != nil { + if err = io.Write(filepath.Join(panel.Root, "server/vhost/rewrite", req.Name+".conf"), "", 0644); err != nil { return nil, err } - if err = io.Write(filepath.Join(app.Root, "server/vhost/acme", req.Name+".conf"), "", 0644); err != nil { + if err = io.Write(filepath.Join(panel.Root, "server/vhost/acme", req.Name+".conf"), "", 0644); err != nil { return nil, err } - if err = io.Write(filepath.Join(app.Root, "server/vhost/ssl", req.Name+".pem"), "", 0644); err != nil { + if err = io.Write(filepath.Join(panel.Root, "server/vhost/ssl", req.Name+".pem"), "", 0644); err != nil { return nil, err } - if err = io.Write(filepath.Join(app.Root, "server/vhost/ssl", req.Name+".key"), "", 0644); err != nil { + if err = io.Write(filepath.Join(panel.Root, "server/vhost/ssl", req.Name+".key"), "", 0644); err != nil { return nil, err } @@ -354,7 +354,7 @@ server _, _ = shell.Execf(`echo "ALTER DATABASE '%s' OWNER TO '%s';" | su - postgres -c "psql"`, req.DBName, req.DBUser) _, _ = shell.Execf(`echo "GRANT ALL PRIVILEGES ON DATABASE '%s' TO '%s';" | su - postgres -c "psql"`, req.DBName, req.DBUser) userConfig := "host " + req.DBName + " " + req.DBUser + " 127.0.0.1/32 scram-sha-256" - _, _ = shell.Execf(`echo "`+userConfig+`" >> %s/server/postgresql/data/pg_hba.conf`, app.Root) + _, _ = shell.Execf(`echo "`+userConfig+`" >> %s/server/postgresql/data/pg_hba.conf`, panel.Root) _ = systemctl.Reload("postgresql") } @@ -363,7 +363,7 @@ server func (r *websiteRepo) Update(req *request.WebsiteUpdate) error { website := new(biz.Website) - if err := app.Orm.Where("id", req.ID).First(website).Error; err != nil { + if err := panel.Orm.Where("id", req.ID).First(website).Error; err != nil { return err } @@ -372,12 +372,12 @@ func (r *websiteRepo) Update(req *request.WebsiteUpdate) error { } // 原文 - raw, err := io.Read(filepath.Join(app.Root, "server/vhost", website.Name+".conf")) + raw, err := io.Read(filepath.Join(panel.Root, "server/vhost", website.Name+".conf")) if err != nil { return err } if strings.TrimSpace(raw) != strings.TrimSpace(req.Raw) { - if err = io.Write(filepath.Join(app.Root, "server/vhost", website.Name+".conf"), req.Raw, 0644); err != nil { + if err = io.Write(filepath.Join(panel.Root, "server/vhost", website.Name+".conf"), req.Raw, 0644); err != nil { return err } if err = systemctl.Reload("openresty"); err != nil { @@ -490,7 +490,7 @@ func (r *websiteRepo) Update(req *request.WebsiteUpdate) error { waf_mode %s; waf_cc_deny %s; waf_cache %s; - `, wafStr, app.Root, req.WafMode, req.WafCcDeny, req.WafCache) + `, wafStr, panel.Root, req.WafMode, req.WafCcDeny, req.WafCache) wafConfigOld := str.Cut(raw, "# waf标记位开始", "# waf标记位结束") if len(strings.TrimSpace(wafConfigOld)) != 0 { raw = strings.Replace(raw, wafConfigOld, "", -1) @@ -498,10 +498,10 @@ func (r *websiteRepo) Update(req *request.WebsiteUpdate) error { raw = strings.Replace(raw, "# waf标记位开始", wafConfig, -1) // SSL - if err = io.Write(filepath.Join(app.Root, "server/vhost/ssl", website.Name+".pem"), req.SSLCertificate, 0644); err != nil { + if err = io.Write(filepath.Join(panel.Root, "server/vhost/ssl", website.Name+".pem"), req.SSLCertificate, 0644); err != nil { return err } - if err = io.Write(filepath.Join(app.Root, "server/vhost/ssl", website.Name+".key"), req.SSLCertificateKey, 0644); err != nil { + if err = io.Write(filepath.Join(panel.Root, "server/vhost/ssl", website.Name+".key"), req.SSLCertificateKey, 0644); err != nil { return err } website.SSL = req.SSL @@ -521,7 +521,7 @@ func (r *websiteRepo) Update(req *request.WebsiteUpdate) error { ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384; ssl_prefer_server_ciphers off; ssl_early_data on; - `, app.Root, website.Name, app.Root, website.Name) + `, panel.Root, website.Name, panel.Root, website.Name) if req.HTTPRedirect { sslConfig += `# http重定向标记位开始 if ($server_port !~ 443){ @@ -567,14 +567,14 @@ func (r *websiteRepo) Update(req *request.WebsiteUpdate) error { } } - if err = app.Orm.Save(website).Error; err != nil { + if err = panel.Orm.Save(website).Error; err != nil { return err } - if err = io.Write(filepath.Join(app.Root, "server/vhost", website.Name+".conf"), raw, 0644); err != nil { + if err = io.Write(filepath.Join(panel.Root, "server/vhost", website.Name+".conf"), raw, 0644); err != nil { return err } - if err = io.Write(filepath.Join(app.Root, "server/vhost/rewrite", website.Name+".conf"), req.Rewrite, 0644); err != nil { + if err = io.Write(filepath.Join(panel.Root, "server/vhost/rewrite", website.Name+".conf"), req.Rewrite, 0644); err != nil { return err } @@ -588,7 +588,7 @@ func (r *websiteRepo) Update(req *request.WebsiteUpdate) error { func (r *websiteRepo) Delete(req *request.WebsiteDelete) error { website := new(biz.Website) - if err := app.Orm.Preload("Cert").Where("id", req.ID).First(website).Error; err != nil { + if err := panel.Orm.Preload("Cert").Where("id", req.ID).First(website).Error; err != nil { return err } @@ -596,15 +596,15 @@ func (r *websiteRepo) Delete(req *request.WebsiteDelete) error { return errors.New("网站" + website.Name + "已绑定SSL证书,请先删除证书") } - if err := app.Orm.Delete(website).Error; err != nil { + if err := panel.Orm.Delete(website).Error; err != nil { return err } - _ = io.Remove(filepath.Join(app.Root, "server/vhost", website.Name+".conf")) - _ = io.Remove(filepath.Join(app.Root, "server/vhost/rewrite", website.Name+".conf")) - _ = io.Remove(filepath.Join(app.Root, "server/vhost/acme", website.Name+".conf")) - _ = io.Remove(filepath.Join(app.Root, "server/vhost/ssl", website.Name+".pem")) - _ = io.Remove(filepath.Join(app.Root, "server/vhost/ssl", website.Name+".key")) + _ = io.Remove(filepath.Join(panel.Root, "server/vhost", website.Name+".conf")) + _ = io.Remove(filepath.Join(panel.Root, "server/vhost/rewrite", website.Name+".conf")) + _ = io.Remove(filepath.Join(panel.Root, "server/vhost/acme", website.Name+".conf")) + _ = io.Remove(filepath.Join(panel.Root, "server/vhost/ssl", website.Name+".pem")) + _ = io.Remove(filepath.Join(panel.Root, "server/vhost/ssl", website.Name+".key")) if req.Path { _ = io.Remove(website.Path) @@ -634,33 +634,33 @@ func (r *websiteRepo) Delete(req *request.WebsiteDelete) error { func (r *websiteRepo) ClearLog(id uint) error { website := new(biz.Website) - if err := app.Orm.Where("id", id).First(website).Error; err != nil { + if err := panel.Orm.Where("id", id).First(website).Error; err != nil { return err } - _, err := shell.Execf(`echo "" > %s/wwwlogs/%s.log`, app.Root, website.Name) + _, err := shell.Execf(`echo "" > %s/wwwlogs/%s.log`, panel.Root, website.Name) return err } func (r *websiteRepo) UpdateRemark(id uint, remark string) error { website := new(biz.Website) - if err := app.Orm.Where("id", id).First(website).Error; err != nil { + if err := panel.Orm.Where("id", id).First(website).Error; err != nil { return err } website.Remark = remark - return app.Orm.Save(website).Error + return panel.Orm.Save(website).Error } func (r *websiteRepo) ResetConfig(id uint) error { website := new(biz.Website) - if err := app.Orm.Where("id", id).First(&website).Error; err != nil { + if err := panel.Orm.Where("id", id).First(&website).Error; err != nil { return err } website.Status = true website.SSL = false - if err := app.Orm.Save(website).Error; err != nil { + if err := panel.Orm.Save(website).Error; err != nil { return err } @@ -724,14 +724,14 @@ server error_log %s/wwwlogs/%s.log; } -`, website.Path, website.PHP, app.Root, app.Root, website.Name, app.Root, website.Name, app.Root, website.Name, app.Root, website.Name) - if err := io.Write(filepath.Join(app.Root, "server/vhost", website.Name+".conf"), raw, 0644); err != nil { +`, website.Path, website.PHP, panel.Root, panel.Root, website.Name, panel.Root, website.Name, panel.Root, website.Name, panel.Root, website.Name) + if err := io.Write(filepath.Join(panel.Root, "server/vhost", website.Name+".conf"), raw, 0644); err != nil { return nil } - if err := io.Write(filepath.Join(app.Root, "server/vhost/rewrite", website.Name+".conf"), "", 0644); err != nil { + if err := io.Write(filepath.Join(panel.Root, "server/vhost/rewrite", website.Name+".conf"), "", 0644); err != nil { return nil } - if err := io.Write(filepath.Join(app.Root, "server/vhost/acme", website.Name+".conf"), "", 0644); err != nil { + if err := io.Write(filepath.Join(panel.Root, "server/vhost/acme", website.Name+".conf"), "", 0644); err != nil { return nil } if err := systemctl.Reload("openresty"); err != nil { @@ -744,16 +744,16 @@ server func (r *websiteRepo) UpdateStatus(id uint, status bool) error { website := new(biz.Website) - if err := app.Orm.Where("id", id).First(&website).Error; err != nil { + if err := panel.Orm.Where("id", id).First(&website).Error; err != nil { return err } website.Status = status - if err := app.Orm.Save(website).Error; err != nil { + if err := panel.Orm.Save(website).Error; err != nil { return err } - raw, err := io.Read(filepath.Join(app.Root, "server/vhost", website.Name+".conf")) + raw, err := io.Read(filepath.Join(panel.Root, "server/vhost", website.Name+".conf")) if err != nil { return err } @@ -766,7 +766,7 @@ func (r *websiteRepo) UpdateStatus(id uint, status bool) error { root := regexp.MustCompile(`# root\s+(.+);`).FindStringSubmatch(rootConfig) raw = strings.ReplaceAll(raw, rootConfig, fmt.Sprintf(" root %s;\n ", root[1])) } else { - raw = strings.ReplaceAll(raw, rootConfig, fmt.Sprintf(" root %s/server/openresty/html;\n # root %s;\n ", app.Root, match[1])) + raw = strings.ReplaceAll(raw, rootConfig, fmt.Sprintf(" root %s/server/openresty/html;\n # root %s;\n ", panel.Root, match[1])) } } @@ -782,7 +782,7 @@ func (r *websiteRepo) UpdateStatus(id uint, status bool) error { } } - if err = io.Write(filepath.Join(app.Root, "server/vhost", website.Name+".conf"), raw, 0644); err != nil { + if err = io.Write(filepath.Join(panel.Root, "server/vhost", website.Name+".conf"), raw, 0644); err != nil { return err } if err = systemctl.Reload("openresty"); err != nil { diff --git a/internal/http/middleware/middleware.go b/internal/http/middleware/middleware.go index 7c563bf5..af5676ae 100644 --- a/internal/http/middleware/middleware.go +++ b/internal/http/middleware/middleware.go @@ -6,13 +6,13 @@ import ( "github.com/go-chi/chi/v5/middleware" sessionmiddleware "github.com/go-rat/sessions/middleware" - "github.com/TheTNB/panel/internal/app" + "github.com/TheTNB/panel/internal/panel" ) // GlobalMiddleware is a collection of global middleware that will be applied to every request. func GlobalMiddleware() []func(http.Handler) http.Handler { return []func(http.Handler) http.Handler{ - sessionmiddleware.StartSession(app.Session), + sessionmiddleware.StartSession(panel.Session), //middleware.SupressNotFound(app.Http),// bug https://github.com/go-chi/chi/pull/940 middleware.CleanPath, middleware.StripSlashes, diff --git a/internal/http/middleware/must_login.go b/internal/http/middleware/must_login.go index 77bbd4e5..1074921b 100644 --- a/internal/http/middleware/must_login.go +++ b/internal/http/middleware/must_login.go @@ -7,13 +7,13 @@ import ( "github.com/go-rat/chix" "github.com/spf13/cast" - "github.com/TheTNB/panel/internal/app" + "github.com/TheTNB/panel/internal/panel" ) // MustLogin 确保已登录 func MustLogin(next http.Handler) http.Handler { return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { - session, err := app.Session.GetSession(r) + session, err := panel.Session.GetSession(r) if err != nil { render := chix.NewRender(w) render.Status(http.StatusInternalServerError) diff --git a/internal/app/global.go b/internal/panel/global.go similarity index 97% rename from internal/app/global.go rename to internal/panel/global.go index 62ece90c..39fe1a9c 100644 --- a/internal/app/global.go +++ b/internal/panel/global.go @@ -1,4 +1,4 @@ -package app +package panel import ( "github.com/go-chi/chi/v5" diff --git a/internal/service/base.go b/internal/service/base.go index 0409ee03..aa864fba 100644 --- a/internal/service/base.go +++ b/internal/service/base.go @@ -10,8 +10,8 @@ import ( "github.com/go-playground/validator/v10" "github.com/go-rat/chix" - "github.com/TheTNB/panel/internal/app" "github.com/TheTNB/panel/internal/http/request" + "github.com/TheTNB/panel/internal/panel" ) // SuccessResponse 通用成功响应 @@ -87,12 +87,12 @@ func Bind[T any](r *http.Request) (*T, error) { } if reqWithRules, ok := any(req).(request.WithRules); ok { if rules := reqWithRules.Rules(r); rules != nil { - app.Validator.RegisterStructValidationMapRules(rules, req) + panel.Validator.RegisterStructValidationMapRules(rules, req) } } // 验证参数 - err := app.Validator.Struct(req) + err := panel.Validator.Struct(req) if err == nil { return req, nil } @@ -106,7 +106,7 @@ func Bind[T any](r *http.Request) (*T, error) { return nil, errors.New(msg) } } - return nil, errors.New(e.Translate(*app.Translator)) // nolint:staticcheck + return nil, errors.New(e.Translate(*panel.Translator)) // nolint:staticcheck } } diff --git a/internal/service/info.go b/internal/service/info.go index 0f665c88..175e42d4 100644 --- a/internal/service/info.go +++ b/internal/service/info.go @@ -9,9 +9,9 @@ import ( "github.com/go-rat/chix" "github.com/hashicorp/go-version" - "github.com/TheTNB/panel/internal/app" "github.com/TheTNB/panel/internal/biz" "github.com/TheTNB/panel/internal/data" + "github.com/TheTNB/panel/internal/panel" "github.com/TheTNB/panel/pkg/db" "github.com/TheTNB/panel/pkg/shell" "github.com/TheTNB/panel/pkg/tools" @@ -52,7 +52,7 @@ func (s *InfoService) Panel(w http.ResponseWriter, r *http.Request) { Success(w, chix.M{ "name": name, - "language": app.Conf.MustString("app.locale"), + "language": panel.Conf.MustString("app.locale"), }) } @@ -94,7 +94,7 @@ func (s *InfoService) SystemInfo(w http.ResponseWriter, r *http.Request) { Success(w, chix.M{ "os_name": monitorInfo.Host.Platform + " " + monitorInfo.Host.PlatformVersion, "uptime": fmt.Sprintf("%.2f", float64(monitorInfo.Host.Uptime)/86400), - "panel_version": app.Conf.MustString("app.version"), + "panel_version": panel.Conf.MustString("app.version"), }) } @@ -252,7 +252,7 @@ func (s *InfoService) InstalledDbAndPhp(w http.ResponseWriter, r *http.Request) // @Success 200 {object} SuccessResponse // @Router /info/checkUpdate [get] func (s *InfoService) CheckUpdate(w http.ResponseWriter, r *http.Request) { - current := app.Conf.MustString("app.version") + current := panel.Conf.MustString("app.version") latest, err := tools.GetLatestPanelVersion() if err != nil { Error(w, http.StatusInternalServerError, "获取最新版本失败") @@ -290,7 +290,7 @@ func (s *InfoService) CheckUpdate(w http.ResponseWriter, r *http.Request) { // @Success 200 {object} SuccessResponse // @Router /info/updateInfo [get] func (s *InfoService) UpdateInfo(w http.ResponseWriter, r *http.Request) { - current := app.Conf.MustString("app.version") + current := panel.Conf.MustString("app.version") latest, err := tools.GetLatestPanelVersion() if err != nil { Error(w, http.StatusInternalServerError, "获取最新版本失败") @@ -344,7 +344,7 @@ func (s *InfoService) Update(w http.ResponseWriter, r *http.Request) { Error(w, http.StatusInternalServerError, "当前有任务正在执行,禁止更新") return } - if err := app.Orm.Exec("PRAGMA wal_checkpoint(TRUNCATE)").Error; err != nil { + if err := panel.Orm.Exec("PRAGMA wal_checkpoint(TRUNCATE)").Error; err != nil { types.Status = types.StatusFailed Error(w, http.StatusInternalServerError, fmt.Sprintf("面板数据库异常,已终止操作:%s", err.Error())) return diff --git a/internal/service/user.go b/internal/service/user.go index ab093318..66f124ec 100644 --- a/internal/service/user.go +++ b/internal/service/user.go @@ -6,10 +6,10 @@ import ( "github.com/go-rat/chix" "github.com/spf13/cast" - "github.com/TheTNB/panel/internal/app" "github.com/TheTNB/panel/internal/biz" "github.com/TheTNB/panel/internal/data" "github.com/TheTNB/panel/internal/http/request" + "github.com/TheTNB/panel/internal/panel" ) type UserService struct { @@ -32,7 +32,7 @@ func NewUserService() *UserService { // @Success 200 {object} SuccessResponse // @Router /user/login [post] func (s *UserService) Login(w http.ResponseWriter, r *http.Request) { - sess, err := app.Session.GetSession(r) + sess, err := panel.Session.GetSession(r) if err != nil { Error(w, http.StatusInternalServerError, err.Error()) return @@ -63,7 +63,7 @@ func (s *UserService) Login(w http.ResponseWriter, r *http.Request) { // @Success 200 {object} SuccessResponse // @Router /user/logout [post] func (s *UserService) Logout(w http.ResponseWriter, r *http.Request) { - sess, err := app.Session.GetSession(r) + sess, err := panel.Session.GetSession(r) if err == nil { sess.Forget("user_id") } @@ -79,7 +79,7 @@ func (s *UserService) Logout(w http.ResponseWriter, r *http.Request) { // @Success 200 {object} SuccessResponse // @Router /user/isLogin [get] func (s *UserService) IsLogin(w http.ResponseWriter, r *http.Request) { - sess, err := app.Session.GetSession(r) + sess, err := panel.Session.GetSession(r) if err != nil { Success(w, false) return diff --git a/internal/service/website.go b/internal/service/website.go index 1b1e2aed..b526a59c 100644 --- a/internal/service/website.go +++ b/internal/service/website.go @@ -6,10 +6,10 @@ import ( "github.com/go-rat/chix" - "github.com/TheTNB/panel/internal/app" "github.com/TheTNB/panel/internal/biz" "github.com/TheTNB/panel/internal/data" "github.com/TheTNB/panel/internal/http/request" + "github.com/TheTNB/panel/internal/panel" "github.com/TheTNB/panel/pkg/io" ) @@ -33,12 +33,12 @@ func NewWebsiteService() *WebsiteService { // @Success 200 {object} SuccessResponse{data=map[string]string} // @Router /panel/website/defaultConfig [get] func (s *WebsiteService) GetDefaultConfig(w http.ResponseWriter, r *http.Request) { - index, err := io.Read(filepath.Join(app.Root, "server/openresty/html/index.html")) + index, err := io.Read(filepath.Join(panel.Root, "server/openresty/html/index.html")) if err != nil { Error(w, http.StatusInternalServerError, err.Error()) return } - stop, err := io.Read(filepath.Join(app.Root, "server/openresty/html/stop.html")) + stop, err := io.Read(filepath.Join(panel.Root, "server/openresty/html/stop.html")) if err != nil { Error(w, http.StatusInternalServerError, err.Error()) return diff --git a/pkg/api/api.go b/pkg/api/api.go index 785174e8..6a40fee6 100644 --- a/pkg/api/api.go +++ b/pkg/api/api.go @@ -7,7 +7,7 @@ import ( "github.com/go-resty/resty/v2" "github.com/shirou/gopsutil/host" - "github.com/TheTNB/panel/internal/app" + "github.com/TheTNB/panel/internal/panel" "github.com/TheTNB/panel/pkg/copier" ) @@ -33,7 +33,7 @@ func NewAPI(url ...string) *API { client := resty.New() client.SetTimeout(10 * time.Second) client.SetBaseURL(url[0]) - client.SetHeader("User-Agent", fmt.Sprintf("rat-panel/%s %s/%s", app.Version, hostInfo.Platform, hostInfo.PlatformVersion)) + client.SetHeader("User-Agent", fmt.Sprintf("rat-panel/%s %s/%s", panel.Version, hostInfo.Platform, hostInfo.PlatformVersion)) return &API{ client: client, diff --git a/pkg/api/api_test.go b/pkg/api/api_test.go index 66f53da1..47c1a030 100644 --- a/pkg/api/api_test.go +++ b/pkg/api/api_test.go @@ -5,7 +5,7 @@ import ( "github.com/stretchr/testify/suite" - "github.com/TheTNB/panel/internal/app" + "github.com/TheTNB/panel/internal/panel" ) type APITestSuite struct { @@ -14,7 +14,7 @@ type APITestSuite struct { } func TestAPITestSuite(t *testing.T) { - app.Version = "2.3.0" + panel.Version = "2.3.0" suite.Run(t, &APITestSuite{ api: NewAPI(), }) diff --git a/pkg/api/version.go b/pkg/api/version.go index 167d1ceb..288230c3 100644 --- a/pkg/api/version.go +++ b/pkg/api/version.go @@ -4,7 +4,7 @@ import ( "fmt" "time" - "github.com/TheTNB/panel/internal/app" + "github.com/TheTNB/panel/internal/panel" ) type Version struct { @@ -37,7 +37,7 @@ func (r *API) GetLatestVersion() (*Version, error) { // GetIntermediateVersions 返回当前版本之后的所有版本 func (r *API) GetIntermediateVersions() (*Versions, error) { resp, err := r.client.R(). - SetQueryParam("start", app.Version). + SetQueryParam("start", panel.Version). SetResult(&Response{}).Get("/versions/log") if err != nil { return nil, err