software_url

This commit is contained in:
open-trade 2020-09-21 22:56:38 +08:00
parent f3425044a6
commit 7aaa2d7aeb
3 changed files with 27 additions and 5 deletions

@ -1 +1 @@
Subproject commit e4313f5f0f317fecfb0e8d2dbf2be62ae99edc90
Subproject commit ce6dd559f2fb56314fdef1e2e435c0381632f1b3

View File

@ -15,6 +15,7 @@ async fn main() -> ResultType<()> {
-p, --port=[NUMBER(default={})] 'Sets the listening port'
-s, --serial=[NUMBER(default={0})] 'Sets configure update serial number'
-R, --rendezvous-servers=[HOSTS] 'Sets rendezvous servers, seperated by colon'
-u, --software-url=[URL] 'Sets download url of RustDesk software of newest version'
-r, --relay-server=[HOST] 'Sets the default relay server'",
DEFAULT_PORT
);
@ -59,6 +60,13 @@ async fn main() -> ResultType<()> {
log::info!("relay-server={}", relay_server);
log::info!("serial={}", serial);
log::info!("rendzvous-servers={:?}", rendezvous_servers);
RendezvousServer::start(&addr, relay_server, serial, rendezvous_servers).await?;
RendezvousServer::start(
&addr,
relay_server,
serial,
rendezvous_servers,
get_arg("software-url", ""),
)
.await?;
Ok(())
}

View File

@ -2,7 +2,6 @@ use hbb_common::{
allow_err,
bytes::{Bytes, BytesMut},
bytes_codec::BytesCodec,
config::Config,
futures_util::{
sink::SinkExt,
stream::{SplitSink, StreamExt},
@ -129,6 +128,8 @@ pub struct RendezvousServer {
relay_server: String,
serial: i32,
rendezvous_servers: Vec<String>,
version: String,
software_url: String,
}
impl RendezvousServer {
@ -137,6 +138,7 @@ impl RendezvousServer {
relay_server: String,
serial: i32,
rendezvous_servers: Vec<String>,
software_url: String,
) -> ResultType<()> {
let mut socket = FramedSocket::new(addr).await?;
let (tx, mut rx) = mpsc::unbounded_channel::<(RendezvousMessage, SocketAddr)>();
@ -147,6 +149,8 @@ impl RendezvousServer {
relay_server,
serial,
rendezvous_servers,
version: hbb_common::get_version_from_url(&software_url),
software_url,
};
let mut listener = new_listener(addr, false).await?;
loop {
@ -303,6 +307,16 @@ impl RendezvousServer {
);
}
}
Some(rendezvous_message::Union::software_update(su)) => {
if !self.version.is_empty() && su.url != self.version {
let mut msg_out = RendezvousMessage::new();
msg_out.set_software_update(SoftwareUpdate {
url: self.software_url.clone(),
..Default::default()
});
socket.send(&msg_out, addr).await?;
}
}
_ => {}
}
}
@ -561,8 +575,8 @@ impl RendezvousServer {
pub fn test_if_valid_server(host: &str) -> ResultType<SocketAddr> {
if host.contains(":") {
Config::to_socket_addr(host)
hbb_common::to_socket_addr(host)
} else {
Config::to_socket_addr(&format!("{}:{}", host, 0))
hbb_common::to_socket_addr(&format!("{}:{}", host, 0))
}
}