2
0
mirror of https://github.com/acepanel/panel.git synced 2026-02-05 02:07:18 +08:00

feat: 重构php插件

This commit is contained in:
耗子
2024-06-18 01:20:24 +08:00
parent 0be4ce9891
commit bec9336f2f
3 changed files with 42 additions and 177 deletions

View File

@@ -2,64 +2,19 @@ package plugins
import (
"github.com/TheTNB/panel/app/http/controllers"
"github.com/TheTNB/panel/internal"
"github.com/TheTNB/panel/internal/services"
"github.com/goravel/framework/contracts/http"
)
type PHPController struct {
service internal.PHP
}
type PHPController struct{}
func NewPHPController(version uint) *PHPController {
return &PHPController{
service: services.NewPHPImpl(version),
}
}
func (r *PHPController) Status(ctx http.Context) http.Response {
status, err := r.service.Status()
if err != nil {
return controllers.Error(ctx, http.StatusInternalServerError, err.Error())
}
return controllers.Success(ctx, status)
}
func (r *PHPController) Reload(ctx http.Context) http.Response {
if err := r.service.Reload(); err != nil {
return controllers.Error(ctx, http.StatusInternalServerError, err.Error())
}
return controllers.Success(ctx, nil)
}
func (r *PHPController) Start(ctx http.Context) http.Response {
if err := r.service.Start(); err != nil {
return controllers.Error(ctx, http.StatusInternalServerError, err.Error())
}
return controllers.Success(ctx, nil)
}
func (r *PHPController) Stop(ctx http.Context) http.Response {
if err := r.service.Stop(); err != nil {
return controllers.Error(ctx, http.StatusInternalServerError, err.Error())
}
return controllers.Success(ctx, nil)
}
func (r *PHPController) Restart(ctx http.Context) http.Response {
if err := r.service.Restart(); err != nil {
return controllers.Error(ctx, http.StatusInternalServerError, err.Error())
}
return controllers.Success(ctx, nil)
func NewPHPController() *PHPController {
return &PHPController{}
}
func (r *PHPController) GetConfig(ctx http.Context) http.Response {
config, err := r.service.GetConfig()
service := services.NewPHPImpl(uint(ctx.Request().RouteInt("version")))
config, err := service.GetConfig()
if err != nil {
return controllers.Error(ctx, http.StatusInternalServerError, err.Error())
}
@@ -68,8 +23,9 @@ func (r *PHPController) GetConfig(ctx http.Context) http.Response {
}
func (r *PHPController) SaveConfig(ctx http.Context) http.Response {
service := services.NewPHPImpl(uint(ctx.Request().RouteInt("version")))
config := ctx.Request().Input("config")
if err := r.service.SaveConfig(config); err != nil {
if err := service.SaveConfig(config); err != nil {
return controllers.Error(ctx, http.StatusInternalServerError, err.Error())
}
@@ -77,7 +33,8 @@ func (r *PHPController) SaveConfig(ctx http.Context) http.Response {
}
func (r *PHPController) GetFPMConfig(ctx http.Context) http.Response {
config, err := r.service.GetFPMConfig()
service := services.NewPHPImpl(uint(ctx.Request().RouteInt("version")))
config, err := service.GetFPMConfig()
if err != nil {
return controllers.Error(ctx, http.StatusInternalServerError, err.Error())
}
@@ -86,8 +43,9 @@ func (r *PHPController) GetFPMConfig(ctx http.Context) http.Response {
}
func (r *PHPController) SaveFPMConfig(ctx http.Context) http.Response {
service := services.NewPHPImpl(uint(ctx.Request().RouteInt("version")))
config := ctx.Request().Input("config")
if err := r.service.SaveFPMConfig(config); err != nil {
if err := service.SaveFPMConfig(config); err != nil {
return controllers.Error(ctx, http.StatusInternalServerError, err.Error())
}
@@ -95,7 +53,8 @@ func (r *PHPController) SaveFPMConfig(ctx http.Context) http.Response {
}
func (r *PHPController) Load(ctx http.Context) http.Response {
load, err := r.service.Load()
service := services.NewPHPImpl(uint(ctx.Request().RouteInt("version")))
load, err := service.Load()
if err != nil {
return controllers.Error(ctx, http.StatusInternalServerError, err.Error())
}
@@ -104,17 +63,20 @@ func (r *PHPController) Load(ctx http.Context) http.Response {
}
func (r *PHPController) ErrorLog(ctx http.Context) http.Response {
log, _ := r.service.GetErrorLog()
service := services.NewPHPImpl(uint(ctx.Request().RouteInt("version")))
log, _ := service.GetErrorLog()
return controllers.Success(ctx, log)
}
func (r *PHPController) SlowLog(ctx http.Context) http.Response {
log, _ := r.service.GetSlowLog()
service := services.NewPHPImpl(uint(ctx.Request().RouteInt("version")))
log, _ := service.GetSlowLog()
return controllers.Success(ctx, log)
}
func (r *PHPController) ClearErrorLog(ctx http.Context) http.Response {
err := r.service.ClearErrorLog()
service := services.NewPHPImpl(uint(ctx.Request().RouteInt("version")))
err := service.ClearErrorLog()
if err != nil {
return controllers.Error(ctx, http.StatusInternalServerError, err.Error())
}
@@ -123,7 +85,8 @@ func (r *PHPController) ClearErrorLog(ctx http.Context) http.Response {
}
func (r *PHPController) ClearSlowLog(ctx http.Context) http.Response {
err := r.service.ClearSlowLog()
service := services.NewPHPImpl(uint(ctx.Request().RouteInt("version")))
err := service.ClearSlowLog()
if err != nil {
return controllers.Error(ctx, http.StatusInternalServerError, err.Error())
}
@@ -132,7 +95,8 @@ func (r *PHPController) ClearSlowLog(ctx http.Context) http.Response {
}
func (r *PHPController) GetExtensionList(ctx http.Context) http.Response {
extensions, err := r.service.GetExtensions()
service := services.NewPHPImpl(uint(ctx.Request().RouteInt("version")))
extensions, err := service.GetExtensions()
if err != nil {
return controllers.Error(ctx, http.StatusInternalServerError, err.Error())
}
@@ -141,12 +105,13 @@ func (r *PHPController) GetExtensionList(ctx http.Context) http.Response {
}
func (r *PHPController) InstallExtension(ctx http.Context) http.Response {
service := services.NewPHPImpl(uint(ctx.Request().RouteInt("version")))
slug := ctx.Request().Input("slug")
if len(slug) == 0 {
return controllers.Error(ctx, http.StatusUnprocessableEntity, "参数错误")
}
if err := r.service.InstallExtension(slug); err != nil {
if err := service.InstallExtension(slug); err != nil {
return controllers.Error(ctx, http.StatusInternalServerError, err.Error())
}
@@ -154,12 +119,13 @@ func (r *PHPController) InstallExtension(ctx http.Context) http.Response {
}
func (r *PHPController) UninstallExtension(ctx http.Context) http.Response {
service := services.NewPHPImpl(uint(ctx.Request().RouteInt("version")))
slug := ctx.Request().Input("slug")
if len(slug) == 0 {
return controllers.Error(ctx, http.StatusUnprocessableEntity, "参数错误")
}
if err := r.service.UninstallExtension(slug); err != nil {
if err := service.UninstallExtension(slug); err != nil {
return controllers.Error(ctx, http.StatusInternalServerError, err.Error())
}

View File

@@ -27,26 +27,10 @@ func NewPHPImpl(version uint) *PHPImpl {
}
}
func (r *PHPImpl) Status() (bool, error) {
return tools.ServiceStatus("php-fpm-" + r.version)
}
func (r *PHPImpl) Reload() error {
return tools.ServiceReload("php-fpm-" + r.version)
}
func (r *PHPImpl) Start() error {
return tools.ServiceStart("php-fpm-" + r.version)
}
func (r *PHPImpl) Stop() error {
return tools.ServiceStop("php-fpm-" + r.version)
}
func (r *PHPImpl) Restart() error {
return tools.ServiceRestart("php-fpm-" + r.version)
}
func (r *PHPImpl) GetConfig() (string, error) {
return tools.Read("/www/server/php/" + r.version + "/etc/php.ini")
}
@@ -75,7 +59,7 @@ func (r *PHPImpl) Load() ([]types.NV, error) {
client := resty.New().SetTimeout(10 * time.Second)
resp, err := client.R().Get("http://127.0.0.1/phpfpm_status/" + r.version)
if err != nil || !resp.IsSuccess() {
return nil, errors.New("获取 PHP-" + r.version + " 运行状态失败")
return []types.NV{}, nil
}
raw := resp.String()

View File

@@ -98,105 +98,20 @@ func Plugin() {
route.Delete("users", postgresql16Controller.DeleteUser)
route.Post("users/password", postgresql16Controller.SetUserPassword)
})
r.Prefix("php74").Group(func(route route.Router) {
php74Controller := plugins.NewPHPController(74)
route.Get("status", php74Controller.Status)
route.Post("reload", php74Controller.Reload)
route.Post("start", php74Controller.Start)
route.Post("stop", php74Controller.Stop)
route.Post("restart", php74Controller.Restart)
route.Get("load", php74Controller.Load)
route.Get("config", php74Controller.GetConfig)
route.Post("config", php74Controller.SaveConfig)
route.Get("fpmConfig", php74Controller.GetFPMConfig)
route.Post("fpmConfig", php74Controller.SaveFPMConfig)
route.Get("errorLog", php74Controller.ErrorLog)
route.Get("slowLog", php74Controller.SlowLog)
route.Post("clearErrorLog", php74Controller.ClearErrorLog)
route.Post("clearSlowLog", php74Controller.ClearSlowLog)
route.Get("extensions", php74Controller.GetExtensionList)
route.Post("extensions", php74Controller.InstallExtension)
route.Delete("extensions", php74Controller.UninstallExtension)
})
r.Prefix("php80").Group(func(route route.Router) {
php80Controller := plugins.NewPHPController(80)
route.Get("status", php80Controller.Status)
route.Post("reload", php80Controller.Reload)
route.Post("start", php80Controller.Start)
route.Post("stop", php80Controller.Stop)
route.Post("restart", php80Controller.Restart)
route.Get("load", php80Controller.Load)
route.Get("config", php80Controller.GetConfig)
route.Post("config", php80Controller.SaveConfig)
route.Get("fpmConfig", php80Controller.GetFPMConfig)
route.Post("fpmConfig", php80Controller.SaveFPMConfig)
route.Get("errorLog", php80Controller.ErrorLog)
route.Get("slowLog", php80Controller.SlowLog)
route.Post("clearErrorLog", php80Controller.ClearErrorLog)
route.Post("clearSlowLog", php80Controller.ClearSlowLog)
route.Get("extensions", php80Controller.GetExtensionList)
route.Post("extensions", php80Controller.InstallExtension)
route.Delete("extensions", php80Controller.UninstallExtension)
})
r.Prefix("php81").Group(func(route route.Router) {
php81Controller := plugins.NewPHPController(81)
route.Get("status", php81Controller.Status)
route.Post("reload", php81Controller.Reload)
route.Post("start", php81Controller.Start)
route.Post("stop", php81Controller.Stop)
route.Post("restart", php81Controller.Restart)
route.Get("load", php81Controller.Load)
route.Get("config", php81Controller.GetConfig)
route.Post("config", php81Controller.SaveConfig)
route.Get("fpmConfig", php81Controller.GetFPMConfig)
route.Post("fpmConfig", php81Controller.SaveFPMConfig)
route.Get("errorLog", php81Controller.ErrorLog)
route.Get("slowLog", php81Controller.SlowLog)
route.Post("clearErrorLog", php81Controller.ClearErrorLog)
route.Post("clearSlowLog", php81Controller.ClearSlowLog)
route.Get("extensions", php81Controller.GetExtensionList)
route.Post("extensions", php81Controller.InstallExtension)
route.Delete("extensions", php81Controller.UninstallExtension)
})
r.Prefix("php82").Group(func(route route.Router) {
php82Controller := plugins.NewPHPController(82)
route.Get("status", php82Controller.Status)
route.Post("reload", php82Controller.Reload)
route.Post("start", php82Controller.Start)
route.Post("stop", php82Controller.Stop)
route.Post("restart", php82Controller.Restart)
route.Get("load", php82Controller.Load)
route.Get("config", php82Controller.GetConfig)
route.Post("config", php82Controller.SaveConfig)
route.Get("fpmConfig", php82Controller.GetFPMConfig)
route.Post("fpmConfig", php82Controller.SaveFPMConfig)
route.Get("errorLog", php82Controller.ErrorLog)
route.Get("slowLog", php82Controller.SlowLog)
route.Post("clearErrorLog", php82Controller.ClearErrorLog)
route.Post("clearSlowLog", php82Controller.ClearSlowLog)
route.Get("extensions", php82Controller.GetExtensionList)
route.Post("extensions", php82Controller.InstallExtension)
route.Delete("extensions", php82Controller.UninstallExtension)
})
r.Prefix("php83").Group(func(route route.Router) {
php83Controller := plugins.NewPHPController(83)
route.Get("status", php83Controller.Status)
route.Post("reload", php83Controller.Reload)
route.Post("start", php83Controller.Start)
route.Post("stop", php83Controller.Stop)
route.Post("restart", php83Controller.Restart)
route.Get("load", php83Controller.Load)
route.Get("config", php83Controller.GetConfig)
route.Post("config", php83Controller.SaveConfig)
route.Get("fpmConfig", php83Controller.GetFPMConfig)
route.Post("fpmConfig", php83Controller.SaveFPMConfig)
route.Get("errorLog", php83Controller.ErrorLog)
route.Get("slowLog", php83Controller.SlowLog)
route.Post("clearErrorLog", php83Controller.ClearErrorLog)
route.Post("clearSlowLog", php83Controller.ClearSlowLog)
route.Get("extensions", php83Controller.GetExtensionList)
route.Post("extensions", php83Controller.InstallExtension)
route.Delete("extensions", php83Controller.UninstallExtension)
r.Prefix("php").Group(func(route route.Router) {
phpController := plugins.NewPHPController()
route.Get("{version}/load", phpController.Load)
route.Get("{version}/config", phpController.GetConfig)
route.Post("{version}/config", phpController.SaveConfig)
route.Get("{version}/fpmConfig", phpController.GetFPMConfig)
route.Post("{version}/fpmConfig", phpController.SaveFPMConfig)
route.Get("{version}/errorLog", phpController.ErrorLog)
route.Get("{version}/slowLog", phpController.SlowLog)
route.Post("{version}/clearErrorLog", phpController.ClearErrorLog)
route.Post("{version}/clearSlowLog", phpController.ClearSlowLog)
route.Get("{version}/extensions", phpController.GetExtensionList)
route.Post("{version}/extensions", phpController.InstallExtension)
route.Delete("{version}/extensions", phpController.UninstallExtension)
})
r.Prefix("phpmyadmin").Group(func(route route.Router) {
phpMyAdminController := plugins.NewPhpMyAdminController()