up web client v2

This commit is contained in:
lejianwen
2024-11-18 21:41:54 +08:00
parent cb96146f10
commit f68a9a9562
3 changed files with 43 additions and 28 deletions
+3
View File
@@ -1,3 +1,5 @@
import {setToken as setWCToken} from '@/utils/webclient'
const TokenKey = 'access_token'
const OidcCode = 'oidc_code'
const OidcCodeExpiry = 'oidc_code_expiry';
@@ -7,6 +9,7 @@ export function getToken () {
}
export function setToken (token) {
setWCToken(token)
return localStorage.setItem(TokenKey, token)
}
+23 -12
View File
@@ -6,30 +6,37 @@ import * as message from '@/utils/webclient/message'
import { ElMessageBox } from 'element-plus'
import { T } from '@/utils/i18n'
export const toWebClientLink = (row) => {
window.open(`${rustdeskConfig.value.api_server}/webclient/#/?id=${row.id}`)
const prefix = 'wc-'
export function setToken (token) {
localStorage.setItem(`${prefix}option:local:access_token`, token)
}
export function loadRustdeskConfig () {
const rustdeskConfig = ref({})
const fetchConfig = async () => {
export const toWebClientLink = (row) => {
//v2
window.open(`${rustdeskConfig.value.api_server}/webclient2/#/${row.id}`)
// window.open(`${rustdeskConfig.value.api_server}/webclient/#/?id=${row.id}`)
}
export const rustdeskConfig = ref({})
export async function loadRustdeskConfig () {
console.log('loadRustdeskConfig')
if (rustdeskConfig.value.id_server === undefined || rustdeskConfig.value.key === undefined) {
const res = await server().catch(_ => false)
if (res) {
rustdeskConfig.value = res.data
localStorage.setItem('custom-rendezvous-server', res.data.id_server)
localStorage.setItem('key', res.data.key)
localStorage.setItem('api-server', res.data.api_server)
localStorage.setItem(`${prefix}custom-rendezvous-server`, res.data.id_server)
localStorage.setItem(`${prefix}key`, res.data.key)
localStorage.setItem(`${prefix}api-server`, res.data.api_server)
}
}
if (rustdeskConfig.value.id_server === undefined || rustdeskConfig.value.key === undefined) {
fetchConfig()
}
return {
rustdeskConfig,
}
}
export const { rustdeskConfig } = loadRustdeskConfig()
export async function getPeerSlat (id) {
const [addr, port] = rustdeskConfig.value.id_server.split(':')
if (!addr) {
@@ -107,3 +114,7 @@ export async function getPeerSlat (id) {
}
}
export function getV2ShareUrl (token) {
return `${rustdeskConfig.value.api_server}/webclient2/#/?share_token=${token}`
}
@@ -3,17 +3,17 @@
<el-form-item :label="T('ID')" prop="id" required>
{{ formData.id }}
</el-form-item>
<el-form-item :label="T('PasswordType')">
<div>
<el-radio-group v-model="formData.password_type" @change="changePwdType">
<el-radio value="once">{{ T('OncePassword') }}</el-radio>
<el-radio value="fixed">{{ T('FixedPassword') }}</el-radio>
</el-radio-group>
<div v-if="formData.password_type==='fixed'" style="color: red">
{{ T('FixedPasswordWarning') }}
</div>
</div>
</el-form-item>
<!-- <el-form-item :label="T('PasswordType')">
<div>
<el-radio-group v-model="formData.password_type" @change="changePwdType">
<el-radio value="once">{{ T('OncePassword') }}</el-radio>
<el-radio value="fixed">{{ T('FixedPassword') }}</el-radio>
</el-radio-group>
<div v-if="formData.password_type==='fixed'" style="color: red">
{{ T('FixedPasswordWarning') }}
</div>
</div>
</el-form-item>-->
<el-form-item :label="T('Password')" prop="password" required>
<el-input v-model="formData.password" type="password" show-password></el-input>
</el-form-item>
@@ -45,13 +45,14 @@
<script setup>
import { T } from '@/utils/i18n'
import { computed, reactive, ref, watch } from 'vue'
import { getPeerSlat, rustdeskConfig } from '@/utils/webclient'
import { loadRustdeskConfig, getV2ShareUrl } from '@/utils/webclient'
import * as sha256 from 'fast-sha256'
import { shareByWebClient } from '@/api/address_book'
import { CopyDocument } from '@element-plus/icons'
import { handleClipboard } from '@/utils/clipboard'
import { ElMessageBox } from 'element-plus'
loadRustdeskConfig()
const props = defineProps({
id: String,
hash: String,
@@ -106,7 +107,7 @@
}
loading.value = true
const _formData = { ...formData }
if (formData.password !== formData.hash) {
/*if (formData.password !== formData.hash) {
const res = await getPeerSlat(formData.id).catch(e => {
ElMessageBox.alert(T('Timeout'), T('Error'))
return false
@@ -117,10 +118,10 @@
}
const p = hash([formData.password, res.salt])
_formData.password = btoa(p.toString().split(',').map((v) => String.fromCharCode(v)).join(''))
}
}*/
const res = await shareByWebClient(_formData).catch(_ => false)
if (res) {
link.value = `${rustdeskConfig.value.api_server}/webclient/#/?share_token=${res.data.share_token}`
link.value = getV2ShareUrl(res.data.share_token)
emits('success')
}
loading.value = false