Merge branch 'master' into hwcodec

This commit is contained in:
csf 2022-06-27 15:28:49 +08:00
commit 83e5028cc9
11 changed files with 417 additions and 179 deletions

164
Cargo.lock generated
View File

@ -123,9 +123,9 @@ dependencies = [
[[package]]
name = "anyhow"
version = "1.0.57"
version = "1.0.58"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "08f9b8508dccb7687a1d6c4ce66b2b0ecef467c94667de27d8d7fe1f8d2a9cdc"
checksum = "bb07d2053ccdbe10e2af2995a2f116c1330396493dc1269f6a91d0ae82e19704"
[[package]]
name = "arboard"
@ -455,7 +455,7 @@ version = "0.24.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a6358dedf60f4d9b8db43ad187391afe959746101346fe51bb978126bec61dfb"
dependencies = [
"clap 3.1.18",
"clap 3.2.6",
"heck 0.4.0",
"indexmap",
"log",
@ -553,9 +553,9 @@ dependencies = [
[[package]]
name = "clap"
version = "3.1.18"
version = "3.2.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d2dbdf4bdacb33466e854ce889eee8dfd5729abf7ccd7664d0a2d60cd384440b"
checksum = "9f1fe12880bae935d142c8702d500c63a4e8634b6c3c57ad72bf978fc7b6249a"
dependencies = [
"atty",
"bitflags",
@ -568,9 +568,9 @@ dependencies = [
[[package]]
name = "clap_lex"
version = "0.2.0"
version = "0.2.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a37c35f1112dad5e6e0b1adaff798507497a18fceeb30cceb3bae7d1427b9213"
checksum = "87eba3c8c7f42ef17f6c659fc7416d0f4758cd3e58861ee63c5fa4a4dde649e4"
dependencies = [
"os_str_bytes",
]
@ -876,9 +876,9 @@ dependencies = [
[[package]]
name = "crossbeam-channel"
version = "0.5.4"
version = "0.5.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5aaa7bd5fb665c6864b5f963dd9097905c54125909c7aa94c9e18507cdbe6c53"
checksum = "4c02a4d71819009c192cf4872265391563fd6a84c81ff2c0f2a7026ca4c1d85c"
dependencies = [
"cfg-if 1.0.0",
"crossbeam-utils",
@ -897,15 +897,15 @@ dependencies = [
[[package]]
name = "crossbeam-epoch"
version = "0.9.8"
version = "0.9.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1145cf131a2c6ba0615079ab6a638f7e1973ac9c2634fcbeaaad6114246efe8c"
checksum = "07db9d94cbd326813772c968ccd25999e5f8ae22f4f8d1b11effa37ef6ce281d"
dependencies = [
"autocfg 1.1.0",
"cfg-if 1.0.0",
"crossbeam-utils",
"lazy_static",
"memoffset",
"once_cell",
"scopeguard",
]
@ -921,12 +921,12 @@ dependencies = [
[[package]]
name = "crossbeam-utils"
version = "0.8.8"
version = "0.8.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0bf124c720b7686e3c2663cf54062ab0f68a88af2fb6a030e87e30bf721fcb38"
checksum = "7d82ee10ce34d7bc12c2122495e7593a9c41347ecdd64185af4ecf72cb1a7f83"
dependencies = [
"cfg-if 1.0.0",
"lazy_static",
"once_cell",
]
[[package]]
@ -1751,13 +1751,13 @@ dependencies = [
[[package]]
name = "getrandom"
version = "0.2.6"
version = "0.2.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9be70c98951c83b8d2f8f60d7065fa6d5146873094452a1008da8c2f1e4205ad"
checksum = "4eb1a864a501629691edf6c15a593b7a51eebaa1e8468e9ddc623de7c9b58ec6"
dependencies = [
"cfg-if 1.0.0",
"libc",
"wasi 0.10.2+wasi-snapshot-preview1",
"wasi",
]
[[package]]
@ -2123,9 +2123,9 @@ dependencies = [
[[package]]
name = "hashbrown"
version = "0.11.2"
version = "0.12.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ab5ef0d4909ef3724cc8cce6ccc8572c5c817592e9285f5464f8e86f8bd3726e"
checksum = "db0d4cf898abf0081f964436dc980e96670a0f36863e4b83aaacdb65c9d7ccc3"
[[package]]
name = "hbb_common"
@ -2335,9 +2335,9 @@ dependencies = [
[[package]]
name = "indexmap"
version = "1.8.2"
version = "1.9.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e6012d540c5baa3589337a98ce73408de9b5a25ec9fc2c6fd6be8f0d39e0ca5a"
checksum = "10a35a97730320ffe8e2d410b5d3b69279b98d2c14bdb8b70ea89ecf7888d41e"
dependencies = [
"autocfg 1.1.0",
"hashbrown",
@ -2425,9 +2425,9 @@ checksum = "229d53d58899083193af11e15917b5640cd40b29ff475a1fe4ef725deb02d0f2"
[[package]]
name = "js-sys"
version = "0.3.57"
version = "0.3.58"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "671a26f820db17c2a2750743f1dd03bafd15b98c9f30c7c2628c024c05d73397"
checksum = "c3fac17f7123a73ca62df411b1bf727ccc805daa070338fda671c86dac1bdc27"
dependencies = [
"wasm-bindgen",
]
@ -2584,9 +2584,9 @@ dependencies = [
[[package]]
name = "linked-hash-map"
version = "0.5.4"
version = "0.5.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7fb9b38af92608140b86b693604b9ffcc5824240a484d1ecd4795bacb2fe88f3"
checksum = "0717cef1bc8b636c6e1c1bbdefc09e6322da8a9321966e8928ef80d20f7f770f"
[[package]]
name = "lock_api"
@ -2757,13 +2757,13 @@ dependencies = [
[[package]]
name = "mio"
version = "0.8.3"
version = "0.8.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "713d550d9b44d89174e066b7a6217ae06234c10cb47819a88290d2b353c31799"
checksum = "57ee1c23c7c63b0c9250c339ffdc69255f110b298b901b9f6c82547b7b87caaf"
dependencies = [
"libc",
"log",
"wasi 0.11.0+wasi-snapshot-preview1",
"wasi",
"windows-sys 0.36.1",
]
@ -3021,9 +3021,9 @@ dependencies = [
[[package]]
name = "num-complex"
version = "0.4.1"
version = "0.4.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "97fbc387afefefd5e9e39493299f3069e14a140dd34dc19b4c1c1a8fddb6a790"
checksum = "7ae39348c8bc5fbd7f40c727a9925f03517afd2ab27d46702108b6a7e5414c19"
dependencies = [
"num-traits 0.2.15",
]
@ -3517,9 +3517,9 @@ dependencies = [
[[package]]
name = "proc-macro2"
version = "1.0.39"
version = "1.0.40"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c54b25569025b7fc9651de43004ae593a75ad88543b17178aa5e1b9c4f15f56f"
checksum = "dd96a1e8ed2596c337f8eae5f24924ec83f5ad5ab21ea8e455d3566c69fbcaf7"
dependencies = [
"unicode-ident",
]
@ -3648,9 +3648,9 @@ dependencies = [
[[package]]
name = "quote"
version = "1.0.18"
version = "1.0.20"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a1feb54ed693b93a84e14094943b84b7c4eae204c512b7ccb95ab0c66d278ad1"
checksum = "3bcdf212e9776fbcb2d23ab029360416bb1706b1aea2d1a5ba002727cbcab804"
dependencies = [
"proc-macro2",
]
@ -3925,9 +3925,9 @@ dependencies = [
[[package]]
name = "reqwest"
version = "0.11.10"
version = "0.11.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "46a1f7aa4f35e5e8b4160449f51afc758f0ce6454315a9fa7d0d113e958c41eb"
checksum = "b75aa69a3f06bbcc66ede33af2af253c6f7a86b1ca0033f60c580a27074fbf92"
dependencies = [
"base64",
"bytes",
@ -3947,12 +3947,13 @@ dependencies = [
"percent-encoding",
"pin-project-lite",
"rustls",
"rustls-pemfile 0.3.0",
"rustls-pemfile 1.0.0",
"serde 1.0.137",
"serde_json 1.0.81",
"serde_urlencoded",
"tokio",
"tokio-rustls",
"tower-service",
"url",
"wasm-bindgen",
"wasm-bindgen-futures",
@ -4061,7 +4062,7 @@ dependencies = [
"base64",
"cc",
"cfg-if 1.0.0",
"clap 3.1.18",
"clap 3.2.6",
"clipboard",
"cocoa 0.24.0",
"core-foundation 0.9.3",
@ -4164,15 +4165,6 @@ dependencies = [
"base64",
]
[[package]]
name = "rustls-pemfile"
version = "0.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1ee86d63972a7c661d1536fefe8c3c8407321c3df668891286de28abcd087360"
dependencies = [
"base64",
]
[[package]]
name = "rustls-pemfile"
version = "1.0.0"
@ -4194,9 +4186,9 @@ dependencies = [
[[package]]
name = "rustversion"
version = "1.0.6"
version = "1.0.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f2cc38e8fa666e2de3c4aba7edeb5ffc5246c1c2ed0e3d17e560aeeba736b23f"
checksum = "a0a5f7c728f5d284929a1cccb5bc19884422bfe6ef4d6c409da2c41838983fcf"
[[package]]
name = "ryu"
@ -4485,9 +4477,9 @@ checksum = "eb703cfe953bccee95685111adeedb76fabe4e97549a58d16f03ea7b9367bb32"
[[package]]
name = "smallvec"
version = "1.8.0"
version = "1.8.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f2dd574626839106c320a323308629dcb1acfc96e32a8cba364ddc61ac23ee83"
checksum = "cc88c725d61fc6c3132893370cac4a0200e3fedf5da8331c570664b1987f5ca2"
[[package]]
name = "smithay-client-toolkit"
@ -4627,9 +4619,9 @@ dependencies = [
[[package]]
name = "syn"
version = "1.0.96"
version = "1.0.98"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0748dd251e24453cb8717f0354206b91557e4ec8703673a4b30208f2abaf1ebf"
checksum = "c50aef8a904de4c23c788f104b7dddc7d6f79c647c7c8ce4cc8f73eb0ca773dd"
dependencies = [
"proc-macro2",
"quote",
@ -4650,13 +4642,15 @@ dependencies = [
[[package]]
name = "sys-locale"
version = "0.2.0"
version = "0.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3913c5a3d30054d7f77cf07cdd800c8103ace15c6e44437c5db66a43dd3a92cf"
checksum = "658ee915b6c7b73ec4c1ffcd838506b5c5a4087eadc1ec8f862f1066cf2c8132"
dependencies = [
"cc",
"cstr_core",
"js-sys",
"libc",
"wasm-bindgen",
"web-sys",
"winapi 0.3.9",
]
@ -4804,9 +4798,9 @@ dependencies = [
[[package]]
name = "time"
version = "0.3.9"
version = "0.3.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c2702e08a7a860f005826c6815dcac101b19b5eb330c27fe4a5928fec1d20ddd"
checksum = "72c91f41dcb2f096c05f0873d667dceec1087ce5bcf984ec8ffb19acddbb3217"
dependencies = [
"itoa 1.0.2",
"libc",
@ -4844,7 +4838,7 @@ dependencies = [
"bytes",
"libc",
"memchr",
"mio 0.8.3",
"mio 0.8.4",
"num_cpus",
"once_cell",
"parking_lot 0.12.1",
@ -4880,7 +4874,7 @@ dependencies = [
[[package]]
name = "tokio-socks"
version = "0.5.1"
source = "git+https://github.com/open-trade/tokio-socks#3de8300fbce37e2cdaef042e016aa95058d007cf"
source = "git+https://github.com/open-trade/tokio-socks#c34272f219b24dc6508f13fa81eff9850e616ce2"
dependencies = [
"bytes",
"either",
@ -4934,9 +4928,9 @@ dependencies = [
[[package]]
name = "tower-service"
version = "0.3.1"
version = "0.3.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "360dfd1d6d30e05fda32ace2c8c70e9c0a9da713275777f5a4dbb8a1893930c6"
checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52"
[[package]]
name = "tracing"
@ -4963,9 +4957,9 @@ dependencies = [
[[package]]
name = "tracing-core"
version = "0.1.27"
version = "0.1.28"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7709595b8878a4965ce5e87ebf880a7d39c9afc6837721b21a5a816a8117d921"
checksum = "7b7358be39f2f274f322d2aaed611acc57f382e8eb1e5b48cb9ae30933495ce7"
dependencies = [
"once_cell",
]
@ -5040,15 +5034,15 @@ checksum = "099b7128301d285f79ddd55b9a83d5e6b9e97c92e0ea0daebee7263e932de992"
[[package]]
name = "unicode-ident"
version = "1.0.0"
version = "1.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d22af068fba1eb5edcb4aea19d382b2a3deb4c8f9d475c589b6ada9e0fd493ee"
checksum = "5bd2fe26506023ed7b5e1e315add59d6f584c621d037f9368fea9cfb988f368c"
[[package]]
name = "unicode-normalization"
version = "0.1.19"
version = "0.1.20"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d54590932941a9e9266f0832deed84ebe1bf2e4c9e4a3554d393d18f5e854bf9"
checksum = "81dee68f85cab8cf68dec42158baf3a79a1cdc065a8b103025965d6ccb7f6cbd"
dependencies = [
"tinyvec",
]
@ -5161,12 +5155,6 @@ dependencies = [
"try-lock",
]
[[package]]
name = "wasi"
version = "0.10.2+wasi-snapshot-preview1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fd6fbd9a79829dd1ad0cc20627bf1ed606756a7f77edff7b66b7064f9cb327c6"
[[package]]
name = "wasi"
version = "0.11.0+wasi-snapshot-preview1"
@ -5175,9 +5163,9 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"
[[package]]
name = "wasm-bindgen"
version = "0.2.80"
version = "0.2.81"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "27370197c907c55e3f1a9fbe26f44e937fe6451368324e009cba39e139dc08ad"
checksum = "7c53b543413a17a202f4be280a7e5c62a1c69345f5de525ee64f8cfdbc954994"
dependencies = [
"cfg-if 1.0.0",
"wasm-bindgen-macro",
@ -5185,9 +5173,9 @@ dependencies = [
[[package]]
name = "wasm-bindgen-backend"
version = "0.2.80"
version = "0.2.81"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "53e04185bfa3a779273da532f5025e33398409573f348985af9a1cbf3774d3f4"
checksum = "5491a68ab4500fa6b4d726bd67408630c3dbe9c4fe7bda16d5c82a1fd8c7340a"
dependencies = [
"bumpalo",
"lazy_static",
@ -5200,9 +5188,9 @@ dependencies = [
[[package]]
name = "wasm-bindgen-futures"
version = "0.4.30"
version = "0.4.31"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6f741de44b75e14c35df886aff5f1eb73aa114fa5d4d00dcd37b5e01259bf3b2"
checksum = "de9a9cec1733468a8c657e57fa2413d2ae2c0129b95e87c5b72b8ace4d13f31f"
dependencies = [
"cfg-if 1.0.0",
"js-sys",
@ -5212,9 +5200,9 @@ dependencies = [
[[package]]
name = "wasm-bindgen-macro"
version = "0.2.80"
version = "0.2.81"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "17cae7ff784d7e83a2fe7611cfe766ecf034111b49deb850a3dc7699c08251f5"
checksum = "c441e177922bc58f1e12c022624b6216378e5febc2f0533e41ba443d505b80aa"
dependencies = [
"quote",
"wasm-bindgen-macro-support",
@ -5222,9 +5210,9 @@ dependencies = [
[[package]]
name = "wasm-bindgen-macro-support"
version = "0.2.80"
version = "0.2.81"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "99ec0dc7a4756fffc231aab1b9f2f578d23cd391390ab27f952ae0c9b3ece20b"
checksum = "7d94ac45fcf608c1f45ef53e748d35660f168490c10b23704c7779ab8f5c3048"
dependencies = [
"proc-macro2",
"quote",
@ -5235,9 +5223,9 @@ dependencies = [
[[package]]
name = "wasm-bindgen-shared"
version = "0.2.80"
version = "0.2.81"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d554b7f530dee5964d9a9468d95c1f8b8acae4f282807e7d27d4b03099a46744"
checksum = "6a89911bd99e5f3659ec4acf9c4d93b0a90fe4a2a11f15328472058edc5261be"
[[package]]
name = "wayland-client"
@ -5314,9 +5302,9 @@ dependencies = [
[[package]]
name = "web-sys"
version = "0.3.57"
version = "0.3.58"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7b17e741662c70c8bd24ac5c5b18de314a2c26c32bf8346ee1e6f53de919c283"
checksum = "2fed94beee57daf8dd7d51f2b15dc2bcde92d7a72304cdf662a4371008b71b90"
dependencies = [
"js-sys",
"wasm-bindgen",

View File

@ -5,11 +5,11 @@
<a href="#como-compilar-con-docker">Docker</a>
<a href="#estructura-de-archivos">Estructura</a>
<a href="#captura-de-pantalla">Captura de pantalla</a><br>
[<a href="README-ZH.md">中文</a>] | [<a href="README-ES.md">Español</a>] | [<a href="README-FA.md">فارسی</a>] | [<a href="README-FR.md">Français</a>] | [<a href="README-DE.md">Deutsch</a>] | [<a href="README-PL.md">Polski</a>] | [<a href="README-FI.md">Suomi</a>] | [<a href="README-ML.md">മലയാളം</a>] | [<a href="README-JP.md">日本語</a>] | [<a href="README-NL.md">Nederlands</a>] | [<a href="README-IT.md">Italiano</a>] | [<a href="README-RU.md">Русский</a>] | [<a href="README-PTBR.md">Português (Brasil)</a>] | [<a href="README-EO.md">Esperanto</a>] | [<a href="README-KR.md">한국어</a>] | [<a href="README-AR.md">العربي</a>]<br>
[<a href="README-CS.md">česky</a>] | [<a href="README-ZH.md">中文</a>] | [<a href="README-ES.md">Español</a>] | [<a href="README-FA.md">فارسی</a>] | [<a href="README-FR.md">Français</a>] | [<a href="README-DE.md">Deutsch</a>] | [<a href="README-PL.md">Polski</a>] | [<a href="README-ID.md">Indonesian</a>] | [<a href="README-FI.md">Suomi</a>] | [<a href="README-ML.md">മലയാളം</a>] | [<a href="README-JP.md">日本語</a>] | [<a href="README-NL.md">Nederlands</a>] | [<a href="README-IT.md">Italiano</a>] | [<a href="README-RU.md">Русский</a>] | [<a href="README-PTBR.md">Português (Brasil)</a>] | [<a href="README-EO.md">Esperanto</a>] | [<a href="README-KR.md">한국어</a>] | [<a href="README-AR.md">العربي</a>]<br>
<b>Necesitamos tu ayuda para traducir este README a tu idioma</b>
</p>
Chat with us: [Discord](https://discord.gg/nDceKgxnkV) | [Reddit](https://www.reddit.com/r/rustdesk)
Chatea con nosotros: [Discord](https://discord.gg/nDceKgxnkV) | [Twitter](https://twitter.com/rustdesk) | [Reddit](https://www.reddit.com/r/rustdesk)
[![ko-fi](https://ko-fi.com/img/githubbutton_sm.svg)](https://ko-fi.com/I2I04VU09)
@ -23,9 +23,11 @@ RustDesk agradece la contribución de todo el mundo. Ve [`CONTRIBUTING.md`](CONT
A continuación se muestran los servidores que está utilizando de forma gratuita, puede cambiar en algún momento. Si no estás cerca de uno de ellos, tu red puede ser lenta.
- Seoul, AWS lightsail, 1 VCPU/0.5G RAM
- Singapore, Vultr, 1 VCPU/1G RAM
- Dallas, Vultr, 1 VCPU/1G RAM
| Ubicación | Vendedor | Especificación |
| --------- | ------------- | ------------------ |
| Seoul | AWS lightsail | 1 VCPU / 0.5GB RAM |
| Singapore | Vultr | 1 VCPU / 1GB RAM |
| Dallas | Vultr | 1 VCPU / 1GB RAM | |
## Dependencies
@ -37,7 +39,7 @@ La versión Desktop usa [sciter](https://sciter.com/) para GUI, por favor bajate
## Pasos para compilar desde el inicio
- Prepara el entono de desarrollode Rust y el entorno de compilación de C++ y Rust.
- Prepara el entono de desarrollo de Rust y el entorno de compilación de C++ y Rust.
- Instala [vcpkg](https://github.com/microsoft/vcpkg), y configura la variable de entono `VCPKG_ROOT` correctamente.
@ -78,7 +80,7 @@ export VCPKG_ROOT=$HOME/vcpkg
vcpkg/vcpkg install libvpx libyuv opus
```
### Soluciona libvpx (For Fedora)
### Soluciona libvpx (Para Fedora)
```sh
cd vcpkg/buildtrees/libvpx/src
@ -124,7 +126,7 @@ Entonces, cada vez que necesites compilar una modificación, ejecuta el siguient
docker run --rm -it -v $PWD:/home/user/rustdesk -v rustdesk-git-cache:/home/user/.cargo/git -v rustdesk-registry-cache:/home/user/.cargo/registry -e PUID="$(id -u)" -e PGID="$(id -g)" rustdesk-builder
```
Ten en cuenta que la primera compilación puede tardar más tiempo antes de que las dependencias se almacenen en la caché, las siguientes compilaciones serán más rápidas. Además, si necesitas especificar diferentes argumentos a la orden de compilación, puede hacerlo al final de la linea de comandos en el apartado`<OPTIONAL-ARGS>`. Por ejemplo, si desea compilar una versión optimizada para publicación, deberá ejecutar el comando anterior seguido de `--release`. El ejecutable resultante estará disponible en la carpeta de destino en su sistema, y puede ser ejecutado con:
Ten en cuenta que la primera compilación puede tardar más tiempo antes de que las dependencias se almacenen en la caché, las siguientes compilaciones serán más rápidas. Además, si necesitas especificar diferentes argumentos a la orden de compilación, puede hacerlo al final de la linea de comandos en el apartado `<OPTIONAL-ARGS>`. Por ejemplo, si desea compilar una versión optimizada para publicación, deberá ejecutar el comando anterior seguido de `--release`. El ejecutable resultante estará disponible en la carpeta de destino en su sistema, y puede ser ejecutado con:
```sh
target/debug/rustdesk
@ -148,6 +150,8 @@ Por favor, asegurate de que estás ejecutando estos comandos desde la raíz del
- **[src/client.rs](https://github.com/rustdesk/rustdesk/tree/master/src/client.rs)**: iniciar una conexión "peer to peer"
- **[src/rendezvous_mediator.rs](https://github.com/rustdesk/rustdesk/tree/master/src/rendezvous_mediator.rs)**: Comunicación con [rustdesk-server](https://github.com/rustdesk/rustdesk-server), esperar la conexión remota directa ("TCP hole punching") o conexión indirecta ("relayed")
- **[src/platform](https://github.com/rustdesk/rustdesk/tree/master/src/platform)**: código específico de cada plataforma
- **[flutter](https://github.com/rustdesk/rustdesk/tree/master/flutter)**: Flutter, código para moviles
- **[flutter/web/js](https://github.com/rustdesk/rustdesk/tree/master/flutter/web/js)**: Javascript para cliente web Flutter
## Captura de pantalla

View File

@ -11,7 +11,6 @@
Chat with us: [Discord](https://discord.gg/nDceKgxnkV) | [Twitter](https://twitter.com/rustdesk) | [Reddit](https://www.reddit.com/r/rustdesk)
[![ko-fi](https://ko-fi.com/img/githubbutton_sm.svg)](https://ko-fi.com/I2I04VU09)
Yet another remote desktop software, written in Rust. Works out of the box, no configuration required. You have full control of your data, with no concerns about security. You can use our rendezvous/relay server, [set up your own](https://rustdesk.com/server), or [write your own rendezvous/relay server](https://github.com/rustdesk/rustdesk-server-demo).
@ -24,6 +23,10 @@ RustDesk welcomes contribution from everyone. See [`CONTRIBUTING.md`](CONTRIBUTI
[**BINARY DOWNLOAD**](https://github.com/rustdesk/rustdesk/releases)
[<img src="https://fdroid.gitlab.io/artwork/badge/get-it-on.png"
alt="Get it on F-Droid"
height="80">](https://f-droid.org/en/packages/com.carriez.flutter_hbb)
## Free Public Servers
Below are the servers you are using for free, it may change along the time. If you are not close to one of these, your network may be slow.

View File

@ -16,7 +16,7 @@ pub const RENDEZVOUS_TIMEOUT: u64 = 12_000;
pub const CONNECT_TIMEOUT: u64 = 18_000;
pub const REG_INTERVAL: i64 = 12_000;
pub const COMPRESS_LEVEL: i32 = 3;
const SERIAL: i32 = 1;
const SERIAL: i32 = 3;
// 128x128
#[cfg(target_os = "macos")] // 128x128 on 160x160 canvas, then shrink to 128, mac looks better with padding
pub const ICON: &str = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAMAAAD04JH5AAAAyVBMVEUAAAAAcf8Acf8Acf8Acv8Acf8Acf8Acf8Acf8AcP8Acf8Ab/8AcP8Acf////8AaP/z+f/o8v/k7v/5/v/T5f8AYP/u9v/X6f+hx/+Kuv95pP8Aef/B1/+TwP9xoP8BdP/g6P+Irv9ZmP8Bgf/E3f98q/9sn/+01f+Es/9nm/9Jif8hhv8off/M4P+syP+avP86iP/c7f+xy/9yqf9Om/9hk/9Rjv+60P99tv9fpf88lv8yjf8Tgf8deP+kvP8BiP8NeP8hkP80gP8oj2VLAAAADXRSTlMA7o7qLvnaxZ1FOxYPjH9HWgAABHJJREFUeNrtm+tW4jAQgBfwuu7MtIUWsOUiCCioIIgLiqvr+z/UHq/LJKVkmwTcc/r9E2nzlU4mSTP9lpGRkZGR8VX5cZjfL+yCEXYL+/nDH//U/Pd8DgyTy39Xbv7oIAcWyB0cqbW/sweW2NtRaj8H1sgpGOwUIAH7Bkd7YJW9dXFwAJY5WNP/cmCZQnJvzIN18on5LwfWySXlxEPYAIcad8D6PdiHDbCfIFCADVBIENiFDbCbIACKPPXrZ+cP8E6/0znvP4EymgIEravIRcTxu8HxNSJ60a8W0AYECKrlAN+YwAthCd9wm1Ug6wKzIn5SgRduXfwkqDasCjx0XFzi9PV6zwNcIuhcWBOg+ikySq8C9UD4dEKWBCoOcspvAuLHTo9sCDQiFPHotRM48j8G5gVur1FdAN2uaYEuiz7xFsgEJ2RUoMUakXuBTHHoGxQYOBhHjeUBAefEnMAowFhaLBOKuOemBBbxLRQrH2PBCgMvNCPQGMeevTb9zLrPxz2Mo+QbEaijzPUcOOHMQZkKGRAIPem39+bypREMPTkQW/oCfk866zAkiIFG4yIKRE/aAnfiSd0WrORY6pFdXQEqi9mvAQm0RIOSnoCcZ8vJoz3diCnjRk+g8VP4/fuQDJ2Lxr6WwG0gXs9aTpDzW0vgDBlVUpixR8gYk44AD8FrUKHr8JQJGgIDnoDqoALxmWPQSi9AVVzm8gKUuEPGr/QCvptwJkbSYT/TC4S8C96DGjTj86aHtAI0x2WaBIq0eSYYpRa4EsdWVVwWu9O0Aj6f6dyBMnwEraeOgSYu0wZlauzA47QCbT7DgAQSE+hZWoEBF/BBmWOewNMK3BsSqKUW4MGcWqCSVmDkbvkXGKQOwg6PAUO9oL3xXhA20yaiCjuwYygRVQlUOTWTCf2SuNJTxeFjgaHByGuAIvd8ItdPLTDhS7IuqEE1YSKVOgbayLhSFQhMzYh8hwfBs1r7c505YVIQYEdNoKwxK06MJiyrpUFHiF0NAfCQUVHoiRclIXJIR6C2fqG37pBHvcWpgwzvAtYwkR5UGV2e42UISdBJETl3mg8ouo54Rcnti1/vaT+iuUQBt500Cgo4U10BeHSkk57FB0JjWkKRMWgLUA0lLodtImAQdaMiiri3+gIAPZQoutHNsgKF1aaDMhMyIdBf8Th+Bh8MTjGWCpl5Wv43tDmnF+IUVMrcZgRoiAxhtrloYizNkZaAnF5leglbNhj0wYCAbCDvGb0mP4nib7O7ZlcYQ2m1gPtIZgVgGNNMeaVAaWR+57TrqgtUnm3sHQ+kYeE6fufUubG1ez50FXbPnWgBlgSABmN3TTcsRl2yWkHRrwbiunvk/W2+Mg1hPZplPDeXRbZzStFH15s1QIVd3UImP5z/bHpeeQLvRJ7XLFUffQIlCvqlXETQbgN9/rlYABGosv+Vi9m2Xs639YLGrZd0br+odetlvdsvbN56abfd4vbCzv9Q3v/ygoOV21A4OPpfXvH4Ai+5ZGRkZGRkbJA/t/I0QMzoMiEAAAAASUVORK5CYII=

View File

@ -1,65 +1,32 @@
from pynput.keyboard import Key, Controller
from pynput.keyboard._xorg import KeyCode
from pynput._util.xorg import display_manager
import Xlib
import os
import sys
import socket
from Xlib.ext.xtest import fake_input
from Xlib import X
import Xlib
KeyCode._from_symbol("\0") # test
class MyController(Controller):
def _handle(self, key, is_press):
"""Resolves a key identifier and sends a keyboard event.
:param event: The *X* keyboard event.
:param int keysym: The keysym to handle.
"""
event = Xlib.display.event.KeyPress if is_press \
else Xlib.display.event.KeyRelease
keysym = self._keysym(key)
keycode = self._display.keysym_to_keycode(keysym)
# Make sure to verify that the key was resolved
if keysym is None:
raise self.InvalidKeyException(key)
with display_manager(self._display) as dm:
Xlib.ext.xtest.fake_input(
dm,
Xlib.X.KeyPress if is_press else Xlib.X.KeyRelease,
keycode)
# If the key has a virtual key code, use that immediately with
# fake_input; fake input,being an X server extension, has access to
# more internal state that we do
if key.vk is not None:
with display_manager(self._display) as dm:
Xlib.ext.xtest.fake_input(
dm,
Xlib.X.KeyPress if is_press else Xlib.X.KeyRelease,
dm.keysym_to_keycode(key.vk))
# Otherwise use XSendEvent; we need to use this in the general case to
# work around problems with keyboard layouts
else:
try:
keycode, shift_state = self.keyboard_mapping[keysym]
with self.modifiers as modifiers:
alt_gr = Key.alt_gr in modifiers
if alt_gr:
self._send_key(event, keycode, shift_state)
else:
with display_manager(self._display) as dm:
Xlib.ext.xtest.fake_input(
dm,
Xlib.X.KeyPress if is_press else Xlib.X.KeyRelease,
keycode)
except KeyError:
with self._borrow_lock:
keycode, index, count = self._borrows[keysym]
self._send_key(
event,
keycode,
index_to_shift(self._display, index))
count += 1 if is_press else -1
self._borrows[keysym] = (keycode, index, count)
# Notify any running listeners
self._emit('_on_fake_event', key, is_press)
keyboard = MyController()
@ -77,7 +44,7 @@ server = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
server.bind(server_address)
server.listen(1)
clientsocket, address = server.accept()
os.system('chmod a+rw %s'%server_address)
os.system('chmod a+rw %s' % server_address)
print("Got pynput connection")
@ -121,4 +88,3 @@ def loop():
loop()
clientsocket.close()
server.close()

View File

@ -6,6 +6,7 @@ mod da;
mod sk;
mod de;
mod en;
mod es;
mod eo;
mod fr;
mod id;
@ -44,6 +45,7 @@ pub fn translate_locale(name: String, locale: &str) -> String {
"it" => it::T.deref(),
"tw" => tw::T.deref(),
"de" => de::T.deref(),
"es" => es::T.deref(),
"ru" => ru::T.deref(),
"eo" => eo::T.deref(),
"id" => id::T.deref(),

283
src/lang/es.rs Normal file
View File

@ -0,0 +1,283 @@
lazy_static::lazy_static! {
pub static ref T: std::collections::HashMap<&'static str, &'static str> =
[
("Status", "Estado"),
("Your Desktop", "Tu escritorio"),
("desk_tip", "Puoi accedere al tuo desktop usando l'ID e la password riportati qui."),
("Password", "Contraseña"),
("Ready", "Listo"),
("Established", "Establecido"),
("connecting_status", "Conexión a la red RustDesk en progreso..."),
("Enable Service", "Habilitar Servicio"),
("Start Service", "Iniciar Servicio"),
("Service is running", "Servicio se está ejecutando"),
("Service is not running", "Servicio no se está ejecutando"),
("not_ready_status", "No está listo. Comprueba tu conexión"),
("Control Remote Desktop", "Controlar Escritorio Remoto"),
("Transfer File", "Transferir archivo"),
("Connect", "Conectar"),
("Recent Sessions", "Sesiones recientes"),
("Address Book", "Directorio"),
("Confirmation", "Confirmación"),
("TCP Tunneling", "Tunel TCP"),
("Remove", "Remover"),
("Refresh random password", "Actualizar contraseña aleatoria"),
("Set your own password", "Establece tu propia contraseña"),
("Enable Keyboard/Mouse", "Habilitar teclado/ratón"),
("Enable Clipboard", "Habilitar portapapeles"),
("Enable File Transfer", "Habilitar transferencia de archivos"),
("Enable TCP Tunneling", "Habilitar tunel TCP"),
("IP Whitelisting", "Lista blanca IP"),
("ID/Relay Server", "Servidor de ID/Relay"),
("Stop service", "Parar servicio"),
("Change ID", "Cambiar identificación"),
("Website", "Sitio web"),
("About", "Sobre"),
("Mute", "Silencio"),
("Audio Input", "Entrada de audio"),
("ID Server", "ID server"),
("Relay Server", "Server relay"),
("API Server", "Server API"),
("invalid_http", "debe comenzar con http:// o https://"),
("Invalid IP", "IP inválida"),
("id_change_tip", "Solo puedes usar caracteres a-z, A-Z, 0-9 e _ (guion bajo). El primer carácter debe ser a-z o A-Z. La longitud debe estar entre 6 a 16 caracteres."),
("Invalid format", "Formato inválido"),
("server_not_support", "Aún no es compatible con el servidor"),
("Not available", "Indisponible"),
("Too frequent", "Demasiado frecuente"),
("Cancel", "Cancelar"),
("Skip", "Saltar"),
("Close", "Cerrar"),
("Retry", "Volver"),
("OK", "OK"),
("Password Required", "Se requiere contraseña"),
("Please enter your password", "Por favor, introduzca su contraseña"),
("Remember password", "Recordar contraseña"),
("Wrong Password", "Contraseña incorrecta"),
("Do you want to enter again?", "Quieres volver a entrar?"),
("Connection Error", "Error de conexión"),
("Error", "Error"),
("Reset by the peer", "Restablecido por el par"),
("Connecting...", "Conectando..."),
("Connection in progress. Please wait.", "Conexión en curso. Espere por favor."),
("Please try 1 minute later", "Intente 1 minuto más tarde"),
("Login Error", "Error de inicio de sesión"),
("Successful", "Exitoso"),
("Connected, waiting for image...", "Conectado, esperando imagen..."),
("Name", "Nombre"),
("Type", "Tipo"),
("Modified", "Modificado"),
("Size", "Tamaño"),
("Show Hidden Files", "Mostrar archivos ocultos"),
("Receive", "Recibir"),
("Send", "Enviar"),
("Refresh File", "Actualizar archivo"),
("Local", "Local"),
("Remote", "Remoto"),
("Remote Computer", "Computadora remota"),
("Local Computer", "Computadora local"),
("Confirm Delete", "Confirmar eliminación"),
("Delete", "Borrar"),
("Properties", "Propiedades"),
("Multi Select", "Selección múltiple"),
("Empty Directory", "Directorio vacío"),
("Not an empty directory", "No es un directorio vacío"),
("Are you sure you want to delete this file?", "Estás seguro de que quieres eliminar este archivo?"),
("Are you sure you want to delete this empty directory?", "Está seguro de que desea eliminar este directorio vacío?"),
("Are you sure you want to delete the file of this directory?", "Está seguro de que desea eliminar el archivo de este directorio?"),
("Do this for all conflicts", "Haga esto para todos los conflictos"),
("This is irreversible!", "Esto es irreversible!"),
("Deleting", "Borrando"),
("files", "archivos"),
("Waiting", "Esperando"),
("Finished", "Acabado"),
("Speed", "Velocidad"),
("Custom Image Quality", "Calidad de imagen personalizada"),
("Privacy mode", "Modo privado"),
("Block user input", "Bloquear entrada de usuario"),
("Unblock user input", "Desbloquear entrada de usuario"),
("Adjust Window", "Ajustar ventana"),
("Original", "Original"),
("Shrink", "Encogerse"),
("Stretch", "Estirar"),
("Good image quality", "Buena calidad de imagen"),
("Balanced", "Equilibrado"),
("Optimize reaction time", "Optimizar el tiempo de reacción"),
("Custom", "Personalizado"),
("Show remote cursor", "Mostrar cursor remoto"),
("Disable clipboard", "Deshabilitar portapapeles"),
("Lock after session end", "Bloquear después del final de la sesión"),
("Insert", "Insertar"),
("Insert Lock", "Insertar bloqueo"),
("Refresh", "Actualizar"),
("ID does not exist", "ID no existe"),
("Failed to connect to rendezvous server", "No se pudo conectar al servidor de encuentro"),
("Please try later", "Por favor intente mas tarde"),
("Remote desktop is offline", "El escritorio remoto está fuera de línea"),
("Key mismatch", "La clave no coincide"),
("Timeout", "Timeout"),
("Failed to connect to relay server", "No se pudo conectar al servidor de retransmisión"),
("Failed to connect via rendezvous server", "No se pudo conectar a través del servidor de encuentro"),
("Failed to connect via relay server", "No se pudo conectar a través del servidor de retransmisión"),
("Failed to make direct connection to remote desktop", "No se pudo establecer la conexión directa con el escritorio remoto"),
("Set Password", "Configurar la clave"),
("OS Password", "Contraseña del sistema operativo"),
("install_tip", "Debido al Control de cuentas de usuario, es posible que RustDesk no funcione correctamente como escritorio remoto. Para evitar este problema, haga clic en el botón de abajo para instalar RustDesk a nivel de sistema."),
("Click to upgrade", "Clic para actualizar"),
("Click to download", "Clic para descargar"),
("Click to update", "Fare clic per aggiornare"),
("Configure", "Configurar"),
("config_acc", "Para controlar su escritorio desde el exterior, debe otorgar permiso a RustDesk de \"Accesibilidad\"."),
("config_screen", "Para controlar su escritorio desde el exterior, debe otorgar permiso a RustDesk de \"Grabación de pantalla\"."),
("Installing ...", "Instalando ..."),
("Install", "Instalar"),
("Installation", "Instalación"),
("Installation Path", "Ruta de instalación"),
("Create start menu shortcuts", "Crear accesos directos al menú de inicio"),
("Create desktop icon", "Crear icono de escritorio"),
("agreement_tip", "Al iniciar la instalación, acepta los términos del acuerdo de licencia."),
("Accept and Install", "Aceptar e instalar"),
("End-user license agreement", "Acuerdo de licencia de usuario final"),
("Generating ...", "Generando ..."),
("Your installation is lower version.", "Su instalación es una versión inferior."),
("not_close_tcp_tip", "No cierre esta ventana mientras esté usando el túnel"),
("Listening ...", "Escuchando ..."),
("Remote Host", "Servidor remoto"),
("Remote Port", "Puerto remoto"),
("Action", "Acción"),
("Add", "Agregar"),
("Local Port", "Puerto local"),
("setup_server_tip", "Para una conexión más rápida, configure su propio servidor"),
("Too short, at least 6 characters.", "Demasiado corto, al menos 6 caracteres."),
("The confirmation is not identical.", "La confirmación no es idéntica."),
("Permissions", "Permisos"),
("Accept", "Aceptar"),
("Dismiss", "Cancelar"),
("Disconnect", "Desconectar"),
("Allow using keyboard and mouse", "Permitir el uso del teclado y el mouse"),
("Allow using clipboard", "Permitir usar portapapeles"),
("Allow hearing sound", "Permitir escuchar sonido"),
("Allow file copy and paste", "Permitir copiar y pegar archivos"),
("Connected", "Conectado"),
("Direct and encrypted connection", "Conexión directa y encriptada"),
("Relayed and encrypted connection", "Conexión retransmitida y cifrada"),
("Direct and unencrypted connection", "Conexión directa y sin cifrar"),
("Relayed and unencrypted connection", "Conexión retransmitida y sin cifrar"),
("Enter Remote ID", "Ingrese el ID remoto"),
("Enter your password", "Ingrese su contraseña"),
("Logging in...", "Iniciando sesión..."),
("Enable RDP session sharing", "Habilitar el uso compartido de sesiones RDP"),
("Auto Login", "Ingreso automático"),
("Enable Direct IP Access", "Habilitar acceso IP directo"),
("Rename", "Renombrar"),
("Space", "Espacio"),
("Create Desktop Shortcut", "Crear acceso directo del escritorio"),
("Change Path", "Cambiar ruta"),
("Create Folder", "Crear carpeta"),
("Please enter the folder name", "Por favor ingrese el nombre de la carpeta"),
("Fix it", "Resolver"),
("Warning", "Aviso"),
("Login screen using Wayland is not supported", "La pantalla de inicio de sesión con Wayland no es compatible"),
("Reboot required", "Reinicio requerido"),
("Unsupported display server ", "Servidor de visualización no compatible"),
("x11 expected", "x11 necesario"),
("Port", "Puerto"),
("Settings", "Ajustes"),
("Username", " Nombre de usuario"),
("Invalid port", "Puerto inválido"),
("Closed manually by the peer", "Cerrado manualmente por el par"),
("Enable remote configuration modification", "Habilitar modificación de configuración remota"),
("Run without install", "Ejecutar sin instalar"),
("Always connected via relay", "Siempre conectado a través de relay"),
("Always connect via relay", "Conéctese siempre a través de relay"),
("whitelist_tip", "Solo las direcciones IP autorizadas pueden conectarse a este escritorio"),
("Login", "Iniciar sesión"),
("Logout", "Salir"),
("Tags", "Tags"),
("Search ID", "Buscar ID"),
("Current Wayland display server is not supported", "El servidor de visualización actual de Wayland no es compatible"),
("whitelist_sep", "Separados por coma, punto y coma, espacio o nueva línea"),
("Add ID", "Agregar ID"),
("Add Tag", "Agregar tag"),
("Unselect all tags", "Deseleccionar todos los tags"),
("Network error", "Error de red"),
("Username missed", "Olvidó su nombre de usuario"),
("Password missed", "Olvidó su contraseña"),
("Wrong credentials", "Credenciales incorrectas"),
("Edit Tag", "Editar tag"),
("Unremember Password", "Olvidaste tu contraseña"),
("Favorites", "Favoritos"),
("Add to Favorites", "Agregar a favoritos"),
("Remove from Favorites", "Quitar de favoritos"),
("Empty", "Vacío"),
("Invalid folder name", "Nombre de carpeta no válido"),
("Socks5 Proxy", "Proxy Socks5"),
("Hostname", "Nombre de host"),
("Discovered", "Descubierto"),
("install_daemon_tip", "Para comenzar en el encendido, debe instalar el servicio del sistema."),
("Remote ID", "ID remoto"),
("Paste", "Pegar"),
("Paste here?", "Pegar aqui?"),
("Are you sure to close the connection?", "Estás seguro de cerrar la conexión?"),
("Download new version", "Descargar nueva versión"),
("Touch mode", "Modo táctil"),
("Mouse mode", "Modo ratón"),
("One-Finger Tap", "Toque con un dedo"),
("Left Mouse", "Ratón izquierdo"),
("One-Long Tap", "Un toque largo"),
("Two-Finger Tap", "Toque con dos dedos"),
("Right Mouse", "Botón derecho"),
("One-Finger Move", "Movimiento con un dedo"),
("Double Tap & Move", "Toca dos veces y mueve"),
("Mouse Drag", "Arrastre de ratón"),
("Three-Finger vertically", "Tres dedos verticalmente"),
("Mouse Wheel", "Rueda de ratón"),
("Two-Finger Move", "Movimiento con dos dedos"),
("Canvas Move", "Movimiento de lienzo"),
("Pinch to Zoom", "Pellizcar para ampliar"),
("Canvas Zoom", "Ampliar lienzo"),
("Reset canvas", "Restablecer lienzo"),
("No permission of file transfer", "Sin permiso de transferencia de archivos"),
("Note", "Nota"),
("Connection", "Conexión"),
("Share Screen", "Compartir pantalla"),
("CLOSE", "CERRAR"),
("OPEN", "ABRIR"),
("Chat", "Chat"),
("Total", "Total"),
("items", "items"),
("Selected", "Seleccionado"),
("Screen Capture", "Captura de pantalla"),
("Input Control", "Control de entrada"),
("Audio Capture", "Captura de audio"),
("File Connection", "Conexión de archivos"),
("Screen Connection", "Conexión de pantalla"),
("Do you accept?", "Aceptas?"),
("Open System Setting", "Configuración del sistema abierto"),
("How to get Android input permission?", "Cómo obtener el permiso de entrada de Android?"),
("android_input_permission_tip1", "Para que un dispositivo remoto controle su dispositivo Android a través del mouse o toque, debe permitir que RustDesk use el servicio de \"Accesibilidad\"."),
("android_input_permission_tip2", "Vaya a la página de configuración del sistema que se abrirá a continuación, busque y acceda a [Servicios instalados], active el servicio [RustDesk Input]."),
("android_new_connection_tip", "Se recibió una nueva solicitud de control para el dispositivo actual."),
("android_service_will_start_tip", "Habilitar la captura de pantalla iniciará automáticamente el servicio, lo que permitirá que otros dispositivos soliciten una conexión desde este dispositivo."),
("android_stop_service_tip", "Cerrar el servicio cerrará automáticamente todas las conexiones establecidas."),
("android_version_audio_tip", "La versión actual de Android no admite la captura de audio, actualice a Android 10 o posterior."),
("android_start_service_tip", "Toque el permiso [Iniciar servicio] o ABRIR [Captura de pantalla] para iniciar el servicio de uso compartido de pantalla."),
("Account", "Cuenta"),
("Overwrite", "Sobrescribir"),
("This file exists, skip or overwrite this file?", "Este archivo existe, ¿omitir o sobrescribir este archivo?"),
("Quit", "Salir"),
("doc_mac_permission", "https://rustdesk.com/docs/en/manual/mac/#enable-permissions"),
("Help", "Ayuda"),
("Failed", "Fallido"),
("Succeeded", "Logrado"),
("Someone turns on privacy mode, exit", "Alguien active el modo privacidad, salga"),
("Unsupported", "No soportado"),
("Peer denied", "Par negado"),
("Please install plugins", "Instale complementos"),
("Peer exit", "Par salio"),
("Failed to turn off", "Error al apagar"),
("Turned off", "Apagado"),
("In privacy mode", "En modo de privacidad"),
("Out privacy mode", "Fuera del modo de privacidad"),
].iter().cloned().collect();
}

View File

@ -106,6 +106,7 @@ fn main() {
"desktopicon startmenu",
"".to_owned(),
false,
false,
));
return;
} else if args[0] == "--silent-install" {
@ -113,11 +114,9 @@ fn main() {
"desktopicon startmenu",
"".to_owned(),
true,
args.len() > 1,
));
return;
} else if args[0] == "--extract" {
#[cfg(feature = "with_rc")]
hbb_common::allow_err!(crate::rc::extract_resources(&args[1]));
} else if args[0] == "--check-hwcodec-config" {
#[cfg(feature = "hwcodec")]
ipc::check_hwcodec_config();
@ -209,7 +208,7 @@ fn main() {
.about("RustDesk command line tool")
.args_from_usage(&args)
.get_matches();
use hbb_common::{config::LocalConfig, env_logger::*};
use hbb_common::env_logger::*;
init_from_env(Env::default().filter_or(DEFAULT_FILTER_ENV, "info"));
if let Some(p) = matches.value_of("port-forward") {
let options: Vec<String> = p.split(":").map(|x| x.to_owned()).collect();
@ -236,14 +235,6 @@ fn main() {
remote_host = options[3].clone();
}
let key = matches.value_of("key").unwrap_or("").to_owned();
let token = LocalConfig::get_option("access_token");
cli::start_one_port_forward(
options[0].clone(),
port,
remote_host,
remote_port,
key,
token,
);
cli::start_one_port_forward(options[0].clone(), port, remote_host, remote_port, key);
}
}

View File

@ -698,7 +698,7 @@ pub fn set_share_rdp(enable: bool) {
subkey,
if enable { "true" } else { "false" }
);
run_cmds(cmd, false).ok();
run_cmds(cmd, false, "share_rdp").ok();
}
pub fn get_active_username() -> String {
@ -835,7 +835,7 @@ pub fn check_update_broker_process() -> ResultType<()> {
origin_process_exe = origin_process_exe,
cur_exe = cur_exe.to_string_lossy().to_string(),
);
run_cmds(cmds, false)?;
run_cmds(cmds, false, "update_broker")?;
Ok(())
}
@ -876,7 +876,7 @@ pub fn update_me() -> ResultType<()> {
lic = register_licence(),
);
std::thread::sleep(std::time::Duration::from_millis(1000));
run_cmds(cmds, false)?;
run_cmds(cmds, false, "update")?;
std::thread::sleep(std::time::Duration::from_millis(2000));
std::process::Command::new(&exe).arg("--tray").spawn().ok();
std::process::Command::new(&exe).spawn().ok();
@ -905,7 +905,7 @@ fn get_after_install(exe: &str) -> String {
", ext=ext, exe=exe, app_name=app_name)
}
pub fn install_me(options: &str, path: String, silent: bool) -> ResultType<()> {
pub fn install_me(options: &str, path: String, silent: bool, debug: bool) -> ResultType<()> {
let uninstall_str = get_uninstall();
let mut path = path.trim_end_matches('\\').to_owned();
let (subkey, _path, start_menu, exe) = get_default_install_info();
@ -929,7 +929,7 @@ pub fn install_me(options: &str, path: String, silent: bool) -> ResultType<()> {
version_build = versions[2];
}
let tmp_path = "C:\\Windows\\temp";
let tmp_path = std::env::temp_dir().to_string_lossy().to_string();
let mk_shortcut = write_cmds(
format!(
"
@ -945,6 +945,7 @@ oLink.Save
exe = exe,
),
"vbs",
"mk_shortcut",
)?
.to_str()
.unwrap_or("")
@ -966,6 +967,7 @@ oLink.Save
exe = exe,
),
"vbs",
"uninstall_shortcut",
)?
.to_str()
.unwrap_or("")
@ -986,6 +988,7 @@ oLink.Save
exe = exe,
),
"vbs",
"tray_shortcut",
)?
.to_str()
.unwrap_or("")
@ -1042,7 +1045,7 @@ reg add {subkey} /f /v WindowsInstaller /t REG_DWORD /d 0
cscript \"{mk_shortcut}\"
cscript \"{uninstall_shortcut}\"
cscript \"{tray_shortcut}\"
copy /Y \"{tmp_path}\\{app_name} Tray.lnk\" \"C:\\ProgramData\\Microsoft\\Windows\\Start Menu\\Programs\\Startup\\\"
copy /Y \"{tmp_path}\\{app_name} Tray.lnk\" \"%PROGRAMDATA%\\Microsoft\\Windows\\Start Menu\\Programs\\Startup\\\"
{shortcuts}
copy /Y \"{tmp_path}\\Uninstall {app_name}.lnk\" \"{path}\\\"
del /f \"{mk_shortcut}\"
@ -1079,7 +1082,7 @@ sc delete {app_name}
lic=register_licence(),
after_install=get_after_install(&exe),
);
run_cmds(cmds, false)?;
run_cmds(cmds, debug, "install")?;
std::thread::sleep(std::time::Duration::from_millis(2000));
if !silent {
std::process::Command::new(&exe).spawn()?;
@ -1091,11 +1094,11 @@ sc delete {app_name}
pub fn run_after_install() -> ResultType<()> {
let (_, _, _, exe) = get_install_info();
run_cmds(get_after_install(&exe), true)
run_cmds(get_after_install(&exe), true, "after_install")
}
pub fn run_before_uninstall() -> ResultType<()> {
run_cmds(get_before_uninstall(), true)
run_cmds(get_before_uninstall(), true, "before_install")
}
fn get_before_uninstall() -> String {
@ -1126,7 +1129,7 @@ fn get_uninstall() -> String {
rd /s /q \"{path}\"
rd /s /q \"{start_menu}\"
del /f /q \"%PUBLIC%\\Desktop\\{app_name}*\"
del /f /q \"C:\\ProgramData\\Microsoft\\Windows\\Start Menu\\Programs\\Startup\\{app_name} Tray.lnk\"
del /f /q \"%PROGRAMDATA%\\Microsoft\\Windows\\Start Menu\\Programs\\Startup\\{app_name} Tray.lnk\"
",
before_uninstall=get_before_uninstall(),
subkey=subkey,
@ -1137,17 +1140,12 @@ fn get_uninstall() -> String {
}
pub fn uninstall_me() -> ResultType<()> {
run_cmds(get_uninstall(), true)
run_cmds(get_uninstall(), true, "uninstall")
}
fn write_cmds(cmds: String, ext: &str) -> ResultType<std::path::PathBuf> {
fn write_cmds(cmds: String, ext: &str, tip: &str) -> ResultType<std::path::PathBuf> {
let mut tmp = std::env::temp_dir();
tmp.push(format!(
"{}_{:?}.{}",
crate::get_app_name(),
cmds.as_ptr(),
ext
));
tmp.push(format!("{}_{}.{}", crate::get_app_name(), tip, ext));
let mut file = std::fs::File::create(&tmp)?;
// in case cmds mixed with \r\n and \n, make sure all ending with \r\n
// in some windows, \r\n required for cmd file to run
@ -1170,8 +1168,8 @@ fn to_le(v: &mut [u16]) -> &[u8] {
unsafe { v.align_to().1 }
}
fn run_cmds(cmds: String, show: bool) -> ResultType<()> {
let tmp = write_cmds(cmds, "bat")?;
fn run_cmds(cmds: String, show: bool, tip: &str) -> ResultType<()> {
let tmp = write_cmds(cmds, "bat", tip)?;
let tmp_fn = tmp.to_str().unwrap_or("");
let res = runas::Command::new("cmd")
.args(&["/C", &tmp_fn])
@ -1348,6 +1346,7 @@ oLink.Save
id = id,
),
"vbs",
"connect_shortcut",
)?
.to_str()
.unwrap_or("")

View File

@ -216,7 +216,7 @@ impl RendezvousMediator {
},
Some(Err(e)) => bail!("Failed to receive next {}", e), // maybe socks5 tcp disconnected
None => {
// unreachable!()
bail!("Socket receive none. Maybe socks5 server is down.");
},
}
},
@ -231,7 +231,7 @@ impl RendezvousMediator {
}
last_timer = now;
let elapsed_resp = last_register_resp.map(|x| x.elapsed().as_millis() as i64).unwrap_or(REG_INTERVAL);
let timeout = (last_register_sent.map(|x| x.elapsed().as_millis() as i64).unwrap_or(REG_INTERVAL) - elapsed_resp) > REG_TIMEOUT;
let timeout = (elapsed_resp - last_register_sent.map(|x| x.elapsed().as_millis() as i64).unwrap_or(REG_INTERVAL)) > REG_TIMEOUT;
if timeout || elapsed_resp >= REG_INTERVAL {
allow_err!(rz.register_peer(&mut socket).await);
last_register_sent = now;

View File

@ -213,7 +213,9 @@ impl UI {
fn install_me(&mut self, _options: String, _path: String) {
#[cfg(windows)]
std::thread::spawn(move || {
allow_err!(crate::platform::windows::install_me(&_options, _path, false));
allow_err!(crate::platform::windows::install_me(
&_options, _path, false, false
));
std::process::exit(0);
});
}