add share to guest by web client
Cette révision appartient à :
@@ -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
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Référencer dans un nouveau ticket
Bloquer un utilisateur