Skip to content

Commit

Permalink
feat: 重构php插件
Browse files Browse the repository at this point in the history
  • Loading branch information
devhaozi committed Jun 17, 2024
1 parent 0be4ce9 commit bec9336
Show file tree
Hide file tree
Showing 3 changed files with 42 additions and 177 deletions.
88 changes: 27 additions & 61 deletions app/http/controllers/plugins/php_controller.go
Original file line number Diff line number Diff line change
Expand Up @@ -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
}

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)
}
type PHPController struct{}

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())
}
Expand All @@ -68,16 +23,18 @@ 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())
}

return controllers.Success(ctx, nil)
}

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())
}
Expand All @@ -86,16 +43,18 @@ 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())
}

return controllers.Success(ctx, nil)
}

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())
}
Expand All @@ -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())
}
Expand All @@ -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())
}
Expand All @@ -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())
}
Expand All @@ -141,25 +105,27 @@ 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())
}

return controllers.Success(ctx, nil)
}

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())
}

Expand Down
18 changes: 1 addition & 17 deletions internal/services/php.go
Original file line number Diff line number Diff line change
Expand Up @@ -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")
}
Expand Down Expand Up @@ -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()
Expand Down
113 changes: 14 additions & 99 deletions routes/plugin.go
Original file line number Diff line number Diff line change
Expand Up @@ -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()
Expand Down

0 comments on commit bec9336

Please sign in to comment.