Compare commits

...

2 Commits

Author SHA1 Message Date
lejianwen
f49457dc5b feat(webclient): Up to 1.3.7 2025-01-21 19:12:28 +08:00
lejianwen
d9e2e247ea feat(api): Add api token expire
Resolves #109
2025-01-21 18:23:28 +08:00
9 changed files with 7237 additions and 7192 deletions

View File

@@ -193,6 +193,7 @@ jwt:
| RUSTDESK_API_APP_WEB_CLIENT | 是否启用web-client; 1:启用,0:不启用; 默认启用 | 1 | | RUSTDESK_API_APP_WEB_CLIENT | 是否启用web-client; 1:启用,0:不启用; 默认启用 | 1 |
| RUSTDESK_API_APP_REGISTER | 是否开启注册; `true`, `false` 默认`false` | `false` | | RUSTDESK_API_APP_REGISTER | 是否开启注册; `true`, `false` 默认`false` | `false` |
| RUSTDESK_API_APP_SHOW_SWAGGER | 是否可见swagger文档;`1`显示,`0`不显示,默认`0`不显示 | `1` | | RUSTDESK_API_APP_SHOW_SWAGGER | 是否可见swagger文档;`1`显示,`0`不显示,默认`0`不显示 | `1` |
| RUSTDESK_API_APP_TOKEN_EXPIRE | token有效时长 | `3600` |
| -----ADMIN配置----- | ---------- | ---------- | | -----ADMIN配置----- | ---------- | ---------- |
| RUSTDESK_API_ADMIN_TITLE | 后台标题 | `RustDesk Api Admin` | | RUSTDESK_API_ADMIN_TITLE | 后台标题 | `RustDesk Api Admin` |
| RUSTDESK_API_ADMIN_HELLO | 后台欢迎语,可以使用`html` | | | RUSTDESK_API_ADMIN_HELLO | 后台欢迎语,可以使用`html` | |

View File

@@ -194,6 +194,7 @@ The prefix for variable names is `RUSTDESK_API`. If environment variables exist,
| RUSTDESK_API_APP_WEB_CLIENT | web client on/off; 1: on, 0 off, default: 1 | 1 | | RUSTDESK_API_APP_WEB_CLIENT | web client on/off; 1: on, 0 off, default: 1 | 1 |
| RUSTDESK_API_APP_REGISTER | register enable; `true`, `false`; default:`false` | `false` | | RUSTDESK_API_APP_REGISTER | register enable; `true`, `false`; default:`false` | `false` |
| RUSTDESK_API_APP_SHOW_SWAGGER | swagger visible; 1: yes, 0: no; default: 0 | `0` | | RUSTDESK_API_APP_SHOW_SWAGGER | swagger visible; 1: yes, 0: no; default: 0 | `0` |
| RUSTDESK_API_APP_TOKEN_EXPIRE | token expire duration(second) | `3600` |
| ----- ADMIN Configuration----- | ---------- | ---------- | | ----- ADMIN Configuration----- | ---------- | ---------- |
| RUSTDESK_API_ADMIN_TITLE | Admin Title | `RustDesk Api Admin` | | RUSTDESK_API_ADMIN_TITLE | Admin Title | `RustDesk Api Admin` |
| RUSTDESK_API_ADMIN_HELLO | Admin welcome message, you can use `html` | | | RUSTDESK_API_ADMIN_HELLO | Admin welcome message, you can use `html` | |

View File

@@ -3,6 +3,7 @@ app:
web-client: 1 # 1:启用 0:禁用 web-client: 1 # 1:启用 0:禁用
register: false #是否开启注册 register: false #是否开启注册
show-swagger: 0 # 1:启用 0:禁用 show-swagger: 0 # 1:启用 0:禁用
token-expire: 360000
admin: admin:
title: "RustDesk Api Admin" title: "RustDesk Api Admin"
hello-file: "./conf/admin/hello.html" #优先使用file hello-file: "./conf/admin/hello.html" #优先使用file

View File

@@ -17,6 +17,7 @@ type App struct {
WebClient int `mapstructure:"web-client"` WebClient int `mapstructure:"web-client"`
Register bool `mapstructure:"register"` Register bool `mapstructure:"register"`
ShowSwagger int `mapstructure:"show-swagger"` ShowSwagger int `mapstructure:"show-swagger"`
TokenExpire int `mapstructure:"token-expire"`
} }
type Admin struct { type Admin struct {
Title string `mapstructure:"title"` Title string `mapstructure:"title"`

View File

@@ -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=1bbc8b94"></script> <script type="module" crossorigin src="js/dist/index.js?v=cabfd933"></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=f6f842b3"; scriptTag.src = "main.dart.js?v=060a626e";
scriptTag.type = "application/javascript"; scriptTag.type = "application/javascript";
document.body.append(scriptTag); document.body.append(scriptTag);
} }

View File

@@ -18,7 +18,6 @@ var h = (u, e, i) => (ue(u, e, "read from private field"), i ? i.call(u) : e.get
} }
}), je = (u, e, i) => (ue(u, e, "access private method"), i); }), je = (u, e, i) => (ue(u, e, "access private method"), i);
const sa = function () { const sa = function () {
const e = document.createElement("link").relList; const e = document.createElement("link").relList;
if (e && e.supports && e.supports("modulepreload")) return; if (e && e.supports && e.supports("modulepreload")) return;
@@ -7590,7 +7589,7 @@ class N4 {
let i = new Uint8Array(e.data); let i = new Uint8Array(e.data);
this._recvDataCount += i.length; this._recvDataCount += i.length;
const o = this._secretKey; const o = this._secretKey;
o && (o[2] += 1, i = Mn(i, o[2], o[0])); o && (o[2] += 1, i = Kn(i, o[2], o[0]));
let a; let a;
i.length == 0 ? a = new Uint8Array : a = this._isRendezvous ? this.parseRendezvous(i) : this.parseMessage(i), this._buf.push(a), this._eventHandlers.message && (this._isProcessing || this.processQueue()) i.length == 0 ? a = new Uint8Array : a = this._isRendezvous ? this.parseRendezvous(i) : this.parseMessage(i), this._buf.push(a), this._eventHandlers.message && (this._isProcessing || this.processQueue())
} }
@@ -7817,7 +7816,7 @@ const Co = {
RShift: "RShift", RShift: "RShift",
CTRL_ALT_DEL: "CtrlAltDel", CTRL_ALT_DEL: "CtrlAltDel",
LOCK_SCREEN: "LockScreen" LOCK_SCREEN: "LockScreen"
}, se = "1.3.6", po = "2024-12-22 23:23"; }, se = "1.3.7", po = "2025-01-21 01:12";
class A { class A {
static setItem(e, i) { static setItem(e, i) {
@@ -8036,7 +8035,7 @@ async function zo() {
} }
function Z(u) { function Z(u) {
return Tn(u) return Ln(u)
} }
function c4(u) { function c4(u) {
@@ -8044,7 +8043,7 @@ function c4(u) {
} }
async function Po() { async function Po() {
return await Jn() return await $n()
} }
function O4() { function O4() {
@@ -9176,7 +9175,7 @@ async function rn(u) {
function xe(u, e = void 0) { function xe(u, e = void 0) {
const i = () => { const i = () => {
try { try {
Kn(new TextDecoder().decode(u.content)), fe(), e == null || e() Xn(new TextDecoder().decode(u.content)), fe(), e == null || e()
} catch (o) { } catch (o) {
console.error("Failed to copy to clipboard, ", o), document.hasFocus() || (q4 = u) console.error("Failed to copy to clipboard, ", o), document.hasFocus() || (q4 = u)
} }
@@ -9240,7 +9239,7 @@ async function Nt(u, e, i = void 0) {
} }
function $i() { function $i() {
In("info", "Clipboard is synchronized", 2e3) Un("info", "Clipboard is synchronized", 2e3)
} }
window.addEventListener("focus", function () { window.addEventListener("focus", function () {
@@ -9887,7 +9886,7 @@ class Wt {
(f4 = this._ws) == null || f4.sendMessage({public_key: T}); (f4 = this._ws) == null || f4.sendMessage({public_key: T});
return return
} }
const [E, c] = jn(), C = Nn(), D = On(C, l, E), B = K.fromPartial({asymmetric_value: c, symmetric_value: D}); const [E, c] = Wn(), C = Vn(), D = qn(C, l, E), B = K.fromPartial({asymmetric_value: c, symmetric_value: D});
return (x4 = this._ws) == null || x4.sendMessage({public_key: B}), (Ie = this._ws) == null || Ie.setSecretKey(C), console.log("secured"), !0 return (x4 = this._ws) == null || x4.sendMessage({public_key: B}), (Ie = this._ws) == null || Ie.setSecretKey(C), console.log("secured"), !0
} }
@@ -9905,7 +9904,7 @@ class Wt {
Re(o.colors, !1, a => { Re(o.colors, !1, a => {
a && (o.colors = a, m("cursor_data", o)) a && (o.colors = a, m("cursor_data", o))
}) })
} else if (e != null && e.cursor_id) m("cursor_id", {id: e == null ? void 0 : e.cursor_id}); else if (e != null && e.cursor_position) m("cursor_position", e == null ? void 0 : e.cursor_position); else if (e != null && e.misc) this.handleMisc(e == null ? void 0 : e.misc); else if (e != null && e.audio_frame) Vn(e == null ? void 0 : e.audio_frame.data); else if (e != null && e.message_box) this.handleMsgBox(e == null ? void 0 : e.message_box); else if (e != null && e.peer_info) this.handleSyncPeerInfo(e.peer_info); else if (e.file_response) await this.handleFileResponse(e.file_response); else if (e.file_action) { } else if (e != null && e.cursor_id) m("cursor_id", {id: e == null ? void 0 : e.cursor_id}); else if (e != null && e.cursor_position) m("cursor_position", e == null ? void 0 : e.cursor_position); else if (e != null && e.misc) this.handleMisc(e == null ? void 0 : e.misc); else if (e != null && e.audio_frame) Zn(e == null ? void 0 : e.audio_frame.data); else if (e != null && e.message_box) this.handleMsgBox(e == null ? void 0 : e.message_box); else if (e != null && e.peer_info) this.handleSyncPeerInfo(e.peer_info); else if (e.file_response) await this.handleFileResponse(e.file_response); else if (e.file_action) {
const o = e.file_action; const o = e.file_action;
await this.handleFileAction(o) await this.handleFileAction(o)
} }
@@ -10324,7 +10323,7 @@ class Wt {
} }
handleMisc(e) { handleMisc(e) {
if (e.audio_format) Wn(e.audio_format.channels, e.audio_format.sample_rate); else if (e.chat_message) m("chat_client_mode", {text: e.chat_message.text}); else if (e.permission_info) { if (e.audio_format) Gn(e.audio_format.channels, e.audio_format.sample_rate); else if (e.chat_message) m("chat_client_mode", {text: e.chat_message.text}); else if (e.permission_info) {
const i = e.permission_info; const i = e.permission_info;
console.info("Change permission " + i.permission + " -> " + i.enabled); console.info("Change permission " + i.permission + " -> " + i.enabled);
let o; let o;
@@ -10494,7 +10493,7 @@ class Wt {
inputKey(e, i, o, a, t, s, l) { inputKey(e, i, o, a, t, s, l) {
var c; var c;
const E = So(e, Rn()); const E = So(e, Mn());
!E || (a && (e == "VK_MENU" || e == "RAlt") && (a = !1), t && (e == "VK_CONTROL" || e == "RControl") && (t = !1), s && (e == "VK_SHIFT" || e == "RShift") && (s = !1), l && (e == "Meta" || e == "RWin") && (l = !1), E.down = i, E.press = o, E.modifiers = this.getMod(a, t, s, l), (c = this._ws) == null || c.sendMessage({key_event: E})) !E || (a && (e == "VK_MENU" || e == "RAlt") && (a = !1), t && (e == "VK_CONTROL" || e == "RControl") && (t = !1), s && (e == "VK_SHIFT" || e == "RShift") && (s = !1), l && (e == "Meta" || e == "RWin") && (l = !1), E.down = i, E.press = o, E.modifiers = this.getMod(a, t, s, l), (c = this._ws) == null || c.sendMessage({key_event: E}))
} }
@@ -11117,7 +11116,6 @@ function Sn(u) {
return u.indexOf(":") > 0 ? u.split(":")[0] : u return u.indexOf(":") > 0 ? u.split(":")[0] : u
} }
const at = (u, e, i) => e && u.type == "SharedAb" ? Z(Zu([u.value, i.salt])) === Z(e) : !1, const at = (u, e, i) => e && u.type == "SharedAb" ? Z(Zu([u.value, i.salt])) === Z(e) : !1,
ot = (u, e) => e && u.type == "PersonalAb" ? Z(u.value) === Z(e) : !1; ot = (u, e) => e && u.type == "PersonalAb" ? Z(u.value) === Z(e) : !1;
@@ -11241,14 +11239,66 @@ async function Pn(u) {
o.close(), console.error("Failed to query online states, no online response") o.close(), console.error("Failed to query online states, no online response")
} }
}
const Rn = "rustdesk-client";
function In() {
if (typeof navigator != "undefined") {
const u = navigator.platform.toLowerCase();
return u.includes("win") ? "windows" : u.includes("mac") ? "macos" : u.includes("linux") ? "linux" : u
}
return "unknown"
}
function Tn() {
const u = In();
return u === "windows" ? navigator.userAgent.includes("Win64") ? "x86_64" : "x86" : u === "macos" ? navigator.userAgent.includes("Intel") ? "x86_64" : "arm64" : navigator.userAgent.includes("x64") ? "x86_64" : "x86"
}
function jn() {
const u = navigator.userAgent;
let e = "", i = "";
if (u.includes("Windows")) {
e = "windows";
const o = u.match(/Windows NT (\d+\.\d+)/);
o && (i = o[1])
} else if (u.includes("Mac OS X")) {
e = "macos";
const o = u.match(/Mac OS X (\d+[._]\d+[._]\d+)/);
o && (i = o[1].replace(/_/g, "."))
} else if (u.includes("Linux")) {
e = "linux";
const o = u.match(/Linux\s*([\d.]+)?/);
o && o[1] && (i = o[1])
} else e = "unknown", i = "";
return e += "-" + navigator.userAgent, {os: e, os_version: i}
}
async function Nn(u) {
const e = "https://api.rustdesk.com/version/latest", {os: i, os_version: o} = jn(), a = Tn();
return [{os: i, os_version: o, arch: a, device_id: [], typ: u}, e]
}
async function On() {
try {
const [u, e] = await Nn(Rn);
return await (await fetch(e, {
method: "POST",
headers: {"Content-Type": "application/json"},
body: JSON.stringify(u)
})).json()
} catch {
return null
}
} }
window.curConn = void 0; window.curConn = void 0;
window.isMobile = () => /(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|ipad|iris|kindle|Android|Silk|lge |maemo|midp|mmp|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i.test(navigator.userAgent) || /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(navigator.userAgent.substr(0, 4)); window.isMobile = () => /(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|ipad|iris|kindle|Android|Silk|lge |maemo|midp|mmp|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i.test(navigator.userAgent) || /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(navigator.userAgent.substr(0, 4));
const ye = zt(), Yu = ye === Y4, H4 = ye === Be, Qu = ye === me; const ye = zt(), Yu = ye === Y4, H4 = ye === Be, Qu = ye === me;
function Rn() { function Mn() {
return !isMobile() return !isMobile()
} }
@@ -11267,7 +11317,7 @@ function Vt(u, e, i, o) {
} }
} }
function In(u, e, i) { function Un(u, e, i) {
onGlobalEvent(JSON.stringify({name: "toast", type: u, text: e, dur_msec: i})) onGlobalEvent(JSON.stringify({name: "toast", type: u, text: e, dur_msec: i}))
} }
@@ -11340,20 +11390,20 @@ function Zt(u) {
return q.from_base64(u, q.base64_variants.ORIGINAL) return q.from_base64(u, q.base64_variants.ORIGINAL)
} }
function Tn(u) { function Ln(u) {
return q.to_base64(u, q.base64_variants.ORIGINAL) return q.to_base64(u, q.base64_variants.ORIGINAL)
} }
function jn() { function Wn() {
const u = q.crypto_box_keypair(), e = u.privateKey, i = u.publicKey; const u = q.crypto_box_keypair(), e = u.privateKey, i = u.publicKey;
return [e, i] return [e, i]
} }
function Nn() { function Vn() {
return q.crypto_secretbox_keygen() return q.crypto_secretbox_keygen()
} }
function On(u, e, i) { function qn(u, e, i) {
const o = Uint8Array.from(Array(24).fill(0)); const o = Uint8Array.from(Array(24).fill(0));
return q.crypto_box_easy(u, o, e, i) return q.crypto_box_easy(u, o, e, i)
} }
@@ -11370,7 +11420,7 @@ function st(u, e, i) {
return q.crypto_secretbox_easy(u, $4(e), i) return q.crypto_secretbox_easy(u, $4(e), i)
} }
function Mn(u, e, i) { function Kn(u, e, i) {
return q.crypto_secretbox_open_easy(u, $4(e), i) return q.crypto_secretbox_open_easy(u, $4(e), i)
} }
@@ -11428,7 +11478,7 @@ window.setByName = (u, e) => {
e = JSON.parse(e), Ho(curConn, e.usb_hid, e.down == "true", e.lock_modes); e = JSON.parse(e), Ho(curConn, e.usb_hid, e.down == "true", e.lock_modes);
break; break;
case"send_mouse": case"send_mouse":
Un(e); Hn(e);
break; break;
case"send_2fa": case"send_2fa":
curConn == null || curConn.send2fa(e); curConn == null || curConn.send2fa(e);
@@ -11455,7 +11505,7 @@ window.setByName = (u, e) => {
e = JSON.parse(e), curConn.setFlutterUiOption(e.name, e.value); e = JSON.parse(e), curConn.setFlutterUiOption(e.name, e.value);
break; break;
case"option:user:default": case"option:user:default":
Gn(e); ur(e);
break; break;
case"option:session": case"option:session":
e = JSON.parse(e), curConn.setOption(e.name, e.value); e = JSON.parse(e), curConn.setOption(e.name, e.value);
@@ -11473,12 +11523,12 @@ window.setByName = (u, e) => {
curConn.inputOsPassword(e); curConn.inputOsPassword(e);
break; break;
case"session_add_sync": case"session_add_sync":
return Xn(e); return tr(e);
case"session_start": case"session_start":
Yn(); ar();
break; break;
case"session_close": case"session_close":
$n(); or();
break; break;
case"elevate_direct": case"elevate_direct":
curConn.elevateDirect(); curConn.elevateDirect();
@@ -11500,13 +11550,13 @@ window.setByName = (u, e) => {
curConn.changePreferCodec(e); curConn.changePreferCodec(e);
break; break;
case"cursor": case"cursor":
Hn(e); Yn(e);
break; break;
case"enter_or_leave": case"enter_or_leave":
curConn == null || curConn.enterOrLeave(e); curConn == null || curConn.enterOrLeave(e);
break; break;
case"fullscreen": case"fullscreen":
e == "Y" ? er() : ir(); e == "Y" ? rr() : sr();
break; break;
case"send_note": case"send_note":
const i = Yt("conn"); const i = Yt("conn");
@@ -11549,7 +11599,7 @@ window.setByName = (u, e) => {
curConn == null || curConn.sendChat(e); curConn == null || curConn.sendChat(e);
break; break;
case"load_ab": case"load_ab":
or(); dr();
break; break;
case"save_ab": case"save_ab":
_o(e); _o(e);
@@ -11558,7 +11608,7 @@ window.setByName = (u, e) => {
vo(); vo();
break; break;
case"load_group": case"load_group":
nr(); cr();
break; break;
case"save_group": case"save_group":
ko(e); ko(e);
@@ -11575,7 +11625,7 @@ window.setByName = (u, e) => {
} }
}; };
function Un(u) { function Hn(u) {
if (!curConn) return; if (!curConn) return;
let e = 0; let e = 0;
switch (u = JSON.parse(u), u.type) { switch (u = JSON.parse(u), u.type) {
@@ -11618,11 +11668,11 @@ function Un(u) {
} }
window.getByName = (u, e) => { window.getByName = (u, e) => {
let i = Ln(u, e); let i = Jn(u, e);
return typeof i == "string" || i instanceof String ? i : i == null || i == null ? "" : JSON.stringify(i) return typeof i == "string" || i instanceof String ? i : i == null || i == null ? "" : JSON.stringify(i)
}; };
function Ln(u, e) { function Jn(u, e) {
var o, a, t, s; var o, a, t, s;
switch (u) { switch (u) {
case"remember": case"remember":
@@ -11669,10 +11719,10 @@ function Ln(u, e) {
case"version": case"version":
return se; return se;
case"load_recent_peers": case"load_recent_peers":
Zn(); er();
break; break;
case"load_fav_peers": case"load_fav_peers":
Qn(); ir();
break; break;
case"fav": case"fav":
return (a = A.getItem("fav")) != null ? a : "[]"; return (a = A.getItem("fav")) != null ? a : "[]";
@@ -11726,7 +11776,7 @@ function Ln(u, e) {
case"peer_has_password": case"peer_has_password":
return ((t = (Cu()[e] || {}).password) != null ? t : "") !== ""; return ((t = (Cu()[e] || {}).password) != null ? t : "") !== "";
case"fullscreen": case"fullscreen":
return tr() ? "Y" : "N"; return lr() ? "Y" : "N";
case"platform": case"platform":
return curConn.getPlatform(); return curConn.getPlatform();
case"enable_trusted_devices": case"enable_trusted_devices":
@@ -11737,11 +11787,11 @@ function Ln(u, e) {
let ze = new Worker("./libopus.js?v=02816afa"), Qt; let ze = new Worker("./libopus.js?v=02816afa"), Qt;
function Wn(u, e) { function Gn(u, e) {
Qt = qn(u, e), ze.postMessage({channels: u, sampleRate: e}) Qt = Qn(u, e), ze.postMessage({channels: u, sampleRate: e})
} }
function Vn(u) { function Zn(u) {
ze.postMessage(u, [u.buffer]) ze.postMessage(u, [u.buffer])
} }
@@ -11749,7 +11799,7 @@ window.init = async () => {
try { try {
ze.onmessage = u => { ze.onmessage = u => {
Qt.feed(u.data) Qt.feed(u.data)
}, await Jt(), await zo(), await Pa(), await N.init(), console.log("init done"), onInitFinished() }, await Jt(), await zo(), await Pa(), await N.init(), console.log("init done"), onInitFinished(), await On()
} catch (u) { } catch (u) {
console.error("Failed to init: " + u.message), onInitFinished() console.error("Failed to init: " + u.message), onInitFinished()
} }
@@ -11758,11 +11808,11 @@ window.onunload = () => {
console.log("window close"), Ia() console.log("window close"), Ia()
}; };
function qn(u, e) { function Qn(u, e) {
return new ra({channels: u, sampleRate: e, flushingTime: 2e3}) return new ra({channels: u, sampleRate: e, flushingTime: 2e3})
} }
function Kn(u) { function Xn(u) {
if (window.clipboardData && window.clipboardData.setData) return window.clipboardData.setData("Text", u); if (window.clipboardData && window.clipboardData.setData) return window.clipboardData.setData("Text", u);
if (document.queryCommandSupported && document.queryCommandSupported("copy")) { if (document.queryCommandSupported && document.queryCommandSupported("copy")) {
var e = document.createElement("textarea"); var e = document.createElement("textarea");
@@ -11791,7 +11841,7 @@ function Q(u) {
} }
} }
function Hn(u) { function Yn(u) {
let e = "auto"; let e = "auto";
if (u != "auto") try { if (u != "auto") try {
const t = JSON.parse(u); const t = JSON.parse(u);
@@ -11807,13 +11857,13 @@ function Hn(u) {
} }
} }
async function Jn() { async function $n() {
await T4.ready; await T4.ready;
const u = T4.crypto_sign_keypair(); const u = T4.crypto_sign_keypair();
return {publicKey: u.publicKey, privateKey: u.privateKey} return {publicKey: u.publicKey, privateKey: u.privateKey}
} }
function Gn(u) { function ur(u) {
try { try {
const e = JSON.parse(u), i = JSON.parse(A.getItem("user-default-options")) || {}; const e = JSON.parse(u), i = JSON.parse(A.getItem("user-default-options")) || {};
i[e.name] = e.value, A.setItem("user-default-options", JSON.stringify(i)) i[e.name] = e.value, A.setItem("user-default-options", JSON.stringify(i))
@@ -11855,22 +11905,23 @@ function Pe() {
return u.sort().reverse().map(e => e[2]) return u.sort().reverse().map(e => e[2])
} }
function Zn() { function er() {
const u = Pe(); const u = Pe();
u && be("load_recent_peers", {peers: JSON.stringify(u)}) u && be("load_recent_peers", {peers: JSON.stringify(u)})
} }
function Qn() { function ir() {
var u; var u;
try { try {
const e = (u = A.getItem("fav")) != null ? u : "[]", i = JSON.parse(e), o = Pe().filter(a => i.includes(a.id)); const e = (u = A.getItem("fav")) != null ? u : "[]", i = JSON.parse(e),
o = Pe().filter(a => i.includes(a.id));
o && be("load_fav_peers", {peers: JSON.stringify(o)}) o && be("load_fav_peers", {peers: JSON.stringify(o)})
} catch (e) { } catch (e) {
console.error("Failed to load fav peers: " + e.message) console.error("Failed to load fav peers: " + e.message)
} }
} }
function Xn(u) { function tr(u) {
var e; var e;
try { try {
const i = JSON.parse(u), o = i.id; const i = JSON.parse(u), o = i.id;
@@ -11884,7 +11935,7 @@ function Xn(u) {
} }
} }
function Yn(u) { function ar(u) {
try { try {
if (!e0()) return; if (!e0()) return;
Kt() Kt()
@@ -11893,11 +11944,11 @@ function Yn(u) {
} }
} }
function $n(u) { function or(u) {
Se() Se()
} }
function ur(u, e) { function nr(u, e) {
function i(o) { function i(o) {
return /^([0-9a-fA-F]{0,4}:){1,7}[0-9a-fA-F]{0,4}$/.test(o) return /^([0-9a-fA-F]{0,4}:){1,7}[0-9a-fA-F]{0,4}$/.test(o)
} }
@@ -11925,7 +11976,7 @@ function Xt() {
if (u) return u; if (u) return u;
const e = A.getItem("custom-rendezvous-server"); const e = A.getItem("custom-rendezvous-server");
if (e) { if (e) {
let i = ur(e, -2); let i = nr(e, -2);
return i == e ? `http://${i}:${Ut - 2}` : `http://${i}` return i == e ? `http://${i}:${Ut - 2}` : `http://${i}`
} }
return "https://admin.rustdesk.com" return "https://admin.rustdesk.com"
@@ -11985,28 +12036,28 @@ async function ea(u, e) {
}) })
} }
function er() { function rr() {
const u = document.documentElement; const u = document.documentElement;
u.requestFullscreen ? u.requestFullscreen() : u.mozRequestFullScreen ? u.mozRequestFullScreen() : u.webkitRequestFullscreen ? u.webkitRequestFullscreen() : u.msRequestFullscreen && u.msRequestFullscreen() u.requestFullscreen ? u.requestFullscreen() : u.mozRequestFullScreen ? u.mozRequestFullScreen() : u.webkitRequestFullscreen ? u.webkitRequestFullscreen() : u.msRequestFullscreen && u.msRequestFullscreen()
} }
function ir() { function sr() {
document.exitFullscreen ? document.exitFullscreen() : document.mozCancelFullScreen ? document.mozCancelFullScreen() : document.webkitExitFullscreen ? document.webkitExitFullscreen() : document.msExitFullscreen && document.msExitFullscreen() document.exitFullscreen ? document.exitFullscreen() : document.mozCancelFullScreen ? document.mozCancelFullScreen() : document.webkitExitFullscreen ? document.webkitExitFullscreen() : document.msExitFullscreen && document.msExitFullscreen()
} }
function tr() { function lr() {
return document.fullscreenElement || document.webkitFullscreenElement || document.mozFullScreenElement || document.msFullscreenElement return document.fullscreenElement || document.webkitFullscreenElement || document.mozFullScreenElement || document.msFullscreenElement
} }
var lt = !1; var lt = !1;
function ar() { function Er() {
lt || (console.log("listen fullscreen"), lt = !0, document.addEventListener("fullscreenchange", () => onFullscreenChanged(!!document.fullscreenElement)), document.addEventListener("mozfullscreenchange", () => onFullscreenChanged(!!document.mozFullScreen)), document.addEventListener("webkitfullscreenchange", () => onFullscreenChanged(!!document.webkitFullscreenElement)), document.addEventListener("msfullscreenchange", () => onFullscreenChanged(!!document.msFullscreenElement))) lt || (console.log("listen fullscreen"), lt = !0, document.addEventListener("fullscreenchange", () => onFullscreenChanged(!!document.fullscreenElement)), document.addEventListener("mozfullscreenchange", () => onFullscreenChanged(!!document.mozFullScreen)), document.addEventListener("webkitfullscreenchange", () => onFullscreenChanged(!!document.webkitFullscreenElement)), document.addEventListener("msfullscreenchange", () => onFullscreenChanged(!!document.msFullscreenElement)))
} }
ar(); Er();
async function or() { async function dr() {
try { try {
let u = await xt(); let u = await xt();
onLoadAbFinished(JSON.stringify(u)) onLoadAbFinished(JSON.stringify(u))
@@ -12015,7 +12066,7 @@ async function or() {
} }
} }
async function nr() { async function cr() {
try { try {
let u = await go(); let u = await go();
onLoadGroupFinished(JSON.stringify(u)) onLoadGroupFinished(JSON.stringify(u))
@@ -12077,4 +12128,4 @@ if (Et) {
const i = document.querySelector("input#password").value; const i = document.querySelector("input#password").value;
i && (document.querySelector("div#password").style.display = "none", e0().login(i)) i && (document.querySelector("div#password").style.display = "none", e0().login(i))
} }
} }

View File

@@ -4685,7 +4685,7 @@ Kui soovid juurdep\xE4\xE4su seadmele avalikus serveris, sisesta "<id>@public",
}, sl: { }, sl: {
Status: "Stanje", Status: "Stanje",
"Your Desktop": "Va\u0161e namizje", "Your Desktop": "Va\u0161e namizje",
desk_tip: "Do va\u0161ega namizja lahko dostopate s spodnjim IDjem in geslom", desk_tip: "S spodnjim IDjem in geslom omogo\u010Dite oddaljeni nadzor va\u0161ega ra\u010Dunalnika",
Password: "Geslo", Password: "Geslo",
Ready: "Pripravljen", Ready: "Pripravljen",
Established: "Povezava vzpostavljena", Established: "Povezava vzpostavljena",
@@ -4872,7 +4872,7 @@ Kui soovid juurdep\xE4\xE4su seadmele avalikus serveris, sisesta "<id>@public",
"Logging in...": "Prijavljanje...", "Logging in...": "Prijavljanje...",
"Enable RDP session sharing": "Omogo\u010Di deljenje RDP seje", "Enable RDP session sharing": "Omogo\u010Di deljenje RDP seje",
"Auto Login": "Samodejna prijava", "Auto Login": "Samodejna prijava",
"Enable direct IP access": "Omogo\u010Di neposredni dostop preko IP", "Enable direct IP access": "Omogo\u010Di neposredni dostop preko IP naslova",
Rename: "Preimenuj", Rename: "Preimenuj",
Space: "Prazno", Space: "Prazno",
"Create desktop shortcut": "Ustvari bli\u017Enjico na namizju", "Create desktop shortcut": "Ustvari bli\u017Enjico na namizju",
@@ -5046,7 +5046,7 @@ Kui soovid juurdep\xE4\xE4su seadmele avalikus serveris, sisesta "<id>@public",
Recording: "Snemanje", Recording: "Snemanje",
Directory: "Imenik", Directory: "Imenik",
"Automatically record incoming sessions": "Samodejno snemaj vhodne seje", "Automatically record incoming sessions": "Samodejno snemaj vhodne seje",
"Automatically record outgoing sessions": "", "Automatically record outgoing sessions": "Samodejno snemaj odhodne seje",
Change: "Spremeni", Change: "Spremeni",
"Start session recording": "Za\u010Dni snemanje seje", "Start session recording": "Za\u010Dni snemanje seje",
"Stop session recording": "Ustavi snemanje seje", "Stop session recording": "Ustavi snemanje seje",
@@ -5094,8 +5094,8 @@ Kui soovid juurdep\xE4\xE4su seadmele avalikus serveris, sisesta "<id>@public",
"Select local keyboard type": "Izberite lokalno vrsto tipkovnice", "Select local keyboard type": "Izberite lokalno vrsto tipkovnice",
software_render_tip: "\u010Ce na Linuxu uporabljate Nvidino grafi\u010Dno kartico in se oddaljeno okno zapre takoj po vzpostavitvi povezave, lahko pomaga preklop na odprtokodni gonilnik Nouveau in uporaba programskega upodabljanja. Potreben je ponovni zagon programa.", software_render_tip: "\u010Ce na Linuxu uporabljate Nvidino grafi\u010Dno kartico in se oddaljeno okno zapre takoj po vzpostavitvi povezave, lahko pomaga preklop na odprtokodni gonilnik Nouveau in uporaba programskega upodabljanja. Potreben je ponovni zagon programa.",
"Always use software rendering": "Vedno uporabi programsko upodabljanje", "Always use software rendering": "Vedno uporabi programsko upodabljanje",
config_input: "Za nadzor oddaljenega namizja s tipkovnico, rabi RustDesk pravico \xBBNadzor vnosa\xAB.", config_input: "RustDesk potrebuje pravico \xBBNadzor vnosa\xAB za nadzor oddaljenega namizja s tipkovnico.",
config_microphone: "Za zajem zvoka, rabi RustDesk pravico \xBBSnemanje zvoka\xAB.", config_microphone: "RustDesk potrebuje pravico \xBBSnemanje zvoka\xAB za zajemanje zvoka.",
request_elevation_tip: "Lahko tudi zaprosite za dvig pravic, \u010De je kdo na oddaljeni strani.", request_elevation_tip: "Lahko tudi zaprosite za dvig pravic, \u010De je kdo na oddaljeni strani.",
Wait: "\u010Cakaj", Wait: "\u010Cakaj",
"Elevation Error": "Napaka pri povzdigovanju", "Elevation Error": "Napaka pri povzdigovanju",
@@ -5128,7 +5128,7 @@ Kui soovid juurdep\xE4\xE4su seadmele avalikus serveris, sisesta "<id>@public",
"Voice call": "Glasovni klic", "Voice call": "Glasovni klic",
"Text chat": "Besedilni klepet", "Text chat": "Besedilni klepet",
"Stop voice call": "Prekini glasovni klic", "Stop voice call": "Prekini glasovni klic",
relay_hint_tip: "Morda neposredna povezava ni mo\u017Ena; lahko se poikusite povezati preko posrednika. \u010Ce \u017Eelite uporabiti posrednika ob prvem poizkusu vzpotavljanja povezave, lahko na konec IDja dodate \xBB/r\xAB, ali pa izberete mo\u017Enost \xBBVedno pove\u017Ei preko posrednika\xAB v kartici nedavnih sej, \u010De le-ta obstja.", relay_hint_tip: "Morda neposredna povezava ni mo\u017Ena; lahko se poizkusite povezati preko posrednika. \u010Ce \u017Eelite uporabiti posrednika ob prvem poizkusu vzpotavljanja povezave, lahko na konec IDja dodate \xBB/r\xAB, ali pa izberete mo\u017Enost \xBBVedno pove\u017Ei preko posrednika\xAB v kartici nedavnih sej, \u010De le-ta obstja.",
Reconnect: "Ponovna povezava", Reconnect: "Ponovna povezava",
Codec: "Kodek", Codec: "Kodek",
Resolution: "Lo\u010Dljivost", Resolution: "Lo\u010Dljivost",
@@ -5343,13 +5343,13 @@ Lahko se pove\u017Eete na druge naprave, druge naprave pa se k vam ne morejo pov
web_id_input_tip: `Vnesete lahko ID iz istega stre\u017Enika, neposredni dostop preko IP naslova v spletnem odjemalcu ni podprt. web_id_input_tip: `Vnesete lahko ID iz istega stre\u017Enika, neposredni dostop preko IP naslova v spletnem odjemalcu ni podprt.
\u010Ce \u017Eelite dostopati do naprave na drugem stre\u017Eniku, pripnite naslov stre\u017Enika (<id>@<naslov_stre\u017Enika>?key=<klju\u010D>), npr. 9123456234@192.168.16.1:21117?key=5Qbwsde3unUcJBtrx9ZkvUmwFNoExHzpryHuPUdqlWM=. \u010Ce \u017Eelite dostopati do naprave na drugem stre\u017Eniku, pripnite naslov stre\u017Enika (<id>@<naslov_stre\u017Enika>?key=<klju\u010D>), npr. 9123456234@192.168.16.1:21117?key=5Qbwsde3unUcJBtrx9ZkvUmwFNoExHzpryHuPUdqlWM=.
\u010Ce \u017Eelite dostopati do naprave na javnem stre\u017Eniku, vnesite \xBB<id>@public\xAB; klju\u010D za javni stre\u017Enik ni potreben.`, \u010Ce \u017Eelite dostopati do naprave na javnem stre\u017Eniku, vnesite \xBB<id>@public\xAB; klju\u010D za javni stre\u017Enik ni potreben.`,
Download: "", Download: "Prenos",
"Upload folder": "", "Upload folder": "Nalo\u017Ei mapo",
"Upload files": "", "Upload files": "Nalo\u017Ei datoteke",
"Clipboard is synchronized": "", "Clipboard is synchronized": "Odlo\u017Ei\u0161\u010De je usklajeno",
"Update client clipboard": "", "Update client clipboard": "Osve\u017Ei odjemal\u010Devo odlo\u017Ei\u0161\u010De",
Untagged: "", Untagged: "Neozna\u010Deno",
"new-version-of-{}-tip": "" "new-version-of-{}-tip": "Na voljo je nova razli\u010Dica {}"
}, ko: { }, ko: {
Status: "\uC0C1\uD0DC", Status: "\uC0C1\uD0DC",
"Your Desktop": "\uB0B4 \uB370\uC2A4\uD06C\uD0D1", "Your Desktop": "\uB0B4 \uB370\uC2A4\uD06C\uD0D1",
@@ -6683,7 +6683,7 @@ Ja v\u0113laties piek\u013C\u016Bt ier\u012Bcei publiskaj\u0101 server\u012B, l\
"Clipboard is synchronized": "Starpliktuve ir sinhroniz\u0113ta", "Clipboard is synchronized": "Starpliktuve ir sinhroniz\u0113ta",
"Update client clipboard": "Atjaunin\u0101t klienta starpliktuvi", "Update client clipboard": "Atjaunin\u0101t klienta starpliktuvi",
Untagged: "Neatz\u012Bm\u0113ts", Untagged: "Neatz\u012Bm\u0113ts",
"new-version-of-{}-tip": "" "new-version-of-{}-tip": "Ir pieejama jauna {} versija"
}, pl: { }, pl: {
Status: "Status", Status: "Status",
"Your Desktop": "Tw\xF3j pulpit", "Your Desktop": "Tw\xF3j pulpit",
@@ -18966,7 +18966,7 @@ H\xE3y t\xECm ai \u0111\xF3 \u0111\u1EC3 k\u1EBFt n\u1ED1i c\xF9ng v\xE0 th\xEAm
Dark: "\u9ED1\u6697", Dark: "\u9ED1\u6697",
Light: "\u660E\u4EAE", Light: "\u660E\u4EAE",
"Follow System": "\u8DDF\u968F\u7CFB\u7EDF", "Follow System": "\u8DDF\u968F\u7CFB\u7EDF",
"Enable hardware codec": "\u4F7F\u80FD\u786C\u4EF6\u7F16\u89E3\u7801", "Enable hardware codec": "\u542F\u7528\u786C\u4EF6\u7F16\u89E3\u7801",
"Unlock Security Settings": "\u89E3\u9501\u5B89\u5168\u8BBE\u7F6E", "Unlock Security Settings": "\u89E3\u9501\u5B89\u5168\u8BBE\u7F6E",
"Enable audio": "\u5141\u8BB8\u4F20\u8F93\u97F3\u9891", "Enable audio": "\u5141\u8BB8\u4F20\u8F93\u97F3\u9891",
"Unlock Network Settings": "\u89E3\u9501\u7F51\u7EDC\u8BBE\u7F6E", "Unlock Network Settings": "\u89E3\u9501\u7F51\u7EDC\u8BBE\u7F6E",
@@ -21967,8 +21967,8 @@ Si quieres accedder a un dispositivo en un servidor p\xFAblico, por favor, intro
"Upload files": "Subir archivos", "Upload files": "Subir archivos",
"Clipboard is synchronized": "Portapapeles sincronizado", "Clipboard is synchronized": "Portapapeles sincronizado",
"Update client clipboard": "Actualizar portapapeles del cliente", "Update client clipboard": "Actualizar portapapeles del cliente",
Untagged: "", Untagged: "Sin itiquetar",
"new-version-of-{}-tip": "" "new-version-of-{}-tip": "Hay una nueva versi\xF3n de {} disponible"
}, sr: { }, sr: {
Status: "Status", Status: "Status",
"Your Desktop": "Va\u0161a radna povr\u0161ina", "Your Desktop": "Va\u0161a radna povr\u0161ina",
@@ -23662,7 +23662,7 @@ Ha egy nyilv\xE1nos kiszolg\xE1l\xF3n l\xE9v\u0151 eszk\xF6zh\xF6z szeretne hozz
Recording: "\u9304\u88FD", Recording: "\u9304\u88FD",
Directory: "\u8DEF\u5F91", Directory: "\u8DEF\u5F91",
"Automatically record incoming sessions": "\u81EA\u52D5\u9304\u88FD\u9023\u5165\u7684\u5DE5\u4F5C\u968E\u6BB5", "Automatically record incoming sessions": "\u81EA\u52D5\u9304\u88FD\u9023\u5165\u7684\u5DE5\u4F5C\u968E\u6BB5",
"Automatically record outgoing sessions": "", "Automatically record outgoing sessions": "\u81EA\u52D5\u9304\u88FD\u9023\u51FA\u7684\u5DE5\u4F5C\u968E\u6BB5",
Change: "\u8B8A\u66F4", Change: "\u8B8A\u66F4",
"Start session recording": "\u958B\u59CB\u9304\u5F71", "Start session recording": "\u958B\u59CB\u9304\u5F71",
"Stop session recording": "\u505C\u6B62\u9304\u5F71", "Stop session recording": "\u505C\u6B62\u9304\u5F71",

File diff suppressed because one or more lines are too long

View File

@@ -82,7 +82,7 @@ func (us *UserService) Login(u *model.User, llog *model.LoginLog) *model.UserTok
Token: token, Token: token,
DeviceUuid: llog.Uuid, DeviceUuid: llog.Uuid,
DeviceId: llog.DeviceId, DeviceId: llog.DeviceId,
ExpiredAt: time.Now().Add(time.Hour * 24 * 7).Unix(), ExpiredAt: time.Now().Add(time.Second * time.Duration(global.Config.App.TokenExpire)).Unix(),
} }
global.DB.Create(ut) global.DB.Create(ut)
llog.UserTokenId = ut.UserId llog.UserTokenId = ut.UserId
@@ -452,7 +452,7 @@ func (us *UserService) getAdminUserCount() int64 {
} }
func (us *UserService) RefreshAccessToken(ut *model.UserToken) { func (us *UserService) RefreshAccessToken(ut *model.UserToken) {
ut.ExpiredAt = time.Now().Add(time.Hour * 24 * 7).Unix() ut.ExpiredAt = time.Now().Add(time.Second * time.Duration(global.Config.App.TokenExpire)).Unix()
global.DB.Model(ut).Update("expired_at", ut.ExpiredAt) global.DB.Model(ut).Update("expired_at", ut.ExpiredAt)
} }
func (us *UserService) AutoRefreshAccessToken(ut *model.UserToken) { func (us *UserService) AutoRefreshAccessToken(ut *model.UserToken) {