mirror of
https://github.com/acepanel/panel.git
synced 2026-02-04 07:57:21 +08:00
refactor: rename app to panel
This commit is contained in:
@@ -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")
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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()
|
||||
}
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
package app
|
||||
package panel
|
||||
|
||||
import (
|
||||
"github.com/go-chi/chi/v5"
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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(),
|
||||
})
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user