Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a771b1e9b0 | ||
|
|
7750f9c54d | ||
|
|
b2d24ee67b | ||
|
|
589a2a5123 |
@@ -55,6 +55,8 @@ jobs:
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Set up Go environment
|
||||
uses: actions/setup-go@v4
|
||||
@@ -121,6 +123,12 @@ jobs:
|
||||
name: rustdesk-api-${{ matrix.job.goos }}-${{ matrix.job.platform }}
|
||||
path: |
|
||||
${{ matrix.job.goos}}-${{ matrix.job.platform }}.${{matrix.job.file_ext}}
|
||||
|
||||
- name: Generate Changelog
|
||||
run: npx changelogithub # or changelogithub@0.12 if ensure the stable result
|
||||
env:
|
||||
GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}}
|
||||
|
||||
- name: Upload to GitHub Release
|
||||
uses: softprops/action-gh-release@v2
|
||||
with:
|
||||
|
||||
@@ -211,7 +211,7 @@ proxy:
|
||||
变量名前缀是`RUSTDESK_API`,环境变量如果存在将覆盖配置文件中的配置
|
||||
|
||||
| 变量名 | 说明 | 示例 |
|
||||
|------------------------------------|---------------------------------------------------------|------------------------------|
|
||||
|---------------------------------------------------|---------------------------------------------------------|------------------------------|
|
||||
| TZ | 时区 | Asia/Shanghai |
|
||||
| RUSTDESK_API_LANG | 语言 | `en`,`zh-CN` |
|
||||
| RUSTDESK_API_APP_WEB_CLIENT | 是否启用web-client; 1:启用,0:不启用; 默认启用 | 1 |
|
||||
@@ -239,6 +239,7 @@ proxy:
|
||||
| RUSTDESK_API_RUSTDESK_API_SERVER | Rustdesk的api服务器地址 | http://192.168.1.66:21114 |
|
||||
| RUSTDESK_API_RUSTDESK_KEY | Rustdesk的key | 123456789 |
|
||||
| RUSTDESK_API_RUSTDESK_KEY_FILE | Rustdesk存放key的文件 | `./conf/data/id_ed25519.pub` |
|
||||
| RUSTDESK_API_RUSTDESK_WEBCLIENT_MAGIC_QUERYONLINE | Web client v2 中是否启用新的在线状态查询方法; `1`:启用,`0`:不启用,默认不启用 | `0` |
|
||||
| ----PROXY配置----- | --------------- | ---------- |
|
||||
| RUSTDESK_API_PROXY_ENABLE | 是否启用代理:`false`, `true` | `false` |
|
||||
| RUSTDESK_API_PROXY_HOST | 代理地址 | `http://127.0.0.1:1080` |
|
||||
|
||||
+3
-2
@@ -214,7 +214,7 @@ proxy:
|
||||
The prefix for variable names is `RUSTDESK_API`. If environment variables exist, they will override the configurations in the configuration file.
|
||||
|
||||
| Variable Name | Description | Example |
|
||||
|------------------------------------|-------------------------------------------------------------------------|-------------------------------|
|
||||
|-----------------------------------------------------|--------------------------------------------------------------------------------------------------------------|-------------------------------|
|
||||
| TZ | timezone | Asia/Shanghai |
|
||||
| RUSTDESK_API_LANG | Language | `en`,`zh-CN` |
|
||||
| RUSTDESK_API_APP_WEB_CLIENT | web client on/off; 1: on, 0 off, default: 1 | 1 |
|
||||
@@ -241,7 +241,8 @@ The prefix for variable names is `RUSTDESK_API`. If environment variables exist,
|
||||
| RUSTDESK_API_RUSTDESK_RELAY_SERVER | Rustdesk relay server address | 192.168.1.66:21117 |
|
||||
| RUSTDESK_API_RUSTDESK_API_SERVER | Rustdesk API server address | http://192.168.1.66:21114 |
|
||||
| RUSTDESK_API_RUSTDESK_KEY | Rustdesk key | 123456789 |
|
||||
| RUSTDESK_API_RUSTDESK_KEY_FILE | Rustdesk存放key的文件 | `./conf/data/id_ed25519.pub` |
|
||||
| RUSTDESK_API_RUSTDESK_KEY_FILE | Rustdesk key file | `./conf/data/id_ed25519.pub` |
|
||||
| RUSTDESK_API_RUSTDESK_WEBCLIENT_MAGIC_QUERYONLINE | New online query method is enabled in the web client v2; '1': Enabled, '0': Disabled, not enabled by default | `0` |
|
||||
| ---- PROXY ----- | --------------- | ---------- |
|
||||
| RUSTDESK_API_PROXY_ENABLE | proxy_enable :`false`, `true` | `false` |
|
||||
| RUSTDESK_API_PROXY_HOST | proxy_host | `http://127.0.0.1:1080` |
|
||||
|
||||
@@ -28,6 +28,7 @@ rustdesk:
|
||||
key: ""
|
||||
key-file: "./conf/data/id_ed25519.pub"
|
||||
personal: 1
|
||||
webclient-magic-queryonline: 0
|
||||
logger:
|
||||
path: "./runtime/log.txt"
|
||||
level: "warn" #trace,debug,info,warn,error,fatal
|
||||
|
||||
@@ -11,6 +11,8 @@ type Rustdesk struct {
|
||||
Key string `mapstructure:"key"`
|
||||
KeyFile string `mapstructure:"key-file"`
|
||||
Personal int `mapstructure:"personal"`
|
||||
//webclient-magic-queryonline
|
||||
WebclientMagicQueryonline int `mapstructure:"webclient-magic-queryonline"`
|
||||
}
|
||||
|
||||
func LoadKeyFile(rustdesk *Rustdesk) {
|
||||
|
||||
@@ -3,6 +3,7 @@ package web
|
||||
import (
|
||||
"Gwen/global"
|
||||
"github.com/gin-gonic/gin"
|
||||
"strconv"
|
||||
)
|
||||
|
||||
type Index struct {
|
||||
@@ -14,11 +15,13 @@ func (i *Index) Index(c *gin.Context) {
|
||||
|
||||
func (i *Index) ConfigJs(c *gin.Context) {
|
||||
apiServer := global.Config.Rustdesk.ApiServer
|
||||
|
||||
magicQueryonline := strconv.Itoa(global.Config.Rustdesk.WebclientMagicQueryonline)
|
||||
tmp := `
|
||||
localStorage.setItem('api-server', "` + apiServer + `")
|
||||
const ws2_prefix = 'wc-'
|
||||
localStorage.setItem(ws2_prefix+'api-server', "` + apiServer + `")
|
||||
`
|
||||
|
||||
window.webclient_magic_queryonline = ` + magicQueryonline + ``
|
||||
|
||||
c.String(200, tmp)
|
||||
}
|
||||
|
||||
Vendored
+82
@@ -11112,6 +11112,71 @@ function nt(u, e) {
|
||||
ye("callback_query_onlines", {onlines: u.join(","), offlines: e.join(",")})
|
||||
}
|
||||
|
||||
const onlineCache = {}
|
||||
|
||||
// Query onlines
|
||||
async function myQueryOnline(id) {
|
||||
const last_online = onlineCache[id]
|
||||
if (last_online && new Date().getTime() - last_online < 20 * 1000) {
|
||||
return true
|
||||
}
|
||||
// 映射 方便后期更新
|
||||
const maps = {
|
||||
uri: P4(),
|
||||
ws: j4,
|
||||
conn_type: ne.DEFAULT_CONN,
|
||||
nat_type: pt.SYMMETRIC,
|
||||
token: Pt(),
|
||||
version: se,
|
||||
licence_key: Io(),
|
||||
rendezvousPunchHoleRequest: Ku,
|
||||
rendezvousPunchHoleResponse_Failure: Z0
|
||||
}
|
||||
|
||||
const s = new maps.ws(maps.uri, !0, "rendezvous");
|
||||
await s.open();
|
||||
const punch_hole_request = maps.rendezvousPunchHoleRequest.fromPartial({
|
||||
id: id,
|
||||
licence_key: maps.licence_key,
|
||||
conn_type: maps.conn_type,
|
||||
nat_type: maps.nat_type,
|
||||
token: maps.token,
|
||||
version: maps.version
|
||||
});
|
||||
s.sendRendezvous({punch_hole_request: punch_hole_request});
|
||||
const msg = await s.next();
|
||||
s.close();
|
||||
let online = false
|
||||
const phr = msg.punch_hole_response, rr = msg.relay_response;
|
||||
if (phr) {
|
||||
online = true
|
||||
if (phr != null && phr.other_failure) {
|
||||
online = false
|
||||
return online
|
||||
}
|
||||
if (phr.failure != maps.rendezvousPunchHoleResponse_Failure.UNRECOGNIZED) switch (phr == null ? void 0 : phr.failure) {
|
||||
case maps.rendezvousPunchHoleResponse_Failure.ID_NOT_EXIST:
|
||||
case maps.rendezvousPunchHoleResponse_Failure.OFFLINE:
|
||||
case maps.rendezvousPunchHoleResponse_Failure.LICENSE_MISMATCH:
|
||||
case maps.rendezvousPunchHoleResponse_Failure.LICENSE_OVERUSE:
|
||||
online = false
|
||||
break
|
||||
}
|
||||
} else if (rr) {
|
||||
online = true
|
||||
if (!rr.version) {
|
||||
online = false
|
||||
return online
|
||||
}
|
||||
}
|
||||
if (online) {
|
||||
onlineCache[id] = new Date().getTime()
|
||||
} else if (onlineCache[id]) {
|
||||
delete onlineCache[id]
|
||||
}
|
||||
return online
|
||||
}
|
||||
|
||||
async function wn(u) {
|
||||
let e = [];
|
||||
try {
|
||||
@@ -11121,6 +11186,20 @@ async function wn(u) {
|
||||
return
|
||||
}
|
||||
if (e.length === 0) return;
|
||||
|
||||
if (window.webclient_magic_queryonline) {
|
||||
const onlines = []
|
||||
const offlines = []
|
||||
for (let i = 0; i < e.length; i++) {
|
||||
let online = await myQueryOnline(e[i])
|
||||
if (online) {
|
||||
onlines.push(e[i])
|
||||
} else {
|
||||
offlines.push(e[i])
|
||||
}
|
||||
}
|
||||
nt(onlines, offlines)
|
||||
} else {
|
||||
const i = bn(), o = new j4(i, !0, "query onlines");
|
||||
try {
|
||||
await o.open();
|
||||
@@ -11145,6 +11224,9 @@ async function wn(u) {
|
||||
o.close(), console.error("Failed to query online states, no online response")
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
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));
|
||||
const xe = zt(), Yu = xe === Y4, H4 = xe === De, Qu = xe === Be;
|
||||
|
||||
Reference in New Issue
Block a user