From 86e4cff989cbe0385eb67376afbfeb6dee9082f1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=80=97=E5=AD=90?= Date: Sat, 12 Oct 2024 19:13:33 +0800 Subject: [PATCH] =?UTF-8?q?refactor:=20=E9=87=8D=E5=91=BD=E5=90=8Dopenrest?= =?UTF-8?q?y=E4=B8=BAnginx?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- internal/apps/init.go | 2 +- internal/apps/{openresty => nginx}/init.go | 4 +-- internal/apps/{openresty => nginx}/request.go | 2 +- internal/apps/{openresty => nginx}/service.go | 10 +++--- internal/apps/phpmyadmin/service.go | 8 ++--- internal/data/cert.go | 4 +-- internal/data/website.go | 32 +++++++++---------- internal/http/middleware/must_install.go | 2 +- internal/service/website.go | 4 +-- pkg/acme/client.go | 2 +- pkg/acme/solvers.go | 6 ++-- pkg/api/api_test.go | 2 +- web/.gitignore | 2 -- .../api/apps/{openresty => nginx}/index.ts | 10 +++--- web/src/router/guard/app-install-guard.ts | 2 +- .../apps/{openresty => nginx}/IndexView.vue | 28 ++++++++-------- .../views/apps/{openresty => nginx}/route.ts | 8 ++--- .../views/apps/{openresty => nginx}/types.ts | 0 web/uno.config.ts | 12 +------ 19 files changed, 64 insertions(+), 76 deletions(-) rename internal/apps/{openresty => nginx}/init.go (91%) rename internal/apps/{openresty => nginx}/request.go (80%) rename internal/apps/{openresty => nginx}/service.go (91%) rename web/src/api/apps/{openresty => nginx}/index.ts (68%) rename web/src/views/apps/{openresty => nginx}/IndexView.vue (90%) rename web/src/views/apps/{openresty => nginx}/route.ts (77%) rename web/src/views/apps/{openresty => nginx}/types.ts (100%) diff --git a/internal/apps/init.go b/internal/apps/init.go index 55be8fb5..ed5afacf 100644 --- a/internal/apps/init.go +++ b/internal/apps/init.go @@ -7,7 +7,7 @@ import ( _ "github.com/TheTNB/panel/internal/apps/frp" _ "github.com/TheTNB/panel/internal/apps/gitea" _ "github.com/TheTNB/panel/internal/apps/mysql" - _ "github.com/TheTNB/panel/internal/apps/openresty" + _ "github.com/TheTNB/panel/internal/apps/nginx" _ "github.com/TheTNB/panel/internal/apps/php" _ "github.com/TheTNB/panel/internal/apps/phpmyadmin" _ "github.com/TheTNB/panel/internal/apps/podman" diff --git a/internal/apps/openresty/init.go b/internal/apps/nginx/init.go similarity index 91% rename from internal/apps/openresty/init.go rename to internal/apps/nginx/init.go index 4f3d8ab0..ec1950f7 100644 --- a/internal/apps/openresty/init.go +++ b/internal/apps/nginx/init.go @@ -1,4 +1,4 @@ -package openresty +package nginx import ( "github.com/go-chi/chi/v5" @@ -9,7 +9,7 @@ import ( func init() { apploader.Register(&types.App{ - Slug: "openresty", + Slug: "nginx", Route: func(r chi.Router) { service := NewService() r.Get("/load", service.Load) diff --git a/internal/apps/openresty/request.go b/internal/apps/nginx/request.go similarity index 80% rename from internal/apps/openresty/request.go rename to internal/apps/nginx/request.go index 80ae0eba..0bb3e2db 100644 --- a/internal/apps/openresty/request.go +++ b/internal/apps/nginx/request.go @@ -1,4 +1,4 @@ -package openresty +package nginx type UpdateConfig struct { Config string `form:"config" json:"config"` diff --git a/internal/apps/openresty/service.go b/internal/apps/nginx/service.go similarity index 91% rename from internal/apps/openresty/service.go rename to internal/apps/nginx/service.go index 782659f6..9347ee53 100644 --- a/internal/apps/openresty/service.go +++ b/internal/apps/nginx/service.go @@ -1,4 +1,4 @@ -package openresty +package nginx import ( "fmt" @@ -27,7 +27,7 @@ func NewService() *Service { } func (s *Service) GetConfig(w http.ResponseWriter, r *http.Request) { - config, err := io.Read(fmt.Sprintf("%s/server/openresty/conf/nginx.conf", app.Root)) + config, err := io.Read(fmt.Sprintf("%s/server/nginx/conf/nginx.conf", app.Root)) if err != nil { service.Error(w, http.StatusInternalServerError, "获取配置失败") return @@ -43,13 +43,13 @@ func (s *Service) SaveConfig(w http.ResponseWriter, r *http.Request) { return } - if err = io.Write(fmt.Sprintf("%s/server/openresty/conf/nginx.conf", app.Root), req.Config, 0644); err != nil { + if err = io.Write(fmt.Sprintf("%s/server/nginx/conf/nginx.conf", app.Root), req.Config, 0644); err != nil { service.Error(w, http.StatusInternalServerError, "保存配置失败") return } - if err = systemctl.Reload("openresty"); err != nil { - _, err = shell.Execf("openresty -t") + if err = systemctl.Reload("nginx"); err != nil { + _, err = shell.Execf("nginx -t") service.Error(w, http.StatusInternalServerError, "重载服务失败:%v", err) return } diff --git a/internal/apps/phpmyadmin/service.go b/internal/apps/phpmyadmin/service.go index bd773d31..276fe35d 100644 --- a/internal/apps/phpmyadmin/service.go +++ b/internal/apps/phpmyadmin/service.go @@ -86,8 +86,8 @@ func (s *Service) UpdatePort(w http.ResponseWriter, r *http.Request) { return } - if err = systemctl.Reload("openresty"); err != nil { - _, err = shell.Execf("openresty -t") + if err = systemctl.Reload("nginx"); err != nil { + _, err = shell.Execf("nginx -t") service.Error(w, http.StatusInternalServerError, "重载OpenResty失败:%v", err) return } @@ -117,8 +117,8 @@ func (s *Service) UpdateConfig(w http.ResponseWriter, r *http.Request) { return } - if err = systemctl.Reload("openresty"); err != nil { - _, err = shell.Execf("openresty -t") + if err = systemctl.Reload("nginx"); err != nil { + _, err = shell.Execf("nginx -t") service.Error(w, http.StatusInternalServerError, "重载OpenResty失败:%v", err) return } diff --git a/internal/data/cert.go b/internal/data/cert.go index c882d8dc..77d9bba0 100644 --- a/internal/data/cert.go +++ b/internal/data/cert.go @@ -242,8 +242,8 @@ func (r *certRepo) Deploy(ID, WebsiteID uint) error { if err = io.Write(fmt.Sprintf("%s/server/vhost/ssl/%s.key", app.Root, website.Name), cert.Key, 0644); err != nil { return err } - if err = systemctl.Reload("openresty"); err != nil { - _, err = shell.Execf("openresty -t") + if err = systemctl.Reload("nginx"); err != nil { + _, err = shell.Execf("nginx -t") return err } diff --git a/internal/data/website.go b/internal/data/website.go index 8a5b3568..77af5cbb 100644 --- a/internal/data/website.go +++ b/internal/data/website.go @@ -35,14 +35,14 @@ 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(app.Root, "server/nginx/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(app.Root, "server/nginx/html/stop.html"), req.Stop, 0644); err != nil { return err } - return systemctl.Reload("openresty") + return systemctl.Reload("nginx") } func (r *websiteRepo) Count() (int64, error) { @@ -304,8 +304,8 @@ server return nil, err } - if err = systemctl.Reload("openresty"); err != nil { - _, err = shell.Execf("openresty -t") + if err = systemctl.Reload("nginx"); err != nil { + _, err = shell.Execf("nginx -t") return nil, err } @@ -357,8 +357,8 @@ func (r *websiteRepo) Update(req *request.WebsiteUpdate) error { if err = io.Write(filepath.Join(app.Root, "server/vhost", website.Name+".conf"), req.Raw, 0644); err != nil { return err } - if err = systemctl.Reload("openresty"); err != nil { - _, err = shell.Execf("openresty -t") + if err = systemctl.Reload("nginx"); err != nil { + _, err = shell.Execf("nginx -t") return err } @@ -537,9 +537,9 @@ func (r *websiteRepo) Update(req *request.WebsiteUpdate) error { return err } - err = systemctl.Reload("openresty") + err = systemctl.Reload("nginx") if err != nil { - _, err = shell.Execf("openresty -t") + _, err = shell.Execf("nginx -t") } return err @@ -583,9 +583,9 @@ func (r *websiteRepo) Delete(req *request.WebsiteDelete) error { _, _ = shell.Execf(`echo "DROP USER IF EXISTS '%s';" | su - postgres -c "psql"`, website.Name) } - err := systemctl.Reload("openresty") + err := systemctl.Reload("nginx") if err != nil { - _, err = shell.Execf("openresty -t") + _, err = shell.Execf("nginx -t") } return err @@ -685,8 +685,8 @@ server if err := io.Write(filepath.Join(app.Root, "server/vhost/acme", website.Name+".conf"), "", 0644); err != nil { return nil } - if err := systemctl.Reload("openresty"); err != nil { - _, err = shell.Execf("openresty -t") + if err := systemctl.Reload("nginx"); err != nil { + _, err = shell.Execf("nginx -t") return err } @@ -717,7 +717,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/nginx/html;\n # root %s;\n ", app.Root, match[1])) } } @@ -736,8 +736,8 @@ 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 { return err } - if err = systemctl.Reload("openresty"); err != nil { - _, err = shell.Execf("openresty -t") + if err = systemctl.Reload("nginx"); err != nil { + _, err = shell.Execf("nginx -t") return err } diff --git a/internal/http/middleware/must_install.go b/internal/http/middleware/must_install.go index 4e072b60..5767e3b5 100644 --- a/internal/http/middleware/must_install.go +++ b/internal/http/middleware/must_install.go @@ -15,7 +15,7 @@ func MustInstall(next http.Handler) http.Handler { return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { var slugs []string if strings.HasPrefix(r.URL.Path, "/api/website") { - slugs = append(slugs, "openresty") + slugs = append(slugs, "nginx") } else if strings.HasPrefix(r.URL.Path, "/api/container") { slugs = append(slugs, "podman", "docker") } else if strings.HasPrefix(r.URL.Path, "/api/apps/") { diff --git a/internal/service/website.go b/internal/service/website.go index 4bec0fc3..4532e8b4 100644 --- a/internal/service/website.go +++ b/internal/service/website.go @@ -26,12 +26,12 @@ func NewWebsiteService() *WebsiteService { } 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(app.Root, "server/nginx/html/index.html")) if err != nil { Error(w, http.StatusInternalServerError, "%v", err) return } - stop, err := io.Read(filepath.Join(app.Root, "server/openresty/html/stop.html")) + stop, err := io.Read(filepath.Join(app.Root, "server/nginx/html/stop.html")) if err != nil { Error(w, http.StatusInternalServerError, "%v", err) return diff --git a/pkg/acme/client.go b/pkg/acme/client.go index d71f8046..71c669e5 100644 --- a/pkg/acme/client.go +++ b/pkg/acme/client.go @@ -49,7 +49,7 @@ func (c *Client) UseManualDns(total int, check ...bool) { } // UseHTTP 使用 HTTP 验证 -// conf openresty 配置文件路径 +// conf nginx 配置文件路径 // path 验证文件存放路径 func (c *Client) UseHTTP(conf, path string) { c.zClient.ChallengeSolvers = map[string]acmez.Solver{ diff --git a/pkg/acme/solvers.go b/pkg/acme/solvers.go index 8c962a8c..44db9a55 100644 --- a/pkg/acme/solvers.go +++ b/pkg/acme/solvers.go @@ -47,8 +47,8 @@ func (s httpSolver) Present(_ context.Context, challenge acme.Challenge) error { if err = os.WriteFile(s.conf, []byte(conf), 0644); err != nil { return fmt.Errorf("无法写入OpenResty配置文件: %w", err) } - if err = systemctl.Reload("openresty"); err != nil { - _, err = shell.Execf("openresty -t") + if err = systemctl.Reload("nginx"); err != nil { + _, err = shell.Execf("nginx -t") return fmt.Errorf("无法重载OpenResty: %w", err) } @@ -63,7 +63,7 @@ func (s httpSolver) CleanUp(_ context.Context, challenge acme.Challenge) error { _ = os.Remove(filepath.Join(s.path, challenge.HTTP01ResourcePath())) _ = os.WriteFile(s.conf, []byte{}, 0644) - _ = systemctl.Reload("openresty") + _ = systemctl.Reload("nginx") return nil } diff --git a/pkg/api/api_test.go b/pkg/api/api_test.go index f91a0e23..15686dfc 100644 --- a/pkg/api/api_test.go +++ b/pkg/api/api_test.go @@ -33,7 +33,7 @@ func (s *APITestSuite) TestGetApps() { } func (s *APITestSuite) TestGetAppBySlug() { - _, err := s.api.AppBySlug("openresty") + _, err := s.api.AppBySlug("nginx") s.NoError(err) } diff --git a/web/.gitignore b/web/.gitignore index 531b8e9e..0f539387 100644 --- a/web/.gitignore +++ b/web/.gitignore @@ -26,7 +26,5 @@ coverage .env -stats.html - types/components.d.ts types/auto-imports.d.ts diff --git a/web/src/api/apps/openresty/index.ts b/web/src/api/apps/nginx/index.ts similarity index 68% rename from web/src/api/apps/openresty/index.ts rename to web/src/api/apps/nginx/index.ts index 11aa8f6c..5b14fd23 100644 --- a/web/src/api/apps/openresty/index.ts +++ b/web/src/api/apps/nginx/index.ts @@ -4,14 +4,14 @@ import { request } from '@/utils' export default { // 负载状态 - load: (): Promise> => request.get('/apps/openresty/load'), + load: (): Promise> => request.get('/apps/nginx/load'), // 获取配置 - config: (): Promise> => request.get('/apps/openresty/config'), + config: (): Promise> => request.get('/apps/nginx/config'), // 保存配置 saveConfig: (config: string): Promise> => - request.post('/apps/openresty/config', { config }), + request.post('/apps/nginx/config', { config }), // 获取错误日志 - errorLog: (): Promise> => request.get('/apps/openresty/errorLog'), + errorLog: (): Promise> => request.get('/apps/nginx/errorLog'), // 清空错误日志 - clearErrorLog: (): Promise> => request.post('/apps/openresty/clearErrorLog') + clearErrorLog: (): Promise> => request.post('/apps/nginx/clearErrorLog') } diff --git a/web/src/router/guard/app-install-guard.ts b/web/src/router/guard/app-install-guard.ts index 66b708e5..8073b2ab 100644 --- a/web/src/router/guard/app-install-guard.ts +++ b/web/src/router/guard/app-install-guard.ts @@ -15,7 +15,7 @@ export function createAppInstallGuard(router: Router) { // 网站 if (to.path.startsWith('/website')) { - await app.isInstalled('openresty').then((res) => { + await app.isInstalled('nginx').then((res) => { if (!res.data.installed) { window.$message.error(`Web 服务器 ${res.data.name} 未安装`) return router.push({ name: 'app-index' }) diff --git a/web/src/views/apps/openresty/IndexView.vue b/web/src/views/apps/nginx/IndexView.vue similarity index 90% rename from web/src/views/apps/openresty/IndexView.vue rename to web/src/views/apps/nginx/IndexView.vue index 4a01635b..e3ce6f9c 100644 --- a/web/src/views/apps/openresty/IndexView.vue +++ b/web/src/views/apps/nginx/IndexView.vue @@ -2,7 +2,7 @@ import Editor from '@guolao/vue-monaco-editor' import { NButton, NDataTable, NPopconfirm } from 'naive-ui' -import openresty from '@/api/apps/openresty' +import nginx from '@/api/apps/nginx' import systemctl from '@/api/panel/systemctl' const currentTab = ref('status') @@ -27,39 +27,39 @@ const columns: any = [ const load = ref([]) const getLoad = async () => { - const { data } = await openresty.load() + const { data } = await nginx.load() return data } const getStatus = async () => { - await systemctl.status('openresty').then((res: any) => { + await systemctl.status('nginx').then((res: any) => { status.value = res.data }) } const getIsEnabled = async () => { - await systemctl.isEnabled('openresty').then((res: any) => { + await systemctl.isEnabled('nginx').then((res: any) => { isEnabled.value = res.data }) } const getErrorLog = async () => { - const { data } = await openresty.errorLog() + const { data } = await nginx.errorLog() return data } const getConfig = async () => { - const { data } = await openresty.config() + const { data } = await nginx.config() return data } const handleSaveConfig = async () => { - await openresty.saveConfig(config.value) + await nginx.saveConfig(config.value) window.$message.success('保存成功') } const handleClearErrorLog = async () => { - await openresty.clearErrorLog() + await nginx.clearErrorLog() getErrorLog().then((res) => { errorLog.value = res }) @@ -68,35 +68,35 @@ const handleClearErrorLog = async () => { const handleIsEnabled = async () => { if (isEnabled.value) { - await systemctl.enable('openresty') + await systemctl.enable('nginx') window.$message.success('开启自启动成功') } else { - await systemctl.disable('openresty') + await systemctl.disable('nginx') window.$message.success('禁用自启动成功') } await getIsEnabled() } const handleStart = async () => { - await systemctl.start('openresty') + await systemctl.start('nginx') window.$message.success('启动成功') await getStatus() } const handleStop = async () => { - await systemctl.stop('openresty') + await systemctl.stop('nginx') window.$message.success('停止成功') await getStatus() } const handleRestart = async () => { - await systemctl.restart('openresty') + await systemctl.restart('nginx') window.$message.success('重启成功') await getStatus() } const handleReload = async () => { - await systemctl.reload('openresty') + await systemctl.reload('nginx') window.$message.success('重载成功') await getStatus() } diff --git a/web/src/views/apps/openresty/route.ts b/web/src/views/apps/nginx/route.ts similarity index 77% rename from web/src/views/apps/openresty/route.ts rename to web/src/views/apps/nginx/route.ts index 2e343602..b2dab575 100644 --- a/web/src/views/apps/openresty/route.ts +++ b/web/src/views/apps/nginx/route.ts @@ -3,17 +3,17 @@ import type { RouteType } from '~/types/router' const Layout = () => import('@/layout/IndexView.vue') export default { - name: 'openresty', - path: '/apps/openresty', + name: 'nginx', + path: '/apps/nginx', component: Layout, isHidden: true, children: [ { - name: 'apps-openresty-index', + name: 'apps-nginx-index', path: '', component: () => import('./IndexView.vue'), meta: { - title: 'OpenResty', + title: 'OpenResty(Nginx)', icon: 'mdi:server-network', role: ['admin'], requireAuth: true diff --git a/web/src/views/apps/openresty/types.ts b/web/src/views/apps/nginx/types.ts similarity index 100% rename from web/src/views/apps/openresty/types.ts rename to web/src/views/apps/nginx/types.ts diff --git a/web/uno.config.ts b/web/uno.config.ts index 4ca2f100..92e27372 100644 --- a/web/uno.config.ts +++ b/web/uno.config.ts @@ -4,17 +4,7 @@ import { defineConfig, presetAttributify, presetUno } from 'unocss' const config: UserConfig = { content: { pipeline: { - exclude: [ - 'node_modules', - '.git', - '.github', - '.vscode', - 'build', - 'dist', - 'public', - 'types', - './stats.html' - ] + exclude: ['node_modules', '.git', '.github', '.vscode', 'build', 'dist', 'public', 'types'] } }, presets: [presetUno({ dark: 'class' }), presetAttributify()],