add share to guest by web client

Cette révision appartient à :
ljw
2024-10-09 15:52:17 +08:00
Parent 3d203971b8
révision bf98a51285
15 fichiers modifiés avec 8729 ajouts et 14 suppressions
+84 -1
Voir le fichier
@@ -1,5 +1,10 @@
import { ref } from 'vue'
import { config } from '@/api/rustdesk'
import Websock from '@/utils/webclient/websock'
import * as rendezvous from '@/utils/webclient/rendezvous'
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}`)
@@ -23,4 +28,82 @@ export function loadRustdeskConfig () {
rustdeskConfig,
}
}
const { rustdeskConfig } = loadRustdeskConfig()
export const { rustdeskConfig } = loadRustdeskConfig()
export async function getPeerSlat (id) {
const [addr, port] = rustdeskConfig.value.id_server.split(':')
if (!addr) {
return
}
const scheme = location.protocol === 'https:' ? 'wss' : 'ws'
const ws = new Websock(`${scheme}://${addr}:21118`, true)
await ws.open()
const conn_type = rendezvous.ConnType.DEFAULT_CONN
const nat_type = rendezvous.NatType.SYMMETRIC
const punch_hole_request = rendezvous.PunchHoleRequest.fromPartial({
id,
licence_key: rustdeskConfig.value.key || undefined,
conn_type,
nat_type,
token: undefined,
})
ws.sendRendezvous({ punch_hole_request })
//rendezvous.RendezvousMessage
const msg = (await ws.next())
ws.close()
console.log(new Date() + ': Got relay response', msg)
const phr = msg.punch_hole_response
const rr = msg.relay_response
if (phr) {
if (phr?.other_failure) {
this.msgbox('error', 'Error', phr?.other_failure)
return
}
if (phr.failure != rendezvous.PunchHoleResponse_Failure.UNRECOGNIZED) {
switch (phr?.failure) {
case rendezvous.PunchHoleResponse_Failure.ID_NOT_EXIST:
ElMessageBox.alert(T('IDNotExist'), T('Error'))
break
case rendezvous.PunchHoleResponse_Failure.OFFLINE:
ElMessageBox.alert(T('RemoteDesktopOffline'), T('Error'))
break
case rendezvous.PunchHoleResponse_Failure.LICENSE_MISMATCH:
ElMessageBox.alert(T('KeyMismatch'), T('Error'))
break
case rendezvous.PunchHoleResponse_Failure.LICENSE_OVERUSE:
ElMessageBox.alert(T('KeyOveruse'), T('Error'))
break
}
}
return false
} else if (rr) {
const uuid = rr.uuid
console.log(new Date() + ': Connecting to relay server')
const _ws = new Websock(`${scheme}://${addr}:21119`, false)
await _ws.open()
console.log(new Date() + ': Connected to relay server')
const request_relay = rendezvous.RequestRelay.fromPartial({
licence_key: rustdeskConfig.value.key || undefined,
uuid,
})
_ws.sendRendezvous({ request_relay })
//暂不支持pk
const public_key = message.PublicKey.fromPartial({})
_ws?.sendMessage({ public_key })
// const secure = (await this.secure(pk)) || false;
// globals.pushEvent("connection_ready", { secure, direct: false });
while (true) {
const msg = (await _ws?.next())
console.log('msg', msg)
if (msg?.hash) {
console.log('hash msg.....', msg.hash)
_ws.close()
return msg.hash
}
}
return false
}
}