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 15
         -p, --port=[NUMBER(default={})] 'Sets the listening port'
16 16
         -s, --serial=[NUMBER(default={0})] 'Sets configure update serial number'
17 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 19
     -r, --relay-server=[HOST] 'Sets the default relay server'",
19 20
         DEFAULT_PORT
20 21
     );
@@ -59,6 +60,13 @@ async fn main() -> ResultType<()> {
59 60
     log::info!("relay-server={}", relay_server);
60 61
     log::info!("serial={}", serial);
61 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 71
     Ok(())
64 72
 }

+ 17 - 3
src/rendezvous_server.rs

@@ -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
 }