From b2ab10588bda590dd6dae2348f3422f242826807 Mon Sep 17 00:00:00 2001 From: Shahar sela Date: Tue, 6 Oct 2020 03:24:34 +0300 Subject: [PATCH 01/10] Changed dns resolving library to to_socket_addrs and removed the usage of trust-dns --- Cargo.lock | 530 +--------------------------------------------------- Cargo.toml | 1 - src/main.rs | 28 ++- 3 files changed, 20 insertions(+), 539 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 114525bda..02b1dc649 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1,20 +1,5 @@ # This file is automatically @generated by Cargo. # It is not intended for manual editing. -[[package]] -name = "addr2line" -version = "0.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b6a2d3371669ab3ca9797670853d61402b03d0b4b9ebf33d677dfa720203072" -dependencies = [ - "gimli", -] - -[[package]] -name = "adler" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee2a4ec343196209d6594e19543ae87a39f96d5534d7174822a3ad825dd6ed7e" - [[package]] name = "aho-corasick" version = "0.7.13" @@ -30,7 +15,7 @@ version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ee49baf6cb617b853aa8d93bf420db2383fab46d314482ca2803b40d5fde979b" dependencies = [ - "winapi 0.3.9", + "winapi", ] [[package]] @@ -39,7 +24,7 @@ version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d52a9bb7ec0cf484c551830a7ce27bd20d67eac647e1befb56b0be4ee39a55d2" dependencies = [ - "winapi 0.3.9", + "winapi", ] [[package]] @@ -152,17 +137,6 @@ version = "4.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8ab27c1aa62945039e44edaeee1dc23c74cc0c303dd5fe0fb462a184f1c3a518" -[[package]] -name = "async-trait" -version = "0.1.40" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "687c230d85c0a52504709705fc8a53e4a692b83a2184f03dae73e38e1e93a783" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - [[package]] name = "atomic-waker" version = "1.0.0" @@ -177,7 +151,7 @@ checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" dependencies = [ "hermit-abi", "libc", - "winapi 0.3.9", + "winapi", ] [[package]] @@ -186,26 +160,6 @@ version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cdb031dd78e28731d87d56cc8ffef4a8f36ca26c38fe2de700543e627f8a464a" -[[package]] -name = "backtrace" -version = "0.3.50" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46254cf2fdcdf1badb5934448c1bcbe046a56537b3987d96c51a7afc5d03f293" -dependencies = [ - "addr2line", - "cfg-if", - "libc", - "miniz_oxide", - "object", - "rustc-demangle", -] - -[[package]] -name = "base64" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b41b7ea54a0c9d92199de89e20e58d49f02f8e699814ef3fdf266f6f748d15c7" - [[package]] name = "base64" version = "0.12.3" @@ -249,12 +203,6 @@ version = "3.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2e8c087f005730276d1096a652e92a8bacee2e2472bcc9715a74d2bec38b5820" -[[package]] -name = "bytes" -version = "0.5.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e4cec68f03f32e44924783795810fa50a7035d8c8ebe78580ad7e6c703fba38" - [[package]] name = "cache-padded" version = "1.1.1" @@ -309,7 +257,7 @@ checksum = "b3616f750b84d8f0de8a58bda93e08e2a81ad3f523089b05f1dffecab48c6cbd" dependencies = [ "atty", "lazy_static", - "winapi 0.3.9", + "winapi", ] [[package]] @@ -367,7 +315,7 @@ checksum = "8e93d7f5705de3e49895a2b5e0b8855a1c27f080192ae9c32a6432d50741a57a" dependencies = [ "libc", "redox_users", - "winapi 0.3.9", + "winapi", ] [[package]] @@ -376,18 +324,6 @@ version = "1.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e78d4f1cc4ae33bbfc157ed5d5a5ef3bc29227303d595861deb238fcec4e9457" -[[package]] -name = "enum-as-inner" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c5f0096a91d210159eceb2ff5e1c4da18388a170e1e3ce948aac9c8fdbbf595" -dependencies = [ - "heck", - "proc-macro2", - "quote", - "syn", -] - [[package]] name = "env_logger" version = "0.7.1" @@ -413,22 +349,6 @@ version = "1.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5c85295147490b8fcf2ea3d104080a105a8b2c63f9c319e82c02d8e952388919" -[[package]] -name = "fuchsia-zircon" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e9763c69ebaae630ba35f74888db465e49e259ba1bc0eda7d06f4a067615d82" -dependencies = [ - "bitflags", - "fuchsia-zircon-sys", -] - -[[package]] -name = "fuchsia-zircon-sys" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3dcaa9ae7725d12cdb85b3ad99a434db70b468c09ded17e012d86b5c1010f7a7" - [[package]] name = "futures" version = "0.3.5" @@ -556,12 +476,6 @@ dependencies = [ "wasi", ] -[[package]] -name = "gimli" -version = "0.22.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aaf91faf136cb47367fa430cd46e37a788775e7fa104f8b4bcb3861dc389b724" - [[package]] name = "gloo-timers" version = "0.2.1" @@ -593,17 +507,6 @@ dependencies = [ "libc", ] -[[package]] -name = "hostname" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c731c3e10504cc8ed35cfe2f1db4c9274c3d35fa486e3b31df46f068ef3e867" -dependencies = [ - "libc", - "match_cfg", - "winapi 0.3.9", -] - [[package]] name = "humantime" version = "1.3.0" @@ -613,38 +516,6 @@ dependencies = [ "quick-error", ] -[[package]] -name = "idna" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02e2673c30ee86b5b96a9cb52ad15718aa1f966f5ab9ad54a8b95d5ca33120a9" -dependencies = [ - "matches", - "unicode-bidi", - "unicode-normalization", -] - -[[package]] -name = "iovec" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2b3ea6ff95e175473f8ffe6a7eb7c00d054240321b84c57051175fe3c1e075e" -dependencies = [ - "libc", -] - -[[package]] -name = "ipconfig" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7e2f18aece9709094573a9f24f483c4f65caa4298e2f7ae1b71cc65d853fad7" -dependencies = [ - "socket2", - "widestring", - "winapi 0.3.9", - "winreg", -] - [[package]] name = "itertools" version = "0.9.0" @@ -663,16 +534,6 @@ dependencies = [ "wasm-bindgen", ] -[[package]] -name = "kernel32-sys" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7507624b29483431c0ba2d82aece8ca6cdba9382bff4ddd0f7490560c056098d" -dependencies = [ - "winapi 0.2.8", - "winapi-build", -] - [[package]] name = "kv-log-macro" version = "1.0.7" @@ -694,12 +555,6 @@ version = "0.2.77" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f2f96b10ec2560088a8e76961b00d47107b3a625fecb76dedb29ee7ccbf98235" -[[package]] -name = "linked-hash-map" -version = "0.5.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8dd5a6d5999d9907cda8ed67bbd137d3af8085216c2ac62de5be860bd41f304a" - [[package]] name = "log" version = "0.4.11" @@ -709,74 +564,12 @@ dependencies = [ "cfg-if", ] -[[package]] -name = "lru-cache" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31e24f1ad8321ca0e8a1e0ac13f23cb668e6f5466c2c57319f6a5cf1cc8e3b1c" -dependencies = [ - "linked-hash-map", -] - -[[package]] -name = "match_cfg" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ffbee8634e0d45d258acb448e7eaab3fce7a0a467395d4d9f228e3c1f01fb2e4" - -[[package]] -name = "matches" -version = "0.1.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ffc5c5338469d4d3ea17d269fa8ea3512ad247247c30bd2df69e68309ed0a08" - [[package]] name = "memchr" version = "2.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3728d817d99e5ac407411fa471ff9800a778d88a24685968b36824eaf4bee400" -[[package]] -name = "miniz_oxide" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c60c0dfe32c10b43a144bad8fc83538c52f58302c92300ea7ec7bf7b38d5a7b9" -dependencies = [ - "adler", - "autocfg", -] - -[[package]] -name = "mio" -version = "0.6.22" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fce347092656428bc8eaf6201042cb551b8d67855af7374542a92a0fbfcac430" -dependencies = [ - "cfg-if", - "fuchsia-zircon", - "fuchsia-zircon-sys", - "iovec", - "kernel32-sys", - "libc", - "log", - "miow", - "net2", - "slab", - "winapi 0.2.8", -] - -[[package]] -name = "miow" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c1f2f3b1cf331de6896aabf6e9d55dca90356cc9960cca7eaaf408a355ae919" -dependencies = [ - "kernel32-sys", - "net2", - "winapi 0.2.8", - "ws2_32-sys", -] - [[package]] name = "nb-connect" version = "1.0.0" @@ -784,18 +577,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e847c76b390f44529c2071ef06d0b52fbb4bdb04cc8987a5cfa63954c000abca" dependencies = [ "libc", - "winapi 0.3.9", -] - -[[package]] -name = "net2" -version = "0.2.35" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ebc3ec692ed7c9a255596c67808dee269f64655d8baf7b4f0638e51ba1d6853" -dependencies = [ - "cfg-if", - "libc", - "winapi 0.3.9", + "winapi", ] [[package]] @@ -838,12 +620,6 @@ dependencies = [ "libc", ] -[[package]] -name = "object" -version = "0.20.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ab52be62400ca80aa00285d25253d7f7c437b7375c4de678f5405d3afe82ca5" - [[package]] name = "once_cell" version = "1.4.1" @@ -856,12 +632,6 @@ version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "427c3892f9e783d91cc128285287e70a59e206ca452770ece88a76f7a3eddd72" -[[package]] -name = "percent-encoding" -version = "2.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4fd5641d01c8f18a23da7b6fe29298ff4b55afcccdf78973b24cf3175fee32e" - [[package]] name = "pin-project" version = "0.4.24" @@ -904,7 +674,7 @@ dependencies = [ "libc", "log", "wepoll-sys-stjepang", - "winapi 0.3.9", + "winapi", ] [[package]] @@ -1049,31 +819,6 @@ version = "0.6.18" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "26412eb97c6b088a6997e05f69403a802a92d520de2f8e63c2b65f9e0f47c4e8" -[[package]] -name = "resolv-conf" -version = "0.6.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11834e137f3b14e309437a8276714eed3a80d1ef894869e510f2c0c0b98b9f4a" -dependencies = [ - "hostname", - "quick-error", -] - -[[package]] -name = "ring" -version = "0.16.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "952cd6b98c85bbc30efa1ba5783b8abf12fec8b3287ffa52605b9432313e34e4" -dependencies = [ - "cc", - "libc", - "once_cell", - "spin", - "untrusted", - "web-sys", - "winapi 0.3.9", -] - [[package]] name = "rlimit" version = "0.4.0" @@ -1090,31 +835,12 @@ version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9dab61250775933275e84053ac235621dfb739556d5c54a2f2e9313b7cf43a19" dependencies = [ - "base64 0.12.3", + "base64", "blake2b_simd", "constant_time_eq", "crossbeam-utils", ] -[[package]] -name = "rustc-demangle" -version = "0.1.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c691c0e608126e00913e33f0ccf3727d5fc84573623b8d65b2df340b5201783" - -[[package]] -name = "rustls" -version = "0.17.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0d4a31f5d68413404705d6982529b0e11a9aacd4839d1d6222ee3b8cb4015e1" -dependencies = [ - "base64 0.11.0", - "log", - "ring", - "sct", - "webpki", -] - [[package]] name = "rustscan" version = "1.10.0" @@ -1137,20 +863,9 @@ dependencies = [ "shell-words", "structopt", "toml", - "trust-dns-resolver", "wait-timeout", ] -[[package]] -name = "sct" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3042af939fca8c3453b7af0f1c66e533a15a86169e39de2657310ade8f98d3c" -dependencies = [ - "ring", - "untrusted", -] - [[package]] name = "serde" version = "1.0.116" @@ -1180,30 +895,6 @@ version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c111b5bd5695e56cffe5129854aa230b39c93a305372fdbb2668ca2394eea9f8" -[[package]] -name = "smallvec" -version = "1.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fbee7696b84bbf3d89a1c2eccff0850e3047ed46bfcd2e92c29a2d074d57e252" - -[[package]] -name = "socket2" -version = "0.3.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1fa70dc5c8104ec096f4fe7ede7a221d35ae13dcd19ba1ad9a81d2cab9a1c44" -dependencies = [ - "cfg-if", - "libc", - "redox_syscall", - "winapi 0.3.9", -] - -[[package]] -name = "spin" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d" - [[package]] name = "strsim" version = "0.8.0" @@ -1263,26 +954,6 @@ dependencies = [ "unicode-width", ] -[[package]] -name = "thiserror" -version = "1.0.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7dfdd070ccd8ccb78f4ad66bf1982dc37f620ef696c6b5028fe2ed83dd3d0d08" -dependencies = [ - "thiserror-impl", -] - -[[package]] -name = "thiserror-impl" -version = "1.0.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd80fc12f73063ac132ac92aceea36734f04a1d93c1240c6944e23a3b8841793" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - [[package]] name = "thread_local" version = "1.0.1" @@ -1292,39 +963,6 @@ dependencies = [ "lazy_static", ] -[[package]] -name = "tinyvec" -version = "0.3.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "238ce071d267c5710f9d31451efec16c5ee22de34df17cc05e56cbc92e967117" - -[[package]] -name = "tokio" -version = "0.2.22" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d34ca54d84bf2b5b4d7d31e901a8464f7b60ac145a284fba25ceb801f2ddccd" -dependencies = [ - "bytes", - "iovec", - "lazy_static", - "memchr", - "mio", - "pin-project-lite", - "slab", -] - -[[package]] -name = "tokio-rustls" -version = "0.13.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15cb62a0d2770787abc96e99c1cd98fcf17f94959f3af63ca85bdfb203f051b4" -dependencies = [ - "futures-core", - "rustls", - "tokio", - "webpki", -] - [[package]] name = "toml" version = "0.5.6" @@ -1334,83 +972,6 @@ dependencies = [ "serde", ] -[[package]] -name = "trust-dns-proto" -version = "0.19.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cdd7061ba6f4d4d9721afedffbfd403f20f39a4301fee1b70d6fcd09cca69f28" -dependencies = [ - "async-trait", - "backtrace", - "enum-as-inner", - "futures", - "idna", - "lazy_static", - "log", - "rand", - "smallvec", - "thiserror", - "tokio", - "url", -] - -[[package]] -name = "trust-dns-resolver" -version = "0.19.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f23cdfdc3d8300b3c50c9e84302d3bd6d860fb9529af84ace6cf9665f181b77" -dependencies = [ - "backtrace", - "cfg-if", - "futures", - "ipconfig", - "lazy_static", - "log", - "lru-cache", - "resolv-conf", - "rustls", - "smallvec", - "thiserror", - "tokio", - "tokio-rustls", - "trust-dns-proto", - "trust-dns-rustls", - "webpki-roots", -] - -[[package]] -name = "trust-dns-rustls" -version = "0.19.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "365f4f7efd5f7ab30c143ad4172534077f32ccb16b1977d13e9259d2457744c2" -dependencies = [ - "futures", - "log", - "rustls", - "tokio", - "tokio-rustls", - "trust-dns-proto", - "webpki", -] - -[[package]] -name = "unicode-bidi" -version = "0.3.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49f2bd0c6468a8230e1db229cff8029217cf623c767ea5d60bfbd42729ea54d5" -dependencies = [ - "matches", -] - -[[package]] -name = "unicode-normalization" -version = "0.1.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6fb19cf769fa8c6a80a162df694621ebeb4dafb606470b2b2fce0be40a98a977" -dependencies = [ - "tinyvec", -] - [[package]] name = "unicode-segmentation" version = "1.6.0" @@ -1429,23 +990,6 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f7fe0bb3479651439c9112f72b6c505038574c9fbb575ed1bf3b797fa39dd564" -[[package]] -name = "untrusted" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a156c684c91ea7d62626509bce3cb4e1d9ed5c4d978f7b4352658f96a4c26b4a" - -[[package]] -name = "url" -version = "2.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "829d4a8476c35c9bf0bbce5a3b23f4106f79728039b726d292bb93bc106787cb" -dependencies = [ - "idna", - "matches", - "percent-encoding", -] - [[package]] name = "vec-arena" version = "1.0.0" @@ -1561,25 +1105,6 @@ dependencies = [ "wasm-bindgen", ] -[[package]] -name = "webpki" -version = "0.21.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab146130f5f790d45f82aeeb09e55a256573373ec64409fc19a6fb82fb1032ae" -dependencies = [ - "ring", - "untrusted", -] - -[[package]] -name = "webpki-roots" -version = "0.19.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8eff4b7516a57307f9349c64bf34caa34b940b66fed4b2fb3136cb7386e5739" -dependencies = [ - "webpki", -] - [[package]] name = "wepoll-sys-stjepang" version = "1.0.8" @@ -1589,18 +1114,6 @@ dependencies = [ "cc", ] -[[package]] -name = "widestring" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a763e303c0e0f23b0da40888724762e802a8ffefbc22de4127ef42493c2ea68c" - -[[package]] -name = "winapi" -version = "0.2.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "167dc9d6949a9b857f3451275e911c3f44255842c1f7a76f33c55103a909087a" - [[package]] name = "winapi" version = "0.3.9" @@ -1611,12 +1124,6 @@ dependencies = [ "winapi-x86_64-pc-windows-gnu", ] -[[package]] -name = "winapi-build" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d315eee3b34aca4797b2da6b13ed88266e6d612562a0c46390af8299fc699bc" - [[package]] name = "winapi-i686-pc-windows-gnu" version = "0.4.0" @@ -1629,7 +1136,7 @@ version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178" dependencies = [ - "winapi 0.3.9", + "winapi", ] [[package]] @@ -1637,22 +1144,3 @@ name = "winapi-x86_64-pc-windows-gnu" version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" - -[[package]] -name = "winreg" -version = "0.6.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2986deb581c4fe11b621998a5e53361efe6b48a151178d0cd9eeffa4dc6acc9" -dependencies = [ - "winapi 0.3.9", -] - -[[package]] -name = "ws2_32-sys" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d59cefebd0c892fa2dd6de581e937301d8552cb44489cdff035c6187cb63fa5e" -dependencies = [ - "winapi 0.2.8", - "winapi-build", -] diff --git a/Cargo.toml b/Cargo.toml index 20c7501d4..1dbd8971e 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -35,7 +35,6 @@ serde = "1.0.116" serde_derive = "1.0.116" cidr-utils = "0.5.0" itertools = "0.9.0" -trust-dns-resolver = { version = "0.19.5", features = ["dns-over-rustls"] } [dev-dependencies] wait-timeout = "0.2" diff --git a/src/main.rs b/src/main.rs index 03eefadc8..a95aa9cb9 100644 --- a/src/main.rs +++ b/src/main.rs @@ -27,8 +27,6 @@ use std::io::BufReader; use std::net::ToSocketAddrs; use std::process::Command; use std::{net::IpAddr, time::Duration}; -use trust_dns_resolver::config::*; -use trust_dns_resolver::Resolver; extern crate colorful; extern crate dirs; @@ -108,9 +106,9 @@ fn main() { let x = format!("Looks like I didn't find any open ports for {:?}. This is usually caused by a high batch size. \n*I used {} batch size, consider lowering it with {} or a comfortable number for your system. \n Alternatively, increase the timeout if your ping is high. Rustscan -t 2000 for 2000 milliseconds (2s) timeout.\n", - ip, - opts.batch_size, - "'rustscan -b '"); + ip, + opts.batch_size, + "'rustscan -b '"); warning!(x, opts.greppable, opts.accessible); } @@ -213,13 +211,11 @@ fn build_nmap_arguments<'a>( /// Parses the string(s) into IPs fn parse_addresses(opts: &Opts) -> Vec { let mut ips: Vec = Vec::new(); - let resolver = - &Resolver::new(ResolverConfig::cloudflare_tls(), ResolverOpts::default()).unwrap(); for ip_or_host in &opts.addresses { - match read_ips_from_file(ip_or_host.to_owned(), &resolver) { + match read_ips_from_file(ip_or_host.to_owned()) { Ok(x) => ips.extend(x), - _ => match parse_to_ip(ip_or_host.to_owned(), &resolver) { + _ => match parse_to_ip(ip_or_host.to_owned()) { Ok(x) => ips.extend(x), _ => { warning!( @@ -237,14 +233,13 @@ fn parse_addresses(opts: &Opts) -> Vec { /// Uses DNS to get the IPS assiocated with host fn resolve_ips_from_host( source: &String, - resolver: &Resolver, ) -> Result, std::io::Error> { let mut ips: Vec = Vec::new(); - match resolver.lookup_ip(&source) { + match source.to_socket_addrs() { Ok(x) => { - for ip in x.iter() { - ips.push(ip); + for ip in x.into_iter() { + ips.push(ip.ip()) } } _ => (), @@ -256,7 +251,6 @@ fn resolve_ips_from_host( /// Parses an input file of IPs and uses those fn read_ips_from_file( ips: String, - resolver: &Resolver, ) -> Result, std::io::Error> { // if we cannot open it as a file, it is not a file so move on let file = File::open(ips)?; @@ -266,7 +260,7 @@ fn read_ips_from_file( for str_ip in reader.lines() { match str_ip { - Ok(x) => match parse_to_ip(x, resolver) { + Ok(x) => match parse_to_ip(x) { Ok(result) => ips.extend(result), Err(e) => { debug!("{} is not a valid IP or host", e); @@ -283,14 +277,14 @@ fn read_ips_from_file( /// Given a string, parse it as an host, IP address, or CIDR. /// This allows us to pass files as hosts or cidr or IPs easily /// Call this everytime you have a possible IP_or_host -fn parse_to_ip(address: String, resolver: &Resolver) -> Result, std::io::Error> { +fn parse_to_ip(address: String) -> Result, std::io::Error> { let mut ips: Vec = Vec::new(); match IpCidr::from_str(&address) { Ok(cidr) => cidr.iter().for_each(|ip| ips.push(ip)), _ => match format!("{}:{}", &address, 80).to_socket_addrs() { Ok(mut iter) => ips.push(iter.nth(0).unwrap().ip()), - _ => match resolve_ips_from_host(&address, resolver) { + _ => match resolve_ips_from_host(&address) { Ok(hosts) => ips.extend(hosts), _ => (), }, From 9e113f221dcaf4615ec58abcc6c538a518170778 Mon Sep 17 00:00:00 2001 From: Shahar sela Date: Tue, 6 Oct 2020 03:26:40 +0300 Subject: [PATCH 02/10] Reverted automatic IDE spacing --- src/main.rs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main.rs b/src/main.rs index a95aa9cb9..59ac3104f 100644 --- a/src/main.rs +++ b/src/main.rs @@ -106,9 +106,9 @@ fn main() { let x = format!("Looks like I didn't find any open ports for {:?}. This is usually caused by a high batch size. \n*I used {} batch size, consider lowering it with {} or a comfortable number for your system. \n Alternatively, increase the timeout if your ping is high. Rustscan -t 2000 for 2000 milliseconds (2s) timeout.\n", - ip, - opts.batch_size, - "'rustscan -b '"); + ip, + opts.batch_size, + "'rustscan -b '"); warning!(x, opts.greppable, opts.accessible); } From d039f132d3363a124a43adb28e2eebe28f7a5d6e Mon Sep 17 00:00:00 2001 From: Shahar sela Date: Tue, 6 Oct 2020 03:35:21 +0300 Subject: [PATCH 03/10] Ran cargo fmt on the code --- src/main.rs | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/src/main.rs b/src/main.rs index 59ac3104f..f3a7b484a 100644 --- a/src/main.rs +++ b/src/main.rs @@ -231,9 +231,7 @@ fn parse_addresses(opts: &Opts) -> Vec { } /// Uses DNS to get the IPS assiocated with host -fn resolve_ips_from_host( - source: &String, -) -> Result, std::io::Error> { +fn resolve_ips_from_host(source: &String) -> Result, std::io::Error> { let mut ips: Vec = Vec::new(); match source.to_socket_addrs() { @@ -249,9 +247,7 @@ fn resolve_ips_from_host( #[cfg(not(tarpaulin_include))] /// Parses an input file of IPs and uses those -fn read_ips_from_file( - ips: String, -) -> Result, std::io::Error> { +fn read_ips_from_file(ips: String) -> Result, std::io::Error> { // if we cannot open it as a file, it is not a file so move on let file = File::open(ips)?; let reader = BufReader::new(file); From f35450ef5ac97285004fc3a6cbef96122d47fc55 Mon Sep 17 00:00:00 2001 From: Shahar sela Date: Tue, 6 Oct 2020 15:44:28 +0300 Subject: [PATCH 04/10] Made trust-dns a fallback dns resolver and reverted cargo toml and lock --- Cargo.lock | 566 +++++++++++++++++++++++++++++++++++++++++++++++++--- Cargo.toml | 1 + src/main.rs | 29 ++- 3 files changed, 561 insertions(+), 35 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 02b1dc649..0a0366a49 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1,5 +1,20 @@ # This file is automatically @generated by Cargo. # It is not intended for manual editing. +[[package]] +name = "addr2line" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b6a2d3371669ab3ca9797670853d61402b03d0b4b9ebf33d677dfa720203072" +dependencies = [ + "gimli", +] + +[[package]] +name = "adler" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee2a4ec343196209d6594e19543ae87a39f96d5534d7174822a3ad825dd6ed7e" + [[package]] name = "aho-corasick" version = "0.7.13" @@ -15,7 +30,7 @@ version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ee49baf6cb617b853aa8d93bf420db2383fab46d314482ca2803b40d5fde979b" dependencies = [ - "winapi", + "winapi 0.3.9", ] [[package]] @@ -24,7 +39,7 @@ version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d52a9bb7ec0cf484c551830a7ce27bd20d67eac647e1befb56b0be4ee39a55d2" dependencies = [ - "winapi", + "winapi 0.3.9", ] [[package]] @@ -137,6 +152,17 @@ version = "4.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8ab27c1aa62945039e44edaeee1dc23c74cc0c303dd5fe0fb462a184f1c3a518" +[[package]] +name = "async-trait" +version = "0.1.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "687c230d85c0a52504709705fc8a53e4a692b83a2184f03dae73e38e1e93a783" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "atomic-waker" version = "1.0.0" @@ -151,7 +177,7 @@ checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" dependencies = [ "hermit-abi", "libc", - "winapi", + "winapi 0.3.9", ] [[package]] @@ -160,6 +186,26 @@ version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cdb031dd78e28731d87d56cc8ffef4a8f36ca26c38fe2de700543e627f8a464a" +[[package]] +name = "backtrace" +version = "0.3.50" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "46254cf2fdcdf1badb5934448c1bcbe046a56537b3987d96c51a7afc5d03f293" +dependencies = [ + "addr2line", + "cfg-if", + "libc", + "miniz_oxide", + "object", + "rustc-demangle", +] + +[[package]] +name = "base64" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b41b7ea54a0c9d92199de89e20e58d49f02f8e699814ef3fdf266f6f748d15c7" + [[package]] name = "base64" version = "0.12.3" @@ -203,6 +249,12 @@ version = "3.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2e8c087f005730276d1096a652e92a8bacee2e2472bcc9715a74d2bec38b5820" +[[package]] +name = "bytes" +version = "0.5.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0e4cec68f03f32e44924783795810fa50a7035d8c8ebe78580ad7e6c703fba38" + [[package]] name = "cache-padded" version = "1.1.1" @@ -257,7 +309,7 @@ checksum = "b3616f750b84d8f0de8a58bda93e08e2a81ad3f523089b05f1dffecab48c6cbd" dependencies = [ "atty", "lazy_static", - "winapi", + "winapi 0.3.9", ] [[package]] @@ -315,7 +367,7 @@ checksum = "8e93d7f5705de3e49895a2b5e0b8855a1c27f080192ae9c32a6432d50741a57a" dependencies = [ "libc", "redox_users", - "winapi", + "winapi 0.3.9", ] [[package]] @@ -324,6 +376,18 @@ version = "1.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e78d4f1cc4ae33bbfc157ed5d5a5ef3bc29227303d595861deb238fcec4e9457" +[[package]] +name = "enum-as-inner" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c5f0096a91d210159eceb2ff5e1c4da18388a170e1e3ce948aac9c8fdbbf595" +dependencies = [ + "heck", + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "env_logger" version = "0.7.1" @@ -349,11 +413,27 @@ version = "1.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5c85295147490b8fcf2ea3d104080a105a8b2c63f9c319e82c02d8e952388919" +[[package]] +name = "fuchsia-zircon" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2e9763c69ebaae630ba35f74888db465e49e259ba1bc0eda7d06f4a067615d82" +dependencies = [ + "bitflags", + "fuchsia-zircon-sys", +] + +[[package]] +name = "fuchsia-zircon-sys" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3dcaa9ae7725d12cdb85b3ad99a434db70b468c09ded17e012d86b5c1010f7a7" + [[package]] name = "futures" -version = "0.3.5" +version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e05b85ec287aac0dc34db7d4a569323df697f9c55b99b15d6b4ef8cde49f613" +checksum = "5d8e3078b7b2a8a671cb7a3d17b4760e4181ea243227776ba83fd043b4ca034e" dependencies = [ "futures-channel", "futures-core", @@ -366,9 +446,9 @@ dependencies = [ [[package]] name = "futures-channel" -version = "0.3.5" +version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f366ad74c28cca6ba456d95e6422883cfb4b252a83bed929c83abfdbbf2967d5" +checksum = "a7a4d35f7401e948629c9c3d6638fb9bf94e0b2121e96c3b428cc4e631f3eb74" dependencies = [ "futures-core", "futures-sink", @@ -376,15 +456,15 @@ dependencies = [ [[package]] name = "futures-core" -version = "0.3.5" +version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59f5fff90fd5d971f936ad674802482ba441b6f09ba5e15fd8b39145582ca399" +checksum = "d674eaa0056896d5ada519900dbf97ead2e46a7b6621e8160d79e2f2e1e2784b" [[package]] name = "futures-executor" -version = "0.3.5" +version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "10d6bb888be1153d3abeb9006b11b02cf5e9b209fda28693c31ae1e4e012e314" +checksum = "cc709ca1da6f66143b8c9bec8e6260181869893714e9b5a490b169b0414144ab" dependencies = [ "futures-core", "futures-task", @@ -393,9 +473,9 @@ dependencies = [ [[package]] name = "futures-io" -version = "0.3.5" +version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de27142b013a8e869c14957e6d2edeef89e97c289e69d042ee3a49acd8b51789" +checksum = "5fc94b64bb39543b4e432f1790b6bf18e3ee3b74653c5449f63310e9a74b123c" [[package]] name = "futures-lite" @@ -414,9 +494,9 @@ dependencies = [ [[package]] name = "futures-macro" -version = "0.3.5" +version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0b5a30a4328ab5473878237c447333c093297bded83a4983d10f4deea240d39" +checksum = "f57ed14da4603b2554682e9f2ff3c65d7567b53188db96cb71538217fc64581b" dependencies = [ "proc-macro-hack", "proc-macro2", @@ -426,24 +506,24 @@ dependencies = [ [[package]] name = "futures-sink" -version = "0.3.5" +version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f2032893cb734c7a05d85ce0cc8b8c4075278e93b24b66f9de99d6eb0fa8acc" +checksum = "0d8764258ed64ebc5d9ed185cf86a95db5cac810269c5d20ececb32e0088abbd" [[package]] name = "futures-task" -version = "0.3.5" +version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bdb66b5f09e22019b1ab0830f7785bcea8e7a42148683f99214f73f8ec21a626" +checksum = "4dd26820a9f3637f1302da8bceba3ff33adbe53464b54ca24d4e2d4f1db30f94" dependencies = [ "once_cell", ] [[package]] name = "futures-util" -version = "0.3.5" +version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8764574ff08b701a084482c3c7031349104b07ac897393010494beaa18ce32c6" +checksum = "8a894a0acddba51a2d49a6f4263b1e64b8c579ece8af50fa86503d52cd1eea34" dependencies = [ "futures-channel", "futures-core", @@ -476,6 +556,12 @@ dependencies = [ "wasi", ] +[[package]] +name = "gimli" +version = "0.22.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aaf91faf136cb47367fa430cd46e37a788775e7fa104f8b4bcb3861dc389b724" + [[package]] name = "gloo-timers" version = "0.2.1" @@ -507,6 +593,17 @@ dependencies = [ "libc", ] +[[package]] +name = "hostname" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c731c3e10504cc8ed35cfe2f1db4c9274c3d35fa486e3b31df46f068ef3e867" +dependencies = [ + "libc", + "match_cfg", + "winapi 0.3.9", +] + [[package]] name = "humantime" version = "1.3.0" @@ -516,6 +613,38 @@ dependencies = [ "quick-error", ] +[[package]] +name = "idna" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02e2673c30ee86b5b96a9cb52ad15718aa1f966f5ab9ad54a8b95d5ca33120a9" +dependencies = [ + "matches", + "unicode-bidi", + "unicode-normalization", +] + +[[package]] +name = "iovec" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2b3ea6ff95e175473f8ffe6a7eb7c00d054240321b84c57051175fe3c1e075e" +dependencies = [ + "libc", +] + +[[package]] +name = "ipconfig" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7e2f18aece9709094573a9f24f483c4f65caa4298e2f7ae1b71cc65d853fad7" +dependencies = [ + "socket2", + "widestring", + "winapi 0.3.9", + "winreg", +] + [[package]] name = "itertools" version = "0.9.0" @@ -534,6 +663,16 @@ dependencies = [ "wasm-bindgen", ] +[[package]] +name = "kernel32-sys" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7507624b29483431c0ba2d82aece8ca6cdba9382bff4ddd0f7490560c056098d" +dependencies = [ + "winapi 0.2.8", + "winapi-build", +] + [[package]] name = "kv-log-macro" version = "1.0.7" @@ -555,6 +694,12 @@ version = "0.2.77" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f2f96b10ec2560088a8e76961b00d47107b3a625fecb76dedb29ee7ccbf98235" +[[package]] +name = "linked-hash-map" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8dd5a6d5999d9907cda8ed67bbd137d3af8085216c2ac62de5be860bd41f304a" + [[package]] name = "log" version = "0.4.11" @@ -564,12 +709,74 @@ dependencies = [ "cfg-if", ] +[[package]] +name = "lru-cache" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "31e24f1ad8321ca0e8a1e0ac13f23cb668e6f5466c2c57319f6a5cf1cc8e3b1c" +dependencies = [ + "linked-hash-map", +] + +[[package]] +name = "match_cfg" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ffbee8634e0d45d258acb448e7eaab3fce7a0a467395d4d9f228e3c1f01fb2e4" + +[[package]] +name = "matches" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ffc5c5338469d4d3ea17d269fa8ea3512ad247247c30bd2df69e68309ed0a08" + [[package]] name = "memchr" version = "2.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3728d817d99e5ac407411fa471ff9800a778d88a24685968b36824eaf4bee400" +[[package]] +name = "miniz_oxide" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c60c0dfe32c10b43a144bad8fc83538c52f58302c92300ea7ec7bf7b38d5a7b9" +dependencies = [ + "adler", + "autocfg", +] + +[[package]] +name = "mio" +version = "0.6.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fce347092656428bc8eaf6201042cb551b8d67855af7374542a92a0fbfcac430" +dependencies = [ + "cfg-if", + "fuchsia-zircon", + "fuchsia-zircon-sys", + "iovec", + "kernel32-sys", + "libc", + "log", + "miow", + "net2", + "slab", + "winapi 0.2.8", +] + +[[package]] +name = "miow" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c1f2f3b1cf331de6896aabf6e9d55dca90356cc9960cca7eaaf408a355ae919" +dependencies = [ + "kernel32-sys", + "net2", + "winapi 0.2.8", + "ws2_32-sys", +] + [[package]] name = "nb-connect" version = "1.0.0" @@ -577,7 +784,18 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e847c76b390f44529c2071ef06d0b52fbb4bdb04cc8987a5cfa63954c000abca" dependencies = [ "libc", - "winapi", + "winapi 0.3.9", +] + +[[package]] +name = "net2" +version = "0.2.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3ebc3ec692ed7c9a255596c67808dee269f64655d8baf7b4f0638e51ba1d6853" +dependencies = [ + "cfg-if", + "libc", + "winapi 0.3.9", ] [[package]] @@ -620,6 +838,12 @@ dependencies = [ "libc", ] +[[package]] +name = "object" +version = "0.20.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ab52be62400ca80aa00285d25253d7f7c437b7375c4de678f5405d3afe82ca5" + [[package]] name = "once_cell" version = "1.4.1" @@ -632,6 +856,12 @@ version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "427c3892f9e783d91cc128285287e70a59e206ca452770ece88a76f7a3eddd72" +[[package]] +name = "percent-encoding" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4fd5641d01c8f18a23da7b6fe29298ff4b55afcccdf78973b24cf3175fee32e" + [[package]] name = "pin-project" version = "0.4.24" @@ -674,7 +904,7 @@ dependencies = [ "libc", "log", "wepoll-sys-stjepang", - "winapi", + "winapi 0.3.9", ] [[package]] @@ -819,6 +1049,31 @@ version = "0.6.18" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "26412eb97c6b088a6997e05f69403a802a92d520de2f8e63c2b65f9e0f47c4e8" +[[package]] +name = "resolv-conf" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11834e137f3b14e309437a8276714eed3a80d1ef894869e510f2c0c0b98b9f4a" +dependencies = [ + "hostname", + "quick-error", +] + +[[package]] +name = "ring" +version = "0.16.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "952cd6b98c85bbc30efa1ba5783b8abf12fec8b3287ffa52605b9432313e34e4" +dependencies = [ + "cc", + "libc", + "once_cell", + "spin", + "untrusted", + "web-sys", + "winapi 0.3.9", +] + [[package]] name = "rlimit" version = "0.4.0" @@ -835,12 +1090,31 @@ version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9dab61250775933275e84053ac235621dfb739556d5c54a2f2e9313b7cf43a19" dependencies = [ - "base64", + "base64 0.12.3", "blake2b_simd", "constant_time_eq", "crossbeam-utils", ] +[[package]] +name = "rustc-demangle" +version = "0.1.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c691c0e608126e00913e33f0ccf3727d5fc84573623b8d65b2df340b5201783" + +[[package]] +name = "rustls" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0d4a31f5d68413404705d6982529b0e11a9aacd4839d1d6222ee3b8cb4015e1" +dependencies = [ + "base64 0.11.0", + "log", + "ring", + "sct", + "webpki", +] + [[package]] name = "rustscan" version = "1.10.0" @@ -863,9 +1137,20 @@ dependencies = [ "shell-words", "structopt", "toml", + "trust-dns-resolver", "wait-timeout", ] +[[package]] +name = "sct" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3042af939fca8c3453b7af0f1c66e533a15a86169e39de2657310ade8f98d3c" +dependencies = [ + "ring", + "untrusted", +] + [[package]] name = "serde" version = "1.0.116" @@ -895,6 +1180,30 @@ version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c111b5bd5695e56cffe5129854aa230b39c93a305372fdbb2668ca2394eea9f8" +[[package]] +name = "smallvec" +version = "1.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fbee7696b84bbf3d89a1c2eccff0850e3047ed46bfcd2e92c29a2d074d57e252" + +[[package]] +name = "socket2" +version = "0.3.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1fa70dc5c8104ec096f4fe7ede7a221d35ae13dcd19ba1ad9a81d2cab9a1c44" +dependencies = [ + "cfg-if", + "libc", + "redox_syscall", + "winapi 0.3.9", +] + +[[package]] +name = "spin" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d" + [[package]] name = "strsim" version = "0.8.0" @@ -954,6 +1263,26 @@ dependencies = [ "unicode-width", ] +[[package]] +name = "thiserror" +version = "1.0.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7dfdd070ccd8ccb78f4ad66bf1982dc37f620ef696c6b5028fe2ed83dd3d0d08" +dependencies = [ + "thiserror-impl", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd80fc12f73063ac132ac92aceea36734f04a1d93c1240c6944e23a3b8841793" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "thread_local" version = "1.0.1" @@ -963,6 +1292,39 @@ dependencies = [ "lazy_static", ] +[[package]] +name = "tinyvec" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "238ce071d267c5710f9d31451efec16c5ee22de34df17cc05e56cbc92e967117" + +[[package]] +name = "tokio" +version = "0.2.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d34ca54d84bf2b5b4d7d31e901a8464f7b60ac145a284fba25ceb801f2ddccd" +dependencies = [ + "bytes", + "iovec", + "lazy_static", + "memchr", + "mio", + "pin-project-lite", + "slab", +] + +[[package]] +name = "tokio-rustls" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "15cb62a0d2770787abc96e99c1cd98fcf17f94959f3af63ca85bdfb203f051b4" +dependencies = [ + "futures-core", + "rustls", + "tokio", + "webpki", +] + [[package]] name = "toml" version = "0.5.6" @@ -972,6 +1334,83 @@ dependencies = [ "serde", ] +[[package]] +name = "trust-dns-proto" +version = "0.19.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cdd7061ba6f4d4d9721afedffbfd403f20f39a4301fee1b70d6fcd09cca69f28" +dependencies = [ + "async-trait", + "backtrace", + "enum-as-inner", + "futures", + "idna", + "lazy_static", + "log", + "rand", + "smallvec", + "thiserror", + "tokio", + "url", +] + +[[package]] +name = "trust-dns-resolver" +version = "0.19.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0f23cdfdc3d8300b3c50c9e84302d3bd6d860fb9529af84ace6cf9665f181b77" +dependencies = [ + "backtrace", + "cfg-if", + "futures", + "ipconfig", + "lazy_static", + "log", + "lru-cache", + "resolv-conf", + "rustls", + "smallvec", + "thiserror", + "tokio", + "tokio-rustls", + "trust-dns-proto", + "trust-dns-rustls", + "webpki-roots", +] + +[[package]] +name = "trust-dns-rustls" +version = "0.19.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "365f4f7efd5f7ab30c143ad4172534077f32ccb16b1977d13e9259d2457744c2" +dependencies = [ + "futures", + "log", + "rustls", + "tokio", + "tokio-rustls", + "trust-dns-proto", + "webpki", +] + +[[package]] +name = "unicode-bidi" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49f2bd0c6468a8230e1db229cff8029217cf623c767ea5d60bfbd42729ea54d5" +dependencies = [ + "matches", +] + +[[package]] +name = "unicode-normalization" +version = "0.1.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6fb19cf769fa8c6a80a162df694621ebeb4dafb606470b2b2fce0be40a98a977" +dependencies = [ + "tinyvec", +] + [[package]] name = "unicode-segmentation" version = "1.6.0" @@ -990,6 +1429,23 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f7fe0bb3479651439c9112f72b6c505038574c9fbb575ed1bf3b797fa39dd564" +[[package]] +name = "untrusted" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a156c684c91ea7d62626509bce3cb4e1d9ed5c4d978f7b4352658f96a4c26b4a" + +[[package]] +name = "url" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "829d4a8476c35c9bf0bbce5a3b23f4106f79728039b726d292bb93bc106787cb" +dependencies = [ + "idna", + "matches", + "percent-encoding", +] + [[package]] name = "vec-arena" version = "1.0.0" @@ -1105,6 +1561,25 @@ dependencies = [ "wasm-bindgen", ] +[[package]] +name = "webpki" +version = "0.21.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab146130f5f790d45f82aeeb09e55a256573373ec64409fc19a6fb82fb1032ae" +dependencies = [ + "ring", + "untrusted", +] + +[[package]] +name = "webpki-roots" +version = "0.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8eff4b7516a57307f9349c64bf34caa34b940b66fed4b2fb3136cb7386e5739" +dependencies = [ + "webpki", +] + [[package]] name = "wepoll-sys-stjepang" version = "1.0.8" @@ -1114,6 +1589,18 @@ dependencies = [ "cc", ] +[[package]] +name = "widestring" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a763e303c0e0f23b0da40888724762e802a8ffefbc22de4127ef42493c2ea68c" + +[[package]] +name = "winapi" +version = "0.2.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "167dc9d6949a9b857f3451275e911c3f44255842c1f7a76f33c55103a909087a" + [[package]] name = "winapi" version = "0.3.9" @@ -1124,6 +1611,12 @@ dependencies = [ "winapi-x86_64-pc-windows-gnu", ] +[[package]] +name = "winapi-build" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d315eee3b34aca4797b2da6b13ed88266e6d612562a0c46390af8299fc699bc" + [[package]] name = "winapi-i686-pc-windows-gnu" version = "0.4.0" @@ -1136,7 +1629,7 @@ version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178" dependencies = [ - "winapi", + "winapi 0.3.9", ] [[package]] @@ -1144,3 +1637,22 @@ name = "winapi-x86_64-pc-windows-gnu" version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" + +[[package]] +name = "winreg" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2986deb581c4fe11b621998a5e53361efe6b48a151178d0cd9eeffa4dc6acc9" +dependencies = [ + "winapi 0.3.9", +] + +[[package]] +name = "ws2_32-sys" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d59cefebd0c892fa2dd6de581e937301d8552cb44489cdff035c6187cb63fa5e" +dependencies = [ + "winapi 0.2.8", + "winapi-build", +] diff --git a/Cargo.toml b/Cargo.toml index 1dbd8971e..20c7501d4 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -35,6 +35,7 @@ serde = "1.0.116" serde_derive = "1.0.116" cidr-utils = "0.5.0" itertools = "0.9.0" +trust-dns-resolver = { version = "0.19.5", features = ["dns-over-rustls"] } [dev-dependencies] wait-timeout = "0.2" diff --git a/src/main.rs b/src/main.rs index f3a7b484a..69ec018a5 100644 --- a/src/main.rs +++ b/src/main.rs @@ -27,6 +27,8 @@ use std::io::BufReader; use std::net::ToSocketAddrs; use std::process::Command; use std::{net::IpAddr, time::Duration}; +use trust_dns_resolver::config::*; +use trust_dns_resolver::Resolver; extern crate colorful; extern crate dirs; @@ -211,11 +213,13 @@ fn build_nmap_arguments<'a>( /// Parses the string(s) into IPs fn parse_addresses(opts: &Opts) -> Vec { let mut ips: Vec = Vec::new(); + let backup_resolver = + &Resolver::new(ResolverConfig::cloudflare_tls(), ResolverOpts::default()).unwrap(); for ip_or_host in &opts.addresses { - match read_ips_from_file(ip_or_host.to_owned()) { + match read_ips_from_file(ip_or_host.to_owned(), &backup_resolver) { Ok(x) => ips.extend(x), - _ => match parse_to_ip(ip_or_host.to_owned()) { + _ => match parse_to_ip(ip_or_host.to_owned(), &backup_resolver) { Ok(x) => ips.extend(x), _ => { warning!( @@ -231,7 +235,7 @@ fn parse_addresses(opts: &Opts) -> Vec { } /// Uses DNS to get the IPS assiocated with host -fn resolve_ips_from_host(source: &String) -> Result, std::io::Error> { +fn resolve_ips_from_host(source: &String, backup_resolver: &Resolver) -> Result, std::io::Error> { let mut ips: Vec = Vec::new(); match source.to_socket_addrs() { @@ -240,14 +244,23 @@ fn resolve_ips_from_host(source: &String) -> Result, std::io::Error> ips.push(ip.ip()) } } - _ => (), + _ => { + match backup_resolver.lookup_ip(&source) { + Ok(x) => { + for ip in x.iter() { + ips.push(ip); + } + } + _ => (), + } + }, }; return Ok(ips); } #[cfg(not(tarpaulin_include))] /// Parses an input file of IPs and uses those -fn read_ips_from_file(ips: String) -> Result, std::io::Error> { +fn read_ips_from_file(ips: String, backup_resolver: &Resolver) -> Result, std::io::Error> { // if we cannot open it as a file, it is not a file so move on let file = File::open(ips)?; let reader = BufReader::new(file); @@ -256,7 +269,7 @@ fn read_ips_from_file(ips: String) -> Result, std::io::Err for str_ip in reader.lines() { match str_ip { - Ok(x) => match parse_to_ip(x) { + Ok(x) => match parse_to_ip(x, backup_resolver) { Ok(result) => ips.extend(result), Err(e) => { debug!("{} is not a valid IP or host", e); @@ -273,14 +286,14 @@ fn read_ips_from_file(ips: String) -> Result, std::io::Err /// Given a string, parse it as an host, IP address, or CIDR. /// This allows us to pass files as hosts or cidr or IPs easily /// Call this everytime you have a possible IP_or_host -fn parse_to_ip(address: String) -> Result, std::io::Error> { +fn parse_to_ip(address: String, backup_resolver: &Resolver) -> Result, std::io::Error> { let mut ips: Vec = Vec::new(); match IpCidr::from_str(&address) { Ok(cidr) => cidr.iter().for_each(|ip| ips.push(ip)), _ => match format!("{}:{}", &address, 80).to_socket_addrs() { Ok(mut iter) => ips.push(iter.nth(0).unwrap().ip()), - _ => match resolve_ips_from_host(&address) { + _ => match resolve_ips_from_host(&address, backup_resolver) { Ok(hosts) => ips.extend(hosts), _ => (), }, From c0bc23a32006228b176dc957c4b32da25ca0dc3a Mon Sep 17 00:00:00 2001 From: Shahar sela Date: Tue, 6 Oct 2020 15:48:41 +0300 Subject: [PATCH 05/10] Reverted cargo.lock --- Cargo.lock | 36 ++++++++++++++++++------------------ 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 0a0366a49..114525bda 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -431,9 +431,9 @@ checksum = "3dcaa9ae7725d12cdb85b3ad99a434db70b468c09ded17e012d86b5c1010f7a7" [[package]] name = "futures" -version = "0.3.6" +version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d8e3078b7b2a8a671cb7a3d17b4760e4181ea243227776ba83fd043b4ca034e" +checksum = "1e05b85ec287aac0dc34db7d4a569323df697f9c55b99b15d6b4ef8cde49f613" dependencies = [ "futures-channel", "futures-core", @@ -446,9 +446,9 @@ dependencies = [ [[package]] name = "futures-channel" -version = "0.3.6" +version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7a4d35f7401e948629c9c3d6638fb9bf94e0b2121e96c3b428cc4e631f3eb74" +checksum = "f366ad74c28cca6ba456d95e6422883cfb4b252a83bed929c83abfdbbf2967d5" dependencies = [ "futures-core", "futures-sink", @@ -456,15 +456,15 @@ dependencies = [ [[package]] name = "futures-core" -version = "0.3.6" +version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d674eaa0056896d5ada519900dbf97ead2e46a7b6621e8160d79e2f2e1e2784b" +checksum = "59f5fff90fd5d971f936ad674802482ba441b6f09ba5e15fd8b39145582ca399" [[package]] name = "futures-executor" -version = "0.3.6" +version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc709ca1da6f66143b8c9bec8e6260181869893714e9b5a490b169b0414144ab" +checksum = "10d6bb888be1153d3abeb9006b11b02cf5e9b209fda28693c31ae1e4e012e314" dependencies = [ "futures-core", "futures-task", @@ -473,9 +473,9 @@ dependencies = [ [[package]] name = "futures-io" -version = "0.3.6" +version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5fc94b64bb39543b4e432f1790b6bf18e3ee3b74653c5449f63310e9a74b123c" +checksum = "de27142b013a8e869c14957e6d2edeef89e97c289e69d042ee3a49acd8b51789" [[package]] name = "futures-lite" @@ -494,9 +494,9 @@ dependencies = [ [[package]] name = "futures-macro" -version = "0.3.6" +version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f57ed14da4603b2554682e9f2ff3c65d7567b53188db96cb71538217fc64581b" +checksum = "d0b5a30a4328ab5473878237c447333c093297bded83a4983d10f4deea240d39" dependencies = [ "proc-macro-hack", "proc-macro2", @@ -506,24 +506,24 @@ dependencies = [ [[package]] name = "futures-sink" -version = "0.3.6" +version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d8764258ed64ebc5d9ed185cf86a95db5cac810269c5d20ececb32e0088abbd" +checksum = "3f2032893cb734c7a05d85ce0cc8b8c4075278e93b24b66f9de99d6eb0fa8acc" [[package]] name = "futures-task" -version = "0.3.6" +version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4dd26820a9f3637f1302da8bceba3ff33adbe53464b54ca24d4e2d4f1db30f94" +checksum = "bdb66b5f09e22019b1ab0830f7785bcea8e7a42148683f99214f73f8ec21a626" dependencies = [ "once_cell", ] [[package]] name = "futures-util" -version = "0.3.6" +version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a894a0acddba51a2d49a6f4263b1e64b8c579ece8af50fa86503d52cd1eea34" +checksum = "8764574ff08b701a084482c3c7031349104b07ac897393010494beaa18ce32c6" dependencies = [ "futures-channel", "futures-core", From 7a5b637ac5c4b0ded1395e0c6466dbaf62d9bf1e Mon Sep 17 00:00:00 2001 From: Shahar sela Date: Tue, 6 Oct 2020 15:50:21 +0300 Subject: [PATCH 06/10] Ran cargo fmt --- src/main.rs | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/src/main.rs b/src/main.rs index 69ec018a5..694162640 100644 --- a/src/main.rs +++ b/src/main.rs @@ -235,7 +235,10 @@ fn parse_addresses(opts: &Opts) -> Vec { } /// Uses DNS to get the IPS assiocated with host -fn resolve_ips_from_host(source: &String, backup_resolver: &Resolver) -> Result, std::io::Error> { +fn resolve_ips_from_host( + source: &String, + backup_resolver: &Resolver, +) -> Result, std::io::Error> { let mut ips: Vec = Vec::new(); match source.to_socket_addrs() { @@ -244,15 +247,13 @@ fn resolve_ips_from_host(source: &String, backup_resolver: &Resolver) -> Result< ips.push(ip.ip()) } } - _ => { - match backup_resolver.lookup_ip(&source) { - Ok(x) => { - for ip in x.iter() { - ips.push(ip); - } + _ => match backup_resolver.lookup_ip(&source) { + Ok(x) => { + for ip in x.iter() { + ips.push(ip); } - _ => (), } + _ => (), }, }; return Ok(ips); @@ -260,7 +261,10 @@ fn resolve_ips_from_host(source: &String, backup_resolver: &Resolver) -> Result< #[cfg(not(tarpaulin_include))] /// Parses an input file of IPs and uses those -fn read_ips_from_file(ips: String, backup_resolver: &Resolver) -> Result, std::io::Error> { +fn read_ips_from_file( + ips: String, + backup_resolver: &Resolver, +) -> Result, std::io::Error> { // if we cannot open it as a file, it is not a file so move on let file = File::open(ips)?; let reader = BufReader::new(file); From e8e8bf420885be51e342af4076913113102efd98 Mon Sep 17 00:00:00 2001 From: shahar481 Date: Sun, 18 Oct 2020 21:08:54 +0300 Subject: [PATCH 07/10] Changed style of err checking --- src/main.rs | 48 +++++++++++++++++++----------------------------- 1 file changed, 19 insertions(+), 29 deletions(-) diff --git a/src/main.rs b/src/main.rs index 694162640..d3ab9fe98 100644 --- a/src/main.rs +++ b/src/main.rs @@ -14,6 +14,7 @@ use port_strategy::PortStrategy; mod benchmark; use benchmark::{Benchmark, NamedTimer}; +use async_std::net::ToSocketAddrs; use cidr_utils::cidr::IpCidr; use colorful::Color; use colorful::Colorful; @@ -235,27 +236,19 @@ fn parse_addresses(opts: &Opts) -> Vec { } /// Uses DNS to get the IPS assiocated with host -fn resolve_ips_from_host( - source: &String, - backup_resolver: &Resolver, -) -> Result, std::io::Error> { +fn resolve_ips_from_host(source: &String, backup_resolver: &Resolver) -> Vec { let mut ips: Vec = Vec::new(); - match source.to_socket_addrs() { - Ok(x) => { - for ip in x.into_iter() { - ips.push(ip.ip()) - } + if let Ok(addrs) = source.to_socket_addrs() { + for ip in x.into_iter() { + ips.push(ip.ip()); } - _ => match backup_resolver.lookup_ip(&source) { - Ok(x) => { - for ip in x.iter() { - ips.push(ip); - } - } - _ => (), - }, - }; + } else if let Ok(addrs) = backup_resolver.lookup_ip(&source) { + for ip in x.iter() { + ips.push(ip); + } + } + return Ok(ips); } @@ -290,19 +283,16 @@ fn read_ips_from_file( /// Given a string, parse it as an host, IP address, or CIDR. /// This allows us to pass files as hosts or cidr or IPs easily /// Call this everytime you have a possible IP_or_host -fn parse_to_ip(address: String, backup_resolver: &Resolver) -> Result, std::io::Error> { +fn parse_to_ip(address: &str, backup_resolver: &Resolver) -> Result, std::io::Error> { let mut ips: Vec = Vec::new(); - match IpCidr::from_str(&address) { - Ok(cidr) => cidr.iter().for_each(|ip| ips.push(ip)), - _ => match format!("{}:{}", &address, 80).to_socket_addrs() { - Ok(mut iter) => ips.push(iter.nth(0).unwrap().ip()), - _ => match resolve_ips_from_host(&address, backup_resolver) { - Ok(hosts) => ips.extend(hosts), - _ => (), - }, - }, - }; + if let Ok(cidr) = IpCidr::from_str(&address) { + cidr.iter().for_each(|ip| ips.push(ip)); + } else if let Ok(iter) = format!("{}:{}", &address, 80).to_socket_addrs() { + ips.push(iter.nth(0)).unwrap.ip(); + } else { + ips.extend(resolve_ips_from_host(&address, backup_resolver)); + } Ok(ips) } From 974ff8d51ce43e680b412df978b7bfbd88d2a2f2 Mon Sep 17 00:00:00 2001 From: shahar481 Date: Sun, 18 Oct 2020 21:28:52 +0300 Subject: [PATCH 08/10] Fixed errors --- src/main.rs | 70 +++++++++++++++++++++++++++-------------------------- 1 file changed, 36 insertions(+), 34 deletions(-) diff --git a/src/main.rs b/src/main.rs index d3ab9fe98..3c9910844 100644 --- a/src/main.rs +++ b/src/main.rs @@ -14,7 +14,6 @@ use port_strategy::PortStrategy; mod benchmark; use benchmark::{Benchmark, NamedTimer}; -use async_std::net::ToSocketAddrs; use cidr_utils::cidr::IpCidr; use colorful::Color; use colorful::Colorful; @@ -218,38 +217,47 @@ fn parse_addresses(opts: &Opts) -> Vec { &Resolver::new(ResolverConfig::cloudflare_tls(), ResolverOpts::default()).unwrap(); for ip_or_host in &opts.addresses { - match read_ips_from_file(ip_or_host.to_owned(), &backup_resolver) { - Ok(x) => ips.extend(x), - _ => match parse_to_ip(ip_or_host.to_owned(), &backup_resolver) { - Ok(x) => ips.extend(x), - _ => { - warning!( - format!("Host {:?} could not be resolved.", ip_or_host), - opts.greppable, - opts.accessible - ); - } - }, + if let Ok(x) = read_ips_from_file(ip_or_host.to_owned(), &backup_resolver) { + ips.extend(x); + } else { + ips.extend(parse_to_ip(&ip_or_host.to_owned(), &backup_resolver)); } } + ips } +/// Given a string, parse it as an host, IP address, or CIDR. +/// This allows us to pass files as hosts or cidr or IPs easily +/// Call this everytime you have a possible IP_or_host +fn parse_address(address: &str, resolver: &Resolver) -> Vec { + IpCidr::from_str(&address) + .map(|cidr| cidr.iter().collect()) + .ok() + .or_else(|| { + format!("{}:{}", &address, 80) + .to_socket_addrs() + .ok() + .map(|mut iter| vec![iter.next().unwrap().ip()]) + }) + .unwrap_or_else(|| resolve_ips_from_host(address, resolver)) +} + /// Uses DNS to get the IPS assiocated with host -fn resolve_ips_from_host(source: &String, backup_resolver: &Resolver) -> Vec { +fn resolve_ips_from_host(source: &str, backup_resolver: &Resolver) -> Vec { let mut ips: Vec = Vec::new(); if let Ok(addrs) = source.to_socket_addrs() { - for ip in x.into_iter() { + for ip in addrs.into_iter() { ips.push(ip.ip()); } } else if let Ok(addrs) = backup_resolver.lookup_ip(&source) { - for ip in x.iter() { + for ip in addrs.iter() { ips.push(ip); } } - return Ok(ips); + return ips; } #[cfg(not(tarpaulin_include))] @@ -258,43 +266,37 @@ fn read_ips_from_file( ips: String, backup_resolver: &Resolver, ) -> Result, std::io::Error> { - // if we cannot open it as a file, it is not a file so move on let file = File::open(ips)?; let reader = BufReader::new(file); let mut ips: Vec = Vec::new(); - for str_ip in reader.lines() { - match str_ip { - Ok(x) => match parse_to_ip(x, backup_resolver) { - Ok(result) => ips.extend(result), - Err(e) => { - debug!("{} is not a valid IP or host", e); - } - }, - Err(_) => { - debug!("Line in file is not valid"); - } + for address_line in reader.lines() { + if let Ok(address) = address_line { + ips.extend(parse_address(&address, backup_resolver)); + } else { + debug!("Line in file is not valid"); } } + Ok(ips) } /// Given a string, parse it as an host, IP address, or CIDR. /// This allows us to pass files as hosts or cidr or IPs easily /// Call this everytime you have a possible IP_or_host -fn parse_to_ip(address: &str, backup_resolver: &Resolver) -> Result, std::io::Error> { +fn parse_to_ip(address: &str, backup_resolver: &Resolver) -> Vec { let mut ips: Vec = Vec::new(); if let Ok(cidr) = IpCidr::from_str(&address) { cidr.iter().for_each(|ip| ips.push(ip)); - } else if let Ok(iter) = format!("{}:{}", &address, 80).to_socket_addrs() { - ips.push(iter.nth(0)).unwrap.ip(); + } else if let Ok(mut iter) = format!("{}:{}", &address, 80).to_socket_addrs() { + ips.push(iter.nth(0).unwrap().ip()); } else { - ips.extend(resolve_ips_from_host(&address, backup_resolver)); + ips.extend(resolve_ips_from_host(address, backup_resolver)); } - Ok(ips) + ips } fn adjust_ulimit_size(opts: &Opts) -> rlimit::rlim { From 072671263281e9ed378af0b129d2a9d350174912 Mon Sep 17 00:00:00 2001 From: shahar481 Date: Sun, 18 Oct 2020 21:39:07 +0300 Subject: [PATCH 09/10] Fixed merging errors --- src/main.rs | 21 ++------------------- 1 file changed, 2 insertions(+), 19 deletions(-) diff --git a/src/main.rs b/src/main.rs index 3e2d73ec4..ee4336a2a 100644 --- a/src/main.rs +++ b/src/main.rs @@ -243,7 +243,7 @@ fn parse_addresses(input: &Opts) -> Vec { continue; } - if let Ok(x) = read_ips_from_file(file_path, &resolver) { + if let Ok(x) = read_ips_from_file(file_path, &backup_resolver) { ips.extend(x); } else { warning!( @@ -288,7 +288,7 @@ fn resolve_ips_from_host(source: &str, backup_resolver: &Resolver) -> Vec Vec { - let mut ips: Vec = Vec::new(); - - if let Ok(cidr) = IpCidr::from_str(&address) { - cidr.iter().for_each(|ip| ips.push(ip)); - } else if let Ok(mut iter) = format!("{}:{}", &address, 80).to_socket_addrs() { - ips.push(iter.nth(0).unwrap().ip()); - } else { - ips.extend(resolve_ips_from_host(address, backup_resolver)); - } - - ips -} - fn adjust_ulimit_size(opts: &Opts) -> RawRlim { if opts.ulimit.is_some() { let limit: Rlim = Rlim::from_raw(opts.ulimit.unwrap()); From 84289c70154178c84e5b0698cfbedc22f8b6cfcb Mon Sep 17 00:00:00 2001 From: Shahar sela Date: Fri, 23 Oct 2020 18:14:44 +0300 Subject: [PATCH 10/10] Changed for CR --- src/main.rs | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/src/main.rs b/src/main.rs index ee4336a2a..d3699c7e4 100644 --- a/src/main.rs +++ b/src/main.rs @@ -218,10 +218,10 @@ fn parse_addresses(input: &Opts) -> Vec { let mut ips: Vec = Vec::new(); let mut unresolved_addresses: Vec<&str> = Vec::new(); let backup_resolver = - &Resolver::new(ResolverConfig::cloudflare_tls(), ResolverOpts::default()).unwrap(); + Resolver::new(ResolverConfig::cloudflare_tls(), ResolverOpts::default()).unwrap(); for address in &input.addresses { - let parsed_ips = parse_address(address, backup_resolver); + let parsed_ips = parse_address(address, &backup_resolver); if !parsed_ips.is_empty() { ips.extend(parsed_ips); } else { @@ -278,16 +278,14 @@ fn resolve_ips_from_host(source: &str, backup_resolver: &Resolver) -> Vec = Vec::new(); if let Ok(addrs) = source.to_socket_addrs() { - for ip in addrs.into_iter() { + for ip in addrs { ips.push(ip.ip()); } } else if let Ok(addrs) = backup_resolver.lookup_ip(&source) { - for ip in addrs.iter() { - ips.push(ip); - } + ips.extend(addrs.iter()); } - return ips; + ips } #[cfg(not(tarpaulin_include))]