|
|
@@ -2,7 +2,6 @@ use hbb_common::{
|
|
2
|
2
|
allow_err,
|
|
3
|
3
|
bytes::{Bytes, BytesMut},
|
|
4
|
4
|
bytes_codec::BytesCodec,
|
|
5
|
|
- config::Config,
|
|
6
|
5
|
futures_util::{
|
|
7
|
6
|
sink::SinkExt,
|
|
8
|
7
|
stream::{SplitSink, StreamExt},
|
|
|
@@ -129,6 +128,8 @@ pub struct RendezvousServer {
|
|
129
|
128
|
relay_server: String,
|
|
130
|
129
|
serial: i32,
|
|
131
|
130
|
rendezvous_servers: Vec<String>,
|
|
|
131
|
+ version: String,
|
|
|
132
|
+ software_url: String,
|
|
132
|
133
|
}
|
|
133
|
134
|
|
|
134
|
135
|
impl RendezvousServer {
|
|
|
@@ -137,6 +138,7 @@ impl RendezvousServer {
|
|
137
|
138
|
relay_server: String,
|
|
138
|
139
|
serial: i32,
|
|
139
|
140
|
rendezvous_servers: Vec<String>,
|
|
|
141
|
+ software_url: String,
|
|
140
|
142
|
) -> ResultType<()> {
|
|
141
|
143
|
let mut socket = FramedSocket::new(addr).await?;
|
|
142
|
144
|
let (tx, mut rx) = mpsc::unbounded_channel::<(RendezvousMessage, SocketAddr)>();
|
|
|
@@ -147,6 +149,8 @@ impl RendezvousServer {
|
|
147
|
149
|
relay_server,
|
|
148
|
150
|
serial,
|
|
149
|
151
|
rendezvous_servers,
|
|
|
152
|
+ version: hbb_common::get_version_from_url(&software_url),
|
|
|
153
|
+ software_url,
|
|
150
|
154
|
};
|
|
151
|
155
|
let mut listener = new_listener(addr, false).await?;
|
|
152
|
156
|
loop {
|
|
|
@@ -303,6 +307,16 @@ impl RendezvousServer {
|
|
303
|
307
|
);
|
|
304
|
308
|
}
|
|
305
|
309
|
}
|
|
|
310
|
+ Some(rendezvous_message::Union::software_update(su)) => {
|
|
|
311
|
+ if !self.version.is_empty() && su.url != self.version {
|
|
|
312
|
+ let mut msg_out = RendezvousMessage::new();
|
|
|
313
|
+ msg_out.set_software_update(SoftwareUpdate {
|
|
|
314
|
+ url: self.software_url.clone(),
|
|
|
315
|
+ ..Default::default()
|
|
|
316
|
+ });
|
|
|
317
|
+ socket.send(&msg_out, addr).await?;
|
|
|
318
|
+ }
|
|
|
319
|
+ }
|
|
306
|
320
|
_ => {}
|
|
307
|
321
|
}
|
|
308
|
322
|
}
|
|
|
@@ -561,8 +575,8 @@ impl RendezvousServer {
|
|
561
|
575
|
|
|
562
|
576
|
pub fn test_if_valid_server(host: &str) -> ResultType<SocketAddr> {
|
|
563
|
577
|
if host.contains(":") {
|
|
564
|
|
- Config::to_socket_addr(host)
|
|
|
578
|
+ hbb_common::to_socket_addr(host)
|
|
565
|
579
|
} else {
|
|
566
|
|
- Config::to_socket_addr(&format!("{}:{}", host, 0))
|
|
|
580
|
+ hbb_common::to_socket_addr(&format!("{}:{}", host, 0))
|
|
567
|
581
|
}
|
|
568
|
582
|
}
|