lejianwen месяцев назад: 5
Родитель
Сommit
c5d16aed80
3 измененных файлов с 39 добавлено и 41 удалено
  1. 21 2
      src/store/app.js
  2. 10 28
      src/utils/webclient.js
  3. 8 11
      src/views/oauth/index.vue

+ 21 - 2
src/store/app.js

@@ -7,7 +7,7 @@ import ru from 'element-plus/es/locale/lang/ru'
7 7
 import fr from 'element-plus/es/locale/lang/fr'
8 8
 import es from 'element-plus/es/locale/lang/es'
9 9
 import zhTw from 'element-plus/es/locale/lang/zh-tw'
10
-import { admin, app } from '@/api/config'
10
+import { admin, app, server } from '@/api/config'
11 11
 
12 12
 const langs = {
13 13
   'zh-CN': { name: '中文', value: zhCn, sideBarWidth: '210px' },
@@ -33,6 +33,12 @@ export const useAppStore = defineStore({
33 33
       appConfig: {
34 34
         web_client: 1,
35 35
       },
36
+      rustdeskConfig: {
37
+        'id_server': '',
38
+        'key': '',
39
+        'relay_server': '',
40
+        'api_server': '',
41
+      },
36 42
     },
37 43
   }),
38 44
 
@@ -52,6 +58,7 @@ export const useAppStore = defineStore({
52 58
     loadConfig () {
53 59
       this.getAppConfig()
54 60
       this.getAdminConfig()
61
+      this.loadRustdeskConfig()
55 62
     },
56 63
     getAppConfig () {
57 64
       console.log('getAppConfig')
@@ -66,10 +73,22 @@ export const useAppStore = defineStore({
66 73
         this.setting.hello = res.data.hello
67 74
       })
68 75
     },
69
-    replaceAdminTitle(newTitle){
76
+    replaceAdminTitle (newTitle) {
70 77
       document.title = document.title.replace(`- ${this.setting.title}`, `- ${newTitle}`)
71 78
       this.setting.title = newTitle
72 79
     },
80
+    async loadRustdeskConfig () {
81
+      console.log('loadRustdeskConfig')
82
+      const res = await server().catch(_ => false)
83
+      if (res) {
84
+        this.setting.rustdeskConfig = res.data
85
+        const prefix = 'wc-'
86
+        localStorage.setItem(`${prefix}custom-rendezvous-server`, res.data.id_server)
87
+        localStorage.setItem(`${prefix}key`, res.data.key)
88
+        localStorage.setItem(`${prefix}api-server`, res.data.api_server)
89
+      }
90
+
91
+    },
73 92
   },
74 93
 })
75 94
 

+ 10 - 28
src/utils/webclient.js

@@ -1,40 +1,22 @@
1
-import { ref } from 'vue'
2
-import { server } from '@/api/config'
3 1
 import Websock from '@/utils/webclient/websock'
4 2
 import * as rendezvous from '@/utils/webclient/rendezvous'
5 3
 import * as message from '@/utils/webclient/message'
6 4
 import { ElMessageBox } from 'element-plus'
7 5
 import { T } from '@/utils/i18n'
6
+import { useAppStore } from '@/store/app'
8 7
 
9
-const prefix = 'wc-'
10 8
 
11
-export const toWebClientLink = (row) => {
12
-  //v2
13
-  window.open(`${rustdeskConfig.value.api_server}/webclient2/#/${row.id}`)
14
-}
15 9
 
16
-export const rustdeskConfig = ref({})
10
+const app = useAppStore()
17 11
 
18
-export async function loadRustdeskConfig () {
19
-  console.log('loadRustdeskConfig')
20
-  if (rustdeskConfig.value.id_server === undefined || rustdeskConfig.value.key === undefined) {
21
-    const res = await server().catch(_ => false)
22
-    if (res) {
23
-      rustdeskConfig.value = res.data
24
-      localStorage.setItem(`${prefix}custom-rendezvous-server`, res.data.id_server)
25
-      localStorage.setItem(`${prefix}key`, res.data.key)
26
-      localStorage.setItem(`${prefix}api-server`, res.data.api_server)
27
-    }
28
-  }
29
-  return {
30
-    rustdeskConfig,
31
-  }
12
+export const toWebClientLink = (row) => {
13
+  //v2
14
+  console.log(app.setting.rustdeskConfig)
15
+  window.open(`${app.setting.rustdeskConfig.api_server}/webclient2/#/${row.id}`)
32 16
 }
33 17
 
34
-loadRustdeskConfig()
35
-
36 18
 export async function getPeerSlat (id) {
37
-  const [addr, port] = rustdeskConfig.value.id_server.split(':')
19
+  const [addr, port] = app.setting.rustdeskConfig.value.id_server.split(':')
38 20
   if (!addr) {
39 21
     return
40 22
   }
@@ -45,7 +27,7 @@ export async function getPeerSlat (id) {
45 27
   const nat_type = rendezvous.NatType.SYMMETRIC
46 28
   const punch_hole_request = rendezvous.PunchHoleRequest.fromPartial({
47 29
     id,
48
-    licence_key: rustdeskConfig.value.key || undefined,
30
+    licence_key: app.setting.rustdeskConfig.value.key || undefined,
49 31
     conn_type,
50 32
     nat_type,
51 33
     token: undefined,
@@ -87,7 +69,7 @@ export async function getPeerSlat (id) {
87 69
     await _ws.open()
88 70
     console.log(new Date() + ': Connected to relay server')
89 71
     const request_relay = rendezvous.RequestRelay.fromPartial({
90
-      licence_key: rustdeskConfig.value.key || undefined,
72
+      licence_key: app.setting.rustdeskConfig.value.key || undefined,
91 73
       uuid,
92 74
     })
93 75
     _ws.sendRendezvous({ request_relay })
@@ -112,5 +94,5 @@ export async function getPeerSlat (id) {
112 94
 }
113 95
 
114 96
 export function getV2ShareUrl (token) {
115
-  return `${rustdeskConfig.value.api_server}/webclient2/#/?share_token=${token}`
97
+  return `${app.setting.rustdeskConfig.value.api_server}/webclient2/#/?share_token=${token}`
116 98
 }

+ 8 - 11
src/views/oauth/index.vue

@@ -65,12 +65,7 @@
65 65
           </el-input>
66 66
         </el-form-item>
67 67
         <el-form-item label="RedirectUrl" prop="redirect_url">
68
-          <el-input
69
-            v-model="formData.redirect_url"
70
-            readonly
71
-            suffix-icon="el-icon-document-copy"
72
-            @click="copyRedirectUrl"
73
-          />
68
+          <div @click="copyRedirectUrl">{{formData.redirect_url}} <el-icon><CopyDocument></CopyDocument></el-icon></div>
74 69
         </el-form-item>
75 70
         <el-form-item label="PkceEnable" prop="pkce_enable">
76 71
           <el-switch v-model="formData.pkce_enable"
@@ -106,11 +101,13 @@
106 101
   import { list, create, update, detail, remove } from '@/api/oauth'
107 102
   import { ElMessage, ElMessageBox } from 'element-plus'
108 103
   import { T } from '@/utils/i18n'
104
+  import { handleClipboard } from '@/utils/clipboard'
105
+  import { useAppStore } from '@/store/app'
106
+  import { CopyDocument } from '@element-plus/icons'
109 107
 
110
-  const copyRedirectUrl = () => {
111
-    navigator.clipboard.writeText(formData.redirect_url)
112
-      .then(() => ElMessage.success('Copied'))
113
-      .catch(() => ElMessage.error('Copy failed'))
108
+  const app = useAppStore()
109
+  const copyRedirectUrl = (e) => {
110
+    handleClipboard(formData.redirect_url, e)
114 111
   }
115 112
 
116 113
   const listRes = reactive({
@@ -203,7 +200,7 @@
203 200
   }
204 201
 
205 202
   const defaultRedirect = () => {
206
-    return `${window.location.origin}/api/oidc/callback`
203
+    return `${app.setting.rustdeskConfig.api_server||window.location.origin}/api/oidc/callback`
207 204
   }
208 205
 
209 206
   const toEdit = (row) => {