Compare commits
4 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
7f467a4814 | ||
|
|
9f10b5e983 | ||
|
|
5291270e6a | ||
|
|
56bba381d8 |
@@ -39,6 +39,7 @@
|
|||||||
- 自动获取ID服务器和KEY
|
- 自动获取ID服务器和KEY
|
||||||
- 自动获取地址簿
|
- 自动获取地址簿
|
||||||
- 游客通过临时分享链接直接远程到设备
|
- 游客通过临时分享链接直接远程到设备
|
||||||
|
- v2 Preview
|
||||||
- CLI
|
- CLI
|
||||||
- 重置管理员密码
|
- 重置管理员密码
|
||||||
|
|
||||||
@@ -142,6 +143,11 @@
|
|||||||

|

|
||||||
3. 登录后,会自动同步ID服务器和KEY
|
3. 登录后,会自动同步ID服务器和KEY
|
||||||
4. 登录后,会将地址簿自动保存到web client中,方便使用
|
4. 登录后,会将地址簿自动保存到web client中,方便使用
|
||||||
|
5. 现已支持`v2 Preview`,访问路径是`/webclient2`
|
||||||
|

|
||||||
|
6. `v2 preview` 部署
|
||||||
|
- 如果是通过`443`端口的`https`部署,必须配置反向代理,可以参考[官方文档](https://rustdesk.com/docs/en/self-host/rustdesk-server-pro/faq/#8-add-websocket-secure-wss-support-for-the-id-server-and-relay-server-to-enable-secure-communication-for-the-web-client)
|
||||||
|
- 如果是`http`或者其他的`https`端口部署,则和`v1`一样,配置好`21118`,`21119`即可
|
||||||
|
|
||||||
### 自动化文档: 使用 Swag 生成 API 文档,方便开发者理解和使用 API。
|
### 自动化文档: 使用 Swag 生成 API 文档,方便开发者理解和使用 API。
|
||||||
|
|
||||||
|
|||||||
@@ -147,6 +147,12 @@ installation are `admin` `admin`, please change the password immediately.
|
|||||||

|

|
||||||
3. After logging in, the ID server and key will be automatically synced.
|
3. After logging in, the ID server and key will be automatically synced.
|
||||||
4. The address book will also be automatically saved to the web client for convenient use.
|
4. The address book will also be automatically saved to the web client for convenient use.
|
||||||
|
5. Now supports `v2 Preview`, accessible at `/webclient2`
|
||||||
|

|
||||||
|
6. `v2 preview` deployment
|
||||||
|
- If deploying via `https` on port `443`, you must configure a reverse proxy. Refer to the [official documentation](https://rustdesk.com/docs/en/self-host/rustdesk-server-pro/faq/#8-add-websocket-secure-wss-support-for-the-id-server-and-relay-server-to-enable-secure-communication-for-the-web-client)
|
||||||
|
- If deploying via `http` or other `https` ports, configure `21118` and `21119` as with `v1`
|
||||||
|
|
||||||
|
|
||||||
### Automated Documentation : API documentation is generated using Swag, making it easier for developers to understand and use the API.
|
### Automated Documentation : API documentation is generated using Swag, making it easier for developers to understand and use the API.
|
||||||
|
|
||||||
|
|||||||
BIN
docs/webclientv2.png
Normal file
BIN
docs/webclientv2.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 31 KiB |
4
resources/web2/index.html
vendored
4
resources/web2/index.html
vendored
@@ -32,7 +32,7 @@
|
|||||||
<title>RustDesk</title>
|
<title>RustDesk</title>
|
||||||
<script src="/webclient-config/index.js"></script>
|
<script src="/webclient-config/index.js"></script>
|
||||||
<link rel="manifest" href="manifest.json" />
|
<link rel="manifest" href="manifest.json" />
|
||||||
<script type="module" crossorigin src="js/dist/index.js?v=3"></script>
|
<script type="module" crossorigin src="js/dist/index.js?v=5"></script>
|
||||||
<link rel="modulepreload" href="js/dist/vendor.js?v=0b990c6e" />
|
<link rel="modulepreload" href="js/dist/vendor.js?v=0b990c6e" />
|
||||||
<style>
|
<style>
|
||||||
html,
|
html,
|
||||||
@@ -259,7 +259,7 @@
|
|||||||
}
|
}
|
||||||
scriptLoaded = true;
|
scriptLoaded = true;
|
||||||
var scriptTag = document.createElement("script");
|
var scriptTag = document.createElement("script");
|
||||||
scriptTag.src = "main.dart.js?v=6d46937e";
|
scriptTag.src = "main.dart.js?v=5";
|
||||||
scriptTag.type = "application/javascript";
|
scriptTag.type = "application/javascript";
|
||||||
document.body.append(scriptTag);
|
document.body.append(scriptTag);
|
||||||
}
|
}
|
||||||
|
|||||||
24
resources/web2/js/dist/index.js
vendored
24
resources/web2/js/dist/index.js
vendored
@@ -1,4 +1,4 @@
|
|||||||
import {getServerConf} from `./ljw.js?v=3`
|
import {getServerConf} from "./ljw.js?v=5"
|
||||||
import {F as $t, J as Yt, L as Re, l as P4, m as r, P as ua, s as Xt, z as H4} from "./vendor.js?v=0b990c6e";
|
import {F as $t, J as Yt, L as Re, l as P4, m as r, P as ua, s as Xt, z as H4} from "./vendor.js?v=0b990c6e";
|
||||||
|
|
||||||
var Zt = Object.defineProperty;
|
var Zt = Object.defineProperty;
|
||||||
@@ -38987,22 +38987,30 @@ function S4(u = !1) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function z4(u, e = !1, i = 0) {
|
function z4(u, e = !1, i = 0) {
|
||||||
if (vn()) return "wss://" + kn(u) + "/ws/" + (e ? "relay" : "id");
|
const p = vn() ? "wss://" : "ws://"
|
||||||
if (u.indexOf(":") > 0) {
|
const domain = uriDomain(u)
|
||||||
const o = u.split(":"), a = parseInt(o[1]);
|
const uriport = uriPort(u)
|
||||||
u = o[0] + ":" + (a + (e ? i || 3 : 2))
|
if (vn() && (!uriport || uriport == '443')){
|
||||||
|
return p + domain + "/ws/" + (e ? "relay" : "id");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (uriport) {
|
||||||
|
const a = parseInt(uriport);
|
||||||
|
u = domain + ":" + (a + (e ? i || 3 : 2))
|
||||||
} else u += ":" + (Pt + (e ? 3 : 2));
|
} else u += ":" + (Pt + (e ? 3 : 2));
|
||||||
return "ws://" + u
|
return p + u
|
||||||
}
|
}
|
||||||
|
|
||||||
function vn() {
|
function vn() {
|
||||||
return window.location.protocol === "https:"
|
return window.location.protocol === "https:"
|
||||||
}
|
}
|
||||||
|
|
||||||
function kn(u) {
|
function uriDomain(u) {
|
||||||
return u.indexOf(":") > 0 ? u.split(":")[0] : u
|
return u.indexOf(":") > 0 ? u.split(":")[0] : u
|
||||||
}
|
}
|
||||||
|
function uriPort(u){
|
||||||
|
return u.indexOf(":") > 0 ? u.split(":")[1] : ''
|
||||||
|
}
|
||||||
const $i = (u, e, i) => e && u.type == "SharedAb" ? Z(Gu([u.value, i.salt])) === Z(e) : !1,
|
const $i = (u, e, i) => e && u.type == "SharedAb" ? Z(Gu([u.value, i.salt])) === Z(e) : !1,
|
||||||
ut = (u, e) => e && u.type == "PersonalAb" ? Z(u.value) === Z(e) : !1;
|
ut = (u, e) => e && u.type == "PersonalAb" ? Z(u.value) === Z(e) : !1;
|
||||||
|
|
||||||
|
|||||||
34
resources/web2/js/dist/ljw.js
vendored
34
resources/web2/js/dist/ljw.js
vendored
@@ -1,6 +1,7 @@
|
|||||||
window._gwen = {}
|
window._gwen = {}
|
||||||
window._gwen.kv = {}
|
window._gwen.kv = {}
|
||||||
const apiserver = localStorage.getItem('api-server')
|
const storage_prefix = 'wc-'
|
||||||
|
const apiserver = localStorage.getItem('wc-api-server')
|
||||||
|
|
||||||
function stringToUint8Array(str) {
|
function stringToUint8Array(str) {
|
||||||
var arr = [];
|
var arr = [];
|
||||||
@@ -23,10 +24,10 @@ function getQueryVariable() {
|
|||||||
|
|
||||||
getQueryVariable()
|
getQueryVariable()
|
||||||
|
|
||||||
const id = window._gwen.kv.id || ''
|
/*const id = window._gwen.kv.id || ''
|
||||||
if (id) {
|
if (id) {
|
||||||
localStorage.setItem('remote-id', id)
|
localStorage.setItem(storage_prefix+'option:local:last_remote_id', id)
|
||||||
}
|
}*/
|
||||||
const share_token = window._gwen.kv.share_token || ''
|
const share_token = window._gwen.kv.share_token || ''
|
||||||
if (share_token) {
|
if (share_token) {
|
||||||
fetch(apiserver + "/api/shared-peer", {
|
fetch(apiserver + "/api/shared-peer", {
|
||||||
@@ -37,14 +38,15 @@ if (share_token) {
|
|||||||
body: JSON.stringify({share_token})
|
body: JSON.stringify({share_token})
|
||||||
}).then(res => res.json()).then(res => {
|
}).then(res => res.json()).then(res => {
|
||||||
if (res.code === 0) {
|
if (res.code === 0) {
|
||||||
localStorage.setItem('custom-rendezvous-server', res.data.id_server)
|
localStorage.setItem(storage_prefix + 'custom-rendezvous-server', res.data.id_server)
|
||||||
localStorage.setItem('key', res.data.key)
|
localStorage.setItem(storage_prefix + 'key', res.data.key)
|
||||||
const peer = res.data.peer
|
const peer = res.data.peer || {}
|
||||||
localStorage.setItem('remote-id', peer.info.id)
|
/*const s = {
|
||||||
peer.tmppwd = stringToUint8Array(window.atob(peer.tmppwd)).toString()
|
id: peer.info.id,
|
||||||
const oldPeers = JSON.parse(localStorage.getItem('peers')) || {}
|
password: peer.tmppwd,
|
||||||
oldPeers[peer.info.id] = peer
|
}*/
|
||||||
localStorage.setItem('peers', JSON.stringify(oldPeers))
|
//修改location
|
||||||
|
window.location.href = `/webclient2/#/${peer.info.id}?password=${peer.tmppwd}`
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@@ -55,7 +57,7 @@ export function getServerConf(token) {
|
|||||||
if (!token) {
|
if (!token) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
const prefix = 'wc-'
|
|
||||||
console.log('getServerConf', token)
|
console.log('getServerConf', token)
|
||||||
if (fetching) {
|
if (fetching) {
|
||||||
return
|
return
|
||||||
@@ -71,9 +73,9 @@ export function getServerConf(token) {
|
|||||||
).then(res => res.json()).then(res => {
|
).then(res => res.json()).then(res => {
|
||||||
fetching = false
|
fetching = false
|
||||||
if (res.code === 0) {
|
if (res.code === 0) {
|
||||||
if (!localStorage.getItem(prefix + 'custom-rendezvous-server') || !localStorage.getItem('key')) {
|
if (!localStorage.getItem(storage_prefix + 'custom-rendezvous-server') || !localStorage.getItem('key')) {
|
||||||
localStorage.setItem(prefix + 'custom-rendezvous-server', res.data.id_server)
|
localStorage.setItem(storage_prefix + 'custom-rendezvous-server', res.data.id_server)
|
||||||
localStorage.setItem(prefix + 'key', res.data.key)
|
localStorage.setItem(storage_prefix + 'key', res.data.key)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}).catch(_ => {
|
}).catch(_ => {
|
||||||
|
|||||||
164421
resources/web2/main.dart.js
vendored
164421
resources/web2/main.dart.js
vendored
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user