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' -p, --port=[NUMBER(default={})] 'Sets the listening port'
-s, --serial=[NUMBER(default={0})] 'Sets configure update serial number' -s, --serial=[NUMBER(default={0})] 'Sets configure update serial number'
-R, --rendezvous-servers=[HOSTS] 'Sets rendezvous servers, seperated by colon' -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'", -r, --relay-server=[HOST] 'Sets the default relay server'",
DEFAULT_PORT DEFAULT_PORT
); );
@ -59,6 +60,13 @@ async fn main() -> ResultType<()> {
log::info!("relay-server={}", relay_server); log::info!("relay-server={}", relay_server);
log::info!("serial={}", serial); log::info!("serial={}", serial);
log::info!("rendzvous-servers={:?}", rendezvous_servers); 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(()) Ok(())
} }

View File

@ -2,7 +2,6 @@ use hbb_common::{
allow_err, allow_err,
bytes::{Bytes, BytesMut}, bytes::{Bytes, BytesMut},
bytes_codec::BytesCodec, bytes_codec::BytesCodec,
config::Config,
futures_util::{ futures_util::{
sink::SinkExt, sink::SinkExt,
stream::{SplitSink, StreamExt}, stream::{SplitSink, StreamExt},
@ -129,6 +128,8 @@ pub struct RendezvousServer {
relay_server: String, relay_server: String,
serial: i32, serial: i32,
rendezvous_servers: Vec<String>, rendezvous_servers: Vec<String>,
version: String,
software_url: String,
} }
impl RendezvousServer { impl RendezvousServer {
@ -137,6 +138,7 @@ impl RendezvousServer {
relay_server: String, relay_server: String,
serial: i32, serial: i32,
rendezvous_servers: Vec<String>, rendezvous_servers: Vec<String>,
software_url: String,
) -> ResultType<()> { ) -> ResultType<()> {
let mut socket = FramedSocket::new(addr).await?; let mut socket = FramedSocket::new(addr).await?;
let (tx, mut rx) = mpsc::unbounded_channel::<(RendezvousMessage, SocketAddr)>(); let (tx, mut rx) = mpsc::unbounded_channel::<(RendezvousMessage, SocketAddr)>();
@ -147,6 +149,8 @@ impl RendezvousServer {
relay_server, relay_server,
serial, serial,
rendezvous_servers, rendezvous_servers,
version: hbb_common::get_version_from_url(&software_url),
software_url,
}; };
let mut listener = new_listener(addr, false).await?; let mut listener = new_listener(addr, false).await?;
loop { 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> { pub fn test_if_valid_server(host: &str) -> ResultType<SocketAddr> {
if host.contains(":") { if host.contains(":") {
Config::to_socket_addr(host) hbb_common::to_socket_addr(host)
} else { } else {
Config::to_socket_addr(&format!("{}:{}", host, 0)) hbb_common::to_socket_addr(&format!("{}:{}", host, 0))
} }
} }