open-trade лет назад: 5
Родитель
Сommit
7aaa2d7aeb
3 измененных файлов с 27 добавлено и 5 удалено
  1. 1 1
      libs/hbb_common
  2. 9 1
      src/main.rs
  3. 17 3
      src/rendezvous_server.rs

+ 1 - 1
libs/hbb_common

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

+ 9 - 1
src/main.rs

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

+ 17 - 3
src/rendezvous_server.rs

@@ -2,7 +2,6 @@ use hbb_common::{
2
     allow_err,
2
     allow_err,
3
     bytes::{Bytes, BytesMut},
3
     bytes::{Bytes, BytesMut},
4
     bytes_codec::BytesCodec,
4
     bytes_codec::BytesCodec,
5
-    config::Config,
6
     futures_util::{
5
     futures_util::{
7
         sink::SinkExt,
6
         sink::SinkExt,
8
         stream::{SplitSink, StreamExt},
7
         stream::{SplitSink, StreamExt},
@@ -129,6 +128,8 @@ pub struct RendezvousServer {
129
     relay_server: String,
128
     relay_server: String,
130
     serial: i32,
129
     serial: i32,
131
     rendezvous_servers: Vec<String>,
130
     rendezvous_servers: Vec<String>,
131
+    version: String,
132
+    software_url: String,
132
 }
133
 }
133
 
134
 
134
 impl RendezvousServer {
135
 impl RendezvousServer {
@@ -137,6 +138,7 @@ impl RendezvousServer {
137
         relay_server: String,
138
         relay_server: String,
138
         serial: i32,
139
         serial: i32,
139
         rendezvous_servers: Vec<String>,
140
         rendezvous_servers: Vec<String>,
141
+        software_url: String,
140
     ) -> ResultType<()> {
142
     ) -> ResultType<()> {
141
         let mut socket = FramedSocket::new(addr).await?;
143
         let mut socket = FramedSocket::new(addr).await?;
142
         let (tx, mut rx) = mpsc::unbounded_channel::<(RendezvousMessage, SocketAddr)>();
144
         let (tx, mut rx) = mpsc::unbounded_channel::<(RendezvousMessage, SocketAddr)>();
@@ -147,6 +149,8 @@ impl RendezvousServer {
147
             relay_server,
149
             relay_server,
148
             serial,
150
             serial,
149
             rendezvous_servers,
151
             rendezvous_servers,
152
+            version: hbb_common::get_version_from_url(&software_url),
153
+            software_url,
150
         };
154
         };
151
         let mut listener = new_listener(addr, false).await?;
155
         let mut listener = new_listener(addr, false).await?;
152
         loop {
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
 pub fn test_if_valid_server(host: &str) -> ResultType<SocketAddr> {
576
 pub fn test_if_valid_server(host: &str) -> ResultType<SocketAddr> {
563
     if host.contains(":") {
577
     if host.contains(":") {
564
-        Config::to_socket_addr(host)
578
+        hbb_common::to_socket_addr(host)
565
     } else {
579
     } else {
566
-        Config::to_socket_addr(&format!("{}:{}", host, 0))
580
+        hbb_common::to_socket_addr(&format!("{}:{}", host, 0))
567
     }
581
     }
568
 }
582
 }