projects
/
dnsseed-rust
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Implement connecting to Tor peers over SOCKS5 in Peer
[dnsseed-rust]
/
src
/
reader.rs
diff --git
a/src/reader.rs
b/src/reader.rs
index 208d2241c382ee4309beda50f1ac6df2d55159fc..08dc5f06cb3914cfa3006f4ce0588415be9eb7cb 100644
(file)
--- a/
src/reader.rs
+++ b/
src/reader.rs
@@
-1,6
+1,7
@@
+use std::sync::Arc;
use std::sync::atomic::Ordering;
use std::io::BufReader;
use std::sync::atomic::Ordering;
use std::io::BufReader;
-use std::net::
SocketAddr
;
+use std::net::
{IpAddr, SocketAddr}
;
use std::time::Instant;
use tokio::prelude::*;
use std::time::Instant;
use tokio::prelude::*;
@@
-8,12
+9,13
@@
use tokio::io::{stdin, lines};
use crate::printer::Printer;
use crate::datastore::{Store, AddressState, U64Setting, RegexSetting};
use crate::printer::Printer;
use crate::datastore::{Store, AddressState, U64Setting, RegexSetting};
+use crate::bgp_client::BGPClient;
use crate::{START_SHUTDOWN, scan_node};
use regex::Regex;
use crate::{START_SHUTDOWN, scan_node};
use regex::Regex;
-pub fn read(store: &'static Store, printer: &'static Printer) {
+pub fn read(store: &'static Store, printer: &'static Printer
, bgp_client: Arc<BGPClient>
) {
tokio::spawn(lines(BufReader::new(stdin())).for_each(move |line| {
macro_rules! err {
() => { {
tokio::spawn(lines(BufReader::new(stdin())).for_each(move |line| {
macro_rules! err {
() => { {
@@
-52,7
+54,11
@@
pub fn read(store: &'static Store, printer: &'static Printer) {
Err(_) => err!(),
});
},
Err(_) => err!(),
});
},
- "a" => scan_node(Instant::now(), try_parse_next_chunk!(SocketAddr)),
+ "a" => scan_node(Instant::now(), try_parse_next_chunk!(SocketAddr), true),
+ "b" => {
+ let ip = try_parse_next_chunk!(IpAddr);
+ printer.add_line(format!("ASN for {} is {}", ip, bgp_client.get_asn(ip)), false);
+ },
"r" => {
match AddressState::from_num(try_parse_next_chunk!(u8)) {
Some(state) => store.set_u64(U64Setting::RescanInterval(state), try_parse_next_chunk!(u64)),
"r" => {
match AddressState::from_num(try_parse_next_chunk!(u8)) {
Some(state) => store.set_u64(U64Setting::RescanInterval(state), try_parse_next_chunk!(u64)),