opentrade 4 years ago
parent
commit
321bccc19e
3 changed files with 21 additions and 21 deletions
  1. 1 1
      libs/hbb_common
  2. 17 17
      src/lic.rs
  3. 3 3
      src/main.rs

+ 1 - 1
libs/hbb_common

@@ -1 +1 @@
1
-Subproject commit 98257ca5b799ecae53e2fc3ec20bb997a2f6206c
1
+Subproject commit 99487187a6b25380b9a412f040f43f319ece7545

+ 17 - 17
src/lic.rs

@@ -12,7 +12,7 @@ use std::io::prelude::*;
12
 use std::path::Path;
12
 use std::path::Path;
13
 
13
 
14
 #[derive(Debug, PartialEq, Default, Serialize, Deserialize, Clone)]
14
 #[derive(Debug, PartialEq, Default, Serialize, Deserialize, Clone)]
15
-pub struct License {
15
+pub struct Machine {
16
     #[serde(default)]
16
     #[serde(default)]
17
     hostname: String,
17
     hostname: String,
18
     #[serde(default)]
18
     #[serde(default)]
@@ -24,7 +24,7 @@ pub struct License {
24
 #[derive(Debug, PartialEq, Default, Serialize, Deserialize, Clone)]
24
 #[derive(Debug, PartialEq, Default, Serialize, Deserialize, Clone)]
25
 pub struct Post {
25
 pub struct Post {
26
     #[serde(default)]
26
     #[serde(default)]
27
-    lic: License,
27
+    machine: Machine,
28
     #[serde(default)]
28
     #[serde(default)]
29
     email: String,
29
     email: String,
30
     #[serde(default)]
30
     #[serde(default)]
@@ -36,12 +36,12 @@ pub struct Post {
36
 const LICENSE_FILE: &'static str = ".license.txt";
36
 const LICENSE_FILE: &'static str = ".license.txt";
37
 
37
 
38
 pub fn check_lic(email: &str) -> bool {
38
 pub fn check_lic(email: &str) -> bool {
39
-    let lic = get_lic();
39
+    let machine = get_lic();
40
     let path = Path::new(LICENSE_FILE);
40
     let path = Path::new(LICENSE_FILE);
41
     if Path::is_file(&path) {
41
     if Path::is_file(&path) {
42
         let contents = std::fs::read_to_string(&path).unwrap_or("".to_owned());
42
         let contents = std::fs::read_to_string(&path).unwrap_or("".to_owned());
43
-        if let Ok(old_lic) = dec_lic(&contents) {
44
-            if lic == old_lic {
43
+        if let Ok(old_lic) = dec_machine(&contents) {
44
+            if machine == old_lic {
45
                 return true;
45
                 return true;
46
             }
46
             }
47
         }
47
         }
@@ -52,10 +52,10 @@ pub fn check_lic(email: &str) -> bool {
52
         return false;
52
         return false;
53
     }
53
     }
54
 
54
 
55
-    match check_email(lic.clone(), email.to_owned()) {
55
+    match check_email(machine.clone(), email.to_owned()) {
56
         Ok(v) => {
56
         Ok(v) => {
57
             if v {
57
             if v {
58
-                write_lic(&lic);
58
+                write_lic(&machine);
59
             }
59
             }
60
             return v;
60
             return v;
61
         }
61
         }
@@ -66,8 +66,8 @@ pub fn check_lic(email: &str) -> bool {
66
     }
66
     }
67
 }
67
 }
68
 
68
 
69
-fn write_lic(lic: &License) {
70
-    if let Ok(s) = enc_lic(&lic) {
69
+fn write_lic(machine: &Machine) {
70
+    if let Ok(s) = enc_machine(&machine) {
71
         if let Ok(mut f) = std::fs::File::create(LICENSE_FILE) {
71
         if let Ok(mut f) = std::fs::File::create(LICENSE_FILE) {
72
             f.write_all(s.as_bytes()).ok();
72
             f.write_all(s.as_bytes()).ok();
73
             f.sync_all().ok();
73
             f.sync_all().ok();
@@ -75,7 +75,7 @@ fn write_lic(lic: &License) {
75
     }
75
     }
76
 }
76
 }
77
 
77
 
78
-fn check_email(lic: License, email: String) -> ResultType<bool> {
78
+fn check_email(machine: Machine, email: String) -> ResultType<bool> {
79
     log::info!("Checking email with the server ...");
79
     log::info!("Checking email with the server ...");
80
     let mut rng = rand::thread_rng();
80
     let mut rng = rand::thread_rng();
81
     let nonce: usize = rng.gen();
81
     let nonce: usize = rng.gen();
@@ -83,7 +83,7 @@ fn check_email(lic: License, email: String) -> ResultType<bool> {
83
     let resp = Client::new()
83
     let resp = Client::new()
84
         .post("http://rustdesk.com/api/check-email")
84
         .post("http://rustdesk.com/api/check-email")
85
         .json(&Post {
85
         .json(&Post {
86
-            lic,
86
+            machine,
87
             email,
87
             email,
88
             nonce,
88
             nonce,
89
             ..Default::default()
89
             ..Default::default()
@@ -101,7 +101,7 @@ fn check_email(lic: License, email: String) -> ResultType<bool> {
101
     Ok(true)
101
     Ok(true)
102
 }
102
 }
103
 
103
 
104
-fn get_lic() -> License {
104
+fn get_lic() -> Machine {
105
     let hostname = whoami::hostname();
105
     let hostname = whoami::hostname();
106
     let uid = machine_uid::get().unwrap_or("".to_owned());
106
     let uid = machine_uid::get().unwrap_or("".to_owned());
107
     let mac = if let Ok(Some(ma)) = mac_address::get_mac_address() {
107
     let mac = if let Ok(Some(ma)) = mac_address::get_mac_address() {
@@ -109,11 +109,11 @@ fn get_lic() -> License {
109
     } else {
109
     } else {
110
         "".to_owned()
110
         "".to_owned()
111
     };
111
     };
112
-    License { hostname, uid, mac }
112
+    Machine { hostname, uid, mac }
113
 }
113
 }
114
 
114
 
115
-fn enc_lic(lic: &License) -> ResultType<String> {
116
-    let tmp = serde_json::to_vec::<License>(lic)?;
115
+fn enc_machine(machine: &Machine) -> ResultType<String> {
116
+    let tmp = serde_json::to_vec::<Machine>(machine)?;
117
     const SK: &[u64] = &[
117
     const SK: &[u64] = &[
118
         139, 164, 88, 86, 6, 123, 221, 248, 96, 36, 106, 207, 99, 124, 27, 196, 5, 159, 58, 253,
118
         139, 164, 88, 86, 6, 123, 221, 248, 96, 36, 106, 207, 99, 124, 27, 196, 5, 159, 58, 253,
119
         238, 94, 3, 184, 237, 236, 122, 59, 205, 95, 6, 189, 88, 168, 68, 104, 60, 5, 163, 198,
119
         238, 94, 3, 184, 237, 236, 122, 59, 205, 95, 6, 189, 88, 168, 68, 104, 60, 5, 163, 198,
@@ -129,7 +129,7 @@ fn enc_lic(lic: &License) -> ResultType<String> {
129
     Ok(tmp)
129
     Ok(tmp)
130
 }
130
 }
131
 
131
 
132
-fn dec_lic(s: &str) -> ResultType<License> {
132
+fn dec_machine(s: &str) -> ResultType<Machine> {
133
     let tmp: String = s.chars().rev().collect();
133
     let tmp: String = s.chars().rev().collect();
134
     const PK: &[u64] = &[
134
     const PK: &[u64] = &[
135
         88, 168, 68, 104, 60, 5, 163, 198, 165, 38, 12, 85, 114, 203, 96, 163, 70, 48, 0, 131, 57,
135
         88, 168, 68, 104, 60, 5, 163, 198, 165, 38, 12, 85, 114, 203, 96, 163, 70, 48, 0, 131, 57,
@@ -140,7 +140,7 @@ fn dec_lic(s: &str) -> ResultType<License> {
140
     pk_[..].copy_from_slice(&pk);
140
     pk_[..].copy_from_slice(&pk);
141
     let pk = sign::PublicKey(pk_);
141
     let pk = sign::PublicKey(pk_);
142
     if let Ok(data) = sign::verify(&base64::decode_config(tmp, base64::URL_SAFE_NO_PAD)?, &pk) {
142
     if let Ok(data) = sign::verify(&base64::decode_config(tmp, base64::URL_SAFE_NO_PAD)?, &pk) {
143
-        Ok(serde_json::from_slice::<License>(&data)?)
143
+        Ok(serde_json::from_slice::<Machine>(&data)?)
144
     } else {
144
     } else {
145
         bail!("sign:verify failed");
145
         bail!("sign:verify failed");
146
     }
146
     }

+ 3 - 3
src/main.rs

@@ -47,6 +47,9 @@ fn main() -> ResultType<()> {
47
         }
47
         }
48
         return default.to_owned();
48
         return default.to_owned();
49
     };
49
     };
50
+    if !lic::check_lic(&get_arg("email", "")) {
51
+        return Ok(());
52
+    }
50
     let port = get_arg("port", DEFAULT_PORT);
53
     let port = get_arg("port", DEFAULT_PORT);
51
     let relay_servers: Vec<String> = get_arg("relay-servers", "")
54
     let relay_servers: Vec<String> = get_arg("relay-servers", "")
52
         .split(",")
55
         .split(",")
@@ -65,9 +68,6 @@ fn main() -> ResultType<()> {
65
     log::info!("serial={}", serial);
68
     log::info!("serial={}", serial);
66
     log::info!("rendezvous-servers={:?}", rendezvous_servers);
69
     log::info!("rendezvous-servers={:?}", rendezvous_servers);
67
     let stop: Arc<Mutex<bool>> = Default::default();
70
     let stop: Arc<Mutex<bool>> = Default::default();
68
-    if !lic::check_lic(&get_arg("email", "")) {
69
-        return Ok(());
70
-    }
71
     RendezvousServer::start(
71
     RendezvousServer::start(
72
         &addr,
72
         &addr,
73
         &addr2,
73
         &addr2,