mirror of
https://github.com/rustdesk/rustdesk.git
synced 2026-07-19 06:15:02 +03:00
swtich_code for hbbs to bypass ACL
This commit is contained in:
@@ -426,8 +426,8 @@ impl Client {
|
||||
NatType::from_i32(my_nat_type).unwrap_or(NatType::UNKNOWN_NAT)
|
||||
};
|
||||
|
||||
if !key.is_empty() && !token.is_empty() {
|
||||
// mainly for the security of token
|
||||
let switch_code = interface.get_switch_code();
|
||||
if !key.is_empty() && (!token.is_empty() || !switch_code.is_empty()) {
|
||||
secure_tcp(&mut socket, &key)
|
||||
.await
|
||||
.map_err(|e| anyhow!("Failed to secure tcp: {}", e))?;
|
||||
@@ -469,6 +469,7 @@ impl Client {
|
||||
udp_port: udp_nat_port as _,
|
||||
force_relay: interface.is_force_relay(),
|
||||
socket_addr_v6: ipv6.1.unwrap_or_default(),
|
||||
switch_code,
|
||||
..Default::default()
|
||||
});
|
||||
for i in 1..=3 {
|
||||
@@ -716,6 +717,7 @@ impl Client {
|
||||
let mut direct = !conn.is_err();
|
||||
if interface.is_force_relay() || conn.is_err() {
|
||||
if !relay_server.is_empty() {
|
||||
let switch_code = interface.get_switch_code();
|
||||
conn = Self::request_relay(
|
||||
peer_id,
|
||||
relay_server.to_owned(),
|
||||
@@ -724,6 +726,7 @@ impl Client {
|
||||
key,
|
||||
token,
|
||||
conn_type,
|
||||
&switch_code,
|
||||
)
|
||||
.await;
|
||||
if let Err(e) = conn {
|
||||
@@ -844,6 +847,7 @@ impl Client {
|
||||
key: &str,
|
||||
token: &str,
|
||||
conn_type: ConnType,
|
||||
switch_code: &str,
|
||||
) -> ResultType<Stream> {
|
||||
let mut succeed = false;
|
||||
let mut uuid = "".to_owned();
|
||||
@@ -855,8 +859,7 @@ impl Client {
|
||||
.await
|
||||
.with_context(|| "Failed to connect to rendezvous server")?;
|
||||
|
||||
if !key.is_empty() && !token.is_empty() {
|
||||
// mainly for the security of token
|
||||
if !key.is_empty() && (!token.is_empty() || !switch_code.is_empty()) {
|
||||
secure_tcp(&mut socket, key).await?;
|
||||
}
|
||||
|
||||
@@ -877,6 +880,7 @@ impl Client {
|
||||
uuid: uuid.clone(),
|
||||
relay_server: relay_server.clone(),
|
||||
secure,
|
||||
switch_code: switch_code.to_owned(),
|
||||
..Default::default()
|
||||
});
|
||||
socket.send(&msg_out).await?;
|
||||
@@ -3736,6 +3740,16 @@ pub trait Interface: Send + Clone + 'static + Sized {
|
||||
self.get_lch().read().unwrap().force_relay
|
||||
}
|
||||
|
||||
fn get_switch_code(&self) -> String {
|
||||
match self.get_lch().read().unwrap().switch_uuid.clone() {
|
||||
Some(u) if !u.is_empty() => {
|
||||
use hbb_common::sodiumoxide::crypto::hash::sha256;
|
||||
crate::encode64(sha256::hash(u.as_bytes()).0)
|
||||
}
|
||||
_ => String::new(),
|
||||
}
|
||||
}
|
||||
|
||||
fn swap_modifier_mouse(&self, _msg: &mut hbb_common::protos::message::MouseEvent) {}
|
||||
|
||||
fn update_direct(&self, direct: Option<bool>) {
|
||||
|
||||
Reference in New Issue
Block a user