diff options
Diffstat (limited to '')
| -rw-r--r-- | src/bin/client/repl.rs | 53 |
1 files changed, 20 insertions, 33 deletions
diff --git a/src/bin/client/repl.rs b/src/bin/client/repl.rs index dd55acc..9d5f699 100644 --- a/src/bin/client/repl.rs +++ b/src/bin/client/repl.rs | |||
| @@ -286,6 +286,9 @@ impl ClientState { | |||
| 286 | } | 286 | } |
| 287 | } else { | 287 | } else { |
| 288 | let mut a = parts[1].to_string(); | 288 | let mut a = parts[1].to_string(); |
| 289 | if a == "localhost" { | ||
| 290 | a = "127.0.0.1".to_string(); | ||
| 291 | } | ||
| 289 | if !a.contains(':') { | 292 | if !a.contains(':') { |
| 290 | a = format!("{}:{}", a, self.default_port); | 293 | a = format!("{}:{}", a, self.default_port); |
| 291 | } | 294 | } |
| @@ -519,40 +522,24 @@ impl ClientState { | |||
| 519 | println!("\nLogged out"); | 522 | println!("\nLogged out"); |
| 520 | } | 523 | } |
| 521 | "info" => { | 524 | "info" => { |
| 522 | if self.stream.is_none() { | 525 | if let Some(addr) = &self.addr { |
| 523 | println!("\nNot connected. Use 'connect <ip>:<port>' first."); | 526 | let fp = database::get_fingerprint(&self.conn, addr); |
| 524 | continue 'outer; | 527 | println!("\nConnected to: {}", addr); |
| 525 | } | 528 | match fp { |
| 526 | let s = self.stream.as_mut().unwrap(); | 529 | Some(fp) => println!("Fingerprint: {}", fp), |
| 527 | let writer_stream = s.try_clone().unwrap(); | 530 | None => println!("Fingerprint: (not trusted)"), |
| 528 | let mut writer = writer_stream; | 531 | } |
| 529 | let response_reader_stream = s.try_clone().unwrap(); | ||
| 530 | let mut response_reader = | ||
| 531 | BufReader::new(response_reader_stream); | ||
| 532 | if let Err(_) = writeln!(writer, "INFO") { | ||
| 533 | self.stream = None; | ||
| 534 | println!("\nConnection lost"); | ||
| 535 | continue 'outer; | ||
| 536 | } | ||
| 537 | let mut response = String::new(); | ||
| 538 | if let Err(_) = response_reader.read_line(&mut response) | ||
| 539 | { | ||
| 540 | self.stream = None; | ||
| 541 | println!("\nConnection lost"); | ||
| 542 | } else { | 532 | } else { |
| 543 | let resp = response.trim(); | 533 | println!("\nNot connected to any host."); |
| 544 | if resp.starts_with("INFO ") { | 534 | } |
| 545 | let parts: Vec<&str> = | 535 | if let Some(s) = &self.stream { |
| 546 | resp.split_whitespace().collect(); | 536 | let mut s = s.try_clone().unwrap(); |
| 547 | if parts.len() == 4 { | 537 | let _ = writeln!(s, "INFO"); |
| 548 | println!("\nLogged in as {} (ID: {})\r\nBalance: {} PLN", parts[1], parts[2], parts[3]); | 538 | let mut reader = BufReader::new(s); |
| 549 | } else { | 539 | let mut response = String::new(); |
| 550 | println!("\n{}", resp); | 540 | let _ = reader.read_line(&mut response); |
| 551 | } | 541 | if !response.is_empty() { |
| 552 | } else if resp.starts_with("ERROR ") { | 542 | println!("{}", response.trim()); |
| 553 | println!("\nError: {}", &resp[6..]); | ||
| 554 | } else { | ||
| 555 | println!("\n{}", resp); | ||
| 556 | } | 543 | } |
| 557 | } | 544 | } |
| 558 | } | 545 | } |
