浏览代码

fix(nginx_log): use path instead of log_path

0xJacky 2 周之前
父节点
当前提交
bc4cab54fa

+ 2 - 2
api/nginx_log/nginx_log.go

@@ -22,8 +22,8 @@ const (
 
 // controlStruct represents the request parameters for getting log content
 type controlStruct struct {
-	Type    string `json:"type"`     // Type of log: "access" or "error"
-	LogPath string `json:"log_path"` // Path to the log file
+	Type string `json:"type"` // Type of log: "access" or "error"
+	Path string `json:"path"` // Path to the log file
 }
 
 // nginxLogPageResp represents the response format for log content

+ 2 - 2
api/nginx_log/websocket.go

@@ -21,8 +21,8 @@ import (
 // It checks if the path is under the whitelist directories
 func getLogPath(control *controlStruct) (logPath string, err error) {
 	// If direct log path is provided, use it
-	if control.LogPath != "" {
-		logPath = control.LogPath
+	if control.Path != "" {
+		logPath = control.Path
 		// Check if logPath is under one of the paths in LogDirWhiteList
 		if !nginx_log.IsLogPathUnderWhiteList(logPath) {
 			return "", nginx_log.ErrLogPathIsNotUnderTheLogDirWhiteList

+ 4 - 4
app/package.json

@@ -18,13 +18,13 @@
     "@fingerprintjs/fingerprintjs": "^4.6.2",
     "@formkit/auto-animate": "^0.8.2",
     "@simplewebauthn/browser": "^13.1.2",
-    "@uozi-admin/curd": "^4.5.7",
+    "@uozi-admin/curd": "^4.5.8",
     "@uozi-admin/request": "^2.8.4",
     "@vue/reactivity": "^3.5.18",
     "@vue/shared": "^3.5.18",
-    "@vueuse/components": "^13.5.0",
-    "@vueuse/core": "^13.5.0",
-    "@vueuse/integrations": "^13.5.0",
+    "@vueuse/components": "^13.6.0",
+    "@vueuse/core": "^13.6.0",
+    "@vueuse/integrations": "^13.6.0",
     "@xterm/addon-attach": "^0.11.0",
     "@xterm/addon-fit": "^0.10.0",
     "@xterm/xterm": "^5.5.0",

+ 36 - 36
app/pnpm-lock.yaml

@@ -24,8 +24,8 @@ importers:
         specifier: ^13.1.2
         version: 13.1.2
       '@uozi-admin/curd':
-        specifier: ^4.5.7
-        version: 4.5.7(@ant-design/icons-vue@7.0.1(vue@3.5.18(typescript@5.8.3)))(ant-design-vue@4.2.6(vue@3.5.18(typescript@5.8.3)))(dayjs@1.11.13)(lodash-es@4.17.21)(vue-router@4.5.1(vue@3.5.18(typescript@5.8.3)))(vue@3.5.18(typescript@5.8.3))
+        specifier: ^4.5.8
+        version: 4.5.8(@ant-design/icons-vue@7.0.1(vue@3.5.18(typescript@5.8.3)))(ant-design-vue@4.2.6(vue@3.5.18(typescript@5.8.3)))(dayjs@1.11.13)(lodash-es@4.17.21)(vue-router@4.5.1(vue@3.5.18(typescript@5.8.3)))(vue@3.5.18(typescript@5.8.3))
       '@uozi-admin/request':
         specifier: ^2.8.4
         version: 2.8.4(lodash-es@4.17.21)
@@ -36,14 +36,14 @@ importers:
         specifier: ^3.5.18
         version: 3.5.18
       '@vueuse/components':
-        specifier: ^13.5.0
-        version: 13.5.0(vue@3.5.18(typescript@5.8.3))
+        specifier: ^13.6.0
+        version: 13.6.0(vue@3.5.18(typescript@5.8.3))
       '@vueuse/core':
-        specifier: ^13.5.0
-        version: 13.5.0(vue@3.5.18(typescript@5.8.3))
+        specifier: ^13.6.0
+        version: 13.6.0(vue@3.5.18(typescript@5.8.3))
       '@vueuse/integrations':
-        specifier: ^13.5.0
-        version: 13.5.0(async-validator@4.2.5)(axios@1.11.0)(change-case@5.4.4)(nprogress@0.2.0)(sortablejs@1.15.6)(universal-cookie@8.0.1)(vue@3.5.18(typescript@5.8.3))
+        specifier: ^13.6.0
+        version: 13.6.0(async-validator@4.2.5)(axios@1.11.0)(change-case@5.4.4)(nprogress@0.2.0)(sortablejs@1.15.6)(universal-cookie@8.0.1)(vue@3.5.18(typescript@5.8.3))
       '@xterm/addon-attach':
         specifier: ^0.11.0
         version: 0.11.0(@xterm/xterm@5.5.0)
@@ -203,7 +203,7 @@ importers:
         version: 5.8.3
       unplugin-auto-import:
         specifier: ^19.3.0
-        version: 19.3.0(@nuxt/kit@3.17.5)(@vueuse/core@13.5.0(vue@3.5.18(typescript@5.8.3)))
+        version: 19.3.0(@nuxt/kit@3.17.5)(@vueuse/core@13.6.0(vue@3.5.18(typescript@5.8.3)))
       unplugin-vue-components:
         specifier: ^28.8.0
         version: 28.8.0(@babel/parser@7.28.0)(@nuxt/kit@3.17.5)(vue@3.5.18(typescript@5.8.3))
@@ -1244,8 +1244,8 @@ packages:
     peerDependencies:
       vite: ^2.9.0 || ^3.0.0-0 || ^4.0.0 || ^5.0.0-0 || ^6.0.0-0 || ^7.0.0-0
 
-  '@uozi-admin/curd@4.5.7':
-    resolution: {integrity: sha512-4+ofKghAbVM+JOrA85+bbJdxXs/qJV2iI61Zcak4SKCgq5z3ISxu2FotsN0DqLL2lITAQGZE+f1Fyz2pCszfog==}
+  '@uozi-admin/curd@4.5.8':
+    resolution: {integrity: sha512-ap1Dy8DGGUb4fbZZGF+eUufPeEzrRKoz9bSk2UKieqHlCnrOAg7TCTJ9I6Kn0ZdPwaahI9yY4h6ySKF+8ujL6w==}
     hasBin: true
     peerDependencies:
       '@ant-design/icons-vue': '>=7.0.1'
@@ -1383,18 +1383,18 @@ packages:
       vue:
         optional: true
 
-  '@vueuse/components@13.5.0':
-    resolution: {integrity: sha512-bU/FJNQMCxzDFp67YuxFQSV9CptHxZIgtExjFgJU8AE/gRRJMzGfPjNm+HvaVnMRl8IFFv4E+6JQV0kDu4zIpw==}
+  '@vueuse/components@13.6.0':
+    resolution: {integrity: sha512-wJmXlQhCRWBqpnRW4KVbbKqCW28AZ/5hoA/gy7cvTXJUiRdKKfjHFo+7MGwn80dFfIkCA5253T7Y3fbNK4/lUw==}
     peerDependencies:
       vue: ^3.5.0
 
-  '@vueuse/core@13.5.0':
-    resolution: {integrity: sha512-wV7z0eUpifKmvmN78UBZX8T7lMW53Nrk6JP5+6hbzrB9+cJ3jr//hUlhl9TZO/03bUkMK6gGkQpqOPWoabr72g==}
+  '@vueuse/core@13.6.0':
+    resolution: {integrity: sha512-DJbD5fV86muVmBgS9QQPddVX7d9hWYswzlf4bIyUD2dj8GC46R1uNClZhVAmsdVts4xb2jwp1PbpuiA50Qee1A==}
     peerDependencies:
       vue: ^3.5.0
 
-  '@vueuse/integrations@13.5.0':
-    resolution: {integrity: sha512-7RACJySnlpl0MkSzxbtadioNGSX4TL5/Wl2cUy4nDq/XkeHwPYvVM880HJUSiap/FXhVEup9VKTM9y/n5UspAw==}
+  '@vueuse/integrations@13.6.0':
+    resolution: {integrity: sha512-dVFdgwYvkYjdizRL3ESdUW+Hg84i9Yhuzs+Ec3kEcuzJmT5xhiL/IGdw4z394qSBngUQvFi+wbHwhHX3EGbAxQ==}
     peerDependencies:
       async-validator: ^4
       axios: ^1
@@ -1435,11 +1435,11 @@ packages:
       universal-cookie:
         optional: true
 
-  '@vueuse/metadata@13.5.0':
-    resolution: {integrity: sha512-euhItU3b0SqXxSy8u1XHxUCdQ8M++bsRs+TYhOLDU/OykS7KvJnyIFfep0XM5WjIFry9uAPlVSjmVHiqeshmkw==}
+  '@vueuse/metadata@13.6.0':
+    resolution: {integrity: sha512-rnIH7JvU7NjrpexTsl2Iwv0V0yAx9cw7+clymjKuLSXG0QMcLD0LDgdNmXic+qL0SGvgSVPEpM9IDO/wqo1vkQ==}
 
-  '@vueuse/shared@13.5.0':
-    resolution: {integrity: sha512-K7GrQIxJ/ANtucxIXbQlUHdB0TPA8c+q5i+zbrjxuhJCnJ9GtBg75sBSnvmLSxHKPg2Yo8w62PWksl9kwH0Q8g==}
+  '@vueuse/shared@13.6.0':
+    resolution: {integrity: sha512-pDykCSoS2T3fsQrYqf9SyF0QXWHmcGPQ+qiOVjlYSzlWd9dgppB2bFSM1GgKKkt7uzn0BBMV3IbJsUfHG2+BCg==}
     peerDependencies:
       vue: ^3.5.0
 
@@ -5149,10 +5149,10 @@ snapshots:
     transitivePeerDependencies:
       - vue
 
-  '@uozi-admin/curd@4.5.7(@ant-design/icons-vue@7.0.1(vue@3.5.18(typescript@5.8.3)))(ant-design-vue@4.2.6(vue@3.5.18(typescript@5.8.3)))(dayjs@1.11.13)(lodash-es@4.17.21)(vue-router@4.5.1(vue@3.5.18(typescript@5.8.3)))(vue@3.5.18(typescript@5.8.3))':
+  '@uozi-admin/curd@4.5.8(@ant-design/icons-vue@7.0.1(vue@3.5.18(typescript@5.8.3)))(ant-design-vue@4.2.6(vue@3.5.18(typescript@5.8.3)))(dayjs@1.11.13)(lodash-es@4.17.21)(vue-router@4.5.1(vue@3.5.18(typescript@5.8.3)))(vue@3.5.18(typescript@5.8.3))':
     dependencies:
       '@ant-design/icons-vue': 7.0.1(vue@3.5.18(typescript@5.8.3))
-      '@vueuse/core': 13.5.0(vue@3.5.18(typescript@5.8.3))
+      '@vueuse/core': 13.6.0(vue@3.5.18(typescript@5.8.3))
       ant-design-vue: 4.2.6(vue@3.5.18(typescript@5.8.3))
       dayjs: 1.11.13
       lodash-es: 4.17.21
@@ -5345,23 +5345,23 @@ snapshots:
       typescript: 5.8.3
       vue: 3.5.18(typescript@5.8.3)
 
-  '@vueuse/components@13.5.0(vue@3.5.18(typescript@5.8.3))':
+  '@vueuse/components@13.6.0(vue@3.5.18(typescript@5.8.3))':
     dependencies:
-      '@vueuse/core': 13.5.0(vue@3.5.18(typescript@5.8.3))
-      '@vueuse/shared': 13.5.0(vue@3.5.18(typescript@5.8.3))
+      '@vueuse/core': 13.6.0(vue@3.5.18(typescript@5.8.3))
+      '@vueuse/shared': 13.6.0(vue@3.5.18(typescript@5.8.3))
       vue: 3.5.18(typescript@5.8.3)
 
-  '@vueuse/core@13.5.0(vue@3.5.18(typescript@5.8.3))':
+  '@vueuse/core@13.6.0(vue@3.5.18(typescript@5.8.3))':
     dependencies:
       '@types/web-bluetooth': 0.0.21
-      '@vueuse/metadata': 13.5.0
-      '@vueuse/shared': 13.5.0(vue@3.5.18(typescript@5.8.3))
+      '@vueuse/metadata': 13.6.0
+      '@vueuse/shared': 13.6.0(vue@3.5.18(typescript@5.8.3))
       vue: 3.5.18(typescript@5.8.3)
 
-  '@vueuse/integrations@13.5.0(async-validator@4.2.5)(axios@1.11.0)(change-case@5.4.4)(nprogress@0.2.0)(sortablejs@1.15.6)(universal-cookie@8.0.1)(vue@3.5.18(typescript@5.8.3))':
+  '@vueuse/integrations@13.6.0(async-validator@4.2.5)(axios@1.11.0)(change-case@5.4.4)(nprogress@0.2.0)(sortablejs@1.15.6)(universal-cookie@8.0.1)(vue@3.5.18(typescript@5.8.3))':
     dependencies:
-      '@vueuse/core': 13.5.0(vue@3.5.18(typescript@5.8.3))
-      '@vueuse/shared': 13.5.0(vue@3.5.18(typescript@5.8.3))
+      '@vueuse/core': 13.6.0(vue@3.5.18(typescript@5.8.3))
+      '@vueuse/shared': 13.6.0(vue@3.5.18(typescript@5.8.3))
       vue: 3.5.18(typescript@5.8.3)
     optionalDependencies:
       async-validator: 4.2.5
@@ -5371,9 +5371,9 @@ snapshots:
       sortablejs: 1.15.6
       universal-cookie: 8.0.1
 
-  '@vueuse/metadata@13.5.0': {}
+  '@vueuse/metadata@13.6.0': {}
 
-  '@vueuse/shared@13.5.0(vue@3.5.18(typescript@5.8.3))':
+  '@vueuse/shared@13.6.0(vue@3.5.18(typescript@5.8.3))':
     dependencies:
       vue: 3.5.18(typescript@5.8.3)
 
@@ -8212,7 +8212,7 @@ snapshots:
       - supports-color
       - vue
 
-  unplugin-auto-import@19.3.0(@nuxt/kit@3.17.5)(@vueuse/core@13.5.0(vue@3.5.18(typescript@5.8.3))):
+  unplugin-auto-import@19.3.0(@nuxt/kit@3.17.5)(@vueuse/core@13.6.0(vue@3.5.18(typescript@5.8.3))):
     dependencies:
       local-pkg: 1.1.1
       magic-string: 0.30.17
@@ -8222,7 +8222,7 @@ snapshots:
       unplugin-utils: 0.2.4
     optionalDependencies:
       '@nuxt/kit': 3.17.5
-      '@vueuse/core': 13.5.0(vue@3.5.18(typescript@5.8.3))
+      '@vueuse/core': 13.6.0(vue@3.5.18(typescript@5.8.3))
 
   unplugin-utils@0.2.4:
     dependencies:

+ 7 - 15
app/src/api/nginx_log.ts

@@ -1,22 +1,14 @@
-import { http } from '@uozi-admin/request'
+import { extendCurdApi, http, useCurdApi } from '@uozi-admin/request'
 
-export interface INginxLogData {
-  type: string
-  log_path?: string
+export interface NginxLogData {
+  type?: string
+  path?: string
 }
 
-const nginx_log = {
-  page(page = 0, data: INginxLogData | undefined = undefined) {
+const nginx_log = extendCurdApi(useCurdApi('/nginx_logs'), {
+  page(page = 0, data: NginxLogData | undefined = undefined) {
     return http.post(`/nginx_log?page=${page}`, data)
   },
-
-  getList(params: {
-    type?: string
-    name?: string
-    path?: string
-  }) {
-    return http.get(`/nginx_logs`, { params })
-  },
-}
+})
 
 export default nginx_log

+ 5 - 5
app/src/views/nginx_log/NginxLog.vue

@@ -1,6 +1,6 @@
 <script setup lang="ts">
 import type ReconnectingWebSocket from 'reconnecting-websocket'
-import type { INginxLogData } from '@/api/nginx_log'
+import type { NginxLogData } from '@/api/nginx_log'
 import { debounce } from 'lodash'
 import nginx_log from '@/api/nginx_log'
 import FooterToolBar from '@/components/FooterToolbar'
@@ -17,9 +17,9 @@ const loading = ref(false)
 const filter = ref('')
 
 // Setup log control data based on route params
-const control = reactive<INginxLogData>({
+const control = reactive<NginxLogData>({
   type: logType(),
-  log_path: route.query.log_path as string,
+  path: route.query.log_path as string,
 })
 
 function logType() {
@@ -92,7 +92,7 @@ watch(autoRefresh, async value => {
 watch(route, () => {
   // Update control data when route changes
   control.type = logType()
-  control.log_path = route.query.log_path as string
+  control.path = route.query.log_path as string
 
   clearLog()
   init()
@@ -169,7 +169,7 @@ const computedBuffer = computed(() => {
         @scroll="debounceScrollLog"
       />
     </ACard>
-    <FooterToolBar v-if="control.log_path">
+    <FooterToolBar v-if="control.path">
       <AButton @click="router.go(-1)">
         {{ $gettext('Back') }}
       </AButton>

+ 3 - 2
app/src/views/nginx_log/NginxLogList.vue

@@ -1,5 +1,6 @@
 <script setup lang="tsx">
 import type { CustomRenderArgs, StdTableColumn } from '@uozi-admin/curd'
+import type { NginxLogData } from '@/api/nginx_log'
 import { SyncOutlined } from '@ant-design/icons-vue'
 import { StdCurd } from '@uozi-admin/curd'
 import { Tag } from 'ant-design-vue'
@@ -71,11 +72,11 @@ const columns: StdTableColumn[] = [
   },
 ]
 
-function viewLog(record: { type: string, path: string }) {
+function viewLog(record: NginxLogData) {
   router.push({
     path: `/nginx_log/${record.type}`,
     query: {
-      log_path: record.path,
+      path: record.path,
     },
   })
 }