From 1263155805e56b1e0eaec7cd0d06825794f1f43a Mon Sep 17 00:00:00 2001 From: Eduard Tolosa Date: Wed, 2 Sep 2020 23:58:53 -0500 Subject: [PATCH 01/62] Update README.md --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 9bfe9ab..cbaf31e 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ # Unimap -Scan only once by IP address and reduce scan times with Nmap for large amounts of data. Unimap is an abbreviation of "Unique Nmap *Scan*". +Scan only once by IP address and reduce scan times with Nmap for large amounts of data. Unimap is an abbreviation of "Unique Nmap *Scan*". The tool can run in Linux, OSX, Windows or Android (Termux) without problems. # Why? If you have plans to run an Nmap to a whole organization you need to consideer that surely tens, hundreds or even thousands of subdomains will point to the same IP address and there will come a point where it becomes almost impossible to continue scanning. Also your IP may end up blocked due to multiple scans to the same remote host address among other things. @@ -9,7 +9,7 @@ Unimap uses its own technology to initially resolve the IP addresses of all subd # Installation -You need to have Rust installed, then run: +You need to have Rust and Nmap installed in your computer, then run: * `cargo install unimap` to install from [crates.io](https://crates.io). * or From a4152f69987d7dcb97f346d5e2bb3b7e78035902 Mon Sep 17 00:00:00 2001 From: Eduard Tolosa Date: Thu, 3 Sep 2020 00:29:58 -0500 Subject: [PATCH 02/62] Create FUNDING.yml --- .github/FUNDING.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 .github/FUNDING.yml diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml new file mode 100644 index 0000000..a406285 --- /dev/null +++ b/.github/FUNDING.yml @@ -0,0 +1,4 @@ +# These are supported funding model platforms +patreon: edu4rdshl +open_collective: findomain +custom: ["https://paypal.me/sechacklabs"] From d1a720c554188c5e2d46576c71ae7e8695745b5c Mon Sep 17 00:00:00 2001 From: Eduard Tolosa Date: Thu, 3 Sep 2020 15:21:25 -0500 Subject: [PATCH 03/62] Update README.md --- README.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/README.md b/README.md index cbaf31e..1b89d42 100644 --- a/README.md +++ b/README.md @@ -51,5 +51,12 @@ to install from Github. 2. `$ sudo unimap -f targets.txt --fast-scan -o` performs an fast scan and save the logfile to logs/ folder. 3. `$ sudo unimap -f targets.txt --iport 1 --lport 1000 --min-rate 1000` scan ports from 1-1000 doing service and versions detection (if you want a fast scan use the --fast-scan flag) with an min-rate of 1000. +# Considerations + +* Unimap is preconfigured to run on faster networks (cloud VPS), if you run a scan in a home network that doesn't have too much capacity you will end up disconnected from network. +* The previously doesn't mean you can not use Unimap from your homw, just adjust the number of `--threads` and `--min-rate` (being it the most important). +* We do not wrap Nmap in any way, we use the right Nmap options to get the most performance, Nmap rocks and it's the faster ports scanner that currently exists. +* We parse Nmap output data and give you more understandable output while also preventing you to scan the same IP several times, **it's our main goal** . + # Found a bug? Open an [issue](https://github.com/Edu4rdSHL/unimap). From eae788cda4f1fc5c61fe268e0a035da7366ae3f5 Mon Sep 17 00:00:00 2001 From: Eduard Tolosa Date: Thu, 3 Sep 2020 15:23:18 -0500 Subject: [PATCH 04/62] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 1b89d42..ea513da 100644 --- a/README.md +++ b/README.md @@ -55,7 +55,7 @@ to install from Github. * Unimap is preconfigured to run on faster networks (cloud VPS), if you run a scan in a home network that doesn't have too much capacity you will end up disconnected from network. * The previously doesn't mean you can not use Unimap from your homw, just adjust the number of `--threads` and `--min-rate` (being it the most important). -* We do not wrap Nmap in any way, we use the right Nmap options to get the most performance, Nmap rocks and it's the faster ports scanner that currently exists. +* We do not wrap Nmap in any way or scan ports on our own, we use the right Nmap options to get the most performance, Nmap rocks and it's the faster ports scanner that currently exists. * We parse Nmap output data and give you more understandable output while also preventing you to scan the same IP several times, **it's our main goal** . # Found a bug? From 443871841040f8a754c709467fe8cec70f0c2b8c Mon Sep 17 00:00:00 2001 From: Eduard Tolosa Date: Thu, 3 Sep 2020 18:01:39 -0500 Subject: [PATCH 05/62] Fix typo. --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index ea513da..665dc30 100644 --- a/README.md +++ b/README.md @@ -54,7 +54,7 @@ to install from Github. # Considerations * Unimap is preconfigured to run on faster networks (cloud VPS), if you run a scan in a home network that doesn't have too much capacity you will end up disconnected from network. -* The previously doesn't mean you can not use Unimap from your homw, just adjust the number of `--threads` and `--min-rate` (being it the most important). +* The previously doesn't mean you can not use Unimap from your home, just adjust the number of `--threads` and `--min-rate` (being it the most important). * We do not wrap Nmap in any way or scan ports on our own, we use the right Nmap options to get the most performance, Nmap rocks and it's the faster ports scanner that currently exists. * We parse Nmap output data and give you more understandable output while also preventing you to scan the same IP several times, **it's our main goal** . From 93cbc6a58b071cd0b9aa5e0a6b488d513402f65b Mon Sep 17 00:00:00 2001 From: Eduard Tolosa Date: Thu, 3 Sep 2020 20:08:15 -0500 Subject: [PATCH 06/62] Add compatibility with Windows an other OS. This change adds compatibility with other OS that doesn't have a sudo command. We enabled ports range that was disabled as well. --- src/nmap.rs | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/nmap.rs b/src/nmap.rs index 602b87f..12596ec 100644 --- a/src/nmap.rs +++ b/src/nmap.rs @@ -116,7 +116,7 @@ pub fn get_nmap_data( last_port: usize, fast_scan: bool, ) -> Result { - let _ports_range = format!("{}-{}", initial_port, last_port); + let ports_range = format!("{}-{}", initial_port, last_port); let min_rate = min_rate.to_string(); let nmap_args = if fast_scan { vec![ @@ -152,7 +152,8 @@ pub fn get_nmap_data( "--min-rate", &min_rate, "-sS", - "-p-", + "-p", + &ports_range, "--open", "-dd", "-T4", @@ -163,12 +164,12 @@ pub fn get_nmap_data( host, ] }; - match Command::new("sudo").args(&nmap_args).output() { + match Command::new("nmap").args(&nmap_args).output() { Ok(_) => { if Path::new(&filename).exists() && Path::new(&filename).is_file() { serde_xml_rs::from_str(&std::fs::read_to_string(filename).unwrap_or_default()) } else { - error!("Error executing nmap, you need root permissions. Leaving.\n"); + error!("Error executing nmap, possible causes: Nmap is not installed or you need root/administrator permissions. Leaving.\n"); std::process::exit(1) } } From 945e09bb23c9e350fcf01208780d9bb9945f5d71 Mon Sep 17 00:00:00 2001 From: Eduard Tolosa Date: Thu, 3 Sep 2020 20:22:42 -0500 Subject: [PATCH 07/62] Allow users to keep Nmap XML logs. --- src/args.rs | 1 + src/cli.yml | 7 +++++++ src/resolver_engine.rs | 9 +++------ src/structs.rs | 1 + 4 files changed, 12 insertions(+), 6 deletions(-) diff --git a/src/args.rs b/src/args.rs index fe8b152..fd02905 100644 --- a/src/args.rs +++ b/src/args.rs @@ -59,6 +59,7 @@ pub fn get_args() -> Args { custom_resolvers: matches.is_present("custom-resolvers"), custom_ports_range: matches.is_present("initial-port") || matches.is_present("last-port"), fast_scan: matches.is_present("fast-scan"), + keep_nmap_logs: matches.is_present("keep-nmap-logs"), files: return_matches_vec(&matches, "files"), min_rate: value_t!(matches, "min-rate", usize).unwrap_or_else(|_| 30000), resolvers: if matches.is_present("custom-resolvers") { diff --git a/src/cli.yml b/src/cli.yml index 95609c3..26b2c79 100644 --- a/src/cli.yml +++ b/src/cli.yml @@ -82,3 +82,10 @@ args: long: logs-dir takes_value: true multiple: false + + - keep-nmap-logs: + help: Keep Nmap XML files created in the logs/ folder for every scanned IP. This data will be usefull for other tasks. + short: k + long: keep-nmap-logs + takes_value: false + multiple: false diff --git a/src/resolver_engine.rs b/src/resolver_engine.rs index eb84e93..c0c854a 100644 --- a/src/resolver_engine.rs +++ b/src/resolver_engine.rs @@ -190,12 +190,9 @@ fn async_resolver_engine(args: &Args, targets: HashSet) -> HashMap (), - Err(e) => { - error!("Error removing filename {}. Description: {}", &filename, e) - } - }; + if !args.keep_nmap_logs && std::fs::remove_file(&filename).is_err() { + error!("Error removing filename {}.", &filename) + } (ip.clone(), nmap_data) } Err(e) => { diff --git a/src/structs.rs b/src/structs.rs index ff2ca0b..feba6ff 100644 --- a/src/structs.rs +++ b/src/structs.rs @@ -19,6 +19,7 @@ pub struct Args { pub quiet_flag: bool, pub custom_resolvers: bool, pub custom_ports_range: bool, + pub keep_nmap_logs: bool, pub fast_scan: bool, pub files: Vec, pub resolvers: Vec, From 9861d0c92564e603370552fa3ba1548bbeea173c Mon Sep 17 00:00:00 2001 From: Eduard Tolosa Date: Thu, 3 Sep 2020 20:28:44 -0500 Subject: [PATCH 08/62] Fixes. --- Cargo.lock | 2 +- Cargo.toml | 2 +- src/cli.yml | 2 +- src/resolver_engine.rs | 10 ++-------- 4 files changed, 5 insertions(+), 11 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index f58fbe0..973c412 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1683,7 +1683,7 @@ checksum = "f7fe0bb3479651439c9112f72b6c505038574c9fbb575ed1bf3b797fa39dd564" [[package]] name = "unimap" -version = "0.1.0" +version = "0.2.0" dependencies = [ "atty", "chrono", diff --git a/Cargo.toml b/Cargo.toml index 708cb40..43a9766 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "unimap" -version = "0.1.0" +version = "0.2.0" authors = ["Eduard Tolosa "] edition = "2018" description = "Scan only once by IP address and reduce scan times with Nmap for large amounts of data." diff --git a/src/cli.yml b/src/cli.yml index 26b2c79..51dcae2 100644 --- a/src/cli.yml +++ b/src/cli.yml @@ -78,7 +78,7 @@ args: takes_value: false - logs-dir: - help: Path to save the CSV data of the process. Default to logs/ when using -o. + help: Path to save the CSV data of the process and/or Nmap XML files. Default to logs/. long: logs-dir takes_value: true multiple: false diff --git a/src/resolver_engine.rs b/src/resolver_engine.rs index c0c854a..86a55c9 100644 --- a/src/resolver_engine.rs +++ b/src/resolver_engine.rs @@ -48,13 +48,7 @@ lazy_static! { } pub fn async_resolver_all(args: &mut Args) -> Result<()> { - if args.with_output && !args.unique_output_flag && !files::check_full_path(&args.logs_dir) { - error!( - "Error creating the logs folder in the path {}. Leaving...", - &args.logs_dir - ); - std::process::exit(1) - } + files::check_full_path(&args.logs_dir); if !args.quiet_flag { info!( @@ -172,7 +166,7 @@ fn async_resolver_engine(args: &Args, targets: HashSet) -> HashMap = nmap_ips .par_iter() .map(|ip| { - let filename = format!("{}.xml", &ip); + let filename = format!("{}/{}.xml", &args.logs_dir, &ip); match nmap::get_nmap_data( &filename, &ip, From 448c293dc6c593e1f88b3cb9356c8a7cd1c00a77 Mon Sep 17 00:00:00 2001 From: Eduard Tolosa Date: Thu, 3 Sep 2020 20:31:42 -0500 Subject: [PATCH 09/62] Update gitignore. --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index d8bd773..22ff063 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ /target +/logs *.txt \ No newline at end of file From 39b2e19c33c20ded4c184ad5092d592a89c8e4cc Mon Sep 17 00:00:00 2001 From: Eduard Tolosa Date: Thu, 3 Sep 2020 20:41:18 -0500 Subject: [PATCH 10/62] Update readme. --- README.md | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index 665dc30..5797f51 100644 --- a/README.md +++ b/README.md @@ -14,15 +14,16 @@ You need to have Rust and Nmap installed in your computer, then run: * `cargo install unimap` to install from [crates.io](https://crates.io). * or ``` -$ git clone https://github.com/Edu4rdSHL/unimap.git && cd unimap -$ cargo build --release -$ sudo ./target/release/unimap +1. git clone https://github.com/Edu4rdSHL/unimap.git && cd unimap +# Alternatively you can download a release from https://github.com/Edu4rdSHL/unimap/releases/latest +# extract it and continue to next step. +2. cargo build --release +# Now the binary is in ./target/release/unimap ``` -to install from Github. # Usage -**Unimap requires root permissions to launch [Nmap TCP SYN (Stealth) Scan](https://nmap.org/book/synscan.html), we use it for accuracy and performance reasons.** See the [nmap.rs](https://github.com/Edu4rdSHL/unimap/blob/43b878e0d1ae74dc44d0ec51ce16a23fc6896a61/src/nmap.rs#L166) module. +**Unimap requires root/administrator privileges to launch [Nmap TCP SYN (Stealth) Scan](https://nmap.org/book/synscan.html), we use it for accuracy and performance reasons.** If you are on Linux or Linux-based, just use a root shell or run the tool with sudo, in Windows you can open a Command Prompt (CMD) as Administrator and run the tool as usual. * Flags doesn't require/accept values. @@ -47,9 +48,9 @@ to install from Github. # Examples -1. `$ sudo unimap -f targets.txt -u log.csv` performs an full scan and write output to log.csv. -2. `$ sudo unimap -f targets.txt --fast-scan -o` performs an fast scan and save the logfile to logs/ folder. -3. `$ sudo unimap -f targets.txt --iport 1 --lport 1000 --min-rate 1000` scan ports from 1-1000 doing service and versions detection (if you want a fast scan use the --fast-scan flag) with an min-rate of 1000. +1. `unimap -f targets.txt -u log.csv` performs an full scan and write output to log.csv. +2. `unimap -f targets.txt --fast-scan -o` performs an fast scan and save the logfile to logs/ folder. +3. `sudo unimap -f targets.txt --iport 1 --lport 1000 --min-rate 1000` scan ports from 1-1000 doing service and versions detection (if you want a fast scan use the --fast-scan flag) with an min-rate of 1000. # Considerations From daeafd25c68a55cbad765251306b0a8a94378732 Mon Sep 17 00:00:00 2001 From: Eduard Tolosa Date: Thu, 3 Sep 2020 20:43:51 -0500 Subject: [PATCH 11/62] Update README. --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 5797f51..d0ee025 100644 --- a/README.md +++ b/README.md @@ -31,6 +31,7 @@ You need to have Rust and Nmap installed in your computer, then run: |-----------|------------| |--fast-scan|Use fast scanning for ports (no version detection) and just scan the top 1000 ports.| |-o, --output| Write to an output file. The name of the output file will be unimap-log-$date.| +|-k, --keep-nmap-logs| Keep Nmap XML files created in the logs/ folder for every scanned IP. This data will be useful for other tasks.| * Options require values. From 48cb68837642788d0796011f30d76beb17f1bd7d Mon Sep 17 00:00:00 2001 From: Eduard Tolosa Date: Thu, 3 Sep 2020 20:44:09 -0500 Subject: [PATCH 12/62] Fix typo. --- src/cli.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/cli.yml b/src/cli.yml index 51dcae2..b375b48 100644 --- a/src/cli.yml +++ b/src/cli.yml @@ -84,7 +84,7 @@ args: multiple: false - keep-nmap-logs: - help: Keep Nmap XML files created in the logs/ folder for every scanned IP. This data will be usefull for other tasks. + help: Keep Nmap XML files created in the logs/ folder for every scanned IP. This data will be useful for other tasks. short: k long: keep-nmap-logs takes_value: false From 5e237d9b7da2bc1be9e97b5e80b76c4752a75c40 Mon Sep 17 00:00:00 2001 From: orhun Date: Thu, 15 Oct 2020 18:14:19 +0300 Subject: [PATCH 13/62] Add AUR instructions to README.md --- README.md | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/README.md b/README.md index d0ee025..8e436fb 100644 --- a/README.md +++ b/README.md @@ -21,6 +21,20 @@ You need to have Rust and Nmap installed in your computer, then run: # Now the binary is in ./target/release/unimap ``` +## Using the AUR packages. (Arch Linux) + +`unimap` can be installed from available [AUR packages](https://aur.archlinux.org/packages/?O=0&SeB=b&K=unimap&outdated=&SB=n&SO=a&PP=50&do_Search=Go) using an [AUR helper](https://wiki.archlinux.org/index.php/AUR_helpers). For example, + +``` +yay -S unimap +``` + +If you prefer, you can clone the [AUR packages](https://aur.archlinux.org/packages/?O=0&SeB=b&K=unimap&outdated=&SB=n&SO=a&PP=50&do_Search=Go) and then compile them with [makepkg](https://wiki.archlinux.org/index.php/Makepkg). For example, + +``` +git clone https://aur.archlinux.org/unimap.git && cd unimap && makepkg -si +``` + # Usage **Unimap requires root/administrator privileges to launch [Nmap TCP SYN (Stealth) Scan](https://nmap.org/book/synscan.html), we use it for accuracy and performance reasons.** If you are on Linux or Linux-based, just use a root shell or run the tool with sudo, in Windows you can open a Command Prompt (CMD) as Administrator and run the tool as usual. From 8ad5761f960f8952b7684e0d59bfccd5c0d40316 Mon Sep 17 00:00:00 2001 From: Edu4rdSHL Date: Sun, 9 May 2021 02:06:30 -0500 Subject: [PATCH 14/62] Bump dependencies. --- Cargo.lock | 1153 ++++++++++++++++------------------------------------ Cargo.toml | 29 +- 2 files changed, 364 insertions(+), 818 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 973c412..48a8bcc 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2,24 +2,24 @@ # It is not intended for manual editing. [[package]] name = "addr2line" -version = "0.13.0" +version = "0.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b6a2d3371669ab3ca9797670853d61402b03d0b4b9ebf33d677dfa720203072" +checksum = "03345e98af8f3d786b6d9f656ccfa6ac316d954e92bc4841f0bba20789d5fb5a" dependencies = [ "gimli", ] [[package]] name = "adler" -version = "0.2.3" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee2a4ec343196209d6594e19543ae87a39f96d5534d7174822a3ad825dd6ed7e" +checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" [[package]] name = "aho-corasick" -version = "0.7.13" +version = "0.7.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "043164d8ba5c4c3035fec9bbee8647c0261d788f3474306f93bb65901cae0e86" +checksum = "1e37cfd5e7657ada45f742d6e99ca5788580b5c529dc78faf11ece6dc702656f" dependencies = [ "memchr", ] @@ -30,7 +30,7 @@ version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ee49baf6cb617b853aa8d93bf420db2383fab46d314482ca2803b40d5fde979b" dependencies = [ - "winapi 0.3.9", + "winapi", ] [[package]] @@ -41,19 +41,19 @@ checksum = "a4c527152e37cf757a3f78aae5a06fbeefdb07ccc535c980a3208ee3060dd544" [[package]] name = "arrayvec" -version = "0.5.1" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cff77d8686867eceff3105329d4698d96c2391c176d5d03adc90c7389162b5b8" +checksum = "23b62fc65de8e4e7f52534fb52b0f3ed04746ae267519eef2a83941e8085068b" [[package]] name = "async-trait" -version = "0.1.40" +version = "0.1.50" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "687c230d85c0a52504709705fc8a53e4a692b83a2184f03dae73e38e1e93a783" +checksum = "0b98e84bbb4cbcdd97da190ba0c58a1bb0de2c1fdf67d159e192ed766aeca722" dependencies = [ - "proc-macro2 1.0.19", - "quote 1.0.7", - "syn 1.0.39", + "proc-macro2", + "quote", + "syn", ] [[package]] @@ -64,15 +64,9 @@ checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" dependencies = [ "hermit-abi", "libc", - "winapi 0.3.9", + "winapi", ] -[[package]] -name = "autocfg" -version = "0.1.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d49d90015b3c36167a20fe2810c5cd875ad504b39cff3d4eae7977e6b7c1cb2" - [[package]] name = "autocfg" version = "1.0.1" @@ -81,11 +75,12 @@ checksum = "cdb031dd78e28731d87d56cc8ffef4a8f36ca26c38fe2de700543e627f8a464a" [[package]] name = "backtrace" -version = "0.3.50" +version = "0.3.59" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46254cf2fdcdf1badb5934448c1bcbe046a56537b3987d96c51a7afc5d03f293" +checksum = "4717cfcbfaa661a0fd48f8453951837ae7e8f81e481fbb136e3202d72805a744" dependencies = [ "addr2line", + "cc", "cfg-if", "libc", "miniz_oxide", @@ -95,9 +90,9 @@ dependencies = [ [[package]] name = "base64" -version = "0.12.3" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3441f0f7b02788e948e47f457ca01f1d7e6d92c693bc132c22b087d3141c03ff" +checksum = "904dfeac50f3cdaba28fc6f57fdcddb75f49ed61346676a78c4ffe55877802fd" [[package]] name = "bitflags" @@ -107,9 +102,9 @@ checksum = "cf1de2fe8c75bc145a2f577add951f8134889b4795d47466a54a5c846d691693" [[package]] name = "blake2b_simd" -version = "0.5.10" +version = "0.5.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8fb2d74254a3a0b5cac33ac9f8ed0e44aa50378d9dbb2e5d83bd21ed1dc2c8a" +checksum = "afa748e348ad3be8263be728124b24a24f268266f6f5d58af9d75f6a40b5c587" dependencies = [ "arrayref", "arrayvec", @@ -118,49 +113,45 @@ dependencies = [ [[package]] name = "bstr" -version = "0.2.13" +version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31accafdb70df7871592c058eca3985b71104e15ac32f64706022c58867da931" +checksum = "90682c8d613ad3373e66de8c6411e0ae2ab2571e879d2efbf73558cc66f21279" dependencies = [ "lazy_static", "memchr", "regex-automata", - "serde 1.0.115", + "serde 1.0.125", ] [[package]] name = "byteorder" -version = "1.3.4" +version = "1.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08c48aae112d48ed9f069b33538ea9e3e90aa263cfa3d1c24309612b1f7472de" - -[[package]] -name = "bytes" -version = "0.5.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e4cec68f03f32e44924783795810fa50a7035d8c8ebe78580ad7e6c703fba38" +checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" [[package]] name = "cc" -version = "1.0.59" +version = "1.0.67" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "66120af515773fb005778dc07c261bd201ec8ce50bd6e7144c927753fe013381" +checksum = "e3c69b077ad434294d3ce9f1f6143a2a4b89a8a2d54ef813d85003a4fd1137fd" [[package]] name = "cfg-if" -version = "0.1.10" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822" +checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" [[package]] name = "chrono" -version = "0.4.15" +version = "0.4.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "942f72db697d8767c22d46a598e01f2d3b475501ea43d0db4f16d90259182d0b" +checksum = "670ad68c9088c2a963aaa298cb369688cf3f9465ce5e2d4ca10e6e0098a1ce73" dependencies = [ + "libc", "num-integer", - "num-traits 0.2.12", + "num-traits 0.2.14", "time", + "winapi", ] [[package]] @@ -179,40 +170,31 @@ dependencies = [ "yaml-rust 0.3.5", ] -[[package]] -name = "cloudabi" -version = "0.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ddfc5b9aa5d4507acaf872de71051dfd0e309860e88966e1051e462a077aac4f" -dependencies = [ - "bitflags", -] - [[package]] name = "colored" -version = "1.9.3" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4ffc801dacf156c5854b9df4f425a626539c3a6ef7893cc0c5084a23f0b6c59" +checksum = "b3616f750b84d8f0de8a58bda93e08e2a81ad3f523089b05f1dffecab48c6cbd" dependencies = [ "atty", "lazy_static", - "winapi 0.3.9", + "winapi", ] [[package]] name = "config" -version = "0.10.1" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19b076e143e1d9538dde65da30f8481c2a6c44040edb8e02b9bf1351edb92ce3" +checksum = "1b1b9d958c2b1368a663f05538fc1b5975adce1e19f435acceae987aceeeb369" dependencies = [ "lazy_static", "nom", "rust-ini", - "serde 1.0.115", + "serde 1.0.125", "serde-hjson", "serde_json", "toml", - "yaml-rust 0.4.4", + "yaml-rust 0.4.5", ] [[package]] @@ -223,9 +205,9 @@ checksum = "245097e9a4535ee1e3e3931fcfcd55a796a44c643e8596ff6566d68f09b87bbc" [[package]] name = "crossbeam-channel" -version = "0.4.3" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09ee0cc8804d5393478d743b035099520087a5186f3b93fa58cec08fa62407b6" +checksum = "06ed27e177f16d65f0f0c22a213e17c696ace5dd64b14258b52f9417ccb52db4" dependencies = [ "cfg-if", "crossbeam-utils", @@ -233,52 +215,50 @@ dependencies = [ [[package]] name = "crossbeam-deque" -version = "0.7.3" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f02af974daeee82218205558e51ec8768b48cf524bd01d550abe5573a608285" +checksum = "94af6efb46fef72616855b036a624cf27ba656ffc9be1b9a3c931cfc7749a9a9" dependencies = [ + "cfg-if", "crossbeam-epoch", "crossbeam-utils", - "maybe-uninit", ] [[package]] name = "crossbeam-epoch" -version = "0.8.2" +version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "058ed274caafc1f60c4997b5fc07bf7dc7cca454af7c6e81edffe5f33f70dace" +checksum = "52fb27eab85b17fbb9f6fd667089e07d6a2eb8743d02639ee7f6a7a7729c9c94" dependencies = [ - "autocfg 1.0.1", "cfg-if", "crossbeam-utils", "lazy_static", - "maybe-uninit", "memoffset", "scopeguard", ] [[package]] name = "crossbeam-utils" -version = "0.7.2" +version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3c7c73a2d1e9fc0886a08b93e98eb643461230d5f1925e4036204d5f2e261a8" +checksum = "4feb231f0d4d6af81aed15928e58ecf5816aa62a2393e2c82f46973e92a9a278" dependencies = [ - "autocfg 1.0.1", + "autocfg", "cfg-if", "lazy_static", ] [[package]] name = "csv" -version = "1.1.3" +version = "1.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00affe7f6ab566df61b4be3ce8cf16bc2576bca0963ceb0955e45d514bf9a279" +checksum = "22813a6dc45b335f9bade10bf7271dc477e81113e89eb251a0bc2a8a81c536e1" dependencies = [ "bstr", "csv-core", "itoa", "ryu", - "serde 1.0.115", + "serde 1.0.125", ] [[package]] @@ -291,34 +271,10 @@ dependencies = [ ] [[package]] -name = "curl" -version = "0.4.33" +name = "data-encoding" +version = "2.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78baca05127a115136a9898e266988fc49ca7ea2c839f60fc6e1fc9df1599168" -dependencies = [ - "curl-sys", - "libc", - "openssl-probe", - "openssl-sys", - "schannel", - "socket2", - "winapi 0.3.9", -] - -[[package]] -name = "curl-sys" -version = "0.4.36+curl-7.71.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68cad94adeb0c16558429c3c34a607acc9ea58e09a7b66310aabc9788fc5d721" -dependencies = [ - "cc", - "libc", - "libz-sys", - "openssl-sys", - "pkg-config", - "vcpkg", - "winapi 0.3.9", -] +checksum = "3ee2393c4a91429dffb4bedf19f4d6abf27d8a732c8ce4980305d782e5426d57" [[package]] name = "dirs" @@ -328,14 +284,14 @@ checksum = "3fd78930633bd1c6e35c4b42b1df7b0cbc6bc191146e512bb3bedf243fcc3901" dependencies = [ "libc", "redox_users", - "winapi 0.3.9", + "winapi", ] [[package]] name = "either" -version = "1.6.0" +version = "1.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd56b59865bce947ac5958779cfa508f6c3b9497cc762b7e24a12d11ccde2c4f" +checksum = "e78d4f1cc4ae33bbfc157ed5d5a5ef3bc29227303d595861deb238fcec4e9457" [[package]] name = "encode_unicode" @@ -350,9 +306,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7c5f0096a91d210159eceb2ff5e1c4da18388a170e1e3ce948aac9c8fdbbf595" dependencies = [ "heck", - "proc-macro2 1.0.19", - "quote 1.0.7", - "syn 1.0.39", + "proc-macro2", + "quote", + "syn", ] [[package]] @@ -371,9 +327,9 @@ version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "aa4da3c766cd7a0db8242e326e9e4e081edd567072893ed320008189715366a4" dependencies = [ - "proc-macro2 1.0.19", - "quote 1.0.7", - "syn 1.0.39", + "proc-macro2", + "quote", + "syn", "synstructure", ] @@ -393,110 +349,60 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" [[package]] -name = "fuchsia-cprng" -version = "0.1.1" +name = "form_urlencoded" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a06f77d526c1a601b7c4cdd98f54b5eaabffc14d5f2f0296febdc7f357c6d3ba" - -[[package]] -name = "fuchsia-zircon" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e9763c69ebaae630ba35f74888db465e49e259ba1bc0eda7d06f4a067615d82" +checksum = "5fc25a87fa4fd2094bffb06925852034d90a17f0d1e05197d4956d3555752191" 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 = "futf" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c9c1ce3fa9336301af935ab852c437817d14cd33690446569392e65170aac3b" -dependencies = [ - "mac", - "new_debug_unreachable", -] - -[[package]] -name = "futures" -version = "0.3.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e05b85ec287aac0dc34db7d4a569323df697f9c55b99b15d6b4ef8cde49f613" -dependencies = [ - "futures-channel", - "futures-core", - "futures-io", - "futures-sink", - "futures-task", - "futures-util", + "matches", + "percent-encoding", ] [[package]] name = "futures-channel" -version = "0.3.5" +version = "0.3.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f366ad74c28cca6ba456d95e6422883cfb4b252a83bed929c83abfdbbf2967d5" +checksum = "ce79c6a52a299137a6013061e0cf0e688fce5d7f1bc60125f520912fdb29ec25" dependencies = [ "futures-core", - "futures-sink", ] [[package]] name = "futures-core" -version = "0.3.5" +version = "0.3.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59f5fff90fd5d971f936ad674802482ba441b6f09ba5e15fd8b39145582ca399" +checksum = "098cd1c6dda6ca01650f1a37a794245eb73181d0d4d4e955e2f3c37db7af1815" [[package]] name = "futures-io" -version = "0.3.5" +version = "0.3.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de27142b013a8e869c14957e6d2edeef89e97c289e69d042ee3a49acd8b51789" - -[[package]] -name = "futures-sink" -version = "0.3.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f2032893cb734c7a05d85ce0cc8b8c4075278e93b24b66f9de99d6eb0fa8acc" +checksum = "365a1a1fb30ea1c03a830fdb2158f5236833ac81fa0ad12fe35b29cddc35cb04" [[package]] name = "futures-task" -version = "0.3.5" +version = "0.3.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bdb66b5f09e22019b1ab0830f7785bcea8e7a42148683f99214f73f8ec21a626" -dependencies = [ - "once_cell", -] +checksum = "ba7aa51095076f3ba6d9a1f702f74bd05ec65f555d70d2033d55ba8d69f581bc" [[package]] name = "futures-util" -version = "0.3.5" +version = "0.3.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8764574ff08b701a084482c3c7031349104b07ac897393010494beaa18ce32c6" +checksum = "3c144ad54d60f23927f0a6b6d816e4271278b64f005ad65e4e35291d2de9c025" dependencies = [ - "futures-channel", "futures-core", - "futures-io", - "futures-sink", "futures-task", - "memchr", - "pin-project", + "pin-project-lite", "pin-utils", "slab", ] [[package]] name = "getrandom" -version = "0.1.14" +version = "0.1.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7abc8dd8451921606d809ba32e95b6111925cd2906060d2dcc29c070220503eb" +checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce" dependencies = [ "cfg-if", "libc", @@ -504,25 +410,36 @@ dependencies = [ ] [[package]] -name = "gimli" -version = "0.22.0" +name = "getrandom" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aaf91faf136cb47367fa430cd46e37a788775e7fa104f8b4bcb3861dc389b724" +checksum = "c9495705279e7140bf035dde1f6e750c162df8b625267cd52cc44e0b156732c8" +dependencies = [ + "cfg-if", + "libc", + "wasi 0.10.0+wasi-snapshot-preview1", +] + +[[package]] +name = "gimli" +version = "0.24.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0e4075386626662786ddb0ec9081e7c7eeb1ba31951f447ca780ef9f5d568189" [[package]] name = "heck" -version = "0.3.1" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "20564e78d53d2bb135c343b3f47714a56af2061f1c928fdb541dc7b9fdd94205" +checksum = "87cbf45460356b7deeb5e3415b5563308c0a9b057c85e12b06ad551f98d0a6ac" dependencies = [ "unicode-segmentation", ] [[package]] name = "hermit-abi" -version = "0.1.15" +version = "0.1.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3deed196b6e7f9e44a2ae8d94225d80302d81208b1bb673fd21fe634645c85a9" +checksum = "322f4de77956e22ed0e5032c359a0f1273f1f7f0d79bfa3b8ffbc730d7fbcc5c" dependencies = [ "libc", ] @@ -535,28 +452,14 @@ checksum = "3c731c3e10504cc8ed35cfe2f1db4c9274c3d35fa486e3b31df46f068ef3e867" dependencies = [ "libc", "match_cfg", - "winapi 0.3.9", -] - -[[package]] -name = "html5ever" -version = "0.22.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c213fa6a618dc1da552f54f85cba74b05d8e883c92ec4e89067736938084c26e" -dependencies = [ - "log", - "mac", - "markup5ever", - "proc-macro2 0.4.30", - "quote 0.6.13", - "syn 0.15.44", + "winapi", ] [[package]] name = "idna" -version = "0.2.0" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02e2673c30ee86b5b96a9cb52ad15718aa1f966f5ab9ad54a8b95d5ca33120a9" +checksum = "418a0a6fab821475f634efe3ccc45c013f742efe03d853e8d3355d5cb850ecf8" dependencies = [ "matches", "unicode-bidi", @@ -564,12 +467,12 @@ dependencies = [ ] [[package]] -name = "iovec" -version = "0.1.4" +name = "instant" +version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2b3ea6ff95e175473f8ffe6a7eb7c00d054240321b84c57051175fe3c1e075e" +checksum = "61124eeebbd69b8190558df225adf7e4caafce0d743919e5d6b19652314ec5ec" dependencies = [ - "libc", + "cfg-if", ] [[package]] @@ -580,25 +483,21 @@ checksum = "f7e2f18aece9709094573a9f24f483c4f65caa4298e2f7ae1b71cc65d853fad7" dependencies = [ "socket2", "widestring", - "winapi 0.3.9", + "winapi", "winreg", ] [[package]] -name = "itoa" -version = "0.4.6" +name = "ipnet" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc6f3ad7b9d11a0c00842ff8de1b60ee58661048eb8049ed33c73594f359d7e6" +checksum = "47be2f14c678be2fdcab04ab1171db51b2762ce6f0a8ee87c8dd4a04ed216135" [[package]] -name = "kernel32-sys" -version = "0.2.2" +name = "itoa" +version = "0.4.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7507624b29483431c0ba2d82aece8ca6cdba9382bff4ddd0f7490560c056098d" -dependencies = [ - "winapi 0.2.8", - "winapi-build", -] +checksum = "dd25036021b0de88a0aff6b850051563c6516d0bf53f8638938edbb9de732736" [[package]] name = "lazy_static" @@ -608,9 +507,9 @@ checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" [[package]] name = "lexical-core" -version = "0.7.4" +version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db65c6da02e61f55dae90a0ae427b2a5f6b3e8db09f58d10efab23af92592616" +checksum = "6607c62aa161d23d17a9072cc5da0be67cdfc89d3afb1e8d9c842bebc2525ffe" dependencies = [ "arrayvec", "bitflags", @@ -621,43 +520,30 @@ dependencies = [ [[package]] name = "libc" -version = "0.2.76" +version = "0.2.94" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "755456fae044e6fa1ebbbd1b3e902ae19e73097ed4ed87bb79934a867c007bc3" - -[[package]] -name = "libz-sys" -version = "1.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23b34178653005c1181711c333f0e5604a14a1b5115c814fd42304bdd16245e0" -dependencies = [ - "cc", - "libc", - "pkg-config", - "vcpkg", -] +checksum = "18794a8ad5b29321f790b55d93dfba91e125cb1a9edbd4f8e3150acc771c1a5e" [[package]] name = "linked-hash-map" -version = "0.3.0" +version = "0.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d262045c5b87c0861b3f004610afd0e2c851e2908d08b6c870cbb9d5f494ecd" -dependencies = [ - "serde 0.8.23", - "serde_test", -] +checksum = "7fb9b38af92608140b86b693604b9ffcc5824240a484d1ecd4795bacb2fe88f3" [[package]] -name = "linked-hash-map" -version = "0.5.3" +name = "lock_api" +version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8dd5a6d5999d9907cda8ed67bbd137d3af8085216c2ac62de5be860bd41f304a" +checksum = "0382880606dff6d15c9476c416d18690b72742aa7b605bb6dd6ec9030fbf07eb" +dependencies = [ + "scopeguard", +] [[package]] name = "log" -version = "0.4.11" +version = "0.4.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fabed175da42fed1fa0746b0ea71f412aa9d35e76e95e59b192c64b9dc2bf8b" +checksum = "51b9bbe6c47d51fc3e1a9b945965946b4c44142ab8792c50835a980d362c2710" dependencies = [ "cfg-if", ] @@ -668,29 +554,7 @@ version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "31e24f1ad8321ca0e8a1e0ac13f23cb668e6f5466c2c57319f6a5cf1cc8e3b1c" dependencies = [ - "linked-hash-map 0.5.3", -] - -[[package]] -name = "mac" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c41e0c4fef86961ac6d6f8a82609f55f31b05e4fce149ac5710e439df7619ba4" - -[[package]] -name = "markup5ever" -version = "0.7.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "897636f9850c3eef4905a5540683ed53dc9393860f0846cab2c2ddf9939862ff" -dependencies = [ - "phf", - "phf_codegen", - "serde 1.0.115", - "serde_derive", - "serde_json", - "string_cache", - "string_cache_codegen", - "tendril", + "linked-hash-map", ] [[package]] @@ -705,84 +569,53 @@ version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7ffc5c5338469d4d3ea17d269fa8ea3512ad247247c30bd2df69e68309ed0a08" -[[package]] -name = "maybe-uninit" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60302e4db3a61da70c0cb7991976248362f30319e88850c487b9b95bbf059e00" - [[package]] name = "memchr" -version = "2.3.3" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3728d817d99e5ac407411fa471ff9800a778d88a24685968b36824eaf4bee400" +checksum = "b16bd47d9e329435e309c58469fe0791c2d0d1ba96ec0954152a5ae2b04387dc" [[package]] name = "memoffset" -version = "0.5.5" +version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c198b026e1bbf08a937e94c6c60f9ec4a2267f5b0d2eec9c1b21b061ce2be55f" +checksum = "f83fb6581e8ed1f85fd45c116db8405483899489e38406156c25eb743554361d" dependencies = [ - "autocfg 1.0.1", + "autocfg", ] [[package]] name = "miniz_oxide" -version = "0.4.1" +version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d7559a8a40d0f97e1edea3220f698f78b1c5ab67532e49f68fde3910323b722" +checksum = "a92518e98c078586bc6c934028adcca4c92a53d6a958196de835170a01d84e4b" dependencies = [ "adler", + "autocfg", ] [[package]] name = "mio" -version = "0.6.22" +version = "0.7.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fce347092656428bc8eaf6201042cb551b8d67855af7374542a92a0fbfcac430" +checksum = "cf80d3e903b34e0bd7282b218398aec54e082c840d9baf8339e0080a0c542956" dependencies = [ - "cfg-if", - "fuchsia-zircon", - "fuchsia-zircon-sys", - "iovec", - "kernel32-sys", "libc", "log", "miow", - "net2", - "slab", - "winapi 0.2.8", + "ntapi", + "winapi", ] [[package]] name = "miow" -version = "0.2.1" +version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c1f2f3b1cf331de6896aabf6e9d55dca90356cc9960cca7eaaf408a355ae919" +checksum = "b9f1c5b025cda876f66ef43a113f91ebc9f4ccef34843000e0adf6ebbab84e21" dependencies = [ - "kernel32-sys", - "net2", - "winapi 0.2.8", - "ws2_32-sys", + "winapi", ] -[[package]] -name = "net2" -version = "0.2.34" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2ba7c918ac76704fb42afcbbb43891e72731f3dcca3bef2a19786297baf14af7" -dependencies = [ - "cfg-if", - "libc", - "winapi 0.3.9", -] - -[[package]] -name = "new_debug_unreachable" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e4a24736216ec316047a1fc4252e27dabb04218aa4a3f37c6e7ddbf1f9782b54" - [[package]] name = "nom" version = "5.1.2" @@ -795,13 +628,22 @@ dependencies = [ ] [[package]] -name = "num-integer" -version = "0.1.43" +name = "ntapi" +version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d59457e662d541ba17869cf51cf177c0b5f0cbf476c66bdc90bf1edac4f875b" +checksum = "3f6bb902e437b6d86e03cce10a7e2af662292c5dfef23b65899ea3ac9354ad44" dependencies = [ - "autocfg 1.0.1", - "num-traits 0.2.12", + "winapi", +] + +[[package]] +name = "num-integer" +version = "0.1.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2cc698a63b549a70bc047073d2949cce27cd1c7b0a4a862d08a8031bc2801db" +dependencies = [ + "autocfg", + "num-traits 0.2.14", ] [[package]] @@ -810,16 +652,16 @@ version = "0.1.43" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "92e5113e9fd4cc14ded8e499429f396a20f98c772a47cc8622a736e1ec843c31" dependencies = [ - "num-traits 0.2.12", + "num-traits 0.2.14", ] [[package]] name = "num-traits" -version = "0.2.12" +version = "0.2.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac267bcc07f48ee5f8935ab0d24f316fb722d7a1292e2913f0cc196b29ffd611" +checksum = "9a64b1ec5cda2586e284722486d802acf1f7dbdc623e2bfc57e65ca1cd099290" dependencies = [ - "autocfg 1.0.1", + "autocfg", ] [[package]] @@ -834,52 +676,46 @@ dependencies = [ [[package]] name = "object" -version = "0.20.0" +version = "0.24.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ab52be62400ca80aa00285d25253d7f7c437b7375c4de678f5405d3afe82ca5" +checksum = "1a5b3dd1c072ee7963717671d1ca129f1048fda25edea6b752bfc71ac8854170" [[package]] name = "once_cell" -version = "1.4.1" +version = "1.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "260e51e7efe62b592207e9e13a68e43692a7a279171d6ba57abd208bf23645ad" +checksum = "af8b08b04175473088b46763e51ee54da5f9a164bc162f615b91bc179dbf15a3" [[package]] name = "openssl" -version = "0.10.30" +version = "0.10.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d575eff3665419f9b83678ff2815858ad9d11567e082f5ac1814baba4e2bcb4" +checksum = "6d7830286ad6a3973c0f1d9b73738f69c76b739301d0229c4b96501695cbe4c8" dependencies = [ "bitflags", "cfg-if", "foreign-types", - "lazy_static", "libc", + "once_cell", "openssl-sys", ] -[[package]] -name = "openssl-probe" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77af24da69f9d9341038eba93a073b1fdaaa1b788221b00a69bce9e762cb32de" - [[package]] name = "openssl-src" -version = "111.10.2+1.1.1g" +version = "111.15.0+1.1.1k" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a287fdb22e32b5b60624d4a5a7a02dbe82777f730ec0dbc42a0554326fef5a70" +checksum = "b1a5f6ae2ac04393b217ea9f700cd04fa9bf3d93fae2872069f3d15d908af70a" dependencies = [ "cc", ] [[package]] name = "openssl-sys" -version = "0.9.58" +version = "0.9.63" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a842db4709b604f0fe5d1170ae3565899be2ad3d9cbc72dedc789ac0511f78de" +checksum = "b6b0d6fb7d80f877617dfcb014e605e2b5ab2fb0afdf27935219bb6bd984cb98" dependencies = [ - "autocfg 1.0.1", + "autocfg", "cc", "libc", "openssl-src", @@ -887,75 +723,42 @@ dependencies = [ "vcpkg", ] +[[package]] +name = "parking_lot" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d7744ac029df22dca6284efe4e898991d28e3085c706c972bcd7da4a27a15eb" +dependencies = [ + "instant", + "lock_api", + "parking_lot_core", +] + +[[package]] +name = "parking_lot_core" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa7a782938e745763fe6907fc6ba86946d72f49fe7e21de074e08128a99fb018" +dependencies = [ + "cfg-if", + "instant", + "libc", + "redox_syscall 0.2.8", + "smallvec", + "winapi", +] + [[package]] name = "percent-encoding" version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d4fd5641d01c8f18a23da7b6fe29298ff4b55afcccdf78973b24cf3175fee32e" -[[package]] -name = "phf" -version = "0.7.24" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3da44b85f8e8dfaec21adae67f95d93244b2ecf6ad2a692320598dcc8e6dd18" -dependencies = [ - "phf_shared", -] - -[[package]] -name = "phf_codegen" -version = "0.7.24" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b03e85129e324ad4166b06b2c7491ae27fe3ec353af72e72cd1654c7225d517e" -dependencies = [ - "phf_generator", - "phf_shared", -] - -[[package]] -name = "phf_generator" -version = "0.7.24" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09364cc93c159b8b06b1f4dd8a4398984503483891b0c26b867cf431fb132662" -dependencies = [ - "phf_shared", - "rand 0.6.5", -] - -[[package]] -name = "phf_shared" -version = "0.7.24" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "234f71a15de2288bcb7e3b6515828d22af7ec8598ee6d24c3b526fa0a80b67a0" -dependencies = [ - "siphasher", -] - -[[package]] -name = "pin-project" -version = "0.4.23" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca4433fff2ae79342e497d9f8ee990d174071408f28f726d6d83af93e58e48aa" -dependencies = [ - "pin-project-internal", -] - -[[package]] -name = "pin-project-internal" -version = "0.4.23" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c0e815c3ee9a031fdf5af21c10aa17c573c9c6a566328d99e3936c34e36461f" -dependencies = [ - "proc-macro2 1.0.19", - "quote 1.0.7", - "syn 1.0.39", -] - [[package]] name = "pin-project-lite" -version = "0.1.7" +version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "282adbf10f2698a7a77f8e983a74b2d18176c19a7fd32a45446139ae7b02b715" +checksum = "dc0e1f259c92177c30a4c9d177246edd0a3568b25756a977d0632cf8fa37e905" [[package]] name = "pin-utils" @@ -965,21 +768,15 @@ checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" [[package]] name = "pkg-config" -version = "0.3.18" +version = "0.3.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d36492546b6af1463394d46f0c834346f31548646f6ba10849802c9c9a27ac33" +checksum = "3831453b3449ceb48b6d9c7ad7c96d5ea673e9b470a1dc578c2ce6521230884c" [[package]] name = "ppv-lite86" -version = "0.2.9" +version = "0.2.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c36fa947111f5c62a733b652544dd0016a43ce89619538a8ef92724a6f501a20" - -[[package]] -name = "precomputed-hash" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "925383efa346730478fb4838dbe9137d2a47675ad789c546d150a6e1dd4ab31c" +checksum = "ac74c624d6b2d21f425f752262f42188365d7b8ff1aff74c82e45136510a4857" [[package]] name = "prettytable-rs" @@ -997,20 +794,11 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "0.4.30" +version = "1.0.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf3d2011ab5c909338f7887f4fc896d35932e29146c12c8d01da6b22a80ba759" +checksum = "a152013215dca273577e18d2bf00fa862b89b24169fb78c4c95aeb07992c9cec" dependencies = [ - "unicode-xid 0.1.0", -] - -[[package]] -name = "proc-macro2" -version = "1.0.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04f5f085b5d71e2188cb8271e5da0161ad52c3f227a661a3c135fdf28e258b12" -dependencies = [ - "unicode-xid 0.2.1", + "unicode-xid", ] [[package]] @@ -1021,176 +809,60 @@ checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0" [[package]] name = "quote" -version = "0.6.13" +version = "1.0.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ce23b6b870e8f94f81fb0a363d65d86675884b34a09043c81e5562f11c1f8e1" +checksum = "c3d0b9745dc2debf507c8422de05d7226cc1f0644216dfdfead988f9b1ab32a7" dependencies = [ - "proc-macro2 0.4.30", -] - -[[package]] -name = "quote" -version = "1.0.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa563d17ecb180e500da1cfd2b028310ac758de548efdd203e18f283af693f37" -dependencies = [ - "proc-macro2 1.0.19", + "proc-macro2", ] [[package]] name = "rand" -version = "0.6.5" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d71dacdc3c88c1fde3885a3be3fbab9f35724e6ce99467f7d9c5026132184ca" +checksum = "0ef9e7e66b4468674bfcb0c81af8b7fa0bb154fa9f28eb840da5c447baeb8d7e" dependencies = [ - "autocfg 0.1.7", "libc", - "rand_chacha 0.1.1", - "rand_core 0.4.2", - "rand_hc 0.1.0", - "rand_isaac", - "rand_jitter", - "rand_os", - "rand_pcg", - "rand_xorshift", - "winapi 0.3.9", -] - -[[package]] -name = "rand" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03" -dependencies = [ - "getrandom", - "libc", - "rand_chacha 0.2.2", - "rand_core 0.5.1", - "rand_hc 0.2.0", + "rand_chacha", + "rand_core", + "rand_hc", ] [[package]] name = "rand_chacha" -version = "0.1.1" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "556d3a1ca6600bfcbab7c7c91ccb085ac7fbbcd70e008a98742e7847f4f7bcef" -dependencies = [ - "autocfg 0.1.7", - "rand_core 0.3.1", -] - -[[package]] -name = "rand_chacha" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402" +checksum = "e12735cf05c9e10bf21534da50a147b924d555dc7a547c42e6bb2d5b6017ae0d" dependencies = [ "ppv-lite86", - "rand_core 0.5.1", + "rand_core", ] [[package]] name = "rand_core" -version = "0.3.1" +version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a6fdeb83b075e8266dcc8762c22776f6877a63111121f5f8c7411e5be7eed4b" +checksum = "34cf66eb183df1c5876e2dcf6b13d57340741e8dc255b48e40a26de954d06ae7" dependencies = [ - "rand_core 0.4.2", -] - -[[package]] -name = "rand_core" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c33a3c44ca05fa6f1807d8e6743f3824e8509beca625669633be0acbdf509dc" - -[[package]] -name = "rand_core" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" -dependencies = [ - "getrandom", + "getrandom 0.2.2", ] [[package]] name = "rand_hc" -version = "0.1.0" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b40677c7be09ae76218dc623efbf7b18e34bced3f38883af07bb75630a21bc4" +checksum = "3190ef7066a446f2e7f42e239d161e905420ccab01eb967c9eb27d21b2322a73" dependencies = [ - "rand_core 0.3.1", -] - -[[package]] -name = "rand_hc" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c" -dependencies = [ - "rand_core 0.5.1", -] - -[[package]] -name = "rand_isaac" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ded997c9d5f13925be2a6fd7e66bf1872597f759fd9dd93513dd7e92e5a5ee08" -dependencies = [ - "rand_core 0.3.1", -] - -[[package]] -name = "rand_jitter" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1166d5c91dc97b88d1decc3285bb0a99ed84b05cfd0bc2341bdf2d43fc41e39b" -dependencies = [ - "libc", - "rand_core 0.4.2", - "winapi 0.3.9", -] - -[[package]] -name = "rand_os" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b75f676a1e053fc562eafbb47838d67c84801e38fc1ba459e8f180deabd5071" -dependencies = [ - "cloudabi", - "fuchsia-cprng", - "libc", - "rand_core 0.4.2", - "rdrand", - "winapi 0.3.9", -] - -[[package]] -name = "rand_pcg" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "abf9b09b01790cfe0364f52bf32995ea3c39f4d2dd011eac241d2914146d0b44" -dependencies = [ - "autocfg 0.1.7", - "rand_core 0.4.2", -] - -[[package]] -name = "rand_xorshift" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cbf7e9e623549b0e21f6e97cf8ecf247c1a8fd2e8a992ae265314300b2455d5c" -dependencies = [ - "rand_core 0.3.1", + "rand_core", ] [[package]] name = "rayon" -version = "1.4.0" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cfd016f0c045ad38b5251be2c9c0ab806917f82da4d36b2a327e5166adad9270" +checksum = "8b0d8e0819fadc20c74ea8373106ead0600e3a67ef1fe8da56e39b9ae7275674" dependencies = [ - "autocfg 1.0.1", + "autocfg", "crossbeam-deque", "either", "rayon-core", @@ -1198,9 +870,9 @@ dependencies = [ [[package]] name = "rayon-core" -version = "1.8.0" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91739a34c4355b5434ce54c9086c5895604a9c278586d1f1aa95e04f66b525a0" +checksum = "9ab346ac5921dc62ffa9f89b7a773907511cdfa5490c572ae9be1be33e8afa4a" dependencies = [ "crossbeam-channel", "crossbeam-deque", @@ -1209,42 +881,41 @@ dependencies = [ "num_cpus", ] -[[package]] -name = "rdrand" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "678054eb77286b51581ba43620cc911abf02758c91f93f479767aed0f90458b2" -dependencies = [ - "rand_core 0.3.1", -] - [[package]] name = "redox_syscall" version = "0.1.57" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "41cc0f7e4d5d4544e8861606a285bb08d3e70712ccc7d2b84d7c0ccfaf4b05ce" +[[package]] +name = "redox_syscall" +version = "0.2.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "742739e41cd49414de871ea5e549afb7e2a3ac77b589bcbebe8c82fab37147fc" +dependencies = [ + "bitflags", +] + [[package]] name = "redox_users" version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "de0737333e7a9502c789a36d7c7fa6092a49895d4faa31ca5df163857ded2e9d" dependencies = [ - "getrandom", - "redox_syscall", + "getrandom 0.1.16", + "redox_syscall 0.1.57", "rust-argon2", ] [[package]] name = "regex" -version = "1.3.9" +version = "1.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c3780fcf44b193bc4d09f36d2a3c87b251da4a046c87795a0d35f4f927ad8e6" +checksum = "d07a8629359eb56f1e2fb1652bb04212c072a87ba68546a04065d525673ac461" dependencies = [ "aho-corasick", "memchr", "regex-syntax", - "thread_local", ] [[package]] @@ -1258,15 +929,15 @@ dependencies = [ [[package]] name = "regex-syntax" -version = "0.6.18" +version = "0.6.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26412eb97c6b088a6997e05f69403a802a92d520de2f8e63c2b65f9e0f47c4e8" +checksum = "f497285884f3fcff424ffc933e56d7cbca511def0c9831a7f9b5f6153e3cc89b" [[package]] name = "resolv-conf" -version = "0.6.3" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11834e137f3b14e309437a8276714eed3a80d1ef894869e510f2c0c0b98b9f4a" +checksum = "52e44394d2086d010551b14b53b1f24e31647570cd1deb0379e2c21b329aba00" dependencies = [ "hostname", "quick-error", @@ -1274,9 +945,9 @@ dependencies = [ [[package]] name = "rust-argon2" -version = "0.8.2" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9dab61250775933275e84053ac235621dfb739556d5c54a2f2e9313b7cf43a19" +checksum = "4b18820d944b33caa75a71378964ac46f58517c92b6ae5f762636247c09e78fb" dependencies = [ "base64", "blake2b_simd", @@ -1292,9 +963,9 @@ checksum = "3e52c148ef37f8c375d49d5a73aa70713125b7f19095948a923f80afdeb22ec2" [[package]] name = "rustc-demangle" -version = "0.1.16" +version = "0.1.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c691c0e608126e00913e33f0ccf3727d5fc84573623b8d65b2df340b5201783" +checksum = "410f7acf3cb3a44527c5d9546bad4bf4e6c460915d5f9f2fc524498bfe8f70ce" [[package]] name = "ryu" @@ -1302,16 +973,6 @@ version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "71d301d4193d031abdd79ff7e3dd721168a9572ef3fe51a1517aba235bd8f86e" -[[package]] -name = "schannel" -version = "0.1.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f05ba609c234e60bee0d547fe94a4c7e9da733d1c962cf6e59efa4cd9c8bc75" -dependencies = [ - "lazy_static", - "winapi 0.3.9", -] - [[package]] name = "scopeguard" version = "1.1.0" @@ -1326,9 +987,9 @@ checksum = "9dad3f759919b92c3068c696c15c3d17238234498bbdcc80f2c469606f948ac8" [[package]] name = "serde" -version = "1.0.115" +version = "1.0.125" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e54c9a88f2da7238af84b5101443f0c0d0a3bbdc455e34a5c9497b1903ed55d5" +checksum = "558dc50e1a5a5fa7112ca2ce4effcb321b0300c0d4ccf0776a9f60cd89031171" dependencies = [ "serde_derive", ] @@ -1340,7 +1001,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6a3a4e0ea8a88553209f6cc6cfe8724ecad22e1acf372793c27d995290fe74f8" dependencies = [ "lazy_static", - "linked-hash-map 0.3.0", "num-traits 0.1.43", "regex", "serde 0.8.23", @@ -1348,75 +1008,59 @@ dependencies = [ [[package]] name = "serde-xml-rs" -version = "0.4.0" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "efe415925cf3d0bbb2fc47d09b56ce03eef51c5d56846468a39bcc293c7a846c" +checksum = "f0bf1ba0696ccf0872866277143ff1fd14d22eec235d2b23702f95e6660f7dfa" dependencies = [ "log", - "serde 1.0.115", + "serde 1.0.125", "thiserror", "xml-rs", ] [[package]] name = "serde_derive" -version = "1.0.115" +version = "1.0.125" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "609feed1d0a73cc36a0182a840a9b37b4a82f0b1150369f0536a9e3f2a31dc48" +checksum = "b093b7a2bb58203b5da3056c05b4ec1fed827dcfdb37347a8841695263b3d06d" dependencies = [ - "proc-macro2 1.0.19", - "quote 1.0.7", - "syn 1.0.39", + "proc-macro2", + "quote", + "syn", ] [[package]] name = "serde_json" -version = "1.0.57" +version = "1.0.64" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "164eacbdb13512ec2745fb09d51fd5b22b0d65ed294a1dcf7285a360c80a675c" +checksum = "799e97dc9fdae36a5c8b8f2cae9ce2ee9fdce2058c57a93e6099d919fd982f79" dependencies = [ "itoa", "ryu", - "serde 1.0.115", + "serde 1.0.125", ] -[[package]] -name = "serde_test" -version = "0.8.23" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "110b3dbdf8607ec493c22d5d947753282f3bae73c0f56d322af1e8c78e4c23d5" -dependencies = [ - "serde 0.8.23", -] - -[[package]] -name = "siphasher" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b8de496cf83d4ed58b6be86c3a275b8602f6ffe98d3024a869e124147a9a3ac" - [[package]] name = "slab" -version = "0.4.2" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c111b5bd5695e56cffe5129854aa230b39c93a305372fdbb2668ca2394eea9f8" +checksum = "f173ac3d1a7e3b28003f40de0b5ce7fe2710f9b9dc3fc38664cebee46b3b6527" [[package]] name = "smallvec" -version = "1.4.2" +version = "1.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fbee7696b84bbf3d89a1c2eccff0850e3047ed46bfcd2e92c29a2d074d57e252" +checksum = "fe0f37c9e8f3c5a4a66ad655a93c74daac4ad00c441533bf5c6e7990bb42604e" [[package]] name = "socket2" -version = "0.3.12" +version = "0.3.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03088793f677dce356f3ccc2edb1b314ad191ab702a5de3faf49304f7e104918" +checksum = "122e570113d28d773067fab24266b66753f6ea915758651696b6e35e49f88d6e" dependencies = [ "cfg-if", "libc", - "redox_syscall", - "winapi 0.3.9", + "winapi", ] [[package]] @@ -1425,40 +1069,6 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" -[[package]] -name = "string_cache" -version = "0.7.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89c058a82f9fd69b1becf8c274f412281038877c553182f1d02eb027045a2d67" -dependencies = [ - "lazy_static", - "new_debug_unreachable", - "phf_shared", - "precomputed-hash", - "serde 1.0.115", - "string_cache_codegen", - "string_cache_shared", -] - -[[package]] -name = "string_cache_codegen" -version = "0.4.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0f45ed1b65bf9a4bf2f7b7dc59212d1926e9eaf00fa998988e420fd124467c6" -dependencies = [ - "phf_generator", - "phf_shared", - "proc-macro2 1.0.19", - "quote 1.0.7", - "string_cache_shared", -] - -[[package]] -name = "string_cache_shared" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1884d1bc09741d466d9b14e6d37ac89d6909cbcac41dd9ae982d4d063bbedfc" - [[package]] name = "strsim" version = "0.8.0" @@ -1467,24 +1077,13 @@ checksum = "8ea5119cdb4c55b55d432abb513a0429384878c15dde60cc77b1c99de1a95a6a" [[package]] name = "syn" -version = "0.15.44" +version = "1.0.72" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ca4b3b69a77cbe1ffc9e198781b7acb0c7365a883670e8f1c1bc66fba79a5c5" +checksum = "a1e8cdbefb79a9a5a65e0db8b47b723ee907b7c7f8496c76a1770b5c310bab82" dependencies = [ - "proc-macro2 0.4.30", - "quote 0.6.13", - "unicode-xid 0.1.0", -] - -[[package]] -name = "syn" -version = "1.0.39" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "891d8d6567fe7c7f8835a3a98af4208f3846fba258c1bc3c31d6e506239f11f9" -dependencies = [ - "proc-macro2 1.0.19", - "quote 1.0.7", - "unicode-xid 0.2.1", + "proc-macro2", + "quote", + "unicode-xid", ] [[package]] @@ -1493,21 +1092,10 @@ version = "0.12.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b834f2d66f734cb897113e34aaff2f1ab4719ca946f9a7358dba8f8064148701" dependencies = [ - "proc-macro2 1.0.19", - "quote 1.0.7", - "syn 1.0.39", - "unicode-xid 0.2.1", -] - -[[package]] -name = "tendril" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "707feda9f2582d5d680d733e38755547a3e8fb471e7ba11452ecfd9ce93a5d3b" -dependencies = [ - "futf", - "mac", - "utf-8", + "proc-macro2", + "quote", + "syn", + "unicode-xid", ] [[package]] @@ -1518,7 +1106,7 @@ checksum = "edd106a334b7657c10b7c540a0106114feadeb4dc314513e97df481d5d966f42" dependencies = [ "byteorder", "dirs", - "winapi 0.3.9", + "winapi", ] [[package]] @@ -1532,31 +1120,22 @@ dependencies = [ [[package]] name = "thiserror" -version = "1.0.20" +version = "1.0.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7dfdd070ccd8ccb78f4ad66bf1982dc37f620ef696c6b5028fe2ed83dd3d0d08" +checksum = "e0f4a65597094d4483ddaed134f409b2cb7c1beccf25201a9f73c719254fa98e" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.20" +version = "1.0.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd80fc12f73063ac132ac92aceea36734f04a1d93c1240c6944e23a3b8841793" +checksum = "7765189610d8241a44529806d6fd1f2e0a08734313a35d5b3a556f92b381f3c0" dependencies = [ - "proc-macro2 1.0.19", - "quote 1.0.7", - "syn 1.0.39", -] - -[[package]] -name = "thread_local" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d40c6d1b69745a6ec6fb1ca717914848da4b44ae29d9b3080cbee91d72a69b14" -dependencies = [ - "lazy_static", + "proc-macro2", + "quote", + "syn", ] [[package]] @@ -1567,71 +1146,84 @@ checksum = "6db9e6914ab8b1ae1c260a4ae7a49b6c5611b40328a735b21862567685e73255" dependencies = [ "libc", "wasi 0.10.0+wasi-snapshot-preview1", - "winapi 0.3.9", + "winapi", ] [[package]] name = "tinyvec" -version = "0.3.4" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "238ce071d267c5710f9d31451efec16c5ee22de34df17cc05e56cbc92e967117" +checksum = "5b5220f05bb7de7f3f53c7c065e1199b3172696fe2db9f9c4d8ad9b4ee74c342" +dependencies = [ + "tinyvec_macros", +] + +[[package]] +name = "tinyvec_macros" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cda74da7e1a664f795bb1f8a87ec406fb89a02522cf6e50620d016add6dbbf5c" [[package]] name = "tokio" -version = "0.2.22" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d34ca54d84bf2b5b4d7d31e901a8464f7b60ac145a284fba25ceb801f2ddccd" +checksum = "83f0c8e7c0addab50b663055baf787d0af7f413a46e6e7fb9559a4e4db7137a5" dependencies = [ - "bytes", - "iovec", - "lazy_static", + "autocfg", + "libc", "mio", + "num_cpus", "pin-project-lite", - "slab", ] [[package]] name = "toml" -version = "0.5.6" +version = "0.5.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ffc92d160b1eef40665be3a05630d003936a3bc7da7421277846c2613e92c71a" +checksum = "a31142970826733df8241ef35dc040ef98c679ab14d7c3e54d827099b3acecaa" dependencies = [ - "serde 1.0.115", + "serde 1.0.125", ] [[package]] name = "trust-dns-proto" -version = "0.19.5" +version = "0.20.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cdd7061ba6f4d4d9721afedffbfd403f20f39a4301fee1b70d6fcd09cca69f28" +checksum = "952a078337565ba39007de99b151770f41039253a31846f0a3d5cd5a4ac8eedf" dependencies = [ "async-trait", - "backtrace", + "cfg-if", + "data-encoding", "enum-as-inner", - "futures", + "futures-channel", + "futures-io", + "futures-util", "idna", + "ipnet", "lazy_static", "log", - "rand 0.7.3", + "rand", "smallvec", "thiserror", + "tinyvec", "tokio", "url", ] [[package]] name = "trust-dns-resolver" -version = "0.19.5" +version = "0.20.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f23cdfdc3d8300b3c50c9e84302d3bd6d860fb9529af84ace6cf9665f181b77" +checksum = "da9c97f7d103e0f94dbe384a57908833505ae5870126492f166821b7cf685589" dependencies = [ - "backtrace", "cfg-if", - "futures", + "futures-util", "ipconfig", "lazy_static", "log", "lru-cache", + "parking_lot", "resolv-conf", "smallvec", "thiserror", @@ -1641,27 +1233,27 @@ dependencies = [ [[package]] name = "unicode-bidi" -version = "0.3.4" +version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49f2bd0c6468a8230e1db229cff8029217cf623c767ea5d60bfbd42729ea54d5" +checksum = "eeb8be209bb1c96b7c177c7420d26e04eccacb0eeae6b980e35fcb74678107e0" dependencies = [ "matches", ] [[package]] name = "unicode-normalization" -version = "0.1.13" +version = "0.1.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6fb19cf769fa8c6a80a162df694621ebeb4dafb606470b2b2fce0be40a98a977" +checksum = "07fbfce1c8a97d547e8b5334978438d9d6ec8c20e38f56d4a4374d181493eaef" dependencies = [ "tinyvec", ] [[package]] name = "unicode-segmentation" -version = "1.6.0" +version = "1.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e83e153d1053cbb5a118eeff7fd5be06ed99153f00dbcd8ae310c5fb2b22edc0" +checksum = "bb0d2e7be6ae3a5fa87eed5fb451aff96f2573d2694942e40543ae0bbe19c796" [[package]] name = "unicode-width" @@ -1671,15 +1263,9 @@ checksum = "9337591893a19b88d8d87f2cec1e73fad5cdfd10e5a6f349f498ad6ea2ffb1e3" [[package]] name = "unicode-xid" -version = "0.1.0" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc72304796d0818e357ead4e000d19c9c174ab23dc11093ac919054d20a6a7fc" - -[[package]] -name = "unicode-xid" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7fe0bb3479651439c9112f72b6c505038574c9fbb575ed1bf3b797fa39dd564" +checksum = "8ccb82d61f80a663efe1f787a51b16b5a51e3314d6ac365b08639f52387b33f3" [[package]] name = "unimap" @@ -1695,38 +1281,32 @@ dependencies = [ "log", "openssl", "prettytable-rs", - "rand 0.7.3", + "rand", "rayon", - "serde 1.0.115", + "serde 1.0.125", "serde-xml-rs", "serde_derive", "trust-dns-resolver", - "webpage", - "winapi 0.3.9", + "winapi", ] [[package]] name = "url" -version = "2.1.1" +version = "2.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "829d4a8476c35c9bf0bbce5a3b23f4106f79728039b726d292bb93bc106787cb" +checksum = "a507c383b2d33b5fc35d1861e77e6b383d158b2da5e14fe51b83dfedf6fd578c" dependencies = [ + "form_urlencoded", "idna", "matches", "percent-encoding", ] -[[package]] -name = "utf-8" -version = "0.7.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05e42f7c18b8f902290b009cde6d651262f956c98bc51bca4cd1d511c9cd85c7" - [[package]] name = "vcpkg" -version = "0.2.10" +version = "0.2.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6454029bf181f092ad1b853286f23e2c507d8e8194d01d92da4a55c274a5508c" +checksum = "cbdbff6266a24120518560b5dc983096efb98462e51d0d68169895b237be3e5d" [[package]] name = "vec_map" @@ -1736,9 +1316,9 @@ checksum = "f1bddf1187be692e79c5ffeab891132dfb0f236ed36a43c7ed39f1165ee20191" [[package]] name = "version_check" -version = "0.9.2" +version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5a972e5669d67ba988ce3dc826706fb0a8b01471c088cb0b6110b805cc36aed" +checksum = "5fecdca9a5291cc2b8dcf7dc02453fee791a280f3743cb0905f8822ae463b3fe" [[package]] name = "wasi" @@ -1752,28 +1332,11 @@ version = "0.10.0+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1a143597ca7c7793eff794def352d41792a93c481eb1042423ff7ff72ba2c31f" -[[package]] -name = "webpage" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "520918a9a8388af7bd5ead603eac6bee26567cdae6c06a35f79d9e310c2aaf94" -dependencies = [ - "curl", - "html5ever", - "serde_json", -] - [[package]] name = "widestring" -version = "0.4.2" +version = "0.4.3" 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" +checksum = "c168940144dd21fd8046987c16a46a33d5fc84eec29ef9dcddc2ac9e31526b7c" [[package]] name = "winapi" @@ -1785,12 +1348,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" @@ -1809,17 +1366,7 @@ 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", + "winapi", ] [[package]] @@ -1836,9 +1383,9 @@ checksum = "e66366e18dc58b46801afbf2ca7661a9f59cc8c5962c29892b6039b4f86fa992" [[package]] name = "yaml-rust" -version = "0.4.4" +version = "0.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39f0c922f1a334134dc2f7a8b67dc5d25f0735263feec974345ff706bcf20b0d" +checksum = "56c1936c4cc7a1c9ab21a1ebb602eb942ba868cbd44a99cb7cdc5892335e1c85" dependencies = [ - "linked-hash-map 0.5.3", + "linked-hash-map", ] diff --git a/Cargo.toml b/Cargo.toml index 43a9766..af9a7a5 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -12,30 +12,29 @@ readme = "README.md" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] -trust-dns-resolver = "0.19.5" -rayon = "1.4.0" -log = { version = "0.4.11", features = ["std"] } -colored = { version = "1.9.3", optional = true } -rand = "0.7.3" +trust-dns-resolver = "0.20.2" +rayon = "1.5.0" +log = { version = "0.4.14", features = ["std"] } +colored = { version = "2.0.0", optional = true } +rand = "0.8.3" lazy_static = "1.4.0" -serde = { version = "1.0.114", features = ["derive"] } -serde_derive = "1.0.114" +serde = { version = "1.0.125", features = ["derive"] } +serde_derive = "1.0.125" prettytable-rs = "0.8.0" -serde-xml-rs = "0.4.0" -webpage = "1.1.0" -chrono = "0.4.15" -clap = { version = "2.33.1", features = ["yaml"] } -config = { version = "0.10.1", features = ["yaml", "json", "toml", "hjson", "ini"] } +serde-xml-rs = "0.4.1" +chrono = "0.4.19" +clap = { version = "2.33.3", features = ["yaml"] } +config = { version = "0.11.0", features = ["yaml", "json", "toml", "hjson", "ini"] } failure = "0.1.8" [target.arm-unknown-linux-gnueabihf.dependencies] -openssl = { version = "0.10.30", features = ["vendored"] } +openssl = { version = "0.10.34", features = ["vendored"] } [target.aarch64-unknown-linux-gnu.dependencies] -openssl = { version = "0.10.30", features = ["vendored"] } +openssl = { version = "0.10.34", features = ["vendored"] } [target.armv7-unknown-linux-gnueabihf.dependencies] -openssl = { version = "0.10.30", features = ["vendored"] } +openssl = { version = "0.10.34", features = ["vendored"] } [target.'cfg(windows)'.dependencies] atty = "0.2.14" From 4b35130fc3b3baec79a87c1b542ed6913d835a24 Mon Sep 17 00:00:00 2001 From: Edu4rdSHL Date: Sun, 9 May 2021 02:06:54 -0500 Subject: [PATCH 15/62] Update DNS to only well-known ones. --- src/defaults.rs | 1960 +---------------------------------------------- 1 file changed, 16 insertions(+), 1944 deletions(-) diff --git a/src/defaults.rs b/src/defaults.rs index 5a5d87f..2471345 100644 --- a/src/defaults.rs +++ b/src/defaults.rs @@ -1,1957 +1,29 @@ pub fn ipv4_resolvers() -> Vec { // DNS were validate with dnsvalidator the 03/09/2020 vec![ - "74.82.42.42", - "209.252.188.104", - "64.72.140.227", - "68.87.75.194", - "216.237.114.149", - "209.237.227.198", - "77.68.46.206", - "77.68.46.179", - "109.70.132.18", - "201.225.225.50", - "212.88.231.138", - "51.75.36.43", - "46.182.19.48", - "185.92.196.182", - "83.69.120.1", - "77.95.89.99", - "61.219.228.166", - "82.196.13.196", - "101.110.34.62", - "219.252.2.100", - "103.245.147.201", - "193.17.212.14", - "77.68.46.58", - "38.109.190.182", - "200.148.191.197", - "77.68.41.48", - "208.180.0.250", - "124.6.168.81", - "202.92.168.47", - "200.87.195.70", - "217.30.169.18", - "168.1.79.229", - "193.159.232.5", - "81.211.96.62", - "61.222.14.170", - "198.99.193.2", - "194.44.153.155", - "190.56.135.221", - "103.22.245.70", - "192.146.229.22", - "62.63.194.114", - "212.244.48.137", - "62.97.223.62", - "222.118.225.37", - "103.85.107.102", - "194.65.30.2", - "159.192.137.80", - "181.114.59.245", - "181.110.241.74", - "91.229.232.218", - "95.97.99.106", - "187.120.208.172", - "109.228.24.78", - "198.0.52.60", - "119.75.32.114", - "201.220.136.186", - "179.191.86.162", - "194.8.128.12", - "80.53.221.126", - "184.67.74.179", - "64.6.65.6", - "109.124.72.180", - "141.0.102.202", - "45.55.147.169", - "142.165.177.96", - "202.248.20.133", - "211.75.84.238", - "62.99.77.54", - "80.66.120.34", - "54.229.171.243", - "114.141.2.103", - "91.217.86.4", - "150.254.125.203", - "68.87.68.166", - "178.248.160.140", - "179.60.235.209", - "186.219.160.7", - "85.175.194.48", - "80.81.232.30", - "162.243.19.47", - "217.149.188.158", - "80.178.170.176", - "89.255.2.228", - "148.251.194.74", - "93.187.83.201", - "41.231.30.138", - "142.77.2.36", - "194.78.185.81", - "213.244.66.226", - "117.53.46.10", - "210.87.250.154", - "164.124.101.2", - "203.211.131.26", - "129.250.35.250", - "124.6.167.149", - "187.157.46.210", - "112.216.108.254", - "216.17.128.1", - "54.39.97.51", - "213.163.127.229", - "62.219.21.64", - "207.188.83.213", - "195.53.69.132", - "201.174.34.194", - "201.28.69.242", - "202.44.53.251", - "91.200.227.141", - "208.67.220.220", - "45.235.35.235", - "50.194.130.97", - "191.253.65.194", - "158.43.240.4", - "196.200.184.31", - "87.229.181.38", - "104.36.234.65", - "41.57.120.177", - "193.109.160.177", - "94.56.151.22", - "83.221.202.188", - "58.185.177.165", - "180.94.69.123", - "186.225.194.29", - "175.100.120.27", - "76.164.163.150", - "51.83.147.174", - "109.70.207.80", - "82.208.99.185", - "200.196.57.42", - "79.190.224.27", - "193.95.93.243", - "61.83.152.140", - "31.133.9.213", - "185.98.244.214", - "9.9.9.12", - "46.105.55.84", - "202.43.162.100", - "177.159.232.52", - "199.85.126.10", - "207.35.8.163", - "61.19.42.5", - "144.76.83.104", - "68.87.73.242", - "157.92.190.15", - "93.95.215.84", - "203.126.238.211", - "41.225.15.201", - "147.97.16.66", - "97.64.150.73", - "203.141.131.66", - "103.16.128.53", - "62.82.213.91", - "192.232.128.20", - "85.88.19.10", - "24.181.107.227", - "217.8.34.70", - "82.194.76.71", - "69.20.190.253", - "131.220.20.199", - "137.59.155.14", - "211.75.84.234", - "209.213.232.32", - "211.181.233.206", - "156.154.71.1", - "68.87.73.246", - "200.45.184.43", - "62.122.103.59", - "89.171.68.66", - "193.109.163.202", - "37.235.70.59", - "81.1.217.134", - "207.179.3.26", - "103.196.124.1", - "186.194.224.82", - "77.68.45.252", - "103.113.200.10", - "210.63.146.133", - "173.244.83.5", - "194.170.223.73", - "119.59.112.202", - "91.223.120.25", - "109.228.7.94", - "68.87.77.130", - "125.227.152.121", - "79.143.180.116", - "177.67.81.134", - "203.127.232.194", - "117.122.125.106", - "194.247.25.110", - "193.26.6.215", - "117.54.10.217", - "60.249.212.149", - "64.84.120.1", - "91.229.232.57", - "201.174.34.195", - "37.235.1.174", - "209.141.60.226", - "200.99.138.13", - "59.124.115.19", - "202.62.11.75", - "170.247.211.253", - "114.4.109.102", - "202.175.89.60", - "176.67.0.60", - "62.97.123.106", - "92.46.49.13", - "221.163.74.11", - "65.73.54.2", - "201.116.184.131", - "171.25.229.166", - "213.184.147.26", - "199.255.95.193", - "213.191.151.178", - "65.111.169.166", - "80.67.169.12", - "218.188.215.94", - "62.97.196.149", - "64.128.251.228", - "193.252.175.10", - "79.161.49.34", - "5.102.56.38", - "89.236.213.118", - "212.100.143.211", - "198.251.100.2", - "206.251.24.16", - "91.205.144.27", - "59.124.69.205", - "91.235.168.254", - "46.231.210.26", - "162.221.207.228", - "51.15.98.97", - "200.110.130.195", - "209.211.254.19", - "115.178.73.100", - "189.55.193.173", - "202.44.45.11", - "82.223.210.111", - "124.6.167.91", - "193.15.1.54", - "159.255.193.22", - "198.175.228.44", - "212.170.159.10", - "50.78.210.9", - "216.169.187.240", - "92.36.225.9", - "121.202.228.25", - "138.204.13.243", - "94.247.43.254", - "93.62.200.35", - "45.33.97.5", - "210.245.89.21", - "113.197.68.20", - "194.224.52.37", - "202.49.127.71", - "181.224.225.3", - "211.105.7.5", - "217.75.213.19", - "90.188.10.193", - "104.131.37.180", - "31.47.196.210", - "103.254.106.166", - "200.105.133.162", - "200.37.71.2", - "202.58.199.170", - "202.46.34.75", - "178.20.112.23", - "211.72.210.250", - "41.226.252.81", - "190.11.225.2", - "175.139.150.29", - "130.244.126.100", - "189.113.132.101", - "193.200.69.233", - "45.71.185.100", - "54.252.183.4", - "77.68.45.191", - "98.102.1.125", - "109.70.207.44", - "200.178.216.67", - "85.90.160.69", - "89.233.43.71", - "195.8.8.1", - "119.160.80.164", - "200.222.51.208", - "62.28.175.214", - "98.101.120.225", - "93.123.112.99", - "195.88.203.248", - "200.169.8.1", - "202.40.179.6", - "188.0.173.134", - "203.231.29.131", - "124.6.190.28", - "178.237.152.146", - "209.244.0.3", - "109.123.19.5", - "115.127.19.137", - "45.64.60.185", - "213.32.68.137", - "142.77.2.85", - "188.118.227.21", - "124.6.164.69", - "114.114.115.115", - "109.228.9.40", - "162.247.147.98", - "213.171.217.148", - "64.107.45.5", - "82.211.160.58", - "198.175.228.33", - "193.230.183.201", - "114.114.115.119", - "158.193.86.29", - "125.141.144.67", - "41.221.186.250", - "200.172.90.4", - "213.182.60.11", - "200.41.191.126", - "194.179.1.101", - "95.129.96.154", - "92.103.144.222", - "194.247.190.70", - "217.13.116.5", - "93.63.229.132", - "177.135.204.163", - "77.68.92.54", - "84.124.52.46", - "194.68.117.129", - "145.253.95.37", - "213.156.49.106", - "113.59.228.125", - "169.53.182.120", - "213.5.120.2", - "81.3.169.172", - "200.142.160.54", - "66.76.13.250", - "85.30.174.220", - "190.57.233.101", - "64.9.50.67", - "194.168.4.123", - "194.243.154.57", - "79.141.83.250", - "211.75.48.98", - "211.179.185.237", - "168.126.63.1", - "193.33.224.253", - "181.14.195.114", - "124.6.173.69", - "37.59.80.218", - "134.153.233.140", - "79.187.201.181", - "202.86.129.98", - "80.83.162.11", - "85.19.217.194", - "216.228.104.3", - "162.248.241.94", - "74.203.248.220", - "169.38.73.5", - "217.13.80.252", - "200.248.178.54", - "122.56.105.82", - "124.6.147.164", - "201.45.193.131", - "177.131.114.86", - "177.135.205.210", - "177.130.60.40", - "200.162.136.138", - "64.6.64.6", - "68.87.64.146", - "161.200.96.9", - "62.212.113.125", - "187.32.81.223", - "125.212.202.19", - "23.101.74.156", - "65.111.169.164", - "83.240.158.216", - "195.235.225.10", - "62.134.17.82", - "217.170.133.134", - "139.99.40.107", - "203.180.100.14", - "200.220.192.88", - "115.127.19.129", - "202.44.55.66", - "91.229.232.58", - "210.59.209.19", - "104.152.211.99", - "188.227.240.58", - "194.224.52.36", - "62.146.202.2", - "194.224.229.56", - "209.237.227.203", - "61.125.143.90", - "202.4.188.227", - "123.30.235.111", - "124.6.167.183", - "193.183.18.21", - "8.15.12.5", - "193.252.10.2", - "111.92.237.107", - "190.104.199.129", - "69.60.134.50", - "15.206.75.44", - "216.237.114.148", - "148.78.200.7", - "37.29.119.100", - "80.55.253.114", - "103.77.188.19", - "188.122.90.219", - "188.128.110.66", - "91.117.103.227", - "92.154.30.50", - "186.216.62.5", - "88.151.140.202", - "210.48.77.68", - "156.154.70.1", - "217.108.101.30", - "81.27.162.100", - "85.93.212.2", - "80.250.60.241", - "170.210.83.110", - "103.15.62.69", - "64.2.142.22", - "209.200.117.42", - "213.229.161.85", - "91.229.232.216", - "61.47.34.4", - "176.28.107.12", - "85.30.180.144", + // Cloudflare "1.1.1.1", - "1.241.172.70", - "116.125.119.2", - "203.209.127.103", - "62.160.100.242", - "82.127.168.41", - "168.9.128.14", - "181.48.29.108", - "69.24.197.9", - "190.105.152.28", - "88.204.180.222", - "88.157.200.129", - "66.162.39.114", - "112.171.175.135", - "107.191.48.176", - "80.78.237.33", - "50.203.152.202", - "176.103.130.130", - "60.249.37.54", - "81.82.196.44", - "24.181.107.231", "1.0.0.1", - "177.43.76.244", - "95.85.108.141", - "195.77.162.220", - "186.148.128.86", - "188.165.245.118", - "83.103.61.107", - "101.110.50.106", - "68.87.76.182", - "212.23.64.92", - "201.247.40.58", - "194.250.200.153", - "80.78.237.4", - "9.9.9.11", - "92.60.50.40", - "62.251.167.196", - "189.124.138.68", - "5.103.179.10", - "72.51.45.108", - "209.209.217.168", - "210.227.116.101", - "91.208.193.1", - "195.88.154.11", - "62.196.2.70", - "103.224.162.40", - "212.145.159.96", - "222.118.225.33", - "109.73.88.54", - "213.108.122.97", - "173.167.215.62", - "158.43.128.1", - "85.214.20.141", - "88.151.179.6", - "194.158.78.137", - "76.72.248.34", - "91.203.177.216", - "124.6.188.231", - "212.19.96.2", - "124.6.175.129", - "206.212.241.14", - "177.19.217.206", - "88.208.248.13", - "68.87.68.162", - "103.28.113.6", - "5.83.92.254", - "185.222.222.222", - "40.86.216.160", - "37.152.45.194", - "212.247.9.100", - "43.245.180.22", - "95.104.194.3", - "211.194.150.11", - "31.3.112.165", - "24.229.250.113", - "14.35.201.12", - "62.94.0.41", - "177.85.176.140", - "109.70.207.146", - "200.221.11.101", - "91.229.232.7", - "80.80.80.80", - "43.249.196.93", - "166.130.64.29", - "187.32.81.194", - "178.88.161.200", - "95.154.98.171", - "202.29.172.153", - "117.53.44.238", - "161.200.65.9", - "148.235.82.66", - "62.28.227.166", - "80.179.155.145", - "108.179.34.214", - "187.33.230.114", - "74.120.24.81", - "95.87.252.178", - "193.190.213.42", - "109.228.7.95", - "87.96.144.179", - "217.128.152.57", - "193.238.75.217", - "220.130.145.66", - "216.55.99.221", - "78.156.159.132", - "212.9.28.233", - "68.87.74.162", - "131.100.36.162", - "193.251.169.83", - "164.77.245.34", - "46.254.14.12", - "212.118.241.33", - "109.228.17.231", - "198.153.194.1", - "85.93.217.105", - "217.195.211.116", - "84.200.70.40", - "67.79.47.3", - "195.189.130.1", - "211.214.160.228", - "177.20.178.12", - "60.251.1.50", - "60.248.94.66", - "180.94.94.194", - "195.198.13.186", - "212.163.193.3", - "103.232.65.73", - "46.246.29.69", - "118.163.51.86", - "139.59.219.245", - "212.66.129.108", - "200.179.97.194", - "124.6.165.253", - "103.87.160.66", - "217.77.71.1", - "210.71.250.93", - "62.40.32.33", - "190.4.63.110", - "193.110.252.21", - "65.111.169.169", - "200.115.141.136", - "217.115.40.123", - "213.184.224.254", - "84.54.226.50", - "58.27.149.70", - "219.166.58.234", - "81.211.21.98", - "125.227.62.229", - "216.106.1.2", - "62.152.66.26", - "82.253.23.73", - "187.188.112.16", - "46.228.199.116", - "124.6.165.95", - "212.118.241.1", - "89.255.2.227", - "78.228.158.48", - "202.147.193.110", - "103.194.120.33", - "195.53.69.148", - "173.167.215.57", - "87.103.120.164", - "168.126.93.10", - "124.6.169.87", - "124.219.73.220", - "109.228.0.51", - "202.46.34.74", - "85.113.208.130", - "208.67.222.222", - "59.124.189.250", - "75.103.119.77", - "5.57.148.177", - "186.193.181.226", - "201.30.200.141", - "213.182.187.65", - "212.230.255.1", - "66.175.146.133", - "193.79.242.39", - "84.53.244.67", - "213.24.237.210", - "210.61.2.99", - "207.179.3.25", - "41.225.236.101", - "5.9.172.92", - "193.58.204.59", - "185.68.179.183", - "159.69.114.157", - "195.234.239.130", - "80.228.9.26", - "201.149.3.110", - "110.45.158.83", - "68.216.230.2", - "43.240.229.194", - "193.126.26.67", - "59.125.7.96", - "69.20.190.209", - "78.136.66.5", - "209.237.227.195", - "178.210.102.193", - "213.82.20.188", - "179.127.175.242", - "83.170.202.226", - "109.70.207.43", - "203.235.1.3", - "109.92.22.97", - "103.61.69.185", - "217.18.206.22", - "186.179.241.146", - "192.100.164.125", - "165.227.162.76", - "211.193.163.251", - "81.95.125.20", - "218.145.160.73", - "193.2.246.9", - "89.255.2.226", - "211.107.234.129", - "193.110.60.3", - "213.13.125.138", - "66.6.128.111", - "200.105.253.170", - "77.34.10.67", - "103.13.31.240", - "212.91.32.6", - "59.124.72.210", - "60.236.29.52", - "95.154.173.200", - "185.43.135.1", - "86.36.50.135", - "121.176.16.144", - "103.8.27.14", - "81.83.4.154", - "218.38.58.185", - "1.242.63.131", - "103.209.52.250", - "217.13.116.4", - "9.9.9.9", - "203.230.200.2", - "106.240.228.50", - "189.254.4.147", - "177.36.152.171", - "194.42.198.199", - "80.15.35.59", - "194.78.250.42", - "177.184.131.54", - "178.150.114.97", - "103.22.245.50", - "121.152.231.196", - "130.185.242.224", - "1.1.141.30", - "195.46.186.75", - "177.86.233.170", - "62.149.176.8", - "85.214.98.185", - "177.159.232.50", - "194.145.240.7", - "87.229.187.110", - "91.229.232.10", - "212.31.32.131", - "103.29.44.1", - "186.160.127.29", - "212.31.32.130", - "88.213.251.98", - "124.6.167.4", - "111.93.163.56", - "222.122.43.43", - "182.171.247.189", - "128.8.221.10", - "195.77.252.34", - "178.33.255.52", - "193.238.102.55", - "194.125.133.11", - "62.28.103.134", - "62.85.160.208", - "94.190.183.145", - "92.247.24.30", - "85.66.180.84", - "140.116.86.51", - "213.242.237.69", - "93.187.83.200", - "159.134.248.17", - "78.7.251.131", - "188.92.209.129", - "24.181.107.226", - "212.124.226.242", - "211.188.11.201", - "31.47.196.211", - "37.99.224.30", - "199.85.127.20", - "77.193.70.146", - "185.126.246.17", - "184.71.101.186", - "187.1.175.86", - "109.69.8.51", - "91.205.3.65", - "189.89.165.114", - "109.228.8.250", - "216.38.105.6", - "209.225.106.43", - "51.75.250.34", - "82.80.196.156", - "195.55.127.169", - "101.255.56.249", - "62.181.235.45", - "212.119.193.78", - "194.172.160.4", - "1.1.1.3", - "121.202.135.11", - "23.226.80.100", - "83.174.232.18", - "103.114.24.19", - "69.90.142.11", - "109.202.11.6", - "59.125.15.236", - "75.103.118.14", - "62.93.184.194", - "62.86.183.222", - "218.102.23.228", - "46.19.103.248", - "218.103.92.84", - "200.174.105.3", - "213.0.77.8", - "208.80.0.62", - "194.213.61.98", - "109.228.4.246", - "62.153.165.107", - "217.12.181.97", - "190.56.163.189", - "68.87.72.134", - "64.132.94.250", - "168.187.46.242", - "217.182.198.203", - "124.6.167.35", - "195.88.203.251", - "86.48.98.10", - "129.71.254.12", - "178.237.150.2", - "93.91.140.127", - "195.243.214.4", - "190.128.224.236", - "84.199.232.98", - "64.127.83.170", - "175.117.145.35", - "80.228.63.124", - "190.57.238.43", - "200.252.235.20", - "80.248.193.165", - "164.100.138.248", - "193.226.61.1", - "131.100.182.222", - "182.71.213.139", - "216.106.88.3", - "91.229.232.30", - "201.247.58.46", - "213.195.214.123", - "41.228.66.65", - "202.175.113.124", - "77.89.232.86", - "81.246.5.131", - "221.157.68.100", - "198.190.61.1", - "109.228.8.12", - "95.155.226.229", - "14.63.217.213", - "108.162.46.243", - "194.7.15.70", - "198.50.212.61", - "194.213.40.45", - "203.8.201.10", - "81.23.225.34", - "89.23.192.109", - "89.236.217.93", - "41.202.163.74", - "83.166.175.220", - "212.244.78.90", - "223.165.64.97", - "203.126.107.195", - "212.152.166.82", - "202.158.38.162", - "207.172.157.201", - "163.24.162.3", - "61.78.35.206", - "211.18.198.110", - "81.180.117.110", - "91.143.212.70", - "80.71.178.68", - "213.24.238.26", - "90.183.151.107", - "195.8.8.2", - "84.200.69.80", - "139.59.218.207", - "213.91.221.2", - "194.7.138.41", - "204.193.157.31", - "92.245.149.39", - "78.130.38.222", - "180.76.76.76", - "62.251.175.254", - "197.159.166.83", - "213.124.119.218", - "124.6.164.213", - "115.249.253.81", - "24.48.219.154", - "177.155.135.81", - "188.40.115.29", - "195.167.205.68", - "177.43.35.247", - "69.59.209.34", - "207.99.19.69", - "211.72.106.204", - "51.75.125.29", - "213.11.172.45", - "213.181.166.26", - "203.146.26.8", - "8.8.4.4", - "209.50.14.35", - "77.68.45.190", - "202.145.243.2", - "190.109.224.227", - "177.124.247.2", - "204.70.127.127", - "61.111.22.2", - "114.29.234.235", - "206.51.143.55", - "195.162.8.154", - "116.212.96.75", - "205.171.202.66", - "199.88.158.1", - "46.171.32.54", - "212.75.208.170", - "84.91.197.19", - "83.171.107.52", - "83.145.86.7", - "213.171.110.153", - "186.215.192.243", - "74.207.1.50", - "103.47.134.195", - "62.97.204.18", - "200.223.129.162", - "216.46.141.99", - "125.227.243.159", - "122.155.6.206", - "200.99.138.103", - "213.229.188.142", - "77.68.36.51", - "83.103.36.213", - "62.233.128.17", - "62.146.25.130", - "91.137.135.75", - "4.0.0.53", - "118.219.234.144", - "193.77.138.83", - "86.53.112.126", - "66.199.241.115", - "84.52.103.114", - "209.252.188.103", - "61.8.0.113", - "84.18.156.85", - "83.246.140.204", - "61.60.85.66", - "82.134.16.250", - "82.148.207.170", - "119.201.155.161", - "77.68.44.26", - "195.26.152.19", - "207.47.132.29", - "190.8.168.1", - "91.147.96.169", - "206.165.6.12", - "182.19.95.34", - "12.166.247.4", - "94.138.192.35", - "211.129.155.175", - "199.29.211.1", - "90.183.151.106", - "62.28.183.147", - "189.125.73.13", - "177.15.67.65", - "193.194.70.66", - "109.225.91.208", - "210.1.31.42", - "80.72.49.57", - "204.15.52.15", - "59.125.86.230", - "148.251.92.241", - "62.244.115.228", - "124.6.167.115", - "212.33.190.217", - "122.146.127.199", - "200.150.112.58", - "90.83.2.169", - "216.136.95.2", - "202.158.49.187", - "164.42.183.3", - "195.22.25.130", - "211.72.109.235", - "68.87.75.198", - "205.171.202.25", - "65.48.143.44", - "170.239.213.68", - "195.129.12.122", - "190.211.104.93", - "89.26.249.19", - "109.234.248.8", - "185.66.9.142", - "61.209.255.131", - "75.150.235.81", + // Google "8.8.8.8", - "62.2.121.88", - "216.173.178.83", - "209.211.254.18", - "193.29.2.4", - "24.75.156.4", - "5.102.56.177", - "5.103.15.184", - "77.74.160.119", - "119.205.210.61", - "80.80.81.81", - "189.2.56.3", - "124.6.173.53", - "27.123.22.82", - "87.233.226.243", - "210.198.30.122", - "59.124.71.99", - "190.128.225.58", - "217.112.27.34", - "124.6.164.175", - "89.236.235.54", - "189.125.18.5", - "193.67.79.39", - "37.128.169.249", - "210.1.58.21", - "200.37.71.3", - "195.76.233.2", - "187.75.155.116", - "194.135.230.86", - "194.7.1.4", - "5.128.91.49", - "103.142.212.235", - "95.140.194.110", - "200.119.192.58", - "122.200.254.203", - "62.91.19.67", - "62.149.128.4", - "154.70.151.66", - "82.151.69.146", - "213.11.172.52", - "50.199.43.137", - "77.89.230.9", - "62.116.228.39", - "212.34.241.14", - "83.223.44.125", - "202.139.96.50", - "1.209.43.1", - "66.159.120.158", - "193.95.93.77", - "61.33.234.2", - "200.68.18.204", - "64.247.161.186", - "83.233.135.188", - "93.104.195.2", - "201.73.200.3", - "61.78.35.202", - "64.212.106.85", - "204.187.78.254", - "200.162.142.66", - "96.31.223.110", - "124.6.169.181", - "195.130.65.20", - "210.232.183.3", - "212.230.255.129", - "195.46.39.40", - "210.243.188.127", - "200.87.146.151", - "210.190.105.66", - "103.123.226.10", - "196.43.199.61", - "195.97.240.237", - "109.228.14.251", - "202.39.47.200", - "91.190.142.200", - "59.124.244.6", - "188.207.200.113", - "194.7.138.43", - "189.111.254.56", - "89.235.136.61", - "199.85.126.20", - "89.29.128.250", - "212.237.125.216", - "207.248.224.72", - "72.14.186.159", - "177.43.56.139", - "5.103.13.158", - "200.150.113.147", - "208.73.176.3", - "200.55.54.234", - "81.170.175.117", - "77.68.83.207", - "124.6.3.216", - "193.22.119.195", - "89.200.168.203", - "61.78.59.74", - "60.248.28.154", - "148.247.22.16", - "213.125.107.179", - "210.1.58.22", - "217.18.206.12", - "188.213.49.35", - "89.108.129.220", - "175.126.123.238", - "193.9.240.62", - "177.47.128.2", - "216.254.141.13", - "216.106.1.254", - "216.218.245.200", - "64.84.120.2", - "195.35.110.4", - "202.152.77.212", - "189.42.239.34", - "108.166.105.234", - "213.11.172.5", - "211.34.105.59", - "87.104.237.210", - "104.41.35.46", - "203.146.127.85", - "66.76.76.15", - "220.128.154.100", - "84.96.26.129", - "220.90.212.161", - "8.20.247.10", - "195.189.150.37", - "210.71.26.1", - "202.134.52.105", - "203.69.87.18", - "89.106.109.235", - "93.81.253.51", - "91.232.102.4", - "188.124.210.1", - "94.236.218.254", - "67.210.172.116", - "119.235.21.188", - "200.115.176.23", - "80.248.72.1", - "187.1.175.81", - "195.18.138.5", - "221.143.46.198", - "109.73.91.70", - "205.213.172.36", - "89.211.53.228", - "60.248.139.169", - "66.42.33.135", - "213.229.136.30", - "187.44.1.140", - "89.31.109.105", - "5.58.74.133", - "43.224.122.28", - "81.211.94.74", - "200.29.96.24", - "95.141.206.1", - "195.46.39.39", - "46.17.184.76", - "217.11.176.244", - "218.149.84.50", - "212.97.32.2", - "45.90.28.203", - "89.104.166.243", - "202.53.93.10", - "192.232.128.21", - "85.132.32.41", - "199.16.102.19", - "180.42.87.49", - "94.100.86.238", - "66.199.45.225", - "46.227.203.9", - "68.87.77.134", - "190.129.94.107", - "186.215.225.243", - "103.88.229.18", - "109.228.2.152", - "103.11.98.187", - "212.36.64.17", - "187.32.7.196", - "89.17.194.43", - "84.236.142.130", - "91.200.116.22", - "109.226.238.177", - "217.147.96.210", - "103.197.106.63", - "162.212.13.62", - "220.110.210.114", - "54.37.9.64", - "109.228.24.166", - "209.250.128.6", - "173.71.30.195", - "203.253.64.1", - "212.37.11.198", - "124.195.190.243", - "203.113.132.171", - "200.11.52.202", - "193.34.173.206", - "203.162.11.12", - "189.2.156.5", - "164.77.214.132", - "62.37.225.56", - "220.128.99.157", - "156.154.70.16", - "200.42.174.188", - "132.248.150.167", - "181.14.245.186", - "210.57.214.83", - "203.199.60.11", - "62.94.56.3", - "177.184.131.180", - "77.88.8.8", - "186.237.202.26", - "213.138.160.20", - "69.10.79.20", - "204.193.157.30", - "124.6.173.117", - "200.59.236.202", - "194.177.56.1", - "66.119.188.199", - "109.228.8.13", - "223.5.5.5", - "184.105.193.74", - "64.233.207.16", - "85.25.105.193", - "187.120.48.47", - "195.218.133.88", - "74.84.64.170", - "195.158.110.109", - "219.99.166.50", - "37.139.11.137", - "82.151.66.178", - "124.6.190.76", - "83.97.23.226", - "87.213.100.113", - "45.225.123.34", - "46.234.226.122", - "208.79.218.162", - "62.28.250.13", - "204.13.152.3", - "59.124.195.5", - "213.65.136.170", - "195.239.36.27", - "212.28.34.65", - "220.130.192.226", - "85.132.57.186", - "109.71.42.228", - "194.78.185.79", - "202.146.130.198", - "185.42.96.217", - "206.123.219.125", - "202.39.210.77", - "82.146.26.2", - "91.121.3.87", - "193.111.200.191", - "202.181.213.108", - "204.90.92.4", - "67.17.215.133", - "203.239.190.50", - "42.116.255.180", - "62.28.166.140", - "200.115.141.138", - "62.212.154.152", - "89.236.218.78", - "103.1.187.162", - "1.232.188.2", - "194.125.133.10", - "50.200.193.97", - "168.62.214.68", - "194.224.253.5", - "223.197.238.226", - "125.206.220.10", - "210.242.228.25", - "88.79.149.4", - "153.19.105.120", - "200.149.208.135", - "181.143.35.154", - "85.88.138.66", - "24.181.107.228", - "185.228.168.9", - "200.110.130.194", - "82.103.129.72", - "80.79.179.2", - "89.250.147.145", - "86.124.83.220", - "115.42.228.246", - "81.243.243.123", - "202.82.21.33", - "139.99.74.182", - "122.56.107.86", - "80.11.160.191", - "61.98.113.222", - "194.79.89.89", - "88.206.152.60", - "62.169.90.152", - "220.128.232.252", - "86.107.249.193", - "103.5.148.99", - "81.83.18.23", - "65.48.140.162", - "204.95.160.2", - "200.221.11.100", - "110.77.151.42", - "24.113.32.29", - "209.29.150.135", - "222.234.2.183", - "81.175.40.23", - "83.236.183.211", - "94.124.165.25", - "193.17.47.1", - "81.82.236.125", - "62.149.132.2", - "202.86.251.201", - "203.140.65.123", - "31.3.193.62", - "196.223.158.58", - "146.255.61.177", - "193.158.99.67", - "187.60.128.69", - "197.248.116.74", - "41.224.250.224", - "62.149.128.2", - "217.19.153.3", - "46.105.214.115", - "77.85.169.102", - "211.126.202.126", - "62.122.101.59", - "178.210.102.225", - "141.0.79.138", - "84.1.150.58", - "1.32.58.251", - "62.48.163.166", - "118.42.126.217", - "103.21.194.19", - "87.247.10.22", - "83.19.241.2", - "195.98.79.117", - "70.88.112.101", - "81.162.111.11", - "66.70.228.164", - "62.28.4.209", - "193.183.98.66", - "119.160.211.198", - "202.182.53.17", - "165.98.138.194", - "202.78.64.84", - "79.175.208.28", - "178.79.166.40", - "213.241.88.98", - "213.184.225.37", - "92.45.59.195", - "147.135.113.37", - "212.216.172.222", - "77.68.44.16", - "193.215.74.3", - "85.18.246.73", - "194.90.121.121", - "190.108.85.3", - "50.116.17.96", - "124.6.167.191", - "203.186.217.185", - "113.53.237.210", - "92.43.224.1", - "66.209.53.88", - "179.60.232.10", - "5.39.118.16", - "77.68.20.30", - "201.144.183.147", - "203.147.7.7", - "50.241.0.98", - "91.121.134.117", - "213.82.20.189", - "103.29.68.118", - "84.237.112.130", - "77.68.44.25", - "85.132.85.85", - "91.229.232.170", - "88.80.64.8", - "213.171.217.147", - "77.68.39.96", - "46.35.180.2", - "109.73.90.205", - "181.49.2.242", - "78.131.88.95", - "88.149.193.46", - "200.46.199.56", - "200.205.150.210", - "61.196.252.28", - "85.88.19.11", - "91.121.208.19", - "194.177.50.125", - "174.47.107.220", - "80.64.32.2", - "8.26.56.10", - "89.108.128.220", - "206.222.107.38", - "62.197.103.39", - "200.62.147.66", - "199.85.127.10", - "194.187.251.67", - "198.52.109.178", - "176.103.66.73", - "46.166.189.68", - "119.73.137.211", - "193.190.66.4", - "80.254.98.212", - "103.196.124.3", - "208.98.188.82", - "51.158.168.202", - "210.232.97.146", - "109.228.25.253", - "194.145.240.6", - "195.22.25.132", - "195.239.49.194", - "107.161.16.30", - "59.125.182.149", - "176.9.1.117", - "65.125.102.18", - "216.146.36.36", - "188.252.69.3", - "212.118.0.1", - "45.225.123.54", - "54.94.175.250", - "93.91.145.230", - "201.64.113.214", - "203.126.118.102", - "213.0.77.5", - "213.211.182.157", - "185.169.159.158", - "62.105.147.13", - "87.241.167.158", - "203.229.206.20", - "62.48.250.106", - "195.162.81.150", - "109.228.8.62", - "195.77.252.37", - "62.94.0.42", - "176.9.93.198", - "212.66.129.107", - "110.77.142.211", - "194.179.1.100", - "59.127.13.183", - "121.129.56.60", - "71.122.219.170", - "72.51.45.191", - "217.86.149.109", - "187.6.84.178", - "194.168.8.123", - "103.78.215.212", - "129.250.35.251", - "103.28.114.126", - "92.222.117.114", - "209.137.146.2", - "212.19.106.134", - "103.8.27.15", - "194.224.52.4", - "1.1.1.2", - "79.187.201.179", - "114.114.114.119", - "77.68.47.167", - "103.86.99.100", - "62.168.251.166", - "24.181.107.229", - "65.39.166.132", - "202.43.162.37", - "109.205.112.9", - "125.206.211.218", - "221.132.89.153", - "85.18.52.172", - "194.243.154.62", - "81.82.197.98", - "195.228.219.226", - "205.242.187.234", - "81.83.19.129", - "2.229.110.149", - "202.147.193.108", - "222.154.228.64", - "118.107.76.3", - "203.207.52.206", - "201.44.177.131", - "103.232.35.101", - "218.103.8.74", + "8.8.4.4", + // Quad9 + "9.9.9.9", "149.112.112.112", - "61.90.191.14", - "177.222.251.122", - "190.143.189.106", + // OpenDNS + "208.67.222.222", + "208.67.220.220", + // Verisign + "64.6.64.6", + "64.6.65.6", + // UncensoredDNS "91.239.100.100", - "74.120.24.129", - "195.10.195.195", - "109.254.13.190", - "202.86.129.106", - "177.12.230.174", - "198.99.193.1", - "196.21.247.1", - "97.64.136.6", - "109.70.132.17", - "37.187.34.231", - "124.40.250.160", - "46.173.34.32", - "200.159.205.11", - "112.160.193.17", - "202.147.193.109", - "218.149.84.49", - "140.116.77.16", - "212.159.112.232", - "188.138.57.95", - "85.11.24.148", - "167.157.20.2", - "217.69.169.25", - "203.239.130.3", - "78.9.110.22", - "84.96.26.139", - "84.16.240.43", - "80.228.231.48", - "66.240.146.122", - "196.3.132.153", - "210.228.48.238", - "190.86.139.62", - "37.71.134.238", - "213.184.242.6", - "211.11.195.114", - "69.57.230.68", - "195.77.235.10", - "178.150.206.87", - "60.250.174.244", - "208.25.96.18", - "198.199.103.49", - "194.177.210.210", - "91.93.102.43", - "5.102.56.138", - "211.38.3.14", - "175.209.133.88", - "200.115.141.140", - "62.90.108.221", - "211.55.29.223", - "201.134.115.36", - "163.172.170.19", - "176.221.10.213", - "69.20.154.65", - "62.97.70.131", - "122.215.69.149", - "202.44.32.29", - "91.183.238.145", - "192.211.0.10", - "61.19.251.237", - "109.228.23.101", - "81.176.67.101", - "46.28.130.214", - "116.66.197.183", - "213.136.192.2", - "192.116.158.140", - "223.31.121.171", - "169.53.182.124", - "92.111.212.210", - "82.96.64.2", - "185.107.80.84", - "103.30.244.89", - "207.35.8.166", - "207.67.115.254", - "142.77.2.101", - "41.79.124.10", - "202.58.198.158", - "187.141.85.108", - "117.18.119.36", - "194.145.241.6", - "104.36.237.205", - "62.225.66.19", - "82.198.189.24", - "136.145.23.3", - "109.228.9.74", - "203.190.55.129", - "218.146.255.235", - "158.132.187.187", - "200.185.113.202", - "62.225.102.177", - "158.43.128.72", - "109.228.25.186", - "31.168.224.100", - "199.16.220.189", - "46.107.30.182", - "210.48.77.69", - "46.227.200.9", - "88.208.229.248", - "219.95.183.41", - "168.187.234.58", - "81.95.237.58", - "109.228.0.24", - "204.106.240.53", - "200.167.191.114", - "62.85.160.206", - "91.121.211.127", - "114.114.115.110", - "195.250.58.10", - "218.235.251.2", - "208.79.56.204", - "177.43.68.115", - "82.127.173.122", - "12.131.101.32", - "59.120.147.65", - "208.64.129.68", - "109.228.0.164", - "163.172.107.158", - "213.0.55.169", - "83.218.176.140", - "203.63.219.26", - "91.229.232.213", - "195.53.69.133", - "213.125.105.234", - "124.6.165.16", - "80.14.133.244", - "69.20.169.49", - "192.195.100.3", - "203.171.33.150", - "200.99.138.94", - "103.30.244.197", - "212.66.160.2", - "61.19.203.210", - "195.204.130.85", - "177.52.232.7", - "62.37.225.57", - "200.159.205.12", - "68.87.76.178", - "197.253.12.229", - "109.228.25.54", - "81.248.15.223", - "172.98.193.42", - "190.149.249.57", - "200.72.163.50", - "80.248.14.50", - "217.24.255.134", - "67.52.15.27", - "194.213.61.162", - "185.184.222.222", - "203.81.75.37", - "194.209.157.109", - "187.61.9.42", - "103.80.1.2", - "82.165.76.185", - "195.60.70.6", - "177.43.249.132", - "186.215.128.142", - "208.91.112.53", - "222.255.146.26", - "211.22.60.248", - "109.233.144.52", - "151.80.222.79", - "95.142.83.43", - "211.114.145.7", - "87.213.68.130", - "194.61.59.25", - "212.36.64.16", - "37.71.108.130", - "192.121.44.204", - "195.77.252.36", - "213.215.11.190", - "203.189.89.1", - "74.93.247.57", - "204.70.127.128", - "200.195.180.226", - "193.137.7.225", - "83.103.43.81", - "103.226.174.100", - "200.205.44.154", - "103.196.125.2", - "210.57.214.170", - "178.150.45.81", - "114.114.114.110", - "149.112.112.10", - "189.113.75.5", - "209.40.238.71", - "45.250.253.222", - "189.90.241.10", - "194.68.117.1", - "109.228.0.238", - "195.77.90.230", - "91.200.116.21", - "61.250.157.15", - "62.97.123.107", - "177.67.201.203", - "50.204.108.198", - "203.118.155.130", - "151.1.141.155", - "221.119.13.154", - "176.31.121.197", - "69.70.21.150", - "93.108.238.122", - "216.66.104.72", - "223.6.6.6", - "210.66.73.137", - "190.64.140.242", - "91.229.232.168", - "144.76.173.169", - "1.32.58.250", - "84.94.158.213", - "65.49.37.195", - "85.94.178.198", - "177.92.0.90", - "202.51.74.187", - "116.126.142.201", - "43.224.121.177", - "170.56.58.53", - "124.6.169.58", - "59.120.9.23", - "195.162.82.65", - "216.187.93.250", - "68.87.72.130", - "1.9.21.77", - "213.251.133.164", - "4.2.2.6", - "202.44.80.25", - "195.34.237.111", - "195.243.99.35", - "109.228.24.113", - "91.122.77.189", - "195.57.47.3", - "207.35.8.169", - "77.52.183.142", - "217.170.128.27", - "71.40.44.8", - "186.216.62.73", - "61.90.191.10", - "193.178.35.130", - "124.6.167.167", - "109.228.46.244", - "199.116.57.181", - "91.121.143.182", - "185.34.21.5", - "194.78.30.158", - "211.116.138.5", - "81.175.40.21", - "202.164.44.246", - "209.150.154.1", - "212.45.25.202", - "195.76.198.10", - "189.4.130.159", - "188.225.179.158", - "161.35.198.1", - "91.229.232.81", - "31.129.186.43", - "81.222.251.2", - "91.204.4.133", - "193.138.78.117", - "80.241.218.68", - "72.22.86.34", - "59.124.16.34", - "80.48.144.8", - "201.144.40.139", - "66.249.150.51", - "203.73.77.205", - "85.93.231.114", - "179.99.247.239", - "210.149.130.193", - "218.234.18.181", - "212.234.19.21", - "177.66.203.10", - "193.248.128.166", - "89.19.228.52", - "80.254.5.142", - "177.159.232.53", - "65.111.169.160", - "103.28.115.173", - "65.111.169.159", - "103.194.120.3", - "124.6.164.205", + "89.233.43.71", + // dns.watch + "84.200.69.80", + "84.200.70.40", ] .into_iter() .map(str::to_owned) .collect() } - -#[allow(dead_code)] -pub fn ipv6_resolvers() -> Vec { - vec![ - "2001:4860:4860::8888", - "2001:450:2005:1::4", - "2600::2", - "2600::1", - "2001:1bc0::ffff:bbbb:2", - "2001:1bc0::ffff:aaaa:2", - "2001:418:3ff::1:53", - "2001:450:2005:3::5", - "2001:418:3ff::53", - "2001:4860:4860::8844", - "2001:910:800::12", - "2001:910:800::40", - "2001:450:2005:2::5", - "2001:450:2005:2::4", - "2a02:2178:1:2::2", - "2001:4f8:0:2::14", - "2001:b08:2:280::4:1", - "2001:1a68::d911:2244", - "2620:0:ccc::2", - "2620:0:ccd::2", - "2001:978:1:1::d", - "2001:978:1:2::d", - "2001:550:1:1::d", - "2001:470:0:45::2", - "2001:468:c80:2101:0:100:0:22", - "2001:468:c80:4101:0:100:0:42", - "2001:4870:8000:3::100", - "2001:4870:8000:3::5", - "2001:840:200::", - "2001:840:2010:413::100", - "2407:9000:0:4::2", - "2001:638:902:1::10", - "2001:1488:800:400::130", - "2a02:6b8::feed:0ff", - "2001:913::8", - "2a00:5881:8100:1000::3", - "2001:428:101:100:205:171:2:65", - "2001:428:101:100:205:171:3:65", - "2001:428::1", - "2001:468:C80:2101::100:0:22", - "2001:468:C80:4101::100:0:42", - "2001:67c:2b0::1", - "2001:67c:2b0::2", - "2001:b000:168::1", - "2001:bf0::2", - "2001:67c:15e8:d1::18", - "2001:67c:15e8:d1::19", - "2001:67c:2b24:1000::10", - "2001:67c:2b24:1000::11", - "2620:74:1b::1:1", - "2620:74:1c::2:2", - "2610:a1:1018::5", - "2610:a1:1019::5", - "2610:a1:1018::22", - "2610:a1:1019::22", - "2610:a1:1018::23", - "2610:a1:1019::23", - "2610:a1:1019::24", - "2610:a1:1019::25", - "2610:a1:1019::26", - "2610:a1:1019::27", - "2610:a1:1019::28", - "2610:a1:1019::29", - "2610:a1:1019::30", - "2610:a1:1019::31", - "2610:a1:1019::32", - "2610:a1:1019::33", - "2610:a1:1019::34", - "2610:a1:1019::35", - "2610:a1:1018::24", - "2610:a1:1018::25", - "2610:a1:1018::26", - "2610:a1:1018::27", - "2610:a1:1018::28", - "2610:a1:1018::29", - "2610:a1:1018::30", - "2610:a1:1018::31", - "2610:a1:1018::32", - "2610:a1:1018::33", - "2610:a1:1018::34", - "2610:a1:1018::35", - "2a01:4f8:141:4281::3000", - "2602:3f:e75c:1bff::1", - "2a00:5884:8218::1", - "2001:1608:10:25::1c04:b12f", - "2001:67c:28a4::", - "2c0f:fda8:5::2ed1:d2ec", - "2a01:3a0:53:53::", - "2a02:6b8:0:1::feed:0ff", - "2a02:6b8::feed:bad", - "2a02:6b8:0:1::feed:bad", - "2a02:6b8::feed:a11", - "2a02:6b8:0:1::feed:a11", - "2a02:2750:221:1:0:0:0:92", - "2a01:780:c000:2:0:0:0:1", - "2a01:a740:0:0:0:0:0:b", - "2a01:780:c000:1:0:0:0:1", - "2001:bf0:0:0:0:0:0:2", - "2a00:aa40:0:225:0:0:0:2", - "2607:f778:0:9:0:0:0:2", - "2001:4870:8000:3:0:0:0:5", - "2001:4b8:3:201:0:0:0:902", - "2001:4b8:2:101:0:0:0:602", - "2602:ffaa:0:0:0:0:2:2", - "2001:468:c80:6101:0:100:0:62", - "2001:1bc0:0:0:0:ffff:aaaa:2", - "2001:1bc0:0:0:0:ffff:bbbb:2", - "2803:c800:0:38:0:0:0:2", - "2001:df4:b400:221:0:0:0:1", - "2001:df4:b400:221:0:0:0:2", - "2a00:1390:1:0:0:0:0:1", - "2a02:2720:2:0:0:0:0:2", - "2a02:2720:1:0:0:0:0:1", - "2a00:1908:0:0:0:0:0:74", - "2a00:8b00:0:a:0:0:0:53", - "2804:ac:cafe:0:0:0:0:10", - "2001:DF0:2BA::101", - "2001:df0:2ba:0:0:0:0:101", - "2a00:1908:0:0:0:0:0:72", - "2a00:1908:0:0:0:0:0:73", - "2001:550:1:2::D", - "2001:738:6001:B0B0::1000", - "2a02:6b8::feed:ff", - "2a03:8600:1001::2", - "2606:ed00:2:babe::10", - "2001:b000:168::2", - "2620:fe::fe", - "2620:fe::10", - "2a00:5a60::ad1:0ff", - "2a00:5a60::ad2:0ff", - "2a01:4f8:172:2414:250:56ff:fe00:a9cc", - "2606:4700:4700::1111", - "2606:4700:4700::1001", - "2a03:4000:1c:50a::1", - "2001:41d0:2:73d4::125", - "2001:41d0:2:73d4::100", - "2a00:1a28:1157:3ef::2", - "2001:470:1f06:10b::2", - "2a01:238:42f6:ac00:2a29:4f7f:b6d:ef46", - "2001:de4::101", - "2001:de4::102", - "2a00:1b70:1200:1::53", - "2a00:1b70:1200:1::1:53", - "2a00:1b70:1200:1::64", - "2001:470:b411:80:3063:36ff:fe38:3533", - "2001:da8::666", - "2001:41d0:203:4b1f:2:2:2:2", - "2001:41d0:604:a7:3:3:3:3", - "2001:c38:2000:2421::154", - "2a0d:2a00:1::2", - "2a0d:2a00:2::2", - "2001:470:20::2", - "2a01:3a0:53:53::0", - "2a09::", - "2a09::1", - "2405:8a00:8001::20", - "2607:5300:60:be0::1", - "2607:5300:60:b24::1", - "2a01:4f8:151:34aa::198", - "2a01:4f8:141:316d::117", - "2001:470:b411:80:6065:33ff:fe31:3831", - "2606:4700:4700::1112", - "2606:4700:4700::1002", - "2606:4700:4700::1113", - "2606:4700:4700::1003", - "2620:10A:80BB::10", - "2620:10A:80BC::10", - "2620:10A:80BB::20", - "2620:10A:80BC::20", - "2620:10A:80BB::30", - "2620:10A:80BC::30", - "2A02:2F0F:191:53::35", - "2001:8d8:1801:80bb::1", - "240c::6666", - "240c::6644", - ] - .into_iter() - .map(str::to_owned) - .collect() -} - -#[allow(dead_code)] -pub fn top_1000_ports() -> Vec { - vec![ - 1, 3, 4, 6, 7, 9, 13, 17, 19, 20, 21, 22, 23, 24, 25, 26, 30, 32, 33, 37, 42, 43, 49, 53, - 70, 79, 80, 81, 82, 83, 84, 85, 88, 89, 90, 99, 100, 106, 109, 110, 111, 113, 119, 125, - 135, 139, 143, 144, 146, 161, 163, 179, 199, 211, 212, 222, 254, 255, 256, 259, 264, 280, - 301, 306, 311, 340, 366, 389, 406, 407, 416, 417, 425, 427, 443, 444, 445, 458, 464, 465, - 481, 497, 500, 512, 513, 514, 515, 524, 541, 543, 544, 545, 548, 554, 555, 563, 587, 593, - 616, 617, 625, 631, 636, 646, 648, 666, 667, 668, 683, 687, 691, 700, 705, 711, 714, 720, - 722, 726, 749, 765, 777, 783, 787, 800, 801, 808, 843, 873, 880, 888, 898, 900, 901, 902, - 903, 911, 912, 981, 987, 990, 992, 993, 995, 999, 1000, 1001, 1002, 1007, 1009, 1010, 1011, - 1021, 1022, 1023, 1024, 1025, 1026, 1027, 1028, 1029, 1030, 1031, 1032, 1033, 1034, 1035, - 1036, 1037, 1038, 1039, 1040, 1041, 1042, 1043, 1044, 1045, 1046, 1047, 1048, 1049, 1050, - 1051, 1052, 1053, 1054, 1055, 1056, 1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065, - 1066, 1067, 1068, 1069, 1070, 1071, 1072, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, - 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1088, 1089, 1090, 1091, 1092, 1093, 1094, 1095, - 1096, 1097, 1098, 1099, 1100, 1102, 1104, 1105, 1106, 1107, 1108, 1110, 1111, 1112, 1113, - 1114, 1117, 1119, 1121, 1122, 1123, 1124, 1126, 1130, 1131, 1132, 1137, 1138, 1141, 1145, - 1147, 1148, 1149, 1151, 1152, 1154, 1163, 1164, 1165, 1166, 1169, 1174, 1175, 1183, 1185, - 1186, 1187, 1192, 1198, 1199, 1201, 1213, 1216, 1217, 1218, 1233, 1234, 1236, 1244, 1247, - 1248, 1259, 1271, 1272, 1277, 1287, 1296, 1300, 1301, 1309, 1310, 1311, 1322, 1328, 1334, - 1352, 1417, 1433, 1434, 1443, 1455, 1461, 1494, 1500, 1501, 1503, 1521, 1524, 1533, 1556, - 1580, 1583, 1594, 1600, 1641, 1658, 1666, 1687, 1688, 1700, 1717, 1718, 1719, 1720, 1721, - 1723, 1755, 1761, 1782, 1783, 1801, 1805, 1812, 1839, 1840, 1862, 1863, 1864, 1875, 1900, - 1914, 1935, 1947, 1971, 1972, 1974, 1984, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, - 2006, 2007, 2008, 2009, 2010, 2013, 2020, 2021, 2022, 2030, 2033, 2034, 2035, 2038, 2040, - 2041, 2042, 2043, 2045, 2046, 2047, 2048, 2049, 2065, 2068, 2099, 2100, 2103, 2105, 2106, - 2107, 2111, 2119, 2121, 2126, 2135, 2144, 2160, 2161, 2170, 2179, 2190, 2191, 2196, 2200, - 2222, 2251, 2260, 2288, 2301, 2323, 2366, 2381, 2382, 2383, 2393, 2394, 2399, 2401, 2492, - 2500, 2522, 2525, 2557, 2601, 2602, 2604, 2605, 2607, 2608, 2638, 2701, 2702, 2710, 2717, - 2718, 2725, 2800, 2809, 2811, 2869, 2875, 2909, 2910, 2920, 2967, 2968, 2998, 3000, 3001, - 3003, 3005, 3006, 3007, 3011, 3013, 3017, 3030, 3031, 3052, 3071, 3077, 3128, 3168, 3211, - 3221, 3260, 3261, 3268, 3269, 3283, 3300, 3301, 3306, 3322, 3323, 3324, 3325, 3333, 3351, - 3367, 3369, 3370, 3371, 3372, 3389, 3390, 3404, 3476, 3493, 3517, 3527, 3546, 3551, 3580, - 3659, 3689, 3690, 3703, 3737, 3766, 3784, 3800, 3801, 3809, 3814, 3826, 3827, 3828, 3851, - 3869, 3871, 3878, 3880, 3889, 3905, 3914, 3918, 3920, 3945, 3971, 3986, 3995, 3998, 4000, - 4001, 4002, 4003, 4004, 4005, 4006, 4045, 4111, 4125, 4126, 4129, 4224, 4242, 4279, 4321, - 4343, 4443, 4444, 4445, 4446, 4449, 4550, 4567, 4662, 4848, 4899, 4900, 4998, 5000, 5001, - 5002, 5003, 5004, 5009, 5030, 5033, 5050, 5051, 5054, 5060, 5061, 5080, 5087, 5100, 5101, - 5102, 5120, 5190, 5200, 5214, 5221, 5222, 5225, 5226, 5269, 5280, 5298, 5357, 5405, 5414, - 5431, 5432, 5440, 5500, 5510, 5544, 5550, 5555, 5560, 5566, 5631, 5633, 5666, 5678, 5679, - 5718, 5730, 5800, 5801, 5802, 5810, 5811, 5815, 5822, 5825, 5850, 5859, 5862, 5877, 5900, - 5901, 5902, 5903, 5904, 5906, 5907, 5910, 5911, 5915, 5922, 5925, 5950, 5952, 5959, 5960, - 5961, 5962, 5963, 5987, 5988, 5989, 5998, 5999, 6000, 6001, 6002, 6003, 6004, 6005, 6006, - 6007, 6009, 6025, 6059, 6100, 6101, 6106, 6112, 6123, 6129, 6156, 6346, 6389, 6502, 6510, - 6543, 6547, 6565, 6566, 6567, 6580, 6646, 6666, 6667, 6668, 6669, 6689, 6692, 6699, 6779, - 6788, 6789, 6792, 6839, 6881, 6901, 6969, 7000, 7001, 7002, 7004, 7007, 7019, 7025, 7070, - 7100, 7103, 7106, 7200, 7201, 7402, 7435, 7443, 7496, 7512, 7625, 7627, 7676, 7741, 7777, - 7778, 7800, 7911, 7920, 7921, 7937, 7938, 7999, 8000, 8001, 8002, 8007, 8008, 8009, 8010, - 8011, 8021, 8022, 8031, 8042, 8045, 8080, 8081, 8082, 8083, 8084, 8085, 8086, 8087, 8088, - 8089, 8090, 8093, 8099, 8100, 8180, 8181, 8192, 8193, 8194, 8200, 8222, 8254, 8290, 8291, - 8292, 8300, 8333, 8383, 8400, 8402, 8443, 8500, 8600, 8649, 8651, 8652, 8654, 8701, 8800, - 8873, 8888, 8899, 8994, 9000, 9001, 9002, 9003, 9009, 9010, 9011, 9040, 9050, 9071, 9080, - 9081, 9090, 9091, 9099, 9100, 9101, 9102, 9103, 9110, 9111, 9200, 9207, 9220, 9290, 9415, - 9418, 9485, 9500, 9502, 9503, 9535, 9575, 9593, 9594, 9595, 9618, 9666, 9876, 9877, 9878, - 9898, 9900, 9917, 9929, 9943, 9944, 9968, 9998, 9999, 10000, 10001, 10002, 10003, 10004, - 10009, 10010, 10012, 10024, 10025, 10082, 10180, 10215, 10243, 10566, 10616, 10617, 10621, - 10626, 10628, 10629, 10778, 11110, 11111, 11967, 12000, 12174, 12265, 12345, 13456, 13722, - 13782, 13783, 14000, 14238, 14441, 14442, 15000, 15002, 15003, 15004, 15660, 15742, 16000, - 16001, 16012, 16016, 16018, 16080, 16113, 16992, 16993, 17877, 17988, 18040, 18101, 18988, - 19101, 19283, 19315, 19350, 19780, 19801, 19842, 20000, 20005, 20031, 20221, 20222, 20828, - 21571, 22939, 23502, 24444, 24800, 25734, 25735, 26214, 27000, 27352, 27353, 27355, 27356, - 27715, 28201, 30000, 30718, 30951, 31038, 31337, 32768, 32769, 32770, 32771, 32772, 32773, - 32774, 32775, 32776, 32777, 32778, 32779, 32780, 32781, 32782, 32783, 32784, 32785, 33354, - 33899, 34571, 34572, 34573, 35500, 38292, 40193, 40911, 41511, 42510, 44176, 44442, 44443, - 44501, 45100, 48080, 49152, 49153, 49154, 49155, 49156, 49157, 49158, 49159, 49160, 49161, - 49163, 49165, 49167, 49175, 49176, 49400, 49999, 50000, 50001, 50002, 50003, 50006, 50300, - 50389, 50500, 50636, 50800, 51103, 51493, 52673, 52822, 52848, 52869, 54045, 54328, 55055, - 55056, 55555, 55600, 56737, 56738, 57294, 57797, 58080, 60020, 60443, 61532, 61900, 62078, - 63331, 64623, 64680, 65000, 65129, 65389, - ] -} From bb8badecf8756d8966ceb5c8beb0201c59a0523e Mon Sep 17 00:00:00 2001 From: Edu4rdSHL Date: Sun, 9 May 2021 02:07:09 -0500 Subject: [PATCH 16/62] Remove clippy warn. --- src/logic.rs | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/logic.rs b/src/logic.rs index b01f418..105d616 100644 --- a/src/logic.rs +++ b/src/logic.rs @@ -1,5 +1,3 @@ -use lazy_static; - lazy_static! { static ref SPECIAL_CHARS: Vec = vec![ '[', ']', '{', '}', '(', ')', '*', '|', ':', '<', '>', '/', '\\', '%', '&', '¿', '?', '¡', @@ -22,6 +20,7 @@ pub fn null_ip_checker(ip: &str) -> String { } } +#[allow(clippy::ptr_arg)] pub fn return_ports_string(ports: &Vec) -> String { if ports.is_empty() { String::from("NULL") From 3d24415c9a72c387250e6846113f8e3792a858fe Mon Sep 17 00:00:00 2001 From: Edu4rdSHL Date: Sun, 9 May 2021 02:13:21 -0500 Subject: [PATCH 17/62] Allow ports ranges, lists, or both using the --ports option. Update the code to match the new dependencies versions. Simplify some functions. Improve IP discovery speed calling ipv4_lookup() to search only for A records. Signed-off-by: Edu4rdSHL --- src/args.rs | 5 ++- src/cli.yml | 12 ++----- src/main.rs | 2 +- src/networking.rs | 43 ++++++---------------- src/nmap.rs | 82 +++++++++++++++++------------------------- src/resolver_engine.rs | 56 ++++++++++++----------------- src/structs.rs | 5 ++- 7 files changed, 74 insertions(+), 131 deletions(-) diff --git a/src/args.rs b/src/args.rs index fd02905..a16a6e3 100644 --- a/src/args.rs +++ b/src/args.rs @@ -50,8 +50,7 @@ pub fn get_args() -> Args { value_t!(matches, "threads", usize).unwrap_or_else(|_| 50) }, version: clap::crate_version!().to_string(), - initial_port: value_t!(matches, "initial-port", usize).unwrap_or_else(|_| 1), - last_port: value_t!(matches, "last-port", usize).unwrap_or_else(|_| 65535), + ports: value_t!(matches, "ports", String).unwrap_or_else(|_| String::new()), with_output: matches.is_present("output") || matches.is_present("unique-output"), unique_output_flag: matches.is_present("unique-output"), from_file_flag: matches.is_present("files"), @@ -61,7 +60,7 @@ pub fn get_args() -> Args { fast_scan: matches.is_present("fast-scan"), keep_nmap_logs: matches.is_present("keep-nmap-logs"), files: return_matches_vec(&matches, "files"), - min_rate: value_t!(matches, "min-rate", usize).unwrap_or_else(|_| 30000), + min_rate: value_t!(matches, "min-rate", String).unwrap_or_else(|_| String::new()), resolvers: if matches.is_present("custom-resolvers") { return_matches_vec(&matches, "custom-resolvers") } else { diff --git a/src/cli.yml b/src/cli.yml index b375b48..17f50e5 100644 --- a/src/cli.yml +++ b/src/cli.yml @@ -55,15 +55,9 @@ args: takes_value: true multiple: true - - initial-port: - help: Initial port to scan. Default 0. - long: iport - takes_value: true - multiple: false - - - last-port: - help: Last port to scan. Default 1000. - long: lport + - ports: + help: 'Ports to scan. You can specify a range of ports, a list, or both. Put them inside double quotes, for example: "22, 80, 443, 1000-5000"' + long: ports takes_value: true multiple: false diff --git a/src/main.rs b/src/main.rs index b0af3f8..49b95f7 100644 --- a/src/main.rs +++ b/src/main.rs @@ -28,7 +28,7 @@ fn run() -> Result<()> { .unwrap(); if !arguments.target.is_empty() || !arguments.files.is_empty() { - resolver_engine::async_resolver_all(&mut arguments) + resolver_engine::parallel_resolver_all(&mut arguments) } else { error!("Error: Target is empty or invalid!\n"); std::process::exit(1) diff --git a/src/networking.rs b/src/networking.rs index 1527fc2..9828dc5 100644 --- a/src/networking.rs +++ b/src/networking.rs @@ -1,44 +1,19 @@ use { log::error, - rand::Rng, + rand::{seq::SliceRandom, thread_rng as rng}, std::net::{IpAddr, Ipv4Addr}, trust_dns_resolver::{ config::{NameServerConfigGroup, ResolverConfig, ResolverOpts}, - proto::rr::RecordType, Resolver, }, }; -pub fn get_records(resolver: &Resolver, domain: &str, record_type: RecordType) -> String { - if let Ok(rdata) = resolver.lookup(&domain, record_type) { - let mut record_data: Vec = Vec::new(); - if record_type == RecordType::AAAA { - record_data = rdata - .iter() - .filter_map(|rdata| rdata.as_aaaa()) - .map(|ipv6| ipv6.to_string()) - .collect(); - } else if record_type == RecordType::A { - record_data = rdata - .iter() - .filter_map(|rdata| rdata.as_a()) - .map(|ipv4| ipv4.to_string()) - .collect(); - } else if record_type == RecordType::CNAME { - record_data = rdata - .iter() - .filter_map(|rdata| rdata.as_cname()) - .map(|name| { - let name = name.to_string(); - name[..name.len() - 1].to_owned() - }) - .collect(); - } - record_data - .iter() +pub fn get_records(resolver: &Resolver, domain: &str) -> String { + if let Ok(ips) = resolver.ipv4_lookup(domain) { + ips.iter() + .map(|x| x.to_string()) .next() - .expect("Failed retrieving records data.") - .to_owned() + .expect("Failed to get IPV4.") } else { String::new() } @@ -51,9 +26,13 @@ pub fn get_resolver(resolvers_ips: &[Ipv4Addr], opts: &ResolverOpts) -> Resolver vec![], NameServerConfigGroup::from_ips_clear( &[IpAddr::V4( - resolvers_ips[rand::thread_rng().gen_range(0, resolvers_ips.len())], + resolvers_ips + .choose(&mut rng()) + .expect("failed to read ipv4 string") + .to_owned(), )], 53, + false, ), ), *opts, diff --git a/src/nmap.rs b/src/nmap.rs index 12596ec..5352ad7 100644 --- a/src/nmap.rs +++ b/src/nmap.rs @@ -111,65 +111,47 @@ pub struct Service { pub fn get_nmap_data( filename: &str, host: &str, - min_rate: usize, - initial_port: usize, - last_port: usize, + min_rate: &str, + ports: &str, fast_scan: bool, ) -> Result { - let ports_range = format!("{}-{}", initial_port, last_port); let min_rate = min_rate.to_string(); - let nmap_args = if fast_scan { - vec![ - "nmap", - "-n", - "--dns-servers", - &NMAP_DNS_RESOLVERS, - "-Pn", - "--host-timeout", - "5m", - "--min-rate", - &min_rate, - "-sS", - "--open", - "-dd", - "-T4", - "--max-retries", - "2", - "-oX", - filename, - host, - ] - } else { - vec![ - "nmap", - "-n", - "--dns-servers", - &NMAP_DNS_RESOLVERS, - "-Pn", - "--host-timeout", - "10m", - "-sV", - "--min-rate", - &min_rate, - "-sS", - "-p", - &ports_range, - "--open", - "-dd", - "-T4", - "--max-retries", - "2", - "-oX", - filename, - host, - ] - }; + let mut nmap_args = vec![ + "nmap", + "--dns-servers", + &NMAP_DNS_RESOLVERS, + "-Pn", + "-sS", + "--open", + "-dd", + "-T4", + "--max-retries", + "3", + "-oX", + filename, + ]; + + if !min_rate.is_empty() { + nmap_args.append(&mut vec!["--min-rate", &min_rate]) + } + + if fast_scan { + nmap_args.append(&mut vec!["--host-timeout", "20m"]) + } + + if !ports.is_empty() { + nmap_args.append(&mut vec!["-p", &ports]) + } + + nmap_args.push(host); + match Command::new("nmap").args(&nmap_args).output() { Ok(_) => { if Path::new(&filename).exists() && Path::new(&filename).is_file() { serde_xml_rs::from_str(&std::fs::read_to_string(filename).unwrap_or_default()) } else { error!("Error executing nmap, possible causes: Nmap is not installed or you need root/administrator permissions. Leaving.\n"); + println!(); std::process::exit(1) } } diff --git a/src/resolver_engine.rs b/src/resolver_engine.rs index 86a55c9..c4cb4ad 100644 --- a/src/resolver_engine.rs +++ b/src/resolver_engine.rs @@ -15,7 +15,7 @@ use { net::Ipv4Addr, time::Duration, }, - trust_dns_resolver::{config::ResolverOpts, proto::rr::RecordType}, + trust_dns_resolver::config::ResolverOpts, }; lazy_static! { @@ -47,17 +47,17 @@ lazy_static! { }; } -pub fn async_resolver_all(args: &mut Args) -> Result<()> { +pub fn parallel_resolver_all(args: &mut Args) -> Result<()> { files::check_full_path(&args.logs_dir); if !args.quiet_flag { info!( - "Performing asynchronous resolution for {} targets with {} threads, it will take a while...\n", + "Performing parallel resolution for {} targets with {} threads, it will take a while...\n", args.targets.len(), args.threads ) } - let data = async_resolver_engine(&args, args.targets.clone()); + let data = parallel_resolver_engine(&args, args.targets.clone()); let mut table = Table::new(); table.set_titles(row![ @@ -111,47 +111,44 @@ pub fn async_resolver_all(args: &mut Args) -> Result<()> { } } - if args.with_output && !args.targets.is_empty() { - if files::table_to_file(&table, files::return_output_file(&args)).is_err() - && !args.quiet_flag - { - error!( - "An error occurred while writing the output file {}.\n", - args.file_name - ) - } + if args.with_output + && !args.targets.is_empty() + && files::table_to_file(&table, files::return_output_file(&args)).is_err() + && !args.quiet_flag + { + error!( + "An error occurred while writing the output file {}.\n", + args.file_name + ) } if !args.quiet_flag { table.printstd(); } - if ((args.with_output && !args.unique_output_flag) || args.unique_output_flag) - && !args.quiet_flag - { + if (args.with_output || args.unique_output_flag) && !args.quiet_flag { info!( "Job finished in {} seconds.\n", args.time_wasted.elapsed().as_secs() ); info!("Logfile saved in {}\n\n", args.file_name); } - + println!(); Ok(()) } -fn async_resolver_engine(args: &Args, targets: HashSet) -> HashMap { - let mut opts = ResolverOpts::default(); - opts.timeout = Duration::from_secs(2); +fn parallel_resolver_engine(args: &Args, targets: HashSet) -> HashMap { + let opts = ResolverOpts { + timeout: Duration::from_secs(2), + ..Default::default() + }; let resolv_data: HashMap = targets .par_iter() .map(|target| { let fqdn_target = format!("{}.", target); let mut resolv_data = ResolvData::default(); - resolv_data.ip = networking::get_records( - &networking::get_resolver(&RESOLVERS, &opts), - &fqdn_target, - RecordType::A, - ); + resolv_data.ip = + networking::get_records(&networking::get_resolver(&RESOLVERS, &opts), &fqdn_target); (target.to_owned(), resolv_data) }) .collect(); @@ -167,14 +164,7 @@ fn async_resolver_engine(args: &Args, targets: HashSet) -> HashMap { nmap_data .host diff --git a/src/structs.rs b/src/structs.rs index feba6ff..6407654 100644 --- a/src/structs.rs +++ b/src/structs.rs @@ -10,11 +10,10 @@ pub struct Args { pub version: String, pub logs_dir: String, pub threads: usize, - pub initial_port: usize, - pub last_port: usize, + pub ports: String, pub with_output: bool, pub unique_output_flag: bool, - pub min_rate: usize, + pub min_rate: String, pub from_file_flag: bool, pub quiet_flag: bool, pub custom_resolvers: bool, From e2525b36429e5d2b52d282224e3b9c93b1c6f51e Mon Sep 17 00:00:00 2001 From: Edu4rdSHL Date: Sun, 9 May 2021 02:21:12 -0500 Subject: [PATCH 18/62] Bump version. Signed-off-by: Edu4rdSHL --- Cargo.lock | 2 +- Cargo.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 48a8bcc..981fe35 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1269,7 +1269,7 @@ checksum = "8ccb82d61f80a663efe1f787a51b16b5a51e3314d6ac365b08639f52387b33f3" [[package]] name = "unimap" -version = "0.2.0" +version = "0.3.0" dependencies = [ "atty", "chrono", diff --git a/Cargo.toml b/Cargo.toml index af9a7a5..f04a816 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "unimap" -version = "0.2.0" +version = "0.3.0" authors = ["Eduard Tolosa "] edition = "2018" description = "Scan only once by IP address and reduce scan times with Nmap for large amounts of data." From f20f6d6ce0531c5d0ec7dd7468e03b7742872ef8 Mon Sep 17 00:00:00 2001 From: Edu4rdSHL Date: Mon, 10 May 2021 11:58:50 -0500 Subject: [PATCH 19/62] Add raw output support. Signed-off-by: Edu4rdSHL --- src/args.rs | 3 ++- src/cli.yml | 11 +++++++-- src/resolver_engine.rs | 56 ++++++++++++++++++++++++------------------ src/structs.rs | 3 ++- 4 files changed, 45 insertions(+), 28 deletions(-) diff --git a/src/args.rs b/src/args.rs index a16a6e3..b50eb49 100644 --- a/src/args.rs +++ b/src/args.rs @@ -58,7 +58,8 @@ pub fn get_args() -> Args { custom_resolvers: matches.is_present("custom-resolvers"), custom_ports_range: matches.is_present("initial-port") || matches.is_present("last-port"), fast_scan: matches.is_present("fast-scan"), - keep_nmap_logs: matches.is_present("keep-nmap-logs"), + no_keep_nmap_logs: matches.is_present("no-keep-nmap-logs"), + raw_output: matches.is_present("raw-output"), files: return_matches_vec(&matches, "files"), min_rate: value_t!(matches, "min-rate", String).unwrap_or_else(|_| String::new()), resolvers: if matches.is_present("custom-resolvers") { diff --git a/src/cli.yml b/src/cli.yml index 17f50e5..56a2a7b 100644 --- a/src/cli.yml +++ b/src/cli.yml @@ -77,9 +77,16 @@ args: takes_value: true multiple: false - - keep-nmap-logs: + - no-keep-nmap-logs: help: Keep Nmap XML files created in the logs/ folder for every scanned IP. This data will be useful for other tasks. short: k - long: keep-nmap-logs + long: no-keep-nmap-logs + takes_value: false + multiple: false + + - raw-output: + help: Use raw output instead of a table. + short: r + long: raw-output takes_value: false multiple: false diff --git a/src/resolver_engine.rs b/src/resolver_engine.rs index c4cb4ad..51276c3 100644 --- a/src/resolver_engine.rs +++ b/src/resolver_engine.rs @@ -68,46 +68,52 @@ pub fn parallel_resolver_all(args: &mut Args) -> Result<()> { ]); for (target, resolv_data) in &data { if !resolv_data.ip.is_empty() { - let mut services_table = Table::new(); - for port_data in &resolv_data.ports_data { - services_table - .add_row(row![bc => &format!("PORT => {}", port_data.portid.clone())]); - services_table.add_row( + if args.raw_output { + for port_data in &resolv_data.ports_data { + println!("{},{},{}", target, resolv_data.ip, port_data.portid) + } + } else { + let mut services_table = Table::new(); + for port_data in &resolv_data.ports_data { + services_table + .add_row(row![bc => &format!("PORT => {}", port_data.portid.clone())]); + services_table.add_row( row![c => &format!("SERVICE: {}", port_data.service.clone().unwrap_or_default().name)], ); - services_table.add_row(row![c => &format!("VERSION: {}" ,port_data + services_table.add_row(row![c => &format!("VERSION: {}" ,port_data .service.clone().unwrap_or_default() .version .clone() .unwrap_or_else(|| "NULL".to_string()))]); - services_table.add_row(row![c => &format!("PRODUCT: {}", port_data + services_table.add_row(row![c => &format!("PRODUCT: {}", port_data .service.clone().unwrap_or_default() .product .clone() .unwrap_or_else(|| "NULL".to_string()))]); - services_table.add_row(row![c => &format!("OS TYPE: {}", port_data + services_table.add_row(row![c => &format!("OS TYPE: {}", port_data .service.clone().unwrap_or_default() .ostype .clone() .unwrap_or_else(|| "NULL".to_string()))]); - services_table.add_row(row![c => &format!("EXTRA INFO: {}", port_data + services_table.add_row(row![c => &format!("EXTRA INFO: {}", port_data .service.clone().unwrap_or_default() .extrainfo .clone() .unwrap_or_else(|| "NULL".to_string()))]); + } + table.add_row(row![ d => + target, + logic::null_ip_checker(&resolv_data.ip), + logic::return_ports_string( + &resolv_data + .ports_data + .iter() + .map(|f| f.portid.clone()) + .collect(), + ), + services_table, + ]); } - table.add_row(row![ d => - target, - logic::null_ip_checker(&resolv_data.ip), - logic::return_ports_string( - &resolv_data - .ports_data - .iter() - .map(|f| f.portid.clone()) - .collect(), - ), - services_table, - ]); } } @@ -121,7 +127,7 @@ pub fn parallel_resolver_all(args: &mut Args) -> Result<()> { args.file_name ) } - if !args.quiet_flag { + if !args.quiet_flag && !args.raw_output { table.printstd(); } @@ -132,7 +138,9 @@ pub fn parallel_resolver_all(args: &mut Args) -> Result<()> { ); info!("Logfile saved in {}\n\n", args.file_name); } - println!(); + if !args.quiet_flag { + println!(); + } Ok(()) } @@ -174,7 +182,7 @@ fn parallel_resolver_engine(args: &Args, targets: HashSet) -> HashMap, pub resolvers: Vec, From 8378a29d5dd1135cd08298aec7766fdd3f5ef811 Mon Sep 17 00:00:00 2001 From: Edu4rdSHL Date: Mon, 10 May 2021 19:25:53 -0500 Subject: [PATCH 20/62] Add support for raw and url output formats. Signed-off-by: Edu4rdSHL --- src/args.rs | 1 + src/cli.yml | 10 +++++++++ src/resolver_engine.rs | 46 ++++++++++++++++++++++++++++++++++++++++-- src/structs.rs | 1 + 4 files changed, 56 insertions(+), 2 deletions(-) diff --git a/src/args.rs b/src/args.rs index b50eb49..6b81942 100644 --- a/src/args.rs +++ b/src/args.rs @@ -60,6 +60,7 @@ pub fn get_args() -> Args { fast_scan: matches.is_present("fast-scan"), no_keep_nmap_logs: matches.is_present("no-keep-nmap-logs"), raw_output: matches.is_present("raw-output"), + url_output: matches.is_present("url-output"), files: return_matches_vec(&matches, "files"), min_rate: value_t!(matches, "min-rate", String).unwrap_or_else(|_| String::new()), resolvers: if matches.is_present("custom-resolvers") { diff --git a/src/cli.yml b/src/cli.yml index 56a2a7b..fc02883 100644 --- a/src/cli.yml +++ b/src/cli.yml @@ -90,3 +90,13 @@ args: long: raw-output takes_value: false multiple: false + conflicts_with: + - url-output + + - url-output: + help: Use HOST:IP output format. + long: url-output + takes_value: false + multiple: false + conflicts_with: + - raw-output diff --git a/src/resolver_engine.rs b/src/resolver_engine.rs index 51276c3..bc933bd 100644 --- a/src/resolver_engine.rs +++ b/src/resolver_engine.rs @@ -66,11 +66,53 @@ pub fn parallel_resolver_all(args: &mut Args) -> Result<()> { "OPEN PORTS", "SERVICES" ]); + if args.raw_output && !args.quiet_flag { + println!("HOST,IP,PORT,SERVICE,VERSION,PRODUCT,OS,EXTRAINFO") + } else if args.url_output && !args.quiet_flag { + println!("HOST:IP") + } for (target, resolv_data) in &data { if !resolv_data.ip.is_empty() { if args.raw_output { for port_data in &resolv_data.ports_data { - println!("{},{},{}", target, resolv_data.ip, port_data.portid) + println!( + "{},{},{},{},{},{},{},{}", + target, + resolv_data.ip, + port_data.portid, + port_data.service.clone().unwrap_or_default().name, + port_data + .clone() + .service + .unwrap_or_default() + .version + .unwrap_or_else(|| "NULL".to_string()), + port_data + .clone() + .service + .clone() + .unwrap_or_default() + .product + .unwrap_or_else(|| "NULL".to_string()), + port_data + .service + .clone() + .unwrap_or_default() + .ostype + .clone() + .unwrap_or_else(|| "NULL".to_string()), + port_data + .service + .clone() + .unwrap_or_default() + .extrainfo + .clone() + .unwrap_or_else(|| "NULL".to_string()) + ) + } + } else if args.url_output { + for port_data in &resolv_data.ports_data { + println!("{}:{}", target, port_data.portid) } } else { let mut services_table = Table::new(); @@ -127,7 +169,7 @@ pub fn parallel_resolver_all(args: &mut Args) -> Result<()> { args.file_name ) } - if !args.quiet_flag && !args.raw_output { + if !args.quiet_flag && !args.raw_output && !args.url_output { table.printstd(); } diff --git a/src/structs.rs b/src/structs.rs index dbdb6e8..edc937c 100644 --- a/src/structs.rs +++ b/src/structs.rs @@ -21,6 +21,7 @@ pub struct Args { pub no_keep_nmap_logs: bool, pub raw_output: bool, pub fast_scan: bool, + pub url_output: bool, pub files: Vec, pub resolvers: Vec, pub targets: HashSet, From b8a47031d98f4b7fc10e1d9e2d674f0775132d2a Mon Sep 17 00:00:00 2001 From: Edu4rdSHL Date: Mon, 10 May 2021 20:36:06 -0500 Subject: [PATCH 21/62] Add version detection. Signed-off-by: Edu4rdSHL --- src/nmap.rs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/nmap.rs b/src/nmap.rs index 5352ad7..102d8f9 100644 --- a/src/nmap.rs +++ b/src/nmap.rs @@ -137,6 +137,8 @@ pub fn get_nmap_data( if fast_scan { nmap_args.append(&mut vec!["--host-timeout", "20m"]) + } else { + nmap_args.append(&mut vec!["-sV"]) } if !ports.is_empty() { From 1b79bcd334103ca69cd09b14b46d9c686af4be07 Mon Sep 17 00:00:00 2001 From: Edu4rdSHL Date: Mon, 10 May 2021 20:39:29 -0500 Subject: [PATCH 22/62] Update args. Signed-off-by: Edu4rdSHL --- src/args.rs | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/src/args.rs b/src/args.rs index 6b81942..747a630 100644 --- a/src/args.rs +++ b/src/args.rs @@ -29,7 +29,7 @@ pub fn get_args() -> Args { } }, file_name: if matches.is_present("output") { - value_t!(matches, "logs-dir", String).unwrap_or_else(|_| "logs".to_string()) + value_t!(matches, "logs-dir", String).unwrap_or_else(|_| "unimap_logs".to_string()) + "/" + "unimap" + &Utc::now().format("-log-%Y-%m-%d_%H-%M-%S").to_string() @@ -39,12 +39,9 @@ pub fn get_args() -> Args { } else { String::new() }, - logs_dir: value_t!(matches, "logs-dir", String).unwrap_or_else(|_| "logs".to_string()), - threads: if (matches.is_present("port-scan") - || matches.is_present("initial-port") - || matches.is_present("last-port")) - && !matches.is_present("threads") - { + logs_dir: value_t!(matches, "logs-dir", String) + .unwrap_or_else(|_| "unimap_logs".to_string()), + threads: if matches.is_present("ports") && !matches.is_present("threads") { 30 } else { value_t!(matches, "threads", usize).unwrap_or_else(|_| 50) @@ -56,7 +53,7 @@ pub fn get_args() -> Args { from_file_flag: matches.is_present("files"), quiet_flag: matches.is_present("quiet"), custom_resolvers: matches.is_present("custom-resolvers"), - custom_ports_range: matches.is_present("initial-port") || matches.is_present("last-port"), + custom_ports_range: matches.is_present("ports"), fast_scan: matches.is_present("fast-scan"), no_keep_nmap_logs: matches.is_present("no-keep-nmap-logs"), raw_output: matches.is_present("raw-output"), From b969fd74e9c28853572c350426531716a257c29c Mon Sep 17 00:00:00 2001 From: Edu4rdSHL Date: Mon, 10 May 2021 21:08:25 -0500 Subject: [PATCH 23/62] Bump version. --- Cargo.lock | 2 +- Cargo.toml | 2 +- builder.sh | 82 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ unimap.1 | 78 +++++++++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 162 insertions(+), 2 deletions(-) create mode 100755 builder.sh create mode 100644 unimap.1 diff --git a/Cargo.lock b/Cargo.lock index 981fe35..7810f53 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1269,7 +1269,7 @@ checksum = "8ccb82d61f80a663efe1f787a51b16b5a51e3314d6ac365b08639f52387b33f3" [[package]] name = "unimap" -version = "0.3.0" +version = "0.4.0" dependencies = [ "atty", "chrono", diff --git a/Cargo.toml b/Cargo.toml index f04a816..73136ea 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "unimap" -version = "0.3.0" +version = "0.4.0" authors = ["Eduard Tolosa "] edition = "2018" description = "Scan only once by IP address and reduce scan times with Nmap for large amounts of data." diff --git a/builder.sh b/builder.sh new file mode 100755 index 0000000..8c386b8 --- /dev/null +++ b/builder.sh @@ -0,0 +1,82 @@ +#!/usr/bin/env bash +# Rusolver releaser +NAME="unimap" + +LINUX_TARGET="x86_64-unknown-linux-musl" +WIN_TARGET="x86_64-pc-windows-gnu" +ARMV7_TARGET="armv7-unknown-linux-gnueabihf" +AARCH_TARGET="aarch64-unknown-linux-gnu" +OSX_TARGET="x86_64-apple-darwin" +MANPAGE_DIR="./$NAME.1" + +# Linux build +echo "Building Linux artifact." +if cargo build -q --release --target="$LINUX_TARGET"; then + echo "Linux artifact build: SUCCESS" + cp "target/$LINUX_TARGET/release/$NAME" "target/$LINUX_TARGET/release/$NAME-linux" +else + echo "Linux artifact build: FAILED" +fi + +# Windows build +echo "Building Windows artifact." +if cross build -q --release --target="$WIN_TARGET"; then + echo "Windows artifact build: SUCCESS" + cp "target/$WIN_TARGET/release/$NAME.exe" "target/$WIN_TARGET/release/$NAME-windows.exe" +else + echo "Windows artifact build: FAILED" +fi + +# ARMV7 build +echo "Building ARMv7 artifact." +if cross build -q --release --target="$ARMV7_TARGET"; then + echo "ARMv7 artifact build: SUCCESS" + cp "target/$ARMV7_TARGET/release/$NAME" "target/$ARMV7_TARGET/release/$NAME-armv7" +else + echo "ARMv7 artifact build: FAILED" +fi + +# Aarch64 build +echo "Building Aarch64 artifact." +if cross build -q --release --target="$AARCH_TARGET"; then + echo "Aarch64 artifact build: SUCCESS" + cp "target/$AARCH_TARGET/release/$NAME" "target/$AARCH_TARGET/release/$NAME-aarch64" +else + echo "Aarch64 artifact build: FAILED" +fi + +# Mac OS build +echo "Building OSX artifact." +if CC=o64-clang CXX=o64-clang++ LIBZ_SYS_STATIC=1 cargo build -q --release --target="$OSX_TARGET"; then + echo "OSX artifact build: SUCCESS" + cp "target/$OSX_TARGET/release/$NAME" "target/$OSX_TARGET/release/$NAME-osx" +else + echo "OSX artifact build: FAILED" +fi + +echo "Creating manpage..." +if command -v help2man >/dev/null; then + if help2man -o "$MANPAGE_DIR" "target/$LINUX_TARGET/release/$NAME"; then + echo "Manpage created sucessfully and saved in $MANPAGE_DIR" + else + echo "Error creating manpage." + fi +else + echo "Please install the help2man package." +fi + +if command -v git >/dev/null; then + git add . + git commit -m "Bump version." + git push +fi + +#echo "Uploading crate to crates.io..." +#if cargo publish --no-verify > /dev/null; then +# echo "Crate uploaded." +#else +# echo "An error has occurred while uploading the crate to crates.io." +# exit +#fi + +echo "All builds have passed!" diff --git a/unimap.1 b/unimap.1 new file mode 100644 index 0000000..9e11d0a --- /dev/null +++ b/unimap.1 @@ -0,0 +1,78 @@ +.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.48.3. +.TH UNIMAP "1" "May 2021" "Unimap 0.4.0" "User Commands" +.SH NAME +Unimap \- manual page for Unimap 0.4.0 +.SH DESCRIPTION +Unimap 0.4.0 +Eduard Tolosa +Scan only once by IP address and reduce scan times with Nmap for large amounts of data. +.SS "USAGE:" +.IP +unimap [FLAGS] [OPTIONS] +.SS "FLAGS:" +.TP +\fB\-\-fast\-scan\fR +Use fast scanning for ports (no version detection). +.TP +\fB\-h\fR, \fB\-\-help\fR +Prints help information +.TP +\fB\-k\fR, \fB\-\-no\-keep\-nmap\-logs\fR +Keep Nmap XML files created in the logs/ folder for every scanned IP. This data will be +useful for other tasks. +.TP +\fB\-o\fR, \fB\-\-output\fR +Write to an output file. The name of the output file will be unimap\-log\-date. +.TP +\fB\-q\fR, \fB\-\-quiet\fR +Remove informative messages. +.TP +\fB\-r\fR, \fB\-\-raw\-output\fR +Use raw output instead of a table. +.TP +\fB\-\-url\-output\fR +Use HOST:IP output format. +.TP +\fB\-V\fR, \fB\-\-version\fR +Prints version information +.SS "OPTIONS:" +.TP +\fB\-\-resolvers\fR ... +Path to a file (or files) containing a list of DNS IP address. If no +specified then 1.6k of built\-in valid DNS servers from public\-dns.info are +used. +.TP +\fB\-f\fR, \fB\-\-file\fR ... +Use a list of targets writen in a file as input. +.TP +\fB\-\-logs\-dir\fR +Path to save the CSV data of the process and/or Nmap XML files. Default to +logs/. +.TP +\fB\-\-min\-rate\fR +Nmap \fB\-\-min\-rate\fR value for ports scan. +.TP +\fB\-\-ports\fR +Ports to scan. You can specify a range of ports, a list, or both. Put them +inside double quotes, for example: "22, 80, 443, 1000\-5000" +.TP +\fB\-t\fR, \fB\-\-target\fR +Target host. +.TP +\fB\-\-threads\fR +Number of threads to use to perform the resolution. +.TP +\fB\-u\fR, \fB\-\-unique\-output\fR +Write the output in CSV format to the specified filename. +.SH "SEE ALSO" +The full documentation for +.B Unimap +is maintained as a Texinfo manual. If the +.B info +and +.B Unimap +programs are properly installed at your site, the command +.IP +.B info Unimap +.PP +should give you access to the complete manual. From 177e29abe4714d65548fa21c134ed144e00d01e3 Mon Sep 17 00:00:00 2001 From: Edu4rdSHL Date: Tue, 11 May 2021 03:18:48 -0500 Subject: [PATCH 24/62] Update .gitignore. Signed-off-by: Edu4rdSHL --- .gitignore | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 22ff063..eb93940 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ /target /logs -*.txt \ No newline at end of file +*.txt +/unimap_logs From ba1f7da885defdcc21228bfd7ef5d345d1b44ec9 Mon Sep 17 00:00:00 2001 From: Edu4rdSHL Date: Tue, 11 May 2021 15:00:50 -0500 Subject: [PATCH 25/62] Add support from reading from stdin. Signed-off-by: Edu4rdSHL --- src/args.rs | 1 + src/cli.yml | 11 +++++++++++ src/lib.rs | 2 +- src/main.rs | 8 +++++--- src/misc.rs | 14 +++++++++++++- src/structs.rs | 1 + 6 files changed, 32 insertions(+), 5 deletions(-) diff --git a/src/args.rs b/src/args.rs index 747a630..c462225 100644 --- a/src/args.rs +++ b/src/args.rs @@ -58,6 +58,7 @@ pub fn get_args() -> Args { no_keep_nmap_logs: matches.is_present("no-keep-nmap-logs"), raw_output: matches.is_present("raw-output"), url_output: matches.is_present("url-output"), + from_stdin: matches.is_present("stdin"), files: return_matches_vec(&matches, "files"), min_rate: value_t!(matches, "min-rate", String).unwrap_or_else(|_| String::new()), resolvers: if matches.is_present("custom-resolvers") { diff --git a/src/cli.yml b/src/cli.yml index fc02883..ca109bd 100644 --- a/src/cli.yml +++ b/src/cli.yml @@ -13,6 +13,7 @@ args: multiple: false conflicts_with: - files + - stdin - files: short: f @@ -22,6 +23,7 @@ args: multiple: true conflicts_with: - target + - stdin - output: short: o @@ -100,3 +102,12 @@ args: multiple: false conflicts_with: - raw-output + + - stdin: + help: Read from stdin instead of files or aguments. + long: stdin + takes_value: false + multiple: false + conflicts_with: + - files + - target diff --git a/src/lib.rs b/src/lib.rs index 5b46bea..b7b2238 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -11,11 +11,11 @@ pub mod args; pub mod errors; pub mod files; pub mod logger; +pub mod misc; pub mod resolver_engine; mod defaults; mod logic; -mod misc; mod networking; mod nmap; mod structs; diff --git a/src/main.rs b/src/main.rs index 49b95f7..afaa2af 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,7 +1,7 @@ use { log::{error, Level}, std::{collections::HashSet, iter::FromIterator}, - unimap::{args, errors::*, files::return_file_targets, logger, resolver_engine}, + unimap::{args, errors::*, files::return_file_targets, logger, misc, resolver_engine}, }; fn run() -> Result<()> { @@ -14,8 +14,10 @@ fn run() -> Result<()> { if !arguments.files.is_empty() { arguments.targets = HashSet::from_iter(return_file_targets(&arguments, arguments.files.clone())) - } else { + } else if !arguments.target.is_empty() { arguments.targets.insert(arguments.target.clone()); + } else { + arguments.targets = misc::read_stdin() } if arguments.targets.len() < 50 { @@ -27,7 +29,7 @@ fn run() -> Result<()> { .build_global() .unwrap(); - if !arguments.target.is_empty() || !arguments.files.is_empty() { + if !arguments.targets.is_empty() { resolver_engine::parallel_resolver_all(&mut arguments) } else { error!("Error: Target is empty or invalid!\n"); diff --git a/src/misc.rs b/src/misc.rs index 15ad273..6c0bc2a 100644 --- a/src/misc.rs +++ b/src/misc.rs @@ -1,4 +1,7 @@ -use std::collections::HashSet; +use std::{ + collections::HashSet, + io::{self, Read}, +}; pub fn sanitize_target_string(target: String) -> String { target @@ -32,3 +35,12 @@ pub fn return_matches_hashset(matches: &clap::ArgMatches, value: &str) -> HashSe HashSet::new() } } + +pub fn read_stdin() -> HashSet { + let mut buffer = String::new(); + let mut stdin = io::stdin(); + stdin + .read_to_string(&mut buffer) + .expect("Error getting input list."); + buffer.lines().map(str::to_owned).collect() +} diff --git a/src/structs.rs b/src/structs.rs index edc937c..5802894 100644 --- a/src/structs.rs +++ b/src/structs.rs @@ -22,6 +22,7 @@ pub struct Args { pub raw_output: bool, pub fast_scan: bool, pub url_output: bool, + pub from_stdin: bool, pub files: Vec, pub resolvers: Vec, pub targets: HashSet, From 9845fc4481b7489c3bb0a2839b9ed05bc28a141c Mon Sep 17 00:00:00 2001 From: Edu4rdSHL Date: Tue, 11 May 2021 15:03:52 -0500 Subject: [PATCH 26/62] Bump version. --- Cargo.lock | 23 ++++++++++++----------- Cargo.toml | 2 +- unimap.1 | 9 ++++++--- 3 files changed, 19 insertions(+), 15 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 7810f53..9c207e8 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -360,37 +360,38 @@ dependencies = [ [[package]] name = "futures-channel" -version = "0.3.14" +version = "0.3.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce79c6a52a299137a6013061e0cf0e688fce5d7f1bc60125f520912fdb29ec25" +checksum = "e682a68b29a882df0545c143dc3646daefe80ba479bcdede94d5a703de2871e2" dependencies = [ "futures-core", ] [[package]] name = "futures-core" -version = "0.3.14" +version = "0.3.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "098cd1c6dda6ca01650f1a37a794245eb73181d0d4d4e955e2f3c37db7af1815" +checksum = "0402f765d8a89a26043b889b26ce3c4679d268fa6bb22cd7c6aad98340e179d1" [[package]] name = "futures-io" -version = "0.3.14" +version = "0.3.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "365a1a1fb30ea1c03a830fdb2158f5236833ac81fa0ad12fe35b29cddc35cb04" +checksum = "acc499defb3b348f8d8f3f66415835a9131856ff7714bf10dadfc4ec4bdb29a1" [[package]] name = "futures-task" -version = "0.3.14" +version = "0.3.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba7aa51095076f3ba6d9a1f702f74bd05ec65f555d70d2033d55ba8d69f581bc" +checksum = "8a16bef9fc1a4dddb5bee51c989e3fbba26569cbb0e31f5b303c184e3dd33dae" [[package]] name = "futures-util" -version = "0.3.14" +version = "0.3.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c144ad54d60f23927f0a6b6d816e4271278b64f005ad65e4e35291d2de9c025" +checksum = "feb5c238d27e2bf94ffdfd27b2c29e3df4a68c4193bb6427384259e2bf191967" dependencies = [ + "autocfg", "futures-core", "futures-task", "pin-project-lite", @@ -1269,7 +1270,7 @@ checksum = "8ccb82d61f80a663efe1f787a51b16b5a51e3314d6ac365b08639f52387b33f3" [[package]] name = "unimap" -version = "0.4.0" +version = "0.5.0" dependencies = [ "atty", "chrono", diff --git a/Cargo.toml b/Cargo.toml index 73136ea..9dc2644 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "unimap" -version = "0.4.0" +version = "0.5.0" authors = ["Eduard Tolosa "] edition = "2018" description = "Scan only once by IP address and reduce scan times with Nmap for large amounts of data." diff --git a/unimap.1 b/unimap.1 index 9e11d0a..6e0eb6a 100644 --- a/unimap.1 +++ b/unimap.1 @@ -1,9 +1,9 @@ .\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.48.3. -.TH UNIMAP "1" "May 2021" "Unimap 0.4.0" "User Commands" +.TH UNIMAP "1" "May 2021" "Unimap 0.5.0" "User Commands" .SH NAME -Unimap \- manual page for Unimap 0.4.0 +Unimap \- manual page for Unimap 0.5.0 .SH DESCRIPTION -Unimap 0.4.0 +Unimap 0.5.0 Eduard Tolosa Scan only once by IP address and reduce scan times with Nmap for large amounts of data. .SS "USAGE:" @@ -30,6 +30,9 @@ Remove informative messages. \fB\-r\fR, \fB\-\-raw\-output\fR Use raw output instead of a table. .TP +\fB\-\-stdin\fR +Read from stdin instead of files or aguments. +.TP \fB\-\-url\-output\fR Use HOST:IP output format. .TP From fb6dbe11d07f0b23377af7e69fdd11d902703778 Mon Sep 17 00:00:00 2001 From: Edu4rdSHL Date: Sun, 16 May 2021 07:37:45 -0500 Subject: [PATCH 27/62] Use custom trust-dns fork for performance improvements. Signed-off-by: Edu4rdSHL --- Cargo.lock | 44 +++++++++++++++++++++++++------------------- Cargo.toml | 2 +- 2 files changed, 26 insertions(+), 20 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 9c207e8..5f8079c 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -120,7 +120,7 @@ dependencies = [ "lazy_static", "memchr", "regex-automata", - "serde 1.0.125", + "serde 1.0.126", ] [[package]] @@ -129,6 +129,12 @@ version = "1.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" +[[package]] +name = "bytes" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b700ce4376041dcd0a327fd0097c41095743c4c8af8887265942faf1100bd040" + [[package]] name = "cc" version = "1.0.67" @@ -190,7 +196,7 @@ dependencies = [ "lazy_static", "nom", "rust-ini", - "serde 1.0.125", + "serde 1.0.126", "serde-hjson", "serde_json", "toml", @@ -258,7 +264,7 @@ dependencies = [ "csv-core", "itoa", "ryu", - "serde 1.0.125", + "serde 1.0.126", ] [[package]] @@ -988,9 +994,9 @@ checksum = "9dad3f759919b92c3068c696c15c3d17238234498bbdcc80f2c469606f948ac8" [[package]] name = "serde" -version = "1.0.125" +version = "1.0.126" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "558dc50e1a5a5fa7112ca2ce4effcb321b0300c0d4ccf0776a9f60cd89031171" +checksum = "ec7505abeacaec74ae4778d9d9328fe5a5d04253220a85c4ee022239fc996d03" dependencies = [ "serde_derive", ] @@ -1014,16 +1020,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f0bf1ba0696ccf0872866277143ff1fd14d22eec235d2b23702f95e6660f7dfa" dependencies = [ "log", - "serde 1.0.125", + "serde 1.0.126", "thiserror", "xml-rs", ] [[package]] name = "serde_derive" -version = "1.0.125" +version = "1.0.126" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b093b7a2bb58203b5da3056c05b4ec1fed827dcfdb37347a8841695263b3d06d" +checksum = "963a7dbc9895aeac7ac90e74f34a5d5261828f79df35cbed41e10189d3804d43" dependencies = [ "proc-macro2", "quote", @@ -1038,7 +1044,7 @@ checksum = "799e97dc9fdae36a5c8b8f2cae9ce2ee9fdce2058c57a93e6099d919fd982f79" dependencies = [ "itoa", "ryu", - "serde 1.0.125", + "serde 1.0.126", ] [[package]] @@ -1167,12 +1173,14 @@ checksum = "cda74da7e1a664f795bb1f8a87ec406fb89a02522cf6e50620d016add6dbbf5c" [[package]] name = "tokio" -version = "1.5.0" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83f0c8e7c0addab50b663055baf787d0af7f413a46e6e7fb9559a4e4db7137a5" +checksum = "bd3076b5c8cc18138b8f8814895c11eb4de37114a5d127bafdc5e55798ceef37" dependencies = [ "autocfg", + "bytes", "libc", + "memchr", "mio", "num_cpus", "pin-project-lite", @@ -1184,14 +1192,13 @@ version = "0.5.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a31142970826733df8241ef35dc040ef98c679ab14d7c3e54d827099b3acecaa" dependencies = [ - "serde 1.0.125", + "serde 1.0.126", ] [[package]] name = "trust-dns-proto" -version = "0.20.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "952a078337565ba39007de99b151770f41039253a31846f0a3d5cd5a4ac8eedf" +version = "0.20.1" +source = "git+https://github.com/Edu4rdSHL/trust-dns?branch=main#3047d95f76d26f5debd8d76e94542db4e47f68b4" dependencies = [ "async-trait", "cfg-if", @@ -1214,9 +1221,8 @@ dependencies = [ [[package]] name = "trust-dns-resolver" -version = "0.20.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da9c97f7d103e0f94dbe384a57908833505ae5870126492f166821b7cf685589" +version = "0.20.1" +source = "git+https://github.com/Edu4rdSHL/trust-dns?branch=main#3047d95f76d26f5debd8d76e94542db4e47f68b4" dependencies = [ "cfg-if", "futures-util", @@ -1284,7 +1290,7 @@ dependencies = [ "prettytable-rs", "rand", "rayon", - "serde 1.0.125", + "serde 1.0.126", "serde-xml-rs", "serde_derive", "trust-dns-resolver", diff --git a/Cargo.toml b/Cargo.toml index 9dc2644..ca4a6d8 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -12,7 +12,7 @@ readme = "README.md" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] -trust-dns-resolver = "0.20.2" +trust-dns-resolver = { git = "https://github.com/Edu4rdSHL/trust-dns", branch = "main" } rayon = "1.5.0" log = { version = "0.4.14", features = ["std"] } colored = { version = "2.0.0", optional = true } From ab00d977bdc8d1f16409359df03baea4d024cfc2 Mon Sep 17 00:00:00 2001 From: Edu4rdSHL Date: Sun, 16 May 2021 07:40:29 -0500 Subject: [PATCH 28/62] Use a `Resolver` with multiple nameserver ips instead of creating multiple `Resolver` instances. Signed-off-by: Edu4rdSHL --- src/networking.rs | 73 +++++++++++++++++++++++++++--------------- src/resolver_engine.rs | 30 +++++++++++------ 2 files changed, 67 insertions(+), 36 deletions(-) diff --git a/src/networking.rs b/src/networking.rs index 9828dc5..123c1e7 100644 --- a/src/networking.rs +++ b/src/networking.rs @@ -1,9 +1,8 @@ use { - log::error, - rand::{seq::SliceRandom, thread_rng as rng}, - std::net::{IpAddr, Ipv4Addr}, + crate::{files, structs::Args}, + std::{collections::HashSet, net::SocketAddr}, trust_dns_resolver::{ - config::{NameServerConfigGroup, ResolverConfig, ResolverOpts}, + config::{NameServerConfig, NameServerConfigGroup, Protocol, ResolverConfig, ResolverOpts}, Resolver, }, }; @@ -19,29 +18,51 @@ pub fn get_records(resolver: &Resolver, domain: &str) -> String { } } -pub fn get_resolver(resolvers_ips: &[Ipv4Addr], opts: &ResolverOpts) -> Resolver { - match Resolver::new( - ResolverConfig::from_parts( - None, - vec![], - NameServerConfigGroup::from_ips_clear( - &[IpAddr::V4( - resolvers_ips - .choose(&mut rng()) - .expect("failed to read ipv4 string") - .to_owned(), - )], - 53, - false, - ), - ), - *opts, - ) { - Ok(resolver) => resolver, +pub fn get_resolver(nameserver_ips: HashSet, opts: ResolverOpts) -> Resolver { + let mut name_servers = NameServerConfigGroup::with_capacity(nameserver_ips.len() * 2); + name_servers.extend(nameserver_ips.into_iter().flat_map(|socket_addr| { + std::iter::once(NameServerConfig { + socket_addr, + protocol: Protocol::Udp, + tls_dns_name: None, + trust_nx_responses: false, + }) + .chain(std::iter::once(NameServerConfig { + socket_addr, + protocol: Protocol::Tcp, + tls_dns_name: None, + trust_nx_responses: false, + })) + })); + Resolver::new(ResolverConfig::from_parts(None, vec![], name_servers), opts).unwrap() +} - Err(e) => { - error!("Failed to create the resolver. Error: {}\n", e); - std::process::exit(1) +pub fn return_socket_address(args: &Args) -> HashSet { + let mut resolver_ips = HashSet::new(); + if args.custom_resolvers { + for r in &files::return_file_targets(&args, args.resolvers.clone()) { + let server = r.to_owned() + ":53"; + let socket_addr = SocketAddr::V4(match server.parse() { + Ok(a) => a, + Err(e) => unreachable!( + "Error parsing the server {}, only IPv4 are allowed. Error: {}", + r, e + ), + }); + resolver_ips.insert(socket_addr); + } + } else { + for r in &args.resolvers { + let server = r.to_owned() + ":53"; + let socket_addr = SocketAddr::V4(match server.parse() { + Ok(a) => a, + Err(e) => unreachable!( + "Error parsing the server {}, only IPv4 are allowed. Error: {}", + r, e + ), + }); + resolver_ips.insert(socket_addr); } } + resolver_ips } diff --git a/src/resolver_engine.rs b/src/resolver_engine.rs index bc933bd..8bedae9 100644 --- a/src/resolver_engine.rs +++ b/src/resolver_engine.rs @@ -15,7 +15,10 @@ use { net::Ipv4Addr, time::Duration, }, - trust_dns_resolver::config::ResolverOpts, + trust_dns_resolver::{ + config::{LookupIpStrategy, ResolverOpts}, + Resolver, + }, }; lazy_static! { @@ -57,7 +60,16 @@ pub fn parallel_resolver_all(args: &mut Args) -> Result<()> { ) } - let data = parallel_resolver_engine(&args, args.targets.clone()); + let opts = ResolverOpts { + timeout: Duration::from_secs(1), + ip_strategy: LookupIpStrategy::Ipv4Only, + num_concurrent_reqs: 1, + ..Default::default() + }; + + let resolver = networking::get_resolver(networking::return_socket_address(args), opts); + + let data = parallel_resolver_engine(&args, args.targets.clone(), resolver); let mut table = Table::new(); table.set_titles(row![ @@ -186,19 +198,17 @@ pub fn parallel_resolver_all(args: &mut Args) -> Result<()> { Ok(()) } -fn parallel_resolver_engine(args: &Args, targets: HashSet) -> HashMap { - let opts = ResolverOpts { - timeout: Duration::from_secs(2), - ..Default::default() - }; - +fn parallel_resolver_engine( + args: &Args, + targets: HashSet, + resolver: Resolver, +) -> HashMap { let resolv_data: HashMap = targets .par_iter() .map(|target| { let fqdn_target = format!("{}.", target); let mut resolv_data = ResolvData::default(); - resolv_data.ip = - networking::get_records(&networking::get_resolver(&RESOLVERS, &opts), &fqdn_target); + resolv_data.ip = networking::get_records(&resolver, &fqdn_target); (target.to_owned(), resolv_data) }) .collect(); From 4ffa94d61354c4653fe7a794e6c697315b24d819 Mon Sep 17 00:00:00 2001 From: Edu4rdSHL Date: Sun, 16 May 2021 07:44:28 -0500 Subject: [PATCH 29/62] Bump version. --- Cargo.lock | 2 +- Cargo.toml | 2 +- unimap.1 | 6 +++--- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 5f8079c..9972c03 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1276,7 +1276,7 @@ checksum = "8ccb82d61f80a663efe1f787a51b16b5a51e3314d6ac365b08639f52387b33f3" [[package]] name = "unimap" -version = "0.5.0" +version = "0.5.1" dependencies = [ "atty", "chrono", diff --git a/Cargo.toml b/Cargo.toml index ca4a6d8..6b1727f 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "unimap" -version = "0.5.0" +version = "0.5.1" authors = ["Eduard Tolosa "] edition = "2018" description = "Scan only once by IP address and reduce scan times with Nmap for large amounts of data." diff --git a/unimap.1 b/unimap.1 index 6e0eb6a..5320030 100644 --- a/unimap.1 +++ b/unimap.1 @@ -1,9 +1,9 @@ .\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.48.3. -.TH UNIMAP "1" "May 2021" "Unimap 0.5.0" "User Commands" +.TH UNIMAP "1" "May 2021" "Unimap 0.5.1" "User Commands" .SH NAME -Unimap \- manual page for Unimap 0.5.0 +Unimap \- manual page for Unimap 0.5.1 .SH DESCRIPTION -Unimap 0.5.0 +Unimap 0.5.1 Eduard Tolosa Scan only once by IP address and reduce scan times with Nmap for large amounts of data. .SS "USAGE:" From 89e300439a475c25dc741472f8e48d7229cd9935 Mon Sep 17 00:00:00 2001 From: Edu4rdSHL Date: Sun, 16 May 2021 16:23:45 -0500 Subject: [PATCH 30/62] Bump version. --- Cargo.lock | 5 +++-- Cargo.toml | 4 ++-- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 9972c03..76cfce8 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1198,7 +1198,7 @@ dependencies = [ [[package]] name = "trust-dns-proto" version = "0.20.1" -source = "git+https://github.com/Edu4rdSHL/trust-dns?branch=main#3047d95f76d26f5debd8d76e94542db4e47f68b4" +source = "git+https://github.com/Edu4rdSHL/trust-dns?branch=main#451a00fbe3c0972adb4cdbd9d2e2f2a39a44da0e" dependencies = [ "async-trait", "cfg-if", @@ -1222,7 +1222,7 @@ dependencies = [ [[package]] name = "trust-dns-resolver" version = "0.20.1" -source = "git+https://github.com/Edu4rdSHL/trust-dns?branch=main#3047d95f76d26f5debd8d76e94542db4e47f68b4" +source = "git+https://github.com/Edu4rdSHL/trust-dns?branch=main#451a00fbe3c0972adb4cdbd9d2e2f2a39a44da0e" dependencies = [ "cfg-if", "futures-util", @@ -1231,6 +1231,7 @@ dependencies = [ "log", "lru-cache", "parking_lot", + "rand", "resolv-conf", "smallvec", "thiserror", diff --git a/Cargo.toml b/Cargo.toml index 6b1727f..a43340f 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -18,8 +18,8 @@ log = { version = "0.4.14", features = ["std"] } colored = { version = "2.0.0", optional = true } rand = "0.8.3" lazy_static = "1.4.0" -serde = { version = "1.0.125", features = ["derive"] } -serde_derive = "1.0.125" +serde = { version = "1.0.126", features = ["derive"] } +serde_derive = "1.0.126" prettytable-rs = "0.8.0" serde-xml-rs = "0.4.1" chrono = "0.4.19" From 1e57858d4d8011e6e3e8ed4d5263588d6c310caa Mon Sep 17 00:00:00 2001 From: 0xflotus <0xflotus@gmail.com> Date: Sat, 22 May 2021 06:20:36 +0200 Subject: [PATCH 31/62] Fix typos. --- README.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index 8e436fb..f005868 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ Scan only once by IP address and reduce scan times with Nmap for large amounts of data. Unimap is an abbreviation of "Unique Nmap *Scan*". The tool can run in Linux, OSX, Windows or Android (Termux) without problems. # Why? -If you have plans to run an Nmap to a whole organization you need to consideer that surely tens, hundreds or even thousands of subdomains will point to the same IP address and there will come a point where it becomes almost impossible to continue scanning. Also your IP may end up blocked due to multiple scans to the same remote host address among other things. +If you have plans to run a Nmap to a whole organization you need to consider that surely tens, hundreds or even thousands of subdomains will point to the same IP address and there will come a point where it becomes almost impossible to continue scanning. Also your IP may end up blocked due to multiple scans to the same remote host address among other things. # How? Unimap uses its own technology to initially resolve the IP addresses of all subdomains, once this process is finished, it creates a vector with the unique IP addresses and launches a parallel scan with Nmap according to the number of threads that the user has configured, at the same time, it analyzes the data from the files created with Nmap to find out which information corresponds to each IP. Finally, Unimap relates the information of each of the IPs associated with the subdomains. So, for example, if you have 50 subdomains that point to the same IP, you will only do one Nmap scan but you will have all the data associated with each of the subdomains at the same time, in a large scan it saves days or weeks. @@ -23,7 +23,7 @@ You need to have Rust and Nmap installed in your computer, then run: ## Using the AUR packages. (Arch Linux) -`unimap` can be installed from available [AUR packages](https://aur.archlinux.org/packages/?O=0&SeB=b&K=unimap&outdated=&SB=n&SO=a&PP=50&do_Search=Go) using an [AUR helper](https://wiki.archlinux.org/index.php/AUR_helpers). For example, +`unimap` can be installed from available [AUR packages](https://aur.archlinux.org/packages/?O=0&SeB=b&K=unimap&outdated=&SB=n&SO=a&PP=50&do_Search=Go) using a [AUR helper](https://wiki.archlinux.org/index.php/AUR_helpers). For example, ``` yay -S unimap @@ -55,17 +55,17 @@ git clone https://aur.archlinux.org/unimap.git && cd unimap && makepkg -si |-f, --file|Use a list of targets writen in a file as input.| |--iport|Initial port if you want to scan a custom range.| |--lport|Last port if you want to scan a custom range.| -|--logs-dir|Path to save the CSV data of the process. Usefull when doing automated scans with the -o option.| +|--logs-dir|Path to save the CSV data of the process. Useful when doing automated scans with the -o option.| |--min-rate| Controls [Nmap's --min-rate](https://nmap.org/book/man-performance.html). Default to 30000.| |-t, --target|Host if you want to scan only one and extract the interesting data.| |--threads|Number of threads. **Have in mind that the same number of Nmap scans will be started at time.** Default to 30.| -|-u, --unique-output|Write output to an specified filename.| +|-u, --unique-output|Write output to a specified filename.| # Examples -1. `unimap -f targets.txt -u log.csv` performs an full scan and write output to log.csv. -2. `unimap -f targets.txt --fast-scan -o` performs an fast scan and save the logfile to logs/ folder. -3. `sudo unimap -f targets.txt --iport 1 --lport 1000 --min-rate 1000` scan ports from 1-1000 doing service and versions detection (if you want a fast scan use the --fast-scan flag) with an min-rate of 1000. +1. `unimap -f targets.txt -u log.csv` performs a full scan and writes output to log.csv. +2. `unimap -f targets.txt --fast-scan -o` performs a fast scan and saves the logfile to the logs/ folder. +3. `sudo unimap -f targets.txt --iport 1 --lport 1000 --min-rate 1000` scans ports from 1-1000 doing service and version detection (if you want a fast scan use the --fast-scan flag) with a min-rate of 1000. # Considerations From 21bc360f888de19d19f4512db7128dae44a9e62a Mon Sep 17 00:00:00 2001 From: Eduard Tolosa Date: Mon, 26 Jul 2021 09:10:08 +0000 Subject: [PATCH 32/62] Update FUNDING.yml --- .github/FUNDING.yml | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml index a406285..ff19fdb 100644 --- a/.github/FUNDING.yml +++ b/.github/FUNDING.yml @@ -1,4 +1 @@ -# These are supported funding model platforms -patreon: edu4rdshl -open_collective: findomain -custom: ["https://paypal.me/sechacklabs"] +github: [edu4rdshl] From 8543aa2c44c2117d6edfbcb3e540ad1c0425c770 Mon Sep 17 00:00:00 2001 From: Amin Vakil Date: Mon, 6 Sep 2021 10:54:05 +0430 Subject: [PATCH 33/62] Fix grammar. --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index f005868..2dfa2b9 100644 --- a/README.md +++ b/README.md @@ -71,7 +71,7 @@ git clone https://aur.archlinux.org/unimap.git && cd unimap && makepkg -si * Unimap is preconfigured to run on faster networks (cloud VPS), if you run a scan in a home network that doesn't have too much capacity you will end up disconnected from network. * The previously doesn't mean you can not use Unimap from your home, just adjust the number of `--threads` and `--min-rate` (being it the most important). -* We do not wrap Nmap in any way or scan ports on our own, we use the right Nmap options to get the most performance, Nmap rocks and it's the faster ports scanner that currently exists. +* We do not wrap Nmap in any way or scan ports on our own, we use the right Nmap options to get the most performance, Nmap rocks and it's the fastest port scanner that currently exists. * We parse Nmap output data and give you more understandable output while also preventing you to scan the same IP several times, **it's our main goal** . # Found a bug? From 970fd42e48035bd248e219a091e468c339c791a3 Mon Sep 17 00:00:00 2001 From: Edu4rdSHL Date: Wed, 20 Oct 2021 06:15:40 -0500 Subject: [PATCH 34/62] Fix clippy warnings. Signed-off-by: Edu4rdSHL --- src/networking.rs | 2 +- src/nmap.rs | 2 +- src/resolver_engine.rs | 6 +++--- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/networking.rs b/src/networking.rs index 123c1e7..bb5ff8b 100644 --- a/src/networking.rs +++ b/src/networking.rs @@ -40,7 +40,7 @@ pub fn get_resolver(nameserver_ips: HashSet, opts: ResolverOpts) -> pub fn return_socket_address(args: &Args) -> HashSet { let mut resolver_ips = HashSet::new(); if args.custom_resolvers { - for r in &files::return_file_targets(&args, args.resolvers.clone()) { + for r in &files::return_file_targets(args, args.resolvers.clone()) { let server = r.to_owned() + ":53"; let socket_addr = SocketAddr::V4(match server.parse() { Ok(a) => a, diff --git a/src/nmap.rs b/src/nmap.rs index 102d8f9..b54d022 100644 --- a/src/nmap.rs +++ b/src/nmap.rs @@ -142,7 +142,7 @@ pub fn get_nmap_data( } if !ports.is_empty() { - nmap_args.append(&mut vec!["-p", &ports]) + nmap_args.append(&mut vec!["-p", ports]) } nmap_args.push(host); diff --git a/src/resolver_engine.rs b/src/resolver_engine.rs index 8bedae9..6569cb1 100644 --- a/src/resolver_engine.rs +++ b/src/resolver_engine.rs @@ -69,7 +69,7 @@ pub fn parallel_resolver_all(args: &mut Args) -> Result<()> { let resolver = networking::get_resolver(networking::return_socket_address(args), opts); - let data = parallel_resolver_engine(&args, args.targets.clone(), resolver); + let data = parallel_resolver_engine(args, args.targets.clone(), resolver); let mut table = Table::new(); table.set_titles(row![ @@ -173,7 +173,7 @@ pub fn parallel_resolver_all(args: &mut Args) -> Result<()> { if args.with_output && !args.targets.is_empty() - && files::table_to_file(&table, files::return_output_file(&args)).is_err() + && files::table_to_file(&table, files::return_output_file(args)).is_err() && !args.quiet_flag { error!( @@ -224,7 +224,7 @@ fn parallel_resolver_engine( .par_iter() .map(|ip| { let filename = format!("{}/{}.xml", &args.logs_dir, &ip); - match nmap::get_nmap_data(&filename, &ip, &args.min_rate, &args.ports, args.fast_scan) { + match nmap::get_nmap_data(&filename, ip, &args.min_rate, &args.ports, args.fast_scan) { Ok(nmap_data) => { nmap_data .host From 661c4b1a044dbfcba87589321e940d676b53b724 Mon Sep 17 00:00:00 2001 From: Eduard Tolosa Date: Tue, 4 Jan 2022 09:39:36 -0500 Subject: [PATCH 35/62] Update installation instructions and remove legacy documentation. --- README.md | 36 +++++++++--------------------------- 1 file changed, 9 insertions(+), 27 deletions(-) diff --git a/README.md b/README.md index 2dfa2b9..db38bc7 100644 --- a/README.md +++ b/README.md @@ -9,10 +9,10 @@ Unimap uses its own technology to initially resolve the IP addresses of all subd # Installation +## From source + You need to have Rust and Nmap installed in your computer, then run: -* `cargo install unimap` to install from [crates.io](https://crates.io). -* or ``` 1. git clone https://github.com/Edu4rdSHL/unimap.git && cd unimap # Alternatively you can download a release from https://github.com/Edu4rdSHL/unimap/releases/latest @@ -21,12 +21,16 @@ You need to have Rust and Nmap installed in your computer, then run: # Now the binary is in ./target/release/unimap ``` +## Using precompiled binaries + +Download the [latest version](https://github.com/Edu4rdSHL/unimap/releases/latest) for your OS and use it. + ## Using the AUR packages. (Arch Linux) `unimap` can be installed from available [AUR packages](https://aur.archlinux.org/packages/?O=0&SeB=b&K=unimap&outdated=&SB=n&SO=a&PP=50&do_Search=Go) using a [AUR helper](https://wiki.archlinux.org/index.php/AUR_helpers). For example, ``` -yay -S unimap +$ paru -S unimap ``` If you prefer, you can clone the [AUR packages](https://aur.archlinux.org/packages/?O=0&SeB=b&K=unimap&outdated=&SB=n&SO=a&PP=50&do_Search=Go) and then compile them with [makepkg](https://wiki.archlinux.org/index.php/Makepkg). For example, @@ -39,37 +43,15 @@ git clone https://aur.archlinux.org/unimap.git && cd unimap && makepkg -si **Unimap requires root/administrator privileges to launch [Nmap TCP SYN (Stealth) Scan](https://nmap.org/book/synscan.html), we use it for accuracy and performance reasons.** If you are on Linux or Linux-based, just use a root shell or run the tool with sudo, in Windows you can open a Command Prompt (CMD) as Administrator and run the tool as usual. -* Flags doesn't require/accept values. - -|Flag|Description| -|-----------|------------| -|--fast-scan|Use fast scanning for ports (no version detection) and just scan the top 1000 ports.| -|-o, --output| Write to an output file. The name of the output file will be unimap-log-$date.| -|-k, --keep-nmap-logs| Keep Nmap XML files created in the logs/ folder for every scanned IP. This data will be useful for other tasks.| - -* Options require values. - -|Option|Description| -|-----------|------------| -|--resolvers|Path to a file (or files) containing a list of DNS IP address. If no specified then 1.6k of built-in valid DNS servers from public-dns.info are used.| -|-f, --file|Use a list of targets writen in a file as input.| -|--iport|Initial port if you want to scan a custom range.| -|--lport|Last port if you want to scan a custom range.| -|--logs-dir|Path to save the CSV data of the process. Useful when doing automated scans with the -o option.| -|--min-rate| Controls [Nmap's --min-rate](https://nmap.org/book/man-performance.html). Default to 30000.| -|-t, --target|Host if you want to scan only one and extract the interesting data.| -|--threads|Number of threads. **Have in mind that the same number of Nmap scans will be started at time.** Default to 30.| -|-u, --unique-output|Write output to a specified filename.| - # Examples 1. `unimap -f targets.txt -u log.csv` performs a full scan and writes output to log.csv. 2. `unimap -f targets.txt --fast-scan -o` performs a fast scan and saves the logfile to the logs/ folder. -3. `sudo unimap -f targets.txt --iport 1 --lport 1000 --min-rate 1000` scans ports from 1-1000 doing service and version detection (if you want a fast scan use the --fast-scan flag) with a min-rate of 1000. +3. `sudo unimap -f targets.txt --ports "1-1000" --min-rate 5000` scans ports from 1-1000 doing service and version detection (if you want a fast scan use the --fast-scan flag) with a min-rate of 5000. # Considerations -* Unimap is preconfigured to run on faster networks (cloud VPS), if you run a scan in a home network that doesn't have too much capacity you will end up disconnected from network. +* Unimap is preconfigured to run on faster networks (cloud VPS), if you run a scan in a home network that doesn't have too much capacity you will end up disconnected due to network throttling. * The previously doesn't mean you can not use Unimap from your home, just adjust the number of `--threads` and `--min-rate` (being it the most important). * We do not wrap Nmap in any way or scan ports on our own, we use the right Nmap options to get the most performance, Nmap rocks and it's the fastest port scanner that currently exists. * We parse Nmap output data and give you more understandable output while also preventing you to scan the same IP several times, **it's our main goal** . From a41b1807cbdf3323b1bfb98f3d00ee91ba9423eb Mon Sep 17 00:00:00 2001 From: Edu4rdSHL Date: Sun, 13 Feb 2022 06:08:27 -0500 Subject: [PATCH 36/62] Update builder.sh Cargo.toml: add [profile.release] Signed-off-by: Edu4rdSHL --- Cargo.toml | 8 ++++++++ builder.sh | 21 +++++++++++++++++++++ 2 files changed, 29 insertions(+) diff --git a/Cargo.toml b/Cargo.toml index a43340f..0faef0f 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -39,3 +39,11 @@ openssl = { version = "0.10.34", features = ["vendored"] } [target.'cfg(windows)'.dependencies] atty = "0.2.14" winapi = { version = "0.3.9", features = ["handleapi", "winbase"] } + + +[profile.release] +lto = true +codegen-units = 1 +panic = 'abort' +incremental = false +opt-level = "s" \ No newline at end of file diff --git a/builder.sh b/builder.sh index 8c386b8..ed2ff6f 100755 --- a/builder.sh +++ b/builder.sh @@ -3,6 +3,7 @@ NAME="unimap" LINUX_TARGET="x86_64-unknown-linux-musl" +LINUX_X86_TARGET="i686-unknown-linux-musl" WIN_TARGET="x86_64-pc-windows-gnu" ARMV7_TARGET="armv7-unknown-linux-gnueabihf" AARCH_TARGET="aarch64-unknown-linux-gnu" @@ -14,15 +15,30 @@ echo "Building Linux artifact." if cargo build -q --release --target="$LINUX_TARGET"; then echo "Linux artifact build: SUCCESS" cp "target/$LINUX_TARGET/release/$NAME" "target/$LINUX_TARGET/release/$NAME-linux" + strip "target/$LINUX_TARGET/release/$NAME-linux" + sha512sum "target/$LINUX_TARGET/release/$NAME-linux" >"target/$LINUX_TARGET/release/$NAME-linux.sha512" else echo "Linux artifact build: FAILED" fi +# Linux x86 build +echo "Building Linux x86 artifact." +if cross build -q --release --target="$LINUX_X86_TARGET"; then + echo "Linux x86 artifact build: SUCCESS" + cp "target/$LINUX_X86_TARGET/release/$NAME" "target/$LINUX_X86_TARGET/release/$NAME-linux-i386" + strip "target/$LINUX_X86_TARGET/release/$NAME-linux-i386" + sha512sum "target/$LINUX_X86_TARGET/release/$NAME-linux-i386" >"target/$LINUX_X86_TARGET/release/$NAME-linux-i386.sha512" +else + echo "Linux x86 artifact build: FAILED" +fi + # Windows build echo "Building Windows artifact." if cross build -q --release --target="$WIN_TARGET"; then echo "Windows artifact build: SUCCESS" cp "target/$WIN_TARGET/release/$NAME.exe" "target/$WIN_TARGET/release/$NAME-windows.exe" + strip "target/$WIN_TARGET/release/$NAME-windows.exe" + sha512sum "target/$WIN_TARGET/release/$NAME-windows.exe" >"target/$WIN_TARGET/release/$NAME-windows.exe.sha512" else echo "Windows artifact build: FAILED" fi @@ -32,6 +48,8 @@ echo "Building ARMv7 artifact." if cross build -q --release --target="$ARMV7_TARGET"; then echo "ARMv7 artifact build: SUCCESS" cp "target/$ARMV7_TARGET/release/$NAME" "target/$ARMV7_TARGET/release/$NAME-armv7" + strip "target/$ARMV7_TARGET/release/$NAME-armv7" + sha512sum "target/$ARMV7_TARGET/release/$NAME-armv7" >"target/$ARMV7_TARGET/release/$NAME-armv7.sha512" else echo "ARMv7 artifact build: FAILED" fi @@ -41,6 +59,7 @@ echo "Building Aarch64 artifact." if cross build -q --release --target="$AARCH_TARGET"; then echo "Aarch64 artifact build: SUCCESS" cp "target/$AARCH_TARGET/release/$NAME" "target/$AARCH_TARGET/release/$NAME-aarch64" + strip "target/$AARCH_TARGET/release/$NAME-aarch64" else echo "Aarch64 artifact build: FAILED" fi @@ -50,6 +69,8 @@ echo "Building OSX artifact." if CC=o64-clang CXX=o64-clang++ LIBZ_SYS_STATIC=1 cargo build -q --release --target="$OSX_TARGET"; then echo "OSX artifact build: SUCCESS" cp "target/$OSX_TARGET/release/$NAME" "target/$OSX_TARGET/release/$NAME-osx" + strip "target/$OSX_TARGET/release/$NAME-osx" + sha512sum "target/$OSX_TARGET/release/$NAME-osx" >"target/$OSX_TARGET/release/$NAME-osx.sha512" else echo "OSX artifact build: FAILED" fi From c646e9c5d99774db563a549de011b5b78561604c Mon Sep 17 00:00:00 2001 From: Edu4rdSHL Date: Sun, 20 Feb 2022 08:16:49 -0500 Subject: [PATCH 37/62] Fix #7 - now we depend on the Findomain's trust-dns crate. Bump dependencies. Signed-off-by: Edu4rdSHL --- Cargo.lock | 374 ++++++++++++++++++++++++++--------------------------- Cargo.toml | 26 ++-- 2 files changed, 200 insertions(+), 200 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 76cfce8..14eb71b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1,10 +1,12 @@ # This file is automatically @generated by Cargo. # It is not intended for manual editing. +version = 3 + [[package]] name = "addr2line" -version = "0.15.1" +version = "0.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03345e98af8f3d786b6d9f656ccfa6ac316d954e92bc4841f0bba20789d5fb5a" +checksum = "b9ecd88a8c8378ca913a680cd98f0f13ac67383d35993f86c90a70e3f137816b" dependencies = [ "gimli", ] @@ -26,9 +28,9 @@ dependencies = [ [[package]] name = "ansi_term" -version = "0.11.0" +version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee49baf6cb617b853aa8d93bf420db2383fab46d314482ca2803b40d5fde979b" +checksum = "d52a9bb7ec0cf484c551830a7ce27bd20d67eac647e1befb56b0be4ee39a55d2" dependencies = [ "winapi", ] @@ -47,9 +49,9 @@ checksum = "23b62fc65de8e4e7f52534fb52b0f3ed04746ae267519eef2a83941e8085068b" [[package]] name = "async-trait" -version = "0.1.50" +version = "0.1.52" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b98e84bbb4cbcdd97da190ba0c58a1bb0de2c1fdf67d159e192ed766aeca722" +checksum = "061a7acccaa286c011ddc30970520b98fa40e00c9d644633fb26b5fc63a265e3" dependencies = [ "proc-macro2", "quote", @@ -69,15 +71,15 @@ dependencies = [ [[package]] name = "autocfg" -version = "1.0.1" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cdb031dd78e28731d87d56cc8ffef4a8f36ca26c38fe2de700543e627f8a464a" +checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" [[package]] name = "backtrace" -version = "0.3.59" +version = "0.3.64" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4717cfcbfaa661a0fd48f8453951837ae7e8f81e481fbb136e3202d72805a744" +checksum = "5e121dee8023ce33ab248d9ce1493df03c3b38a659b240096fcbd7048ff9c31f" dependencies = [ "addr2line", "cc", @@ -96,9 +98,9 @@ checksum = "904dfeac50f3cdaba28fc6f57fdcddb75f49ed61346676a78c4ffe55877802fd" [[package]] name = "bitflags" -version = "1.2.1" +version = "1.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf1de2fe8c75bc145a2f577add951f8134889b4795d47466a54a5c846d691693" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "blake2b_simd" @@ -113,14 +115,14 @@ dependencies = [ [[package]] name = "bstr" -version = "0.2.16" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90682c8d613ad3373e66de8c6411e0ae2ab2571e879d2efbf73558cc66f21279" +checksum = "ba3569f383e8f1598449f1a423e72e99569137b47740b1da11ef19af3d5c3223" dependencies = [ "lazy_static", "memchr", "regex-automata", - "serde 1.0.126", + "serde 1.0.136", ] [[package]] @@ -129,17 +131,11 @@ version = "1.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" -[[package]] -name = "bytes" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b700ce4376041dcd0a327fd0097c41095743c4c8af8887265942faf1100bd040" - [[package]] name = "cc" -version = "1.0.67" +version = "1.0.73" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3c69b077ad434294d3ce9f1f6143a2a4b89a8a2d54ef813d85003a4fd1137fd" +checksum = "2fff2a6927b3bb87f9595d67196a70493f627687a71d87a0d692242c33f58c11" [[package]] name = "cfg-if" @@ -162,9 +158,9 @@ dependencies = [ [[package]] name = "clap" -version = "2.33.3" +version = "2.34.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37e58ac78573c40708d45522f0d80fa2f01cc4f9b4e2bf749807255454312002" +checksum = "a0610544180c38b88101fecf2dd634b174a62eef6946f84dfc6a7127512b381c" dependencies = [ "ansi_term", "atty", @@ -196,7 +192,7 @@ dependencies = [ "lazy_static", "nom", "rust-ini", - "serde 1.0.126", + "serde 1.0.136", "serde-hjson", "serde_json", "toml", @@ -211,9 +207,9 @@ checksum = "245097e9a4535ee1e3e3931fcfcd55a796a44c643e8596ff6566d68f09b87bbc" [[package]] name = "crossbeam-channel" -version = "0.5.1" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06ed27e177f16d65f0f0c22a213e17c696ace5dd64b14258b52f9417ccb52db4" +checksum = "e54ea8bc3fb1ee042f5aace6e3c6e025d3874866da222930f70ce62aceba0bfa" dependencies = [ "cfg-if", "crossbeam-utils", @@ -221,9 +217,9 @@ dependencies = [ [[package]] name = "crossbeam-deque" -version = "0.8.0" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94af6efb46fef72616855b036a624cf27ba656ffc9be1b9a3c931cfc7749a9a9" +checksum = "6455c0ca19f0d2fbf751b908d5c55c1f5cbc65e03c4225427254b46890bdde1e" dependencies = [ "cfg-if", "crossbeam-epoch", @@ -232,9 +228,9 @@ dependencies = [ [[package]] name = "crossbeam-epoch" -version = "0.9.4" +version = "0.9.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52fb27eab85b17fbb9f6fd667089e07d6a2eb8743d02639ee7f6a7a7729c9c94" +checksum = "c00d6d2ea26e8b151d99093005cb442fb9a37aeaca582a03ec70946f49ab5ed9" dependencies = [ "cfg-if", "crossbeam-utils", @@ -245,11 +241,10 @@ dependencies = [ [[package]] name = "crossbeam-utils" -version = "0.8.4" +version = "0.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4feb231f0d4d6af81aed15928e58ecf5816aa62a2393e2c82f46973e92a9a278" +checksum = "b5e5bed1f1c269533fa816a0a5492b3545209a205ca1a54842be180eb63a16a6" dependencies = [ - "autocfg", "cfg-if", "lazy_static", ] @@ -262,9 +257,9 @@ checksum = "22813a6dc45b335f9bade10bf7271dc477e81113e89eb251a0bc2a8a81c536e1" dependencies = [ "bstr", "csv-core", - "itoa", + "itoa 0.4.8", "ryu", - "serde 1.0.126", + "serde 1.0.136", ] [[package]] @@ -366,38 +361,37 @@ dependencies = [ [[package]] name = "futures-channel" -version = "0.3.15" +version = "0.3.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e682a68b29a882df0545c143dc3646daefe80ba479bcdede94d5a703de2871e2" +checksum = "c3083ce4b914124575708913bca19bfe887522d6e2e6d0952943f5eac4a74010" dependencies = [ "futures-core", ] [[package]] name = "futures-core" -version = "0.3.15" +version = "0.3.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0402f765d8a89a26043b889b26ce3c4679d268fa6bb22cd7c6aad98340e179d1" +checksum = "0c09fd04b7e4073ac7156a9539b57a484a8ea920f79c7c675d05d289ab6110d3" [[package]] name = "futures-io" -version = "0.3.15" +version = "0.3.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "acc499defb3b348f8d8f3f66415835a9131856ff7714bf10dadfc4ec4bdb29a1" +checksum = "fc4045962a5a5e935ee2fdedaa4e08284547402885ab326734432bed5d12966b" [[package]] name = "futures-task" -version = "0.3.15" +version = "0.3.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a16bef9fc1a4dddb5bee51c989e3fbba26569cbb0e31f5b303c184e3dd33dae" +checksum = "57c66a976bf5909d801bbef33416c41372779507e7a6b3a5e25e4749c58f776a" [[package]] name = "futures-util" -version = "0.3.15" +version = "0.3.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "feb5c238d27e2bf94ffdfd27b2c29e3df4a68c4193bb6427384259e2bf191967" +checksum = "d8b7abd5d659d9b90c8cba917f6ec750a74e2dc23902ef9cd4cc8c8b22e6036a" dependencies = [ - "autocfg", "futures-core", "futures-task", "pin-project-lite", @@ -418,9 +412,9 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.2.2" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c9495705279e7140bf035dde1f6e750c162df8b625267cd52cc44e0b156732c8" +checksum = "418d37c8b1d42553c93648be529cb70f920d3baf8ef469b74b9638df426e0b4c" dependencies = [ "cfg-if", "libc", @@ -429,24 +423,24 @@ dependencies = [ [[package]] name = "gimli" -version = "0.24.0" +version = "0.26.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e4075386626662786ddb0ec9081e7c7eeb1ba31951f447ca780ef9f5d568189" +checksum = "78cc372d058dcf6d5ecd98510e7fbc9e5aec4d21de70f65fea8fecebcd881bd4" [[package]] name = "heck" -version = "0.3.2" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87cbf45460356b7deeb5e3415b5563308c0a9b057c85e12b06ad551f98d0a6ac" +checksum = "6d621efb26863f0e9924c6ac577e8275e5e6b77455db64ffa6c65c904e9e132c" dependencies = [ "unicode-segmentation", ] [[package]] name = "hermit-abi" -version = "0.1.18" +version = "0.1.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "322f4de77956e22ed0e5032c359a0f1273f1f7f0d79bfa3b8ffbc730d7fbcc5c" +checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33" dependencies = [ "libc", ] @@ -475,9 +469,9 @@ dependencies = [ [[package]] name = "instant" -version = "0.1.9" +version = "0.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61124eeebbd69b8190558df225adf7e4caafce0d743919e5d6b19652314ec5ec" +checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c" dependencies = [ "cfg-if", ] @@ -488,7 +482,7 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f7e2f18aece9709094573a9f24f483c4f65caa4298e2f7ae1b71cc65d853fad7" dependencies = [ - "socket2", + "socket2 0.3.19", "widestring", "winapi", "winreg", @@ -496,15 +490,21 @@ dependencies = [ [[package]] name = "ipnet" -version = "2.3.0" +version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "47be2f14c678be2fdcab04ab1171db51b2762ce6f0a8ee87c8dd4a04ed216135" +checksum = "68f2d64f2edebec4ce84ad108148e67e1064789bee435edc5b60ad398714a3a9" [[package]] name = "itoa" -version = "0.4.7" +version = "0.4.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd25036021b0de88a0aff6b850051563c6516d0bf53f8638938edbb9de732736" +checksum = "b71991ff56294aa922b450139ee08b3bfc70982c6b2c7562771375cf73542dd4" + +[[package]] +name = "itoa" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1aab8fc367588b89dcee83ab0fd66b72b50b72fa1904d7095045ace2b0c81c35" [[package]] name = "lazy_static" @@ -527,9 +527,9 @@ dependencies = [ [[package]] name = "libc" -version = "0.2.94" +version = "0.2.119" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "18794a8ad5b29321f790b55d93dfba91e125cb1a9edbd4f8e3150acc771c1a5e" +checksum = "1bf2e165bb3457c8e098ea76f3e3bc9db55f87aa90d52d0e6be741470916aaa4" [[package]] name = "linked-hash-map" @@ -539,9 +539,9 @@ checksum = "7fb9b38af92608140b86b693604b9ffcc5824240a484d1ecd4795bacb2fe88f3" [[package]] name = "lock_api" -version = "0.4.4" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0382880606dff6d15c9476c416d18690b72742aa7b605bb6dd6ec9030fbf07eb" +checksum = "88943dd7ef4a2e5a4bfa2753aaab3013e34ce2533d1996fb18ef591e315e2b3b" dependencies = [ "scopeguard", ] @@ -572,21 +572,21 @@ checksum = "ffbee8634e0d45d258acb448e7eaab3fce7a0a467395d4d9f228e3c1f01fb2e4" [[package]] name = "matches" -version = "0.1.8" +version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ffc5c5338469d4d3ea17d269fa8ea3512ad247247c30bd2df69e68309ed0a08" +checksum = "a3e378b66a060d48947b590737b30a1be76706c8dd7b8ba0f2fe3989c68a853f" [[package]] name = "memchr" -version = "2.4.0" +version = "2.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b16bd47d9e329435e309c58469fe0791c2d0d1ba96ec0954152a5ae2b04387dc" +checksum = "308cc39be01b73d0d18f82a0e7b2a3df85245f84af96fdddc5d202d27e47b86a" [[package]] name = "memoffset" -version = "0.6.3" +version = "0.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f83fb6581e8ed1f85fd45c116db8405483899489e38406156c25eb743554361d" +checksum = "5aa361d4faea93603064a027415f07bd8e1d5c88c9fbf68bf56a285428fd79ce" dependencies = [ "autocfg", ] @@ -603,9 +603,9 @@ dependencies = [ [[package]] name = "mio" -version = "0.7.11" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf80d3e903b34e0bd7282b218398aec54e082c840d9baf8339e0080a0c542956" +checksum = "ba272f85fa0b41fc91872be579b3bbe0f56b792aa361a380eb669469f68dafb2" dependencies = [ "libc", "log", @@ -636,9 +636,9 @@ dependencies = [ [[package]] name = "ntapi" -version = "0.3.6" +version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f6bb902e437b6d86e03cce10a7e2af662292c5dfef23b65899ea3ac9354ad44" +checksum = "c28774a7fd2fbb4f0babd8237ce554b73af68021b5f695a3cebd6c59bac0980f" dependencies = [ "winapi", ] @@ -673,9 +673,9 @@ dependencies = [ [[package]] name = "num_cpus" -version = "1.13.0" +version = "1.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05499f3756671c15885fee9034446956fff3f243d6077b91e5767df161f766b3" +checksum = "19e64526ebdee182341572e50e9ad03965aa510cd94427a4549448f285e957a1" dependencies = [ "hermit-abi", "libc", @@ -683,21 +683,24 @@ dependencies = [ [[package]] name = "object" -version = "0.24.0" +version = "0.27.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a5b3dd1c072ee7963717671d1ca129f1048fda25edea6b752bfc71ac8854170" +checksum = "67ac1d3f9a1d3616fd9a60c8d74296f22406a238b6a72f5cc1e6f314df4ffbf9" +dependencies = [ + "memchr", +] [[package]] name = "once_cell" -version = "1.7.2" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af8b08b04175473088b46763e51ee54da5f9a164bc162f615b91bc179dbf15a3" +checksum = "da32515d9f6e6e489d7bc9d84c71b060db7247dc035bbe44eac88cf87486d8d5" [[package]] name = "openssl" -version = "0.10.34" +version = "0.10.38" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d7830286ad6a3973c0f1d9b73738f69c76b739301d0229c4b96501695cbe4c8" +checksum = "0c7ae222234c30df141154f159066c5093ff73b63204dcda7121eb082fc56a95" dependencies = [ "bitflags", "cfg-if", @@ -709,18 +712,18 @@ dependencies = [ [[package]] name = "openssl-src" -version = "111.15.0+1.1.1k" +version = "111.17.0+1.1.1m" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1a5f6ae2ac04393b217ea9f700cd04fa9bf3d93fae2872069f3d15d908af70a" +checksum = "05d6a336abd10814198f66e2a91ccd7336611f30334119ca8ce300536666fcf4" dependencies = [ "cc", ] [[package]] name = "openssl-sys" -version = "0.9.63" +version = "0.9.72" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6b0d6fb7d80f877617dfcb014e605e2b5ab2fb0afdf27935219bb6bd984cb98" +checksum = "7e46109c383602735fa0a2e48dd2b7c892b048e1bf69e5c3b1d804b7d9c203cb" dependencies = [ "autocfg", "cc", @@ -732,9 +735,9 @@ dependencies = [ [[package]] name = "parking_lot" -version = "0.11.1" +version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d7744ac029df22dca6284efe4e898991d28e3085c706c972bcd7da4a27a15eb" +checksum = "7d17b78036a60663b797adeaee46f5c9dfebb86948d1255007a1d6be0271ff99" dependencies = [ "instant", "lock_api", @@ -743,14 +746,14 @@ dependencies = [ [[package]] name = "parking_lot_core" -version = "0.8.3" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa7a782938e745763fe6907fc6ba86946d72f49fe7e21de074e08128a99fb018" +checksum = "d76e8e1493bcac0d2766c42737f34458f1c8c50c0d23bcb24ea953affb273216" dependencies = [ "cfg-if", "instant", "libc", - "redox_syscall 0.2.8", + "redox_syscall 0.2.10", "smallvec", "winapi", ] @@ -763,9 +766,9 @@ checksum = "d4fd5641d01c8f18a23da7b6fe29298ff4b55afcccdf78973b24cf3175fee32e" [[package]] name = "pin-project-lite" -version = "0.2.6" +version = "0.2.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc0e1f259c92177c30a4c9d177246edd0a3568b25756a977d0632cf8fa37e905" +checksum = "e280fbe77cc62c91527259e9442153f4688736748d24660126286329742b4c6c" [[package]] name = "pin-utils" @@ -775,15 +778,15 @@ checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" [[package]] name = "pkg-config" -version = "0.3.19" +version = "0.3.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3831453b3449ceb48b6d9c7ad7c96d5ea673e9b470a1dc578c2ce6521230884c" +checksum = "58893f751c9b0412871a09abd62ecd2a00298c6c83befa223ef98c52aef40cbe" [[package]] name = "ppv-lite86" -version = "0.2.10" +version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac74c624d6b2d21f425f752262f42188365d7b8ff1aff74c82e45136510a4857" +checksum = "eb9f9e6e233e5c4a35559a617bf40a4ec447db2e84c20b55a6f83167b7e57872" [[package]] name = "prettytable-rs" @@ -801,9 +804,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.26" +version = "1.0.36" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a152013215dca273577e18d2bf00fa862b89b24169fb78c4c95aeb07992c9cec" +checksum = "c7342d5883fbccae1cc37a2353b09c87c9b0f3afd73f5fb9bba687a1f733b029" dependencies = [ "unicode-xid", ] @@ -816,30 +819,29 @@ checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0" [[package]] name = "quote" -version = "1.0.9" +version = "1.0.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3d0b9745dc2debf507c8422de05d7226cc1f0644216dfdfead988f9b1ab32a7" +checksum = "864d3e96a899863136fc6e99f3d7cae289dafe43bf2c5ac19b70df7210c0a145" dependencies = [ "proc-macro2", ] [[package]] name = "rand" -version = "0.8.3" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ef9e7e66b4468674bfcb0c81af8b7fa0bb154fa9f28eb840da5c447baeb8d7e" +checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" dependencies = [ "libc", "rand_chacha", "rand_core", - "rand_hc", ] [[package]] name = "rand_chacha" -version = "0.3.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e12735cf05c9e10bf21534da50a147b924d555dc7a547c42e6bb2d5b6017ae0d" +checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" dependencies = [ "ppv-lite86", "rand_core", @@ -847,27 +849,18 @@ dependencies = [ [[package]] name = "rand_core" -version = "0.6.2" +version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34cf66eb183df1c5876e2dcf6b13d57340741e8dc255b48e40a26de954d06ae7" +checksum = "d34f1408f55294453790c48b2f1ebbb1c5b4b7563eb1f418bcfcfdbb06ebb4e7" dependencies = [ - "getrandom 0.2.2", -] - -[[package]] -name = "rand_hc" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3190ef7066a446f2e7f42e239d161e905420ccab01eb967c9eb27d21b2322a73" -dependencies = [ - "rand_core", + "getrandom 0.2.4", ] [[package]] name = "rayon" -version = "1.5.0" +version = "1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b0d8e0819fadc20c74ea8373106ead0600e3a67ef1fe8da56e39b9ae7275674" +checksum = "c06aca804d41dbc8ba42dfd964f0d01334eceb64314b9ecf7c5fad5188a06d90" dependencies = [ "autocfg", "crossbeam-deque", @@ -877,9 +870,9 @@ dependencies = [ [[package]] name = "rayon-core" -version = "1.9.0" +version = "1.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ab346ac5921dc62ffa9f89b7a773907511cdfa5490c572ae9be1be33e8afa4a" +checksum = "d78120e2c850279833f1dd3582f730c4ab53ed95aeaaaa862a2a5c71b1656d8e" dependencies = [ "crossbeam-channel", "crossbeam-deque", @@ -896,9 +889,9 @@ checksum = "41cc0f7e4d5d4544e8861606a285bb08d3e70712ccc7d2b84d7c0ccfaf4b05ce" [[package]] name = "redox_syscall" -version = "0.2.8" +version = "0.2.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "742739e41cd49414de871ea5e549afb7e2a3ac77b589bcbebe8c82fab37147fc" +checksum = "8383f39639269cde97d255a32bdb68c047337295414940c68bdd30c2e13203ff" dependencies = [ "bitflags", ] @@ -927,12 +920,9 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.1.9" +version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae1ded71d66a4a97f5e961fd0cb25a5f366a42a41570d16a763a69c092c26ae4" -dependencies = [ - "byteorder", -] +checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132" [[package]] name = "regex-syntax" @@ -970,15 +960,15 @@ checksum = "3e52c148ef37f8c375d49d5a73aa70713125b7f19095948a923f80afdeb22ec2" [[package]] name = "rustc-demangle" -version = "0.1.19" +version = "0.1.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "410f7acf3cb3a44527c5d9546bad4bf4e6c460915d5f9f2fc524498bfe8f70ce" +checksum = "7ef03e0a2b150c7a90d01faf6254c9c48a41e95fb2a8c2ac1c6f0d2b9aefc342" [[package]] name = "ryu" -version = "1.0.5" +version = "1.0.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "71d301d4193d031abdd79ff7e3dd721168a9572ef3fe51a1517aba235bd8f86e" +checksum = "73b4b750c782965c211b42f022f59af1fbceabdd026623714f104152f1ec149f" [[package]] name = "scopeguard" @@ -994,9 +984,9 @@ checksum = "9dad3f759919b92c3068c696c15c3d17238234498bbdcc80f2c469606f948ac8" [[package]] name = "serde" -version = "1.0.126" +version = "1.0.136" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec7505abeacaec74ae4778d9d9328fe5a5d04253220a85c4ee022239fc996d03" +checksum = "ce31e24b01e1e524df96f1c2fdd054405f8d7376249a5110886fb4b658484789" dependencies = [ "serde_derive", ] @@ -1015,21 +1005,21 @@ dependencies = [ [[package]] name = "serde-xml-rs" -version = "0.4.1" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0bf1ba0696ccf0872866277143ff1fd14d22eec235d2b23702f95e6660f7dfa" +checksum = "65162e9059be2f6a3421ebbb4fef3e74b7d9e7c60c50a0e292c6239f19f1edfa" dependencies = [ "log", - "serde 1.0.126", + "serde 1.0.136", "thiserror", "xml-rs", ] [[package]] name = "serde_derive" -version = "1.0.126" +version = "1.0.136" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "963a7dbc9895aeac7ac90e74f34a5d5261828f79df35cbed41e10189d3804d43" +checksum = "08597e7152fcd306f41838ed3e37be9eaeed2b61c42e2117266a554fab4662f9" dependencies = [ "proc-macro2", "quote", @@ -1038,26 +1028,26 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.64" +version = "1.0.79" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "799e97dc9fdae36a5c8b8f2cae9ce2ee9fdce2058c57a93e6099d919fd982f79" +checksum = "8e8d9fa5c3b304765ce1fd9c4c8a3de2c8db365a5b91be52f186efc675681d95" dependencies = [ - "itoa", + "itoa 1.0.1", "ryu", - "serde 1.0.126", + "serde 1.0.136", ] [[package]] name = "slab" -version = "0.4.3" +version = "0.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f173ac3d1a7e3b28003f40de0b5ce7fe2710f9b9dc3fc38664cebee46b3b6527" +checksum = "9def91fd1e018fe007022791f865d0ccc9b3a0d5001e01aabb8b40e46000afb5" [[package]] name = "smallvec" -version = "1.6.1" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe0f37c9e8f3c5a4a66ad655a93c74daac4ad00c441533bf5c6e7990bb42604e" +checksum = "f2dd574626839106c320a323308629dcb1acfc96e32a8cba364ddc61ac23ee83" [[package]] name = "socket2" @@ -1070,6 +1060,16 @@ dependencies = [ "winapi", ] +[[package]] +name = "socket2" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "66d72b759436ae32898a2af0a14218dbf55efde3feeb170eb623637db85ee1e0" +dependencies = [ + "libc", + "winapi", +] + [[package]] name = "static_assertions" version = "1.1.0" @@ -1084,9 +1084,9 @@ checksum = "8ea5119cdb4c55b55d432abb513a0429384878c15dde60cc77b1c99de1a95a6a" [[package]] name = "syn" -version = "1.0.72" +version = "1.0.86" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1e8cdbefb79a9a5a65e0db8b47b723ee907b7c7f8496c76a1770b5c310bab82" +checksum = "8a65b3f4ffa0092e9887669db0eae07941f023991ab58ea44da8fe8e2d511c6b" dependencies = [ "proc-macro2", "quote", @@ -1095,9 +1095,9 @@ dependencies = [ [[package]] name = "synstructure" -version = "0.12.4" +version = "0.12.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b834f2d66f734cb897113e34aaff2f1ab4719ca946f9a7358dba8f8064148701" +checksum = "f36bdaa60a83aca3921b5259d5400cbf5e90fc51931376a9bd4a0eb79aa7210f" dependencies = [ "proc-macro2", "quote", @@ -1127,18 +1127,18 @@ dependencies = [ [[package]] name = "thiserror" -version = "1.0.24" +version = "1.0.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0f4a65597094d4483ddaed134f409b2cb7c1beccf25201a9f73c719254fa98e" +checksum = "854babe52e4df1653706b98fcfc05843010039b406875930a70e4d9644e5c417" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.24" +version = "1.0.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7765189610d8241a44529806d6fd1f2e0a08734313a35d5b3a556f92b381f3c0" +checksum = "aa32fd3f627f367fe16f893e2597ae3c05020f8bba2666a4e6ea73d377e5714b" dependencies = [ "proc-macro2", "quote", @@ -1158,9 +1158,9 @@ dependencies = [ [[package]] name = "tinyvec" -version = "1.2.0" +version = "1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b5220f05bb7de7f3f53c7c065e1199b3172696fe2db9f9c4d8ad9b4ee74c342" +checksum = "2c1c1d5a42b6245520c249549ec267180beaffcc0615401ac8e31853d4b6d8d2" dependencies = [ "tinyvec_macros", ] @@ -1173,17 +1173,16 @@ checksum = "cda74da7e1a664f795bb1f8a87ec406fb89a02522cf6e50620d016add6dbbf5c" [[package]] name = "tokio" -version = "1.6.0" +version = "1.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd3076b5c8cc18138b8f8814895c11eb4de37114a5d127bafdc5e55798ceef37" +checksum = "2af73ac49756f3f7c01172e34a23e5d0216f6c32333757c2c61feb2bbff5a5ee" dependencies = [ - "autocfg", - "bytes", "libc", - "memchr", "mio", "num_cpus", "pin-project-lite", + "socket2 0.4.4", + "winapi", ] [[package]] @@ -1192,13 +1191,13 @@ version = "0.5.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a31142970826733df8241ef35dc040ef98c679ab14d7c3e54d827099b3acecaa" dependencies = [ - "serde 1.0.126", + "serde 1.0.136", ] [[package]] name = "trust-dns-proto" -version = "0.20.1" -source = "git+https://github.com/Edu4rdSHL/trust-dns?branch=main#451a00fbe3c0972adb4cdbd9d2e2f2a39a44da0e" +version = "0.20.4" +source = "git+https://github.com/Findomain/trust-dns?branch=custombranch#f339a5e806bed9109ad205d2143d8b18701d2ab0" dependencies = [ "async-trait", "cfg-if", @@ -1221,8 +1220,8 @@ dependencies = [ [[package]] name = "trust-dns-resolver" -version = "0.20.1" -source = "git+https://github.com/Edu4rdSHL/trust-dns?branch=main#451a00fbe3c0972adb4cdbd9d2e2f2a39a44da0e" +version = "0.20.4" +source = "git+https://github.com/Findomain/trust-dns?branch=custombranch#f339a5e806bed9109ad205d2143d8b18701d2ab0" dependencies = [ "cfg-if", "futures-util", @@ -1241,33 +1240,30 @@ dependencies = [ [[package]] name = "unicode-bidi" -version = "0.3.5" +version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eeb8be209bb1c96b7c177c7420d26e04eccacb0eeae6b980e35fcb74678107e0" -dependencies = [ - "matches", -] +checksum = "1a01404663e3db436ed2746d9fefef640d868edae3cceb81c3b8d5732fda678f" [[package]] name = "unicode-normalization" -version = "0.1.17" +version = "0.1.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07fbfce1c8a97d547e8b5334978438d9d6ec8c20e38f56d4a4374d181493eaef" +checksum = "d54590932941a9e9266f0832deed84ebe1bf2e4c9e4a3554d393d18f5e854bf9" dependencies = [ "tinyvec", ] [[package]] name = "unicode-segmentation" -version = "1.7.1" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb0d2e7be6ae3a5fa87eed5fb451aff96f2573d2694942e40543ae0bbe19c796" +checksum = "7e8820f5d777f6224dc4be3632222971ac30164d4a258d595640799554ebfd99" [[package]] name = "unicode-width" -version = "0.1.8" +version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9337591893a19b88d8d87f2cec1e73fad5cdfd10e5a6f349f498ad6ea2ffb1e3" +checksum = "3ed742d4ea2bd1176e236172c8429aaf54486e7ac098db29ffe6529e0ce50973" [[package]] name = "unicode-xid" @@ -1291,7 +1287,7 @@ dependencies = [ "prettytable-rs", "rand", "rayon", - "serde 1.0.126", + "serde 1.0.136", "serde-xml-rs", "serde_derive", "trust-dns-resolver", @@ -1312,9 +1308,9 @@ dependencies = [ [[package]] name = "vcpkg" -version = "0.2.12" +version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cbdbff6266a24120518560b5dc983096efb98462e51d0d68169895b237be3e5d" +checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" [[package]] name = "vec_map" @@ -1324,9 +1320,9 @@ checksum = "f1bddf1187be692e79c5ffeab891132dfb0f236ed36a43c7ed39f1165ee20191" [[package]] name = "version_check" -version = "0.9.3" +version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5fecdca9a5291cc2b8dcf7dc02453fee791a280f3743cb0905f8822ae463b3fe" +checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" [[package]] name = "wasi" @@ -1379,9 +1375,9 @@ dependencies = [ [[package]] name = "xml-rs" -version = "0.8.3" +version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b07db065a5cf61a7e4ba64f29e67db906fb1787316516c4e6e5ff0fea1efcd8a" +checksum = "d2d7d3948613f75c98fd9328cfdcc45acc4d360655289d0a7d4ec931392200a3" [[package]] name = "yaml-rust" diff --git a/Cargo.toml b/Cargo.toml index 0faef0f..8e330df 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -12,29 +12,33 @@ readme = "README.md" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] -trust-dns-resolver = { git = "https://github.com/Edu4rdSHL/trust-dns", branch = "main" } -rayon = "1.5.0" +trust-dns-resolver = "0.20.4" +rayon = "1.5.1" log = { version = "0.4.14", features = ["std"] } colored = { version = "2.0.0", optional = true } -rand = "0.8.3" +rand = "0.8.5" lazy_static = "1.4.0" -serde = { version = "1.0.126", features = ["derive"] } -serde_derive = "1.0.126" +serde = { version = "1.0.136", features = ["derive"] } +serde_derive = "1.0.136" prettytable-rs = "0.8.0" -serde-xml-rs = "0.4.1" +serde-xml-rs = "0.5.1" chrono = "0.4.19" -clap = { version = "2.33.3", features = ["yaml"] } +clap = { version = "2.34.0", features = ["yaml"] } config = { version = "0.11.0", features = ["yaml", "json", "toml", "hjson", "ini"] } failure = "0.1.8" +# https://github.com/bluejekyll/trust-dns/pull/1632 +[patch.crates-io] +trust-dns-resolver = { git = "https://github.com/Findomain/trust-dns", package = "trust-dns-resolver", branch = "custombranch" } + [target.arm-unknown-linux-gnueabihf.dependencies] -openssl = { version = "0.10.34", features = ["vendored"] } +openssl = { version = "0.10.38", features = ["vendored"] } [target.aarch64-unknown-linux-gnu.dependencies] -openssl = { version = "0.10.34", features = ["vendored"] } +openssl = { version = "0.10.38", features = ["vendored"] } [target.armv7-unknown-linux-gnueabihf.dependencies] -openssl = { version = "0.10.34", features = ["vendored"] } +openssl = { version = "0.10.38", features = ["vendored"] } [target.'cfg(windows)'.dependencies] atty = "0.2.14" @@ -46,4 +50,4 @@ lto = true codegen-units = 1 panic = 'abort' incremental = false -opt-level = "s" \ No newline at end of file +opt-level = "s" From 83c75b753b0a941b5f57b37dcdbadb1789ae59a0 Mon Sep 17 00:00:00 2001 From: Edu4rdSHL Date: Fri, 11 Mar 2022 15:32:30 -0500 Subject: [PATCH 38/62] Update builder.sh Signed-off-by: Edu4rdSHL --- builder.sh | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/builder.sh b/builder.sh index ed2ff6f..83f33db 100755 --- a/builder.sh +++ b/builder.sh @@ -10,6 +10,14 @@ AARCH_TARGET="aarch64-unknown-linux-gnu" OSX_TARGET="x86_64-apple-darwin" MANPAGE_DIR="./$NAME.1" +if ! systemctl is-active docker >/dev/null 2>&1; then + echo "Docker is not running. Starting docker." + if ! sudo systemctl start docker; then + echo "Failed to start docker." + exit 1 + fi +fi + # Linux build echo "Building Linux artifact." if cargo build -q --release --target="$LINUX_TARGET"; then @@ -92,12 +100,9 @@ if command -v git >/dev/null; then git push fi -#echo "Uploading crate to crates.io..." -#if cargo publish --no-verify > /dev/null; then -# echo "Crate uploaded." -#else -# echo "An error has occurred while uploading the crate to crates.io." -# exit -#fi - -echo "All builds have passed!" +# Stop docker +echo "Stopping docker." +if ! sudo systemctl stop docker; then + echo "Failed to stop docker." + exit 1 +fi From bb030e266b37333ca13d0233713267d778b7c757 Mon Sep 17 00:00:00 2001 From: Edu4rdSHL Date: Wed, 16 Mar 2022 10:49:37 -0500 Subject: [PATCH 39/62] Apply clippy suggestion. Signed-off-by: Edu4rdSHL --- src/misc.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/misc.rs b/src/misc.rs index 6c0bc2a..3039384 100644 --- a/src/misc.rs +++ b/src/misc.rs @@ -8,7 +8,7 @@ pub fn sanitize_target_string(target: String) -> String { .replace("www.", "") .replace("https://", "") .replace("http://", "") - .replace("/", "") + .replace('/', "") } pub fn return_matches_vec(matches: &clap::ArgMatches, value: &str) -> Vec { From ddd486a11c15c551e6744343a5e620431abb5e32 Mon Sep 17 00:00:00 2001 From: Eduard Tolosa Date: Tue, 12 Apr 2022 05:47:28 -0500 Subject: [PATCH 40/62] Create make-release.yml --- .github/workflows/make-release.yml | 128 +++++++++++++++++++++++++++++ 1 file changed, 128 insertions(+) create mode 100644 .github/workflows/make-release.yml diff --git a/.github/workflows/make-release.yml b/.github/workflows/make-release.yml new file mode 100644 index 0000000..2ff8e51 --- /dev/null +++ b/.github/workflows/make-release.yml @@ -0,0 +1,128 @@ +name: Create and upload artifacts + +on: + workflow_dispatch: + +jobs: + build-nix: + env: + IN_PIPELINE: true + runs-on: ${{ matrix.os }} + strategy: + matrix: + type: [ubuntu-x64, ubuntu-x86, armv7, aarch64] + include: + - type: ubuntu-x64 + os: ubuntu-latest + target: x86_64-unknown-linux-musl + name: unimap-linux + path: target/x86_64-unknown-linux-musl/release/unimap + pkg_config_path: /usr/lib/x86_64-linux-gnu/pkgconfig + - type: ubuntu-x86 + os: ubuntu-latest + target: i686-unknown-linux-musl + name: unimap-linux-i386 + path: target/i686-unknown-linux-musl/release/unimap + pkg_config_path: /usr/lib/i686-linux-gnu/pkgconfig + - type: armv7 + os: ubuntu-latest + target: armv7-unknown-linux-gnueabihf + name: unimap-armv7 + path: target/armv7-unknown-linux-gnueabihf/release/unimap + pkg_config_path: /usr/lib/x86_64-linux-gnu/pkgconfig + - type: aarch64 + os: ubuntu-latest + target: aarch64-unknown-linux-gnu + name: unimap-aarch64 + path: target/aarch64-unknown-linux-gnu/release/unimap + pkg_config_path: /usr/lib/x86_64-linux-gnu/pkgconfig + steps: + - uses: actions/checkout@v2 + - name: Install System Dependencies + run: | + env + sudo apt-get update + sudo apt-get install -y --no-install-recommends libssl-dev pkg-config gcc-arm-linux-gnueabihf gcc-aarch64-linux-gnu + - uses: actions-rs/toolchain@v1 + with: + toolchain: stable + target: ${{ matrix.target }} + override: true + - uses: actions-rs/cargo@v1 + env: + PKG_CONFIG_PATH: ${{ matrix.pkg_config_path }} + OPENSSL_DIR: /usr/lib/ssl + with: + use-cross: true + command: build + args: --release --target=${{ matrix.target }} + - name: Strip symbols from binary + run: | + strip -s ${{ matrix.path }} || arm-linux-gnueabihf-strip -s ${{ matrix.path }} || aarch64-linux-gnu-strip -s ${{ matrix.path }} + - uses: actions/upload-artifact@v2 + with: + name: ${{ matrix.name }} + path: ${{ matrix.path }} + + build-macos: + env: + IN_PIPELINE: true + runs-on: macos-latest + steps: + - uses: actions/checkout@v2 + - uses: actions-rs/toolchain@v1 + with: + toolchain: stable + target: x86_64-apple-darwin + override: true + - uses: actions-rs/cargo@v1 + with: + use-cross: true + command: build + args: --release --target=x86_64-apple-darwin + - name: Strip symbols from binary + run: | + strip -u -r target/x86_64-apple-darwin/release/unimap + - uses: actions/upload-artifact@v2 + with: + name: unimap-osx + path: target/x86_64-apple-darwin/release/unimap + - uses: actions/upload-artifact@v2 + with: + name: unimap-osx + path: unimap-osx + + build-windows: + env: + IN_PIPELINE: true + runs-on: ${{ matrix.os }} + strategy: + matrix: + type: [windows-x64, windows-x86] + include: + - type: windows-x64 + os: windows-latest + target: x86_64-pc-windows-msvc + name: unimap-windows.exe + path: target\x86_64-pc-windows-msvc\release\unimap.exe + - type: windows-x86 + os: windows-latest + target: i686-pc-windows-msvc + name: unimap-windows-i686.exe + path: target\i686-pc-windows-msvc\release\unimap.exe + steps: + - uses: actions/checkout@v2 + - uses: actions-rs/toolchain@v1 + with: + toolchain: stable + target: ${{ matrix.target }} + override: true + - uses: actions-rs/cargo@v1 + with: + use-cross: true + command: build + args: --release --target=${{ matrix.target }} + - uses: actions/upload-artifact@v2 + with: + name: ${{ matrix.name }} + path: ${{ matrix.path }} From 0b9db85a71517b9d506378899bd8924925b42658 Mon Sep 17 00:00:00 2001 From: Rudra Sarkar Date: Fri, 15 Apr 2022 14:23:12 +0600 Subject: [PATCH 41/62] Update installation instructions for global use on Linux and Mac OS --- README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/README.md b/README.md index db38bc7..86338e6 100644 --- a/README.md +++ b/README.md @@ -19,6 +19,9 @@ You need to have Rust and Nmap installed in your computer, then run: # extract it and continue to next step. 2. cargo build --release # Now the binary is in ./target/release/unimap +# The next command only works on Linux and MacOS. Windows user need specify the target path in environment variable +3. cp ./target/release/unimap /usr/local/bin +# Now you can use the `unimap` command from everyewhere. ``` ## Using precompiled binaries From 284d593207d30fded57eb33adbb5697df9d36b78 Mon Sep 17 00:00:00 2001 From: Rudra Sarkar Date: Sun, 17 Apr 2022 07:08:32 +0600 Subject: [PATCH 42/62] Docker support for unimap. --- Dockerfile | 14 ++++++++++++++ README.md | 10 ++++++++++ 2 files changed, 24 insertions(+) create mode 100644 Dockerfile diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..72deb69 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,14 @@ +FROM rust:alpine as builder +RUN apk add --no-cache build-base + +WORKDIR /usr/src/unimap +COPY Cargo.toml Cargo.lock ./ +COPY src/ src/ +RUN cargo install --path . + +FROM alpine:3.12 + +RUN apk add --no-cache nmap nmap-scripts wget +COPY --from=builder /usr/local/cargo/bin/unimap /usr/local/bin/unimap + +ENTRYPOINT [ "/usr/local/bin/unimap" ] \ No newline at end of file diff --git a/README.md b/README.md index 86338e6..69c1007 100644 --- a/README.md +++ b/README.md @@ -24,6 +24,16 @@ You need to have Rust and Nmap installed in your computer, then run: # Now you can use the `unimap` command from everyewhere. ``` +## Docker support + +``` +1. git clone https://github.com/Edu4rdSHL/unimap.git && cd unimap +2. docker build --tag unimap . +3. docker run -it --rm --name unimap unimap -t hackerone.com --fast-scan +# Set alias in ~/.bashrc or ~/.zshrc for global use +4. alias unimap='docker run -it --rm --name unimap unimap' +``` + ## Using precompiled binaries Download the [latest version](https://github.com/Edu4rdSHL/unimap/releases/latest) for your OS and use it. From 90e6cbf8bccfda8fa88a1061bd640ebbeb7066e4 Mon Sep 17 00:00:00 2001 From: Eduard Tolosa Date: Sat, 16 Apr 2022 20:14:34 -0500 Subject: [PATCH 43/62] Create cicd-to-dockerhub.yml --- .github/workflows/cicd-to-dockerhub.yml | 34 +++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 .github/workflows/cicd-to-dockerhub.yml diff --git a/.github/workflows/cicd-to-dockerhub.yml b/.github/workflows/cicd-to-dockerhub.yml new file mode 100644 index 0000000..414a69d --- /dev/null +++ b/.github/workflows/cicd-to-dockerhub.yml @@ -0,0 +1,34 @@ +name: ci-to-dockerhub + +on: + release: + types: [published] + +jobs: + build: + runs-on: ubuntu-latest + steps: + - name: Checkout repository + uses: actions/checkout@v2 + + - name: Login to Docker Hub + uses: docker/login-action@v1 + with: + username: ${{ secrets.DOCKER_HUB_USERNAME }} + password: ${{ secrets.DOCKER_HUB_TOKEN }} + + - name: Set up Docker Buildx + id: buildx + uses: docker/setup-buildx-action@v1 + + - name: Build and push + id: docker_build + uses: docker/build-push-action@v2 + with: + context: ./ + file: ./Dockerfile + push: true + tags: ${{ secrets.DOCKER_HUB_USERNAME }}/unimap:latest + + - name: Image digest + run: echo ${{ steps.docker_build.outputs.digest }} From aafd31ffeb2b3d495b582f5e8b92c5f2acbb4ba5 Mon Sep 17 00:00:00 2001 From: Eduard Tolosa Date: Sat, 16 Apr 2022 20:15:46 -0500 Subject: [PATCH 44/62] Update cicd-to-dockerhub.yml --- .github/workflows/cicd-to-dockerhub.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/cicd-to-dockerhub.yml b/.github/workflows/cicd-to-dockerhub.yml index 414a69d..206c0b7 100644 --- a/.github/workflows/cicd-to-dockerhub.yml +++ b/.github/workflows/cicd-to-dockerhub.yml @@ -3,6 +3,8 @@ name: ci-to-dockerhub on: release: types: [published] + + workflow_dispatch: jobs: build: From 7ae2558dca8ab7cc143d5bbc20eff95d92be120b Mon Sep 17 00:00:00 2001 From: Eduard Tolosa Date: Sat, 16 Apr 2022 20:26:42 -0500 Subject: [PATCH 45/62] Add Dockerhub information. Complements #9 --- README.md | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/README.md b/README.md index 69c1007..4c11c54 100644 --- a/README.md +++ b/README.md @@ -26,6 +26,19 @@ You need to have Rust and Nmap installed in your computer, then run: ## Docker support +You have two options to install Findomain in a docker container. + +**Using Dockerhub (recommended):** + +``` +1. docker pull edu4rdshl/findomain:latest +3. docker run -it --rm --name unimap unimap -t hackerone.com --fast-scan +# Set alias in ~/.bashrc or ~/.zshrc for global use +4. alias unimap='docker run -it --rm --name unimap unimap' +``` + +**Building the Docker image yourself:** + ``` 1. git clone https://github.com/Edu4rdSHL/unimap.git && cd unimap 2. docker build --tag unimap . From 97c5b458d145ed909dcfda321fcf502593861ce9 Mon Sep 17 00:00:00 2001 From: Eduard Tolosa Date: Sat, 16 Apr 2022 20:27:06 -0500 Subject: [PATCH 46/62] Fix typo. --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 4c11c54..f7e2693 100644 --- a/README.md +++ b/README.md @@ -31,7 +31,7 @@ You have two options to install Findomain in a docker container. **Using Dockerhub (recommended):** ``` -1. docker pull edu4rdshl/findomain:latest +1. docker pull edu4rdshl/unimap:latest 3. docker run -it --rm --name unimap unimap -t hackerone.com --fast-scan # Set alias in ~/.bashrc or ~/.zshrc for global use 4. alias unimap='docker run -it --rm --name unimap unimap' From 3c8661bc2488884d58ff8dc4cdf9b5c501b53cd3 Mon Sep 17 00:00:00 2001 From: Eduard Tolosa Date: Thu, 23 Jun 2022 00:34:52 -0500 Subject: [PATCH 47/62] Use `ToString` trait. --- src/nmap.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/nmap.rs b/src/nmap.rs index b54d022..f2358a0 100644 --- a/src/nmap.rs +++ b/src/nmap.rs @@ -8,7 +8,7 @@ lazy_static! { static ref NMAP_DNS_RESOLVERS: String = resolver_engine::RESOLVERS .clone() .iter() - .map(|f| f.to_string()) + .map(ToString::to_string) .collect::>() .join(","); } From cde33efba122056afee31ac62c10fb9d80362ab9 Mon Sep 17 00:00:00 2001 From: Eduard Tolosa Date: Thu, 9 Feb 2023 18:40:54 -0500 Subject: [PATCH 48/62] Clippy fixes. --- src/nmap.rs | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/nmap.rs b/src/nmap.rs index f2358a0..3f16e5f 100644 --- a/src/nmap.rs +++ b/src/nmap.rs @@ -13,13 +13,13 @@ lazy_static! { .join(","); } -#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)] +#[derive(Default, Debug, Clone, PartialEq, Eq, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct Root { pub nmaprun: Nmaprun, } -#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)] +#[derive(Default, Debug, Clone, PartialEq, Eq, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct Nmaprun { pub scanner: String, @@ -31,7 +31,7 @@ pub struct Nmaprun { pub host: Option, } -#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)] +#[derive(Default, Debug, Clone, PartialEq, Eq, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct Host { pub starttime: String, @@ -42,7 +42,7 @@ pub struct Host { pub ports: Option, } -#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)] +#[derive(Default, Debug, Clone, PartialEq, Eq, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct Status { pub state: String, @@ -51,20 +51,20 @@ pub struct Status { pub reason_ttl: String, } -#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)] +#[derive(Default, Debug, Clone, PartialEq, Eq, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct Address { pub addr: Option, pub addrtype: Option, } -#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)] +#[derive(Default, Debug, Clone, PartialEq, Eq, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct Hostnames { pub hostname: Option, } -#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)] +#[derive(Default, Debug, Clone, PartialEq, Eq, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct Hostname { pub name: String, @@ -72,7 +72,7 @@ pub struct Hostname { pub type_field: String, } -#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)] +#[derive(Default, Debug, Clone, PartialEq, Eq, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct Ports { pub port: Vec, From 36419c3da756658afec1335dd5a834bf5876460c Mon Sep 17 00:00:00 2001 From: Eduard Tolosa Date: Tue, 11 Apr 2023 23:18:13 -0500 Subject: [PATCH 49/62] Don't scan private IP addresses. --- src/files.rs | 2 +- src/resolver_engine.rs | 10 +++++++--- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/src/files.rs b/src/files.rs index aea0f42..ed34c1c 100644 --- a/src/files.rs +++ b/src/files.rs @@ -67,7 +67,7 @@ pub fn check_full_path(full_path: &str) -> bool { pub fn delete_files(paths: &HashSet) { for file in paths { if Path::new(&file).exists() { - match std::fs::remove_file(&file) { + match std::fs::remove_file(file) { Ok(_) => (), Err(e) => error!("Error deleting the file {}. Description: {}", &file, e), } diff --git a/src/resolver_engine.rs b/src/resolver_engine.rs index 6569cb1..bb0e62c 100644 --- a/src/resolver_engine.rs +++ b/src/resolver_engine.rs @@ -214,11 +214,15 @@ fn parallel_resolver_engine( .collect(); let mut nmap_ips: HashSet = resolv_data - .iter() - .map(|(_, resolv_data)| resolv_data.ip.clone()) + .values() + .map(|resolv_data| resolv_data.ip.clone()) .collect(); - nmap_ips.retain(|ip| !ip.is_empty()); + nmap_ips.retain(|ip| { + !ip.is_empty() + && ip.parse::().is_ok() + && !ip.parse::().unwrap().is_private() + }); let nmap_data: HashMap = nmap_ips .par_iter() From 7c6e717c0becbf17d6ef6cbc386d24ae0a6e2dfa Mon Sep 17 00:00:00 2001 From: Eduard Tolosa Date: Wed, 23 Aug 2023 20:35:37 -0500 Subject: [PATCH 50/62] Remove logs_dir when the scan is finished. Fixes #11 --- src/resolver_engine.rs | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/resolver_engine.rs b/src/resolver_engine.rs index bb0e62c..f530d2a 100644 --- a/src/resolver_engine.rs +++ b/src/resolver_engine.rs @@ -251,6 +251,11 @@ fn parallel_resolver_engine( }) .collect(); + // Delete the args.logs_dir directory if it's empty + if args.no_keep_nmap_logs && std::fs::remove_dir(&args.logs_dir).is_err() { + error!("Error removing directory {}.", &args.logs_dir) + } + resolv_data .iter() .map(|(target, resolv_data)| { From 3afaf475d0be2a2c2e7dc71fd10a506bae11eeae Mon Sep 17 00:00:00 2001 From: Eduard Tolosa Date: Fri, 25 Aug 2023 00:51:41 -0500 Subject: [PATCH 51/62] Bump version and dependencies. --- Cargo.lock | 789 +++++++++++++++++++++++++++++++++++------------------ Cargo.toml | 20 +- 2 files changed, 526 insertions(+), 283 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 14eb71b..e85e163 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4,9 +4,9 @@ version = 3 [[package]] name = "addr2line" -version = "0.17.0" +version = "0.21.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9ecd88a8c8378ca913a680cd98f0f13ac67383d35993f86c90a70e3f137816b" +checksum = "8a30b2e23b9e17a9f90641c7ab1549cd9b44f296d3ccbf309d2863cfe398a0cb" dependencies = [ "gimli", ] @@ -19,13 +19,28 @@ checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" [[package]] name = "aho-corasick" -version = "0.7.18" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e37cfd5e7657ada45f742d6e99ca5788580b5c529dc78faf11ece6dc702656f" +checksum = "6748e8def348ed4d14996fa801f4122cd763fff530258cdc03f64b25f89d3a5a" dependencies = [ "memchr", ] +[[package]] +name = "android-tzdata" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0" + +[[package]] +name = "android_system_properties" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" +dependencies = [ + "libc", +] + [[package]] name = "ansi_term" version = "0.12.1" @@ -37,9 +52,9 @@ dependencies = [ [[package]] name = "arrayref" -version = "0.3.6" +version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4c527152e37cf757a3f78aae5a06fbeefdb07ccc535c980a3208ee3060dd544" +checksum = "6b4930d2cb77ce62f89ee5d5289b4ac049559b1c45539271f5ed4fdc7db34545" [[package]] name = "arrayvec" @@ -49,13 +64,13 @@ checksum = "23b62fc65de8e4e7f52534fb52b0f3ed04746ae267519eef2a83941e8085068b" [[package]] name = "async-trait" -version = "0.1.52" +version = "0.1.73" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "061a7acccaa286c011ddc30970520b98fa40e00c9d644633fb26b5fc63a265e3" +checksum = "bc00ceb34980c03614e35a3a4e218276a0a824e911d07651cd0d858a51e8c0f0" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.29", ] [[package]] @@ -64,7 +79,7 @@ version = "0.2.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" dependencies = [ - "hermit-abi", + "hermit-abi 0.1.19", "libc", "winapi", ] @@ -77,9 +92,9 @@ checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" [[package]] name = "backtrace" -version = "0.3.64" +version = "0.3.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e121dee8023ce33ab248d9ce1493df03c3b38a659b240096fcbd7048ff9c31f" +checksum = "2089b7e3f35b9dd2d0ed921ead4f6d318c27680d4a5bd167b3ee120edb105837" dependencies = [ "addr2line", "cc", @@ -92,9 +107,9 @@ dependencies = [ [[package]] name = "base64" -version = "0.13.0" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "904dfeac50f3cdaba28fc6f57fdcddb75f49ed61346676a78c4ffe55877802fd" +checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" [[package]] name = "bitflags" @@ -102,6 +117,12 @@ version = "1.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" +[[package]] +name = "bitflags" +version = "2.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4682ae6287fcf752ecaabbfcc7b6f9b72aa33933dc23a554d853aea8eea8635" + [[package]] name = "blake2b_simd" version = "0.5.11" @@ -114,16 +135,10 @@ dependencies = [ ] [[package]] -name = "bstr" -version = "0.2.17" +name = "bumpalo" +version = "3.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba3569f383e8f1598449f1a423e72e99569137b47740b1da11ef19af3d5c3223" -dependencies = [ - "lazy_static", - "memchr", - "regex-automata", - "serde 1.0.136", -] +checksum = "a3e2c3daef883ecc1b5d58c15adae93470a91d425f3532ba1695849656af3fc1" [[package]] name = "byteorder" @@ -133,9 +148,12 @@ checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" [[package]] name = "cc" -version = "1.0.73" +version = "1.0.83" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2fff2a6927b3bb87f9595d67196a70493f627687a71d87a0d692242c33f58c11" +checksum = "f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0" +dependencies = [ + "libc", +] [[package]] name = "cfg-if" @@ -145,14 +163,16 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" [[package]] name = "chrono" -version = "0.4.19" +version = "0.4.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "670ad68c9088c2a963aaa298cb369688cf3f9465ce5e2d4ca10e6e0098a1ce73" +checksum = "ec837a71355b28f6556dbd569b37b3f363091c0bd4b2e735674521b4c5fd9bc5" dependencies = [ - "libc", - "num-integer", - "num-traits 0.2.14", + "android-tzdata", + "iana-time-zone", + "js-sys", + "num-traits 0.2.16", "time", + "wasm-bindgen", "winapi", ] @@ -164,7 +184,7 @@ checksum = "a0610544180c38b88101fecf2dd634b174a62eef6946f84dfc6a7127512b381c" dependencies = [ "ansi_term", "atty", - "bitflags", + "bitflags 1.3.2", "strsim", "textwrap", "unicode-width", @@ -174,13 +194,13 @@ dependencies = [ [[package]] name = "colored" -version = "2.0.0" +version = "2.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3616f750b84d8f0de8a58bda93e08e2a81ad3f523089b05f1dffecab48c6cbd" +checksum = "2674ec482fbc38012cf31e6c42ba0177b431a0cb6f15fe40efa5aab1bda516f6" dependencies = [ - "atty", + "is-terminal", "lazy_static", - "winapi", + "windows-sys", ] [[package]] @@ -192,7 +212,7 @@ dependencies = [ "lazy_static", "nom", "rust-ini", - "serde 1.0.136", + "serde 1.0.186", "serde-hjson", "serde_json", "toml", @@ -206,10 +226,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "245097e9a4535ee1e3e3931fcfcd55a796a44c643e8596ff6566d68f09b87bbc" [[package]] -name = "crossbeam-channel" -version = "0.5.2" +name = "core-foundation-sys" +version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e54ea8bc3fb1ee042f5aace6e3c6e025d3874866da222930f70ce62aceba0bfa" +checksum = "e496a50fda8aacccc86d7529e2c1e0892dbd0f898a6b5645b5561b89c3210efa" + +[[package]] +name = "crossbeam-channel" +version = "0.5.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a33c2bf77f2df06183c3aa30d1e96c0695a313d4f9c453cc3762a6db39f99200" dependencies = [ "cfg-if", "crossbeam-utils", @@ -217,9 +243,9 @@ dependencies = [ [[package]] name = "crossbeam-deque" -version = "0.8.1" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6455c0ca19f0d2fbf751b908d5c55c1f5cbc65e03c4225427254b46890bdde1e" +checksum = "ce6fd6f855243022dcecf8702fef0c297d4338e226845fe067f6341ad9fa0cef" dependencies = [ "cfg-if", "crossbeam-epoch", @@ -228,38 +254,36 @@ dependencies = [ [[package]] name = "crossbeam-epoch" -version = "0.9.7" +version = "0.9.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c00d6d2ea26e8b151d99093005cb442fb9a37aeaca582a03ec70946f49ab5ed9" +checksum = "ae211234986c545741a7dc064309f67ee1e5ad243d0e48335adc0484d960bcc7" dependencies = [ + "autocfg", "cfg-if", "crossbeam-utils", - "lazy_static", "memoffset", "scopeguard", ] [[package]] name = "crossbeam-utils" -version = "0.8.7" +version = "0.8.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5e5bed1f1c269533fa816a0a5492b3545209a205ca1a54842be180eb63a16a6" +checksum = "5a22b2d63d4d1dc0b7f1b6b2747dd0088008a9be28b6ddf0b1e7d335e3037294" dependencies = [ "cfg-if", - "lazy_static", ] [[package]] name = "csv" -version = "1.1.6" +version = "1.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22813a6dc45b335f9bade10bf7271dc477e81113e89eb251a0bc2a8a81c536e1" +checksum = "626ae34994d3d8d668f4269922248239db4ae42d538b14c398b74a52208e8086" dependencies = [ - "bstr", "csv-core", - "itoa 0.4.8", + "itoa", "ryu", - "serde 1.0.136", + "serde 1.0.186", ] [[package]] @@ -273,9 +297,9 @@ dependencies = [ [[package]] name = "data-encoding" -version = "2.3.2" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ee2393c4a91429dffb4bedf19f4d6abf27d8a732c8ce4980305d782e5426d57" +checksum = "c2e66c9d817f1720209181c316d28635c050fa304f9c79e47a520882661b7308" [[package]] name = "dirs" @@ -290,9 +314,9 @@ dependencies = [ [[package]] name = "either" -version = "1.6.1" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e78d4f1cc4ae33bbfc157ed5d5a5ef3bc29227303d595861deb238fcec4e9457" +checksum = "a26ae43d7bcc3b814de94796a5e736d4029efb0ee900c12e2d54c993ad1a1e07" [[package]] name = "encode_unicode" @@ -302,14 +326,35 @@ checksum = "a357d28ed41a50f9c765dbfe56cbc04a64e53e5fc58ba79fbc34c10ef3df831f" [[package]] name = "enum-as-inner" -version = "0.3.3" +version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c5f0096a91d210159eceb2ff5e1c4da18388a170e1e3ce948aac9c8fdbbf595" +checksum = "570d109b813e904becc80d8d5da38376818a143348413f7149f1340fe04754d4" dependencies = [ "heck", "proc-macro2", "quote", - "syn", + "syn 1.0.109", +] + +[[package]] +name = "errno" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6b30f669a7961ef1631673d2766cc92f52d64f7ef354d4fe0ddfd30ed52f0f4f" +dependencies = [ + "errno-dragonfly", + "libc", + "windows-sys", +] + +[[package]] +name = "errno-dragonfly" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa68f1b12764fab894d2755d2518754e71b4fd80ecfb822714a1206c2aab39bf" +dependencies = [ + "cc", + "libc", ] [[package]] @@ -330,7 +375,7 @@ checksum = "aa4da3c766cd7a0db8242e326e9e4e081edd567072893ed320008189715366a4" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 1.0.109", "synstructure", ] @@ -351,46 +396,45 @@ checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" [[package]] name = "form_urlencoded" -version = "1.0.1" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5fc25a87fa4fd2094bffb06925852034d90a17f0d1e05197d4956d3555752191" +checksum = "a62bc1cf6f830c2ec14a513a9fb124d0a213a629668a4186f329db21fe045652" dependencies = [ - "matches", "percent-encoding", ] [[package]] name = "futures-channel" -version = "0.3.21" +version = "0.3.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3083ce4b914124575708913bca19bfe887522d6e2e6d0952943f5eac4a74010" +checksum = "955518d47e09b25bbebc7a18df10b81f0c766eaf4c4f1cccef2fca5f2a4fb5f2" dependencies = [ "futures-core", ] [[package]] name = "futures-core" -version = "0.3.21" +version = "0.3.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c09fd04b7e4073ac7156a9539b57a484a8ea920f79c7c675d05d289ab6110d3" +checksum = "4bca583b7e26f571124fe5b7561d49cb2868d79116cfa0eefce955557c6fee8c" [[package]] name = "futures-io" -version = "0.3.21" +version = "0.3.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc4045962a5a5e935ee2fdedaa4e08284547402885ab326734432bed5d12966b" +checksum = "4fff74096e71ed47f8e023204cfd0aa1289cd54ae5430a9523be060cdb849964" [[package]] name = "futures-task" -version = "0.3.21" +version = "0.3.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57c66a976bf5909d801bbef33416c41372779507e7a6b3a5e25e4749c58f776a" +checksum = "76d3d132be6c0e6aa1534069c705a74a5997a356c0dc2f86a47765e5617c5b65" [[package]] name = "futures-util" -version = "0.3.21" +version = "0.3.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8b7abd5d659d9b90c8cba917f6ec750a74e2dc23902ef9cd4cc8c8b22e6036a" +checksum = "26b01e40b772d54cf6c6d721c1d1abd0647a0106a12ecaa1c186273392a69533" dependencies = [ "futures-core", "futures-task", @@ -412,29 +456,26 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.2.4" +version = "0.2.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "418d37c8b1d42553c93648be529cb70f920d3baf8ef469b74b9638df426e0b4c" +checksum = "be4136b2a15dd319360be1c07d9933517ccf0be8f16bf62a3bee4f0d618df427" dependencies = [ "cfg-if", "libc", - "wasi 0.10.0+wasi-snapshot-preview1", + "wasi 0.11.0+wasi-snapshot-preview1", ] [[package]] name = "gimli" -version = "0.26.1" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78cc372d058dcf6d5ecd98510e7fbc9e5aec4d21de70f65fea8fecebcd881bd4" +checksum = "6fb8d784f27acf97159b40fc4db5ecd8aa23b9ad5ef69cdd136d3bc80665f0c0" [[package]] name = "heck" -version = "0.3.3" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d621efb26863f0e9924c6ac577e8275e5e6b77455db64ffa6c65c904e9e132c" -dependencies = [ - "unicode-segmentation", -] +checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" [[package]] name = "hermit-abi" @@ -445,6 +486,12 @@ dependencies = [ "libc", ] +[[package]] +name = "hermit-abi" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "443144c8cdadd93ebf52ddb4056d257f5b52c04d3c804e657d19eb73fc33668b" + [[package]] name = "hostname" version = "0.3.1" @@ -456,6 +503,29 @@ dependencies = [ "winapi", ] +[[package]] +name = "iana-time-zone" +version = "0.1.57" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2fad5b825842d2b38bd206f3e81d6957625fd7f0a361e345c30e01a0ae2dd613" +dependencies = [ + "android_system_properties", + "core-foundation-sys", + "iana-time-zone-haiku", + "js-sys", + "wasm-bindgen", + "windows", +] + +[[package]] +name = "iana-time-zone-haiku" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" +dependencies = [ + "cc", +] + [[package]] name = "idna" version = "0.2.3" @@ -467,6 +537,16 @@ dependencies = [ "unicode-normalization", ] +[[package]] +name = "idna" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d20d6b07bfbc108882d88ed8e37d39636dcc260e15e30c45e6ba089610b917c" +dependencies = [ + "unicode-bidi", + "unicode-normalization", +] + [[package]] name = "instant" version = "0.1.12" @@ -490,21 +570,35 @@ dependencies = [ [[package]] name = "ipnet" -version = "2.3.1" +version = "2.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68f2d64f2edebec4ce84ad108148e67e1064789bee435edc5b60ad398714a3a9" +checksum = "28b29a3cd74f0f4598934efe3aeba42bae0eb4680554128851ebbecb02af14e6" + +[[package]] +name = "is-terminal" +version = "0.4.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb0889898416213fab133e1d33a0e5858a48177452750691bde3666d0fdbaf8b" +dependencies = [ + "hermit-abi 0.3.2", + "rustix", + "windows-sys", +] [[package]] name = "itoa" -version = "0.4.8" +version = "1.0.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b71991ff56294aa922b450139ee08b3bfc70982c6b2c7562771375cf73542dd4" +checksum = "af150ab688ff2122fcef229be89cb50dd66af9e01a4ff320cc137eecc9bacc38" [[package]] -name = "itoa" -version = "1.0.1" +name = "js-sys" +version = "0.3.64" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1aab8fc367588b89dcee83ab0fd66b72b50b72fa1904d7095045ace2b0c81c35" +checksum = "c5f195fe497f702db0f318b07fdd68edb16955aed830df8363d837542f8f935a" +dependencies = [ + "wasm-bindgen", +] [[package]] name = "lazy_static" @@ -519,7 +613,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6607c62aa161d23d17a9072cc5da0be67cdfc89d3afb1e8d9c842bebc2525ffe" dependencies = [ "arrayvec", - "bitflags", + "bitflags 1.3.2", "cfg-if", "ryu", "static_assertions", @@ -527,33 +621,37 @@ dependencies = [ [[package]] name = "libc" -version = "0.2.119" +version = "0.2.147" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bf2e165bb3457c8e098ea76f3e3bc9db55f87aa90d52d0e6be741470916aaa4" +checksum = "b4668fb0ea861c1df094127ac5f1da3409a82116a4ba74fca2e58ef927159bb3" [[package]] name = "linked-hash-map" -version = "0.5.4" +version = "0.5.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fb9b38af92608140b86b693604b9ffcc5824240a484d1ecd4795bacb2fe88f3" +checksum = "0717cef1bc8b636c6e1c1bbdefc09e6322da8a9321966e8928ef80d20f7f770f" + +[[package]] +name = "linux-raw-sys" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57bcfdad1b858c2db7c38303a6d2ad4dfaf5eb53dfeb0910128b2c26d6158503" [[package]] name = "lock_api" -version = "0.4.6" +version = "0.4.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88943dd7ef4a2e5a4bfa2753aaab3013e34ce2533d1996fb18ef591e315e2b3b" +checksum = "c1cc9717a20b1bb222f333e6a92fd32f7d8a18ddc5a3191a11af45dcbf4dcd16" dependencies = [ + "autocfg", "scopeguard", ] [[package]] name = "log" -version = "0.4.14" +version = "0.4.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "51b9bbe6c47d51fc3e1a9b945965946b4c44142ab8792c50835a980d362c2710" -dependencies = [ - "cfg-if", -] +checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f" [[package]] name = "lru-cache" @@ -572,160 +670,140 @@ checksum = "ffbee8634e0d45d258acb448e7eaab3fce7a0a467395d4d9f228e3c1f01fb2e4" [[package]] name = "matches" -version = "0.1.9" +version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3e378b66a060d48947b590737b30a1be76706c8dd7b8ba0f2fe3989c68a853f" +checksum = "2532096657941c2fea9c289d370a250971c689d4f143798ff67113ec042024a5" [[package]] name = "memchr" -version = "2.4.1" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "308cc39be01b73d0d18f82a0e7b2a3df85245f84af96fdddc5d202d27e47b86a" +checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d" [[package]] name = "memoffset" -version = "0.6.5" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5aa361d4faea93603064a027415f07bd8e1d5c88c9fbf68bf56a285428fd79ce" +checksum = "5a634b1c61a95585bd15607c6ab0c4e5b226e695ff2800ba0cdccddf208c406c" dependencies = [ "autocfg", ] [[package]] name = "miniz_oxide" -version = "0.4.4" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a92518e98c078586bc6c934028adcca4c92a53d6a958196de835170a01d84e4b" +checksum = "e7810e0be55b428ada41041c41f32c9f1a42817901b4ccf45fa3d4b6561e74c7" dependencies = [ "adler", - "autocfg", ] [[package]] name = "mio" -version = "0.8.0" +version = "0.8.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba272f85fa0b41fc91872be579b3bbe0f56b792aa361a380eb669469f68dafb2" +checksum = "927a765cd3fc26206e66b296465fa9d3e5ab003e651c1b3c060e7956d96b19d2" dependencies = [ "libc", - "log", - "miow", - "ntapi", - "winapi", -] - -[[package]] -name = "miow" -version = "0.3.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9f1c5b025cda876f66ef43a113f91ebc9f4ccef34843000e0adf6ebbab84e21" -dependencies = [ - "winapi", + "wasi 0.11.0+wasi-snapshot-preview1", + "windows-sys", ] [[package]] name = "nom" -version = "5.1.2" +version = "5.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ffb4262d26ed83a1c0a33a38fe2bb15797329c85770da05e6b828ddb782627af" +checksum = "08959a387a676302eebf4ddbcbc611da04285579f76f88ee0506c63b1a61dd4b" dependencies = [ "lexical-core", "memchr", "version_check", ] -[[package]] -name = "ntapi" -version = "0.3.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c28774a7fd2fbb4f0babd8237ce554b73af68021b5f695a3cebd6c59bac0980f" -dependencies = [ - "winapi", -] - -[[package]] -name = "num-integer" -version = "0.1.44" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2cc698a63b549a70bc047073d2949cce27cd1c7b0a4a862d08a8031bc2801db" -dependencies = [ - "autocfg", - "num-traits 0.2.14", -] - [[package]] name = "num-traits" version = "0.1.43" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "92e5113e9fd4cc14ded8e499429f396a20f98c772a47cc8622a736e1ec843c31" dependencies = [ - "num-traits 0.2.14", + "num-traits 0.2.16", ] [[package]] name = "num-traits" -version = "0.2.14" +version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a64b1ec5cda2586e284722486d802acf1f7dbdc623e2bfc57e65ca1cd099290" +checksum = "f30b0abd723be7e2ffca1272140fac1a2f084c77ec3e123c192b66af1ee9e6c2" dependencies = [ "autocfg", ] [[package]] name = "num_cpus" -version = "1.13.1" +version = "1.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19e64526ebdee182341572e50e9ad03965aa510cd94427a4549448f285e957a1" +checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" dependencies = [ - "hermit-abi", + "hermit-abi 0.3.2", "libc", ] [[package]] name = "object" -version = "0.27.1" +version = "0.32.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67ac1d3f9a1d3616fd9a60c8d74296f22406a238b6a72f5cc1e6f314df4ffbf9" +checksum = "77ac5bbd07aea88c60a577a1ce218075ffd59208b2d7ca97adf9bfc5aeb21ebe" dependencies = [ "memchr", ] [[package]] name = "once_cell" -version = "1.9.0" +version = "1.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da32515d9f6e6e489d7bc9d84c71b060db7247dc035bbe44eac88cf87486d8d5" +checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d" [[package]] name = "openssl" -version = "0.10.38" +version = "0.10.56" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c7ae222234c30df141154f159066c5093ff73b63204dcda7121eb082fc56a95" +checksum = "729b745ad4a5575dd06a3e1af1414bd330ee561c01b3899eb584baeaa8def17e" dependencies = [ - "bitflags", + "bitflags 1.3.2", "cfg-if", "foreign-types", "libc", "once_cell", + "openssl-macros", "openssl-sys", ] [[package]] -name = "openssl-src" -version = "111.17.0+1.1.1m" +name = "openssl-macros" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05d6a336abd10814198f66e2a91ccd7336611f30334119ca8ce300536666fcf4" +checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.29", +] + +[[package]] +name = "openssl-src" +version = "111.27.0+1.1.1v" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06e8f197c82d7511c5b014030c9b1efeda40d7d5f99d23b4ceed3524a5e63f02" dependencies = [ "cc", ] [[package]] name = "openssl-sys" -version = "0.9.72" +version = "0.9.91" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e46109c383602735fa0a2e48dd2b7c892b048e1bf69e5c3b1d804b7d9c203cb" +checksum = "866b5f16f90776b9bb8dc1e1802ac6f0513de3a7a7465867bfbc563dc737faac" dependencies = [ - "autocfg", "cc", "libc", "openssl-src", @@ -746,29 +824,29 @@ dependencies = [ [[package]] name = "parking_lot_core" -version = "0.8.5" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d76e8e1493bcac0d2766c42737f34458f1c8c50c0d23bcb24ea953affb273216" +checksum = "60a2cfe6f0ad2bfc16aefa463b497d5c7a5ecd44a23efa72aa342d90177356dc" dependencies = [ "cfg-if", "instant", "libc", - "redox_syscall 0.2.10", + "redox_syscall 0.2.16", "smallvec", "winapi", ] [[package]] name = "percent-encoding" -version = "2.1.0" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4fd5641d01c8f18a23da7b6fe29298ff4b55afcccdf78973b24cf3175fee32e" +checksum = "9b2a4787296e9989611394c33f193f676704af1686e70b8f8033ab5ba9a35a94" [[package]] name = "pin-project-lite" -version = "0.2.8" +version = "0.2.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e280fbe77cc62c91527259e9442153f4688736748d24660126286329742b4c6c" +checksum = "12cc1b0bf1727a77a54b6654e7b5f1af8604923edc8b81885f8ec92f9e3f0a05" [[package]] name = "pin-utils" @@ -778,15 +856,15 @@ checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" [[package]] name = "pkg-config" -version = "0.3.24" +version = "0.3.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "58893f751c9b0412871a09abd62ecd2a00298c6c83befa223ef98c52aef40cbe" +checksum = "26072860ba924cbfa98ea39c8c19b4dd6a4a25423dbdf219c1eca91aa0cf6964" [[package]] name = "ppv-lite86" -version = "0.2.16" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb9f9e6e233e5c4a35559a617bf40a4ec447db2e84c20b55a6f83167b7e57872" +checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" [[package]] name = "prettytable-rs" @@ -804,11 +882,11 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.36" +version = "1.0.66" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7342d5883fbccae1cc37a2353b09c87c9b0f3afd73f5fb9bba687a1f733b029" +checksum = "18fb31db3f9bddb2ea821cde30a9f70117e3f119938b5ee630b7403aa6e2ead9" dependencies = [ - "unicode-xid", + "unicode-ident", ] [[package]] @@ -819,9 +897,9 @@ checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0" [[package]] name = "quote" -version = "1.0.15" +version = "1.0.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "864d3e96a899863136fc6e99f3d7cae289dafe43bf2c5ac19b70df7210c0a145" +checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae" dependencies = [ "proc-macro2", ] @@ -849,35 +927,32 @@ dependencies = [ [[package]] name = "rand_core" -version = "0.6.3" +version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d34f1408f55294453790c48b2f1ebbb1c5b4b7563eb1f418bcfcfdbb06ebb4e7" +checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" dependencies = [ - "getrandom 0.2.4", + "getrandom 0.2.10", ] [[package]] name = "rayon" -version = "1.5.1" +version = "1.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c06aca804d41dbc8ba42dfd964f0d01334eceb64314b9ecf7c5fad5188a06d90" +checksum = "1d2df5196e37bcc87abebc0053e20787d73847bb33134a69841207dd0a47f03b" dependencies = [ - "autocfg", - "crossbeam-deque", "either", "rayon-core", ] [[package]] name = "rayon-core" -version = "1.9.1" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d78120e2c850279833f1dd3582f730c4ab53ed95aeaaaa862a2a5c71b1656d8e" +checksum = "4b8f95bd6966f5c87776639160a66bd8ab9895d9d4ab01ddba9fc60661aebe8d" dependencies = [ "crossbeam-channel", "crossbeam-deque", "crossbeam-utils", - "lazy_static", "num_cpus", ] @@ -889,11 +964,11 @@ checksum = "41cc0f7e4d5d4544e8861606a285bb08d3e70712ccc7d2b84d7c0ccfaf4b05ce" [[package]] name = "redox_syscall" -version = "0.2.10" +version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8383f39639269cde97d255a32bdb68c047337295414940c68bdd30c2e13203ff" +checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a" dependencies = [ - "bitflags", + "bitflags 1.3.2", ] [[package]] @@ -909,26 +984,32 @@ dependencies = [ [[package]] name = "regex" -version = "1.5.4" +version = "1.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d07a8629359eb56f1e2fb1652bb04212c072a87ba68546a04065d525673ac461" +checksum = "81bc1d4caf89fac26a70747fe603c130093b53c773888797a6329091246d651a" +dependencies = [ + "aho-corasick", + "memchr", + "regex-automata", + "regex-syntax", +] + +[[package]] +name = "regex-automata" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fed1ceff11a1dddaee50c9dc8e4938bd106e9d89ae372f192311e7da498e3b69" dependencies = [ "aho-corasick", "memchr", "regex-syntax", ] -[[package]] -name = "regex-automata" -version = "0.1.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132" - [[package]] name = "regex-syntax" -version = "0.6.25" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f497285884f3fcff424ffc933e56d7cbca511def0c9831a7f9b5f6153e3cc89b" +checksum = "e5ea92a5b6195c6ef2a0295ea818b312502c6fc94dde986c5553242e18fd4ce2" [[package]] name = "resolv-conf" @@ -960,21 +1041,34 @@ checksum = "3e52c148ef37f8c375d49d5a73aa70713125b7f19095948a923f80afdeb22ec2" [[package]] name = "rustc-demangle" -version = "0.1.21" +version = "0.1.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ef03e0a2b150c7a90d01faf6254c9c48a41e95fb2a8c2ac1c6f0d2b9aefc342" +checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76" + +[[package]] +name = "rustix" +version = "0.38.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19ed4fa021d81c8392ce04db050a3da9a60299050b7ae1cf482d862b54a7218f" +dependencies = [ + "bitflags 2.4.0", + "errno", + "libc", + "linux-raw-sys", + "windows-sys", +] [[package]] name = "ryu" -version = "1.0.9" +version = "1.0.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73b4b750c782965c211b42f022f59af1fbceabdd026623714f104152f1ec149f" +checksum = "1ad4cc8da4ef723ed60bced201181d83791ad433213d8c24efffda1eec85d741" [[package]] name = "scopeguard" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" +checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" [[package]] name = "serde" @@ -984,9 +1078,9 @@ checksum = "9dad3f759919b92c3068c696c15c3d17238234498bbdcc80f2c469606f948ac8" [[package]] name = "serde" -version = "1.0.136" +version = "1.0.186" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce31e24b01e1e524df96f1c2fdd054405f8d7376249a5110886fb4b658484789" +checksum = "9f5db24220c009de9bd45e69fb2938f4b6d2df856aa9304ce377b3180f83b7c1" dependencies = [ "serde_derive", ] @@ -1010,44 +1104,47 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "65162e9059be2f6a3421ebbb4fef3e74b7d9e7c60c50a0e292c6239f19f1edfa" dependencies = [ "log", - "serde 1.0.136", + "serde 1.0.186", "thiserror", "xml-rs", ] [[package]] name = "serde_derive" -version = "1.0.136" +version = "1.0.186" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08597e7152fcd306f41838ed3e37be9eaeed2b61c42e2117266a554fab4662f9" +checksum = "5ad697f7e0b65af4983a4ce8f56ed5b357e8d3c36651bf6a7e13639c17b8e670" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.29", ] [[package]] name = "serde_json" -version = "1.0.79" +version = "1.0.105" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e8d9fa5c3b304765ce1fd9c4c8a3de2c8db365a5b91be52f186efc675681d95" +checksum = "693151e1ac27563d6dbcec9dee9fbd5da8539b20fa14ad3752b2e6d363ace360" dependencies = [ - "itoa 1.0.1", + "itoa", "ryu", - "serde 1.0.136", + "serde 1.0.186", ] [[package]] name = "slab" -version = "0.4.5" +version = "0.4.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9def91fd1e018fe007022791f865d0ccc9b3a0d5001e01aabb8b40e46000afb5" +checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" +dependencies = [ + "autocfg", +] [[package]] name = "smallvec" -version = "1.8.0" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2dd574626839106c320a323308629dcb1acfc96e32a8cba364ddc61ac23ee83" +checksum = "62bb4feee49fdd9f707ef802e22365a35de4b7b299de4763d44bfea899442ff9" [[package]] name = "socket2" @@ -1062,12 +1159,12 @@ dependencies = [ [[package]] name = "socket2" -version = "0.4.4" +version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "66d72b759436ae32898a2af0a14218dbf55efde3feeb170eb623637db85ee1e0" +checksum = "2538b18701741680e0322a2302176d3253a35388e2e62f172f64f4f16605f877" dependencies = [ "libc", - "winapi", + "windows-sys", ] [[package]] @@ -1084,13 +1181,24 @@ checksum = "8ea5119cdb4c55b55d432abb513a0429384878c15dde60cc77b1c99de1a95a6a" [[package]] name = "syn" -version = "1.0.86" +version = "1.0.109" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a65b3f4ffa0092e9887669db0eae07941f023991ab58ea44da8fe8e2d511c6b" +checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" dependencies = [ "proc-macro2", "quote", - "unicode-xid", + "unicode-ident", +] + +[[package]] +name = "syn" +version = "2.0.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c324c494eba9d92503e6f1ef2e6df781e78f6a7705a0202d9801b198807d518a" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", ] [[package]] @@ -1101,7 +1209,7 @@ checksum = "f36bdaa60a83aca3921b5259d5400cbf5e90fc51931376a9bd4a0eb79aa7210f" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 1.0.109", "unicode-xid", ] @@ -1127,29 +1235,29 @@ dependencies = [ [[package]] name = "thiserror" -version = "1.0.30" +version = "1.0.47" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "854babe52e4df1653706b98fcfc05843010039b406875930a70e4d9644e5c417" +checksum = "97a802ec30afc17eee47b2855fc72e0c4cd62be9b4efe6591edde0ec5bd68d8f" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.30" +version = "1.0.47" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa32fd3f627f367fe16f893e2597ae3c05020f8bba2666a4e6ea73d377e5714b" +checksum = "6bb623b56e39ab7dcd4b1b98bb6c8f8d907ed255b18de254088016b27a8ee19b" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.29", ] [[package]] name = "time" -version = "0.1.44" +version = "0.1.45" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6db9e6914ab8b1ae1c260a4ae7a49b6c5611b40328a735b21862567685e73255" +checksum = "1b797afad3f312d1c66a56d11d0316f916356d11bd158fbc6ca6389ff6bf805a" dependencies = [ "libc", "wasi 0.10.0+wasi-snapshot-preview1", @@ -1158,40 +1266,41 @@ dependencies = [ [[package]] name = "tinyvec" -version = "1.5.1" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c1c1d5a42b6245520c249549ec267180beaffcc0615401ac8e31853d4b6d8d2" +checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50" dependencies = [ "tinyvec_macros", ] [[package]] name = "tinyvec_macros" -version = "0.1.0" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cda74da7e1a664f795bb1f8a87ec406fb89a02522cf6e50620d016add6dbbf5c" +checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.17.0" +version = "1.32.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2af73ac49756f3f7c01172e34a23e5d0216f6c32333757c2c61feb2bbff5a5ee" +checksum = "17ed6077ed6cd6c74735e21f37eb16dc3935f96878b1fe961074089cc80893f9" dependencies = [ + "backtrace", "libc", "mio", "num_cpus", "pin-project-lite", - "socket2 0.4.4", - "winapi", + "socket2 0.5.3", + "windows-sys", ] [[package]] name = "toml" -version = "0.5.8" +version = "0.5.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a31142970826733df8241ef35dc040ef98c679ab14d7c3e54d827099b3acecaa" +checksum = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234" dependencies = [ - "serde 1.0.136", + "serde 1.0.186", ] [[package]] @@ -1206,7 +1315,7 @@ dependencies = [ "futures-channel", "futures-io", "futures-util", - "idna", + "idna 0.2.3", "ipnet", "lazy_static", "log", @@ -1240,40 +1349,40 @@ dependencies = [ [[package]] name = "unicode-bidi" -version = "0.3.7" +version = "0.3.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a01404663e3db436ed2746d9fefef640d868edae3cceb81c3b8d5732fda678f" +checksum = "92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460" + +[[package]] +name = "unicode-ident" +version = "1.0.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "301abaae475aa91687eb82514b328ab47a211a533026cb25fc3e519b86adfc3c" [[package]] name = "unicode-normalization" -version = "0.1.19" +version = "0.1.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d54590932941a9e9266f0832deed84ebe1bf2e4c9e4a3554d393d18f5e854bf9" +checksum = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921" dependencies = [ "tinyvec", ] -[[package]] -name = "unicode-segmentation" -version = "1.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e8820f5d777f6224dc4be3632222971ac30164d4a258d595640799554ebfd99" - [[package]] name = "unicode-width" -version = "0.1.9" +version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ed742d4ea2bd1176e236172c8429aaf54486e7ac098db29ffe6529e0ce50973" +checksum = "c0edd1e5b14653f783770bce4a4dabb4a5108a5370a5f5d8cfe8710c361f6c8b" [[package]] name = "unicode-xid" -version = "0.2.2" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ccb82d61f80a663efe1f787a51b16b5a51e3314d6ac365b08639f52387b33f3" +checksum = "f962df74c8c05a667b5ee8bcf162993134c104e96440b663c8daa176dc772d8c" [[package]] name = "unimap" -version = "0.5.1" +version = "0.6.0" dependencies = [ "atty", "chrono", @@ -1287,7 +1396,7 @@ dependencies = [ "prettytable-rs", "rand", "rayon", - "serde 1.0.136", + "serde 1.0.186", "serde-xml-rs", "serde_derive", "trust-dns-resolver", @@ -1296,13 +1405,12 @@ dependencies = [ [[package]] name = "url" -version = "2.2.2" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a507c383b2d33b5fc35d1861e77e6b383d158b2da5e14fe51b83dfedf6fd578c" +checksum = "50bff7831e19200a85b17131d085c25d7811bc4e186efdaf54bbd132994a88cb" dependencies = [ "form_urlencoded", - "idna", - "matches", + "idna 0.4.0", "percent-encoding", ] @@ -1336,6 +1444,66 @@ version = "0.10.0+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1a143597ca7c7793eff794def352d41792a93c481eb1042423ff7ff72ba2c31f" +[[package]] +name = "wasi" +version = "0.11.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" + +[[package]] +name = "wasm-bindgen" +version = "0.2.87" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7706a72ab36d8cb1f80ffbf0e071533974a60d0a308d01a5d0375bf60499a342" +dependencies = [ + "cfg-if", + "wasm-bindgen-macro", +] + +[[package]] +name = "wasm-bindgen-backend" +version = "0.2.87" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5ef2b6d3c510e9625e5fe6f509ab07d66a760f0885d858736483c32ed7809abd" +dependencies = [ + "bumpalo", + "log", + "once_cell", + "proc-macro2", + "quote", + "syn 2.0.29", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.87" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dee495e55982a3bd48105a7b947fd2a9b4a8ae3010041b9e0faab3f9cd028f1d" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.87" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "54681b18a46765f095758388f2d0cf16eb8d4169b639ab575a8f5693af210c7b" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.29", + "wasm-bindgen-backend", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.87" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca6ad05a4870b2bf5fe995117d3728437bd27d7cd5f06f13c17443ef369775a1" + [[package]] name = "widestring" version = "0.4.3" @@ -1364,6 +1532,81 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" +[[package]] +name = "windows" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e686886bc078bc1b0b600cac0147aadb815089b6e4da64016cbd754b6342700f" +dependencies = [ + "windows-targets", +] + +[[package]] +name = "windows-sys" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" +dependencies = [ + "windows-targets", +] + +[[package]] +name = "windows-targets" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" +dependencies = [ + "windows_aarch64_gnullvm", + "windows_aarch64_msvc", + "windows_i686_gnu", + "windows_i686_msvc", + "windows_x86_64_gnu", + "windows_x86_64_gnullvm", + "windows_x86_64_msvc", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" + +[[package]] +name = "windows_i686_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" + +[[package]] +name = "windows_i686_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" + [[package]] name = "winreg" version = "0.6.2" @@ -1375,9 +1618,9 @@ dependencies = [ [[package]] name = "xml-rs" -version = "0.8.4" +version = "0.8.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2d7d3948613f75c98fd9328cfdcc45acc4d360655289d0a7d4ec931392200a3" +checksum = "47430998a7b5d499ccee752b41567bc3afc57e1327dc855b1a2aa44ce29b5fa1" [[package]] name = "yaml-rust" diff --git a/Cargo.toml b/Cargo.toml index 8e330df..d366194 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "unimap" -version = "0.5.1" +version = "0.6.0" authors = ["Eduard Tolosa "] edition = "2018" description = "Scan only once by IP address and reduce scan times with Nmap for large amounts of data." @@ -13,16 +13,16 @@ readme = "README.md" [dependencies] trust-dns-resolver = "0.20.4" -rayon = "1.5.1" -log = { version = "0.4.14", features = ["std"] } -colored = { version = "2.0.0", optional = true } +rayon = "1.7.0" +log = { version = "0.4.20", features = ["std"] } +colored = { version = "2.0.4", optional = true } rand = "0.8.5" lazy_static = "1.4.0" -serde = { version = "1.0.136", features = ["derive"] } -serde_derive = "1.0.136" +serde = { version = "1.0.186", features = ["derive"] } +serde_derive = "1.0.186" prettytable-rs = "0.8.0" serde-xml-rs = "0.5.1" -chrono = "0.4.19" +chrono = "0.4.26" clap = { version = "2.34.0", features = ["yaml"] } config = { version = "0.11.0", features = ["yaml", "json", "toml", "hjson", "ini"] } failure = "0.1.8" @@ -32,13 +32,13 @@ failure = "0.1.8" trust-dns-resolver = { git = "https://github.com/Findomain/trust-dns", package = "trust-dns-resolver", branch = "custombranch" } [target.arm-unknown-linux-gnueabihf.dependencies] -openssl = { version = "0.10.38", features = ["vendored"] } +openssl = { version = "0.10.56", features = ["vendored"] } [target.aarch64-unknown-linux-gnu.dependencies] -openssl = { version = "0.10.38", features = ["vendored"] } +openssl = { version = "0.10.56", features = ["vendored"] } [target.armv7-unknown-linux-gnueabihf.dependencies] -openssl = { version = "0.10.38", features = ["vendored"] } +openssl = { version = "0.10.56", features = ["vendored"] } [target.'cfg(windows)'.dependencies] atty = "0.2.14" From 8b0c7fcb27c9dd29e2367f488d5dbfdcce885628 Mon Sep 17 00:00:00 2001 From: Eduard Tolosa Date: Mon, 7 Apr 2025 16:10:42 +0000 Subject: [PATCH 52/62] (fix): do not launch nmap scans if not valid IPs are found. Fixes #12 --- .vscode/launch.json | 2 +- Cargo.toml | 8 ++- src/logger.rs | 7 --- src/logic.rs | 2 +- src/resolver_engine.rs | 111 ++++++++++++++++++++++------------------- 5 files changed, 70 insertions(+), 60 deletions(-) diff --git a/.vscode/launch.json b/.vscode/launch.json index 5d2c43b..98a0a0c 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -9,7 +9,7 @@ "request": "launch", "name": "Debug", "program": "${workspaceRoot}/target/debug/${workspaceRootFolderName}", - "args": "-f targets.txt -u log.csv --resolvers resolvers.txt --iport 1 --lport 10000 --min-rate 10", + "args": "-t useast1.sugarcrm.com --fast-scan", "cwd": "${workspaceRoot}", "sourceLanguages": [ "rust" diff --git a/Cargo.toml b/Cargo.toml index d366194..4b69b87 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -24,7 +24,13 @@ prettytable-rs = "0.8.0" serde-xml-rs = "0.5.1" chrono = "0.4.26" clap = { version = "2.34.0", features = ["yaml"] } -config = { version = "0.11.0", features = ["yaml", "json", "toml", "hjson", "ini"] } +config = { version = "0.11.0", features = [ + "yaml", + "json", + "toml", + "hjson", + "ini", +] } failure = "0.1.8" # https://github.com/bluejekyll/trust-dns/pull/1632 diff --git a/src/logger.rs b/src/logger.rs index 7bc5b80..79a05ce 100644 --- a/src/logger.rs +++ b/src/logger.rs @@ -1,6 +1,5 @@ #[cfg(windows)] extern crate atty; -#[cfg(feature = "chrono")] extern crate chrono; #[cfg(feature = "colored")] extern crate colored; @@ -8,7 +7,6 @@ extern crate log; #[cfg(windows)] extern crate winapi; -#[cfg(feature = "chrono")] use chrono::Local; #[cfg(feature = "colored")] use colored::*; @@ -45,7 +43,6 @@ impl Log for SimpleLogger { record.level().to_string() } }; - #[cfg(feature = "chrono")] { print!( "\n{} [{}] {}", @@ -54,10 +51,6 @@ impl Log for SimpleLogger { record.args() ); } - #[cfg(not(feature = "chrono"))] - { - print!("\n[{}] {}", level_string, record.args()); - } } } diff --git a/src/logic.rs b/src/logic.rs index 105d616..a1eff09 100644 --- a/src/logic.rs +++ b/src/logic.rs @@ -9,7 +9,7 @@ pub fn validate_target(target: &str) -> bool { !target.starts_with('.') && target.contains('.') && !target.contains(&SPECIAL_CHARS[..]) - && target.chars().all(|c| c.is_ascii()) + && target.is_ascii() } pub fn null_ip_checker(ip: &str) -> String { diff --git a/src/resolver_engine.rs b/src/resolver_engine.rs index f530d2a..1ffbb77 100644 --- a/src/resolver_engine.rs +++ b/src/resolver_engine.rs @@ -220,65 +220,76 @@ fn parallel_resolver_engine( nmap_ips.retain(|ip| { !ip.is_empty() - && ip.parse::().is_ok() && !ip.parse::().unwrap().is_private() + && ip.parse::().is_ok() }); - let nmap_data: HashMap = nmap_ips - .par_iter() - .map(|ip| { - let filename = format!("{}/{}.xml", &args.logs_dir, &ip); - match nmap::get_nmap_data(&filename, ip, &args.min_rate, &args.ports, args.fast_scan) { - Ok(nmap_data) => { - nmap_data - .host - .clone() - .unwrap_or_default() - .ports - .unwrap_or_default() - .port - .retain(|f| f.state.state == "open"); - if args.no_keep_nmap_logs && std::fs::remove_file(&filename).is_err() { - error!("Error removing filename {}.", &filename) - } - (ip.clone(), nmap_data) - } - Err(e) => { - error!("Error scanning the ip {}. Description: {}", &ip, e); - (String::new(), Nmaprun::default()) - } - } - }) - .collect(); - - // Delete the args.logs_dir directory if it's empty - if args.no_keep_nmap_logs && std::fs::remove_dir(&args.logs_dir).is_err() { - error!("Error removing directory {}.", &args.logs_dir) - } - - resolv_data - .iter() - .map(|(target, resolv_data)| { - ( - target.clone(), - ResolvData { - ip: resolv_data.ip.clone(), - ports_data: if resolv_data.ip.is_empty() { - resolv_data.ports_data.clone() - } else { + if nmap_ips.is_empty() { + error!("No valid IPs found for scanning.\n"); + std::process::exit(1) + } else { + let nmap_data: HashMap = nmap_ips + .par_iter() + .map(|ip| { + let filename = format!("{}/{}.xml", &args.logs_dir, &ip); + match nmap::get_nmap_data( + &filename, + ip, + &args.min_rate, + &args.ports, + args.fast_scan, + ) { + Ok(nmap_data) => { nmap_data - .get_key_value(&resolv_data.ip) - .unwrap() - .1 .host .clone() .unwrap_or_default() .ports .unwrap_or_default() .port + .retain(|f| f.state.state == "open"); + if args.no_keep_nmap_logs && std::fs::remove_file(&filename).is_err() { + error!("Error removing filename {}.", &filename) + } + (ip.clone(), nmap_data) + } + Err(e) => { + error!("Error scanning the ip {}. Description: {}", &ip, e); + (String::new(), Nmaprun::default()) + } + } + }) + .collect(); + + // Delete the args.logs_dir directory if it's empty + if args.no_keep_nmap_logs && std::fs::remove_dir(&args.logs_dir).is_err() { + error!("Error removing directory {}.", &args.logs_dir) + } + + resolv_data + .iter() + .map(|(target, resolv_data)| { + ( + target.clone(), + ResolvData { + ip: resolv_data.ip.clone(), + ports_data: if resolv_data.ip.is_empty() { + resolv_data.ports_data.clone() + } else { + nmap_data + .get_key_value(&resolv_data.ip) + .unwrap() + .1 + .host + .clone() + .unwrap_or_default() + .ports + .unwrap_or_default() + .port + }, }, - }, - ) - }) - .collect() + ) + }) + .collect() + } } From 482b6f6e218b2f96a3e4192616ebb25979ec723f Mon Sep 17 00:00:00 2001 From: Eduard Tolosa Date: Mon, 7 Apr 2025 16:13:13 +0000 Subject: [PATCH 53/62] (chore): show invalid IP address found. --- src/resolver_engine.rs | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/resolver_engine.rs b/src/resolver_engine.rs index 1ffbb77..6645806 100644 --- a/src/resolver_engine.rs +++ b/src/resolver_engine.rs @@ -218,6 +218,8 @@ fn parallel_resolver_engine( .map(|resolv_data| resolv_data.ip.clone()) .collect(); + let nmap_ips_orig = nmap_ips.clone(); + nmap_ips.retain(|ip| { !ip.is_empty() && !ip.parse::().unwrap().is_private() @@ -225,7 +227,10 @@ fn parallel_resolver_engine( }); if nmap_ips.is_empty() { - error!("No valid IPs found for scanning.\n"); + error!( + "No valid IPs found for scanning. IPs found: {:?}\n", + nmap_ips_orig + ); std::process::exit(1) } else { let nmap_data: HashMap = nmap_ips From d72e11585983fb68fdabec199a250c059fd030a4 Mon Sep 17 00:00:00 2001 From: Eduard Tolosa Date: Sun, 20 Apr 2025 14:47:21 -0500 Subject: [PATCH 54/62] Clippy fixes. --- src/args.rs | 1 + src/files.rs | 17 ++++++++++------- src/logger.rs | 6 +++--- src/main.rs | 22 +++++++++++----------- src/misc.rs | 1 + src/networking.rs | 2 +- src/nmap.rs | 11 +++++------ src/resolver_engine.rs | 34 +++++++++++++++++----------------- src/structs.rs | 4 ++-- 9 files changed, 51 insertions(+), 47 deletions(-) diff --git a/src/args.rs b/src/args.rs index c462225..d3f6cc5 100644 --- a/src/args.rs +++ b/src/args.rs @@ -11,6 +11,7 @@ use { }; #[allow(clippy::cognitive_complexity)] +#[must_use] pub fn get_args() -> Args { let yaml = load_yaml!("cli.yml"); let matches = App::from_yaml(yaml) diff --git a/src/files.rs b/src/files.rs index ed34c1c..4678146 100644 --- a/src/files.rs +++ b/src/files.rs @@ -1,5 +1,8 @@ use { - crate::{errors::*, structs::Args}, + crate::{ + errors::{Result, ResultExt}, + structs::Args, + }, log::error, prettytable::Table, std::{ @@ -10,6 +13,7 @@ use { }, }; +#[must_use] pub fn return_file_targets(args: &Args, mut files: Vec) -> Vec { let mut targets: Vec = Vec::new(); files.sort(); @@ -23,13 +27,10 @@ pub fn return_file_targets(args: &Args, mut files: Vec) -> Vec { } Err(e) => { if args.files.len() == 1 { - error!("Can not open file {}. Error: {}\n", f, e); + error!("Can not open file {f}. Error: {e}\n"); std::process::exit(1) } else if !args.quiet_flag { - error!( - "Can not open file {}, working with next file. Error: {}\n", - f, e - ); + error!("Can not open file {f}, working with next file. Error: {e}\n"); } } } @@ -44,6 +45,7 @@ pub fn table_to_file(table: &Table, file_name: Option) -> Result< Ok(()) } +#[must_use] pub fn return_output_file(args: &Args) -> Option { if args.file_name.is_empty() || !args.with_output { None @@ -59,6 +61,7 @@ pub fn return_output_file(args: &Args) -> Option { } } +#[must_use] pub fn check_full_path(full_path: &str) -> bool { (Path::new(full_path).exists() && Path::new(full_path).is_dir()) || fs::create_dir_all(full_path).is_ok() @@ -68,7 +71,7 @@ pub fn delete_files(paths: &HashSet) { for file in paths { if Path::new(&file).exists() { match std::fs::remove_file(file) { - Ok(_) => (), + Ok(()) => (), Err(e) => error!("Error deleting the file {}. Description: {}", &file, e), } } diff --git a/src/logger.rs b/src/logger.rs index 79a05ce..5c26cdb 100644 --- a/src/logger.rs +++ b/src/logger.rs @@ -21,10 +21,10 @@ impl Log for SimpleLogger { } fn log(&self, record: &Record) { - let target = if !record.target().is_empty() { - record.target() - } else { + let target = if record.target().is_empty() { record.module_path().unwrap_or_default() + } else { + record.target() }; if target.contains("unimap") && self.enabled(record.metadata()) { let level_string = { diff --git a/src/main.rs b/src/main.rs index afaa2af..f2b778d 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,27 +1,27 @@ use { log::{error, Level}, std::{collections::HashSet, iter::FromIterator}, - unimap::{args, errors::*, files::return_file_targets, logger, misc, resolver_engine}, + unimap::{args, errors::Result, files::return_file_targets, logger, misc, resolver_engine}, }; fn run() -> Result<()> { if std::env::var("UNIMAP_LOG_LEVEL").is_ok() { - logger::init_by_env() + logger::init_by_env(); } else { - logger::init_with_level(Level::Info).unwrap() + logger::init_with_level(Level::Info).unwrap(); } let mut arguments = args::get_args(); if !arguments.files.is_empty() { arguments.targets = - HashSet::from_iter(return_file_targets(&arguments, arguments.files.clone())) + HashSet::from_iter(return_file_targets(&arguments, arguments.files.clone())); } else if !arguments.target.is_empty() { arguments.targets.insert(arguments.target.clone()); } else { - arguments.targets = misc::read_stdin() + arguments.targets = misc::read_stdin(); } if arguments.targets.len() < 50 { - arguments.threads = arguments.targets.len() + arguments.threads = arguments.targets.len(); } rayon::ThreadPoolBuilder::new() @@ -29,19 +29,19 @@ fn run() -> Result<()> { .build_global() .unwrap(); - if !arguments.targets.is_empty() { - resolver_engine::parallel_resolver_all(&mut arguments) - } else { + if arguments.targets.is_empty() { error!("Error: Target is empty or invalid!\n"); std::process::exit(1) + } else { + resolver_engine::parallel_resolver_all(&mut arguments) } } fn main() { if let Err(err) = run() { - error!("Error: {}", err); + error!("Error: {err}"); for cause in err.iter_chain().skip(1) { - error!("Error description: {}\n", cause); + error!("Error description: {cause}\n"); } std::process::exit(1); } diff --git a/src/misc.rs b/src/misc.rs index 3039384..adb5326 100644 --- a/src/misc.rs +++ b/src/misc.rs @@ -3,6 +3,7 @@ use std::{ io::{self, Read}, }; +#[must_use] pub fn sanitize_target_string(target: String) -> String { target .replace("www.", "") diff --git a/src/networking.rs b/src/networking.rs index bb5ff8b..4c20bfc 100644 --- a/src/networking.rs +++ b/src/networking.rs @@ -10,7 +10,7 @@ use { pub fn get_records(resolver: &Resolver, domain: &str) -> String { if let Ok(ips) = resolver.ipv4_lookup(domain) { ips.iter() - .map(|x| x.to_string()) + .map(std::string::ToString::to_string) .next() .expect("Failed to get IPV4.") } else { diff --git a/src/nmap.rs b/src/nmap.rs index 3f16e5f..2192a35 100644 --- a/src/nmap.rs +++ b/src/nmap.rs @@ -132,17 +132,17 @@ pub fn get_nmap_data( ]; if !min_rate.is_empty() { - nmap_args.append(&mut vec!["--min-rate", &min_rate]) + nmap_args.append(&mut vec!["--min-rate", &min_rate]); } if fast_scan { - nmap_args.append(&mut vec!["--host-timeout", "20m"]) + nmap_args.append(&mut vec!["--host-timeout", "20m"]); } else { - nmap_args.append(&mut vec!["-sV"]) + nmap_args.append(&mut vec!["-sV"]); } if !ports.is_empty() { - nmap_args.append(&mut vec!["-p", ports]) + nmap_args.append(&mut vec!["-p", ports]); } nmap_args.push(host); @@ -159,8 +159,7 @@ pub fn get_nmap_data( } Err(e) => { error!( - "Error waiting command to finish for {}, continuing with remaining hosts. Description: {}", - host, e + "Error waiting command to finish for {host}, continuing with remaining hosts. Description: {e}" ); Ok(Nmaprun::default()) } diff --git a/src/resolver_engine.rs b/src/resolver_engine.rs index 6645806..8844004 100644 --- a/src/resolver_engine.rs +++ b/src/resolver_engine.rs @@ -1,7 +1,7 @@ use { crate::{ args, - errors::*, + errors::Result, files, logic, networking, nmap::{self, Nmaprun}, structs::{Args, ResolvData}, @@ -30,7 +30,7 @@ lazy_static! { match r.parse::() { Ok(ip) => resolver_ips.push(ip), Err(e) => { - error!("Error parsing the {} IP from resolvers file to IP address. Please check and try again. Error: {}\n", r, e); + error!("Error parsing the {r} IP from resolvers file to IP address. Please check and try again. Error: {e}\n"); std::process::exit(1) } } @@ -40,7 +40,7 @@ lazy_static! { match r.parse::() { Ok(ip) => resolver_ips.push(ip), Err(e) => { - error!("Error parsing the {} IP from resolvers file to IP address. Please check and try again. Error: {}\n", r, e); + error!("Error parsing the {r} IP from resolvers file to IP address. Please check and try again. Error: {e}\n"); std::process::exit(1) } } @@ -51,13 +51,16 @@ lazy_static! { } pub fn parallel_resolver_all(args: &mut Args) -> Result<()> { - files::check_full_path(&args.logs_dir); + if !files::check_full_path(&args.logs_dir) { + error!("The logs directory {} does not exist.\n", args.logs_dir); + std::process::exit(1) + } if !args.quiet_flag { info!( "Performing parallel resolution for {} targets with {} threads, it will take a while...\n", args.targets.len(), args.threads - ) + ); } let opts = ResolverOpts { @@ -79,9 +82,9 @@ pub fn parallel_resolver_all(args: &mut Args) -> Result<()> { "SERVICES" ]); if args.raw_output && !args.quiet_flag { - println!("HOST,IP,PORT,SERVICE,VERSION,PRODUCT,OS,EXTRAINFO") + println!("HOST,IP,PORT,SERVICE,VERSION,PRODUCT,OS,EXTRAINFO"); } else if args.url_output && !args.quiet_flag { - println!("HOST:IP") + println!("HOST:IP"); } for (target, resolv_data) in &data { if !resolv_data.ip.is_empty() { @@ -120,11 +123,11 @@ pub fn parallel_resolver_all(args: &mut Args) -> Result<()> { .extrainfo .clone() .unwrap_or_else(|| "NULL".to_string()) - ) + ); } } else if args.url_output { for port_data in &resolv_data.ports_data { - println!("{}:{}", target, port_data.portid) + println!("{}:{}", target, port_data.portid); } } else { let mut services_table = Table::new(); @@ -179,7 +182,7 @@ pub fn parallel_resolver_all(args: &mut Args) -> Result<()> { error!( "An error occurred while writing the output file {}.\n", args.file_name - ) + ); } if !args.quiet_flag && !args.raw_output && !args.url_output { table.printstd(); @@ -206,7 +209,7 @@ fn parallel_resolver_engine( let resolv_data: HashMap = targets .par_iter() .map(|target| { - let fqdn_target = format!("{}.", target); + let fqdn_target = format!("{target}."); let mut resolv_data = ResolvData::default(); resolv_data.ip = networking::get_records(&resolver, &fqdn_target); (target.to_owned(), resolv_data) @@ -227,10 +230,7 @@ fn parallel_resolver_engine( }); if nmap_ips.is_empty() { - error!( - "No valid IPs found for scanning. IPs found: {:?}\n", - nmap_ips_orig - ); + error!("No valid IPs found for scanning. IPs found: {nmap_ips_orig:?}\n"); std::process::exit(1) } else { let nmap_data: HashMap = nmap_ips @@ -254,7 +254,7 @@ fn parallel_resolver_engine( .port .retain(|f| f.state.state == "open"); if args.no_keep_nmap_logs && std::fs::remove_file(&filename).is_err() { - error!("Error removing filename {}.", &filename) + error!("Error removing filename {}.", &filename); } (ip.clone(), nmap_data) } @@ -268,7 +268,7 @@ fn parallel_resolver_engine( // Delete the args.logs_dir directory if it's empty if args.no_keep_nmap_logs && std::fs::remove_dir(&args.logs_dir).is_err() { - error!("Error removing directory {}.", &args.logs_dir) + error!("Error removing directory {}.", &args.logs_dir); } resolv_data diff --git a/src/structs.rs b/src/structs.rs index 5802894..5cd7162 100644 --- a/src/structs.rs +++ b/src/structs.rs @@ -35,8 +35,8 @@ pub struct ResolvData { pub ports_data: Vec, } impl ResolvData { - pub fn default() -> ResolvData { - ResolvData { + pub const fn default() -> Self { + Self { ip: String::new(), ports_data: Vec::new(), } From 127d1f0a9aadeb75a002decb2f6753c65b41e677 Mon Sep 17 00:00:00 2001 From: Eduard Tolosa Date: Sun, 20 Apr 2025 14:47:28 -0500 Subject: [PATCH 55/62] Update dependencies. --- Cargo.lock | 926 +++++++++++++++++++++++++++++++++-------------------- Cargo.toml | 20 +- 2 files changed, 590 insertions(+), 356 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index e85e163..065ddb6 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1,27 +1,27 @@ # This file is automatically @generated by Cargo. # It is not intended for manual editing. -version = 3 +version = 4 [[package]] name = "addr2line" -version = "0.21.0" +version = "0.24.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a30b2e23b9e17a9f90641c7ab1549cd9b44f296d3ccbf309d2863cfe398a0cb" +checksum = "dfbe277e56a376000877090da837660b4427aad530e3028d44e0bffe4f89a1c1" dependencies = [ "gimli", ] [[package]] -name = "adler" -version = "1.0.2" +name = "adler2" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" +checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627" [[package]] name = "aho-corasick" -version = "1.0.4" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6748e8def348ed4d14996fa801f4122cd763fff530258cdc03f64b25f89d3a5a" +checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" dependencies = [ "memchr", ] @@ -52,9 +52,9 @@ dependencies = [ [[package]] name = "arrayref" -version = "0.3.7" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b4930d2cb77ce62f89ee5d5289b4ac049559b1c45539271f5ed4fdc7db34545" +checksum = "76a2e8124351fda1ef8aaaa3bbd7ebbcb486bbcd4225aca0aa0d84bb2db8fecb" [[package]] name = "arrayvec" @@ -64,13 +64,13 @@ checksum = "23b62fc65de8e4e7f52534fb52b0f3ed04746ae267519eef2a83941e8085068b" [[package]] name = "async-trait" -version = "0.1.73" +version = "0.1.88" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc00ceb34980c03614e35a3a4e218276a0a824e911d07651cd0d858a51e8c0f0" +checksum = "e539d3fca749fcee5236ab05e93a52867dd549cc157c8cb7f99595f3cedffdb5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.29", + "syn 2.0.100", ] [[package]] @@ -79,30 +79,30 @@ version = "0.2.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" dependencies = [ - "hermit-abi 0.1.19", + "hermit-abi", "libc", "winapi", ] [[package]] name = "autocfg" -version = "1.1.0" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" +checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" [[package]] name = "backtrace" -version = "0.3.69" +version = "0.3.74" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2089b7e3f35b9dd2d0ed921ead4f6d318c27680d4a5bd167b3ee120edb105837" +checksum = "8d82cb332cdfaed17ae235a638438ac4d4839913cc2af585c3c6746e8f8bee1a" dependencies = [ "addr2line", - "cc", "cfg-if", "libc", "miniz_oxide", "object", "rustc-demangle", + "windows-targets", ] [[package]] @@ -119,9 +119,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.4.0" +version = "2.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4682ae6287fcf752ecaabbfcc7b6f9b72aa33933dc23a554d853aea8eea8635" +checksum = "5c8214115b7bf84099f1309324e63141d4c5d7cc26862f97a0a857dbefe165bd" [[package]] name = "blake2b_simd" @@ -136,23 +136,23 @@ dependencies = [ [[package]] name = "bumpalo" -version = "3.13.0" +version = "3.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3e2c3daef883ecc1b5d58c15adae93470a91d425f3532ba1695849656af3fc1" +checksum = "1628fb46dfa0b37568d12e5edd512553eccf6a22a78e8bde00bb4aed84d5bdbf" [[package]] name = "byteorder" -version = "1.4.3" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" +checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "cc" -version = "1.0.83" +version = "1.2.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0" +checksum = "8e3a13707ac958681c13b39b458c073d0d9bc8a22cb1b2f4c8e55eb72c13f362" dependencies = [ - "libc", + "shlex", ] [[package]] @@ -163,17 +163,16 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" [[package]] name = "chrono" -version = "0.4.26" +version = "0.4.40" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec837a71355b28f6556dbd569b37b3f363091c0bd4b2e735674521b4c5fd9bc5" +checksum = "1a7964611d71df112cb1730f2ee67324fcf4d0fc6606acbbe9bfe06df124637c" dependencies = [ "android-tzdata", "iana-time-zone", "js-sys", - "num-traits 0.2.16", - "time", + "num-traits 0.2.19", "wasm-bindgen", - "winapi", + "windows-link", ] [[package]] @@ -194,11 +193,10 @@ dependencies = [ [[package]] name = "colored" -version = "2.0.4" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2674ec482fbc38012cf31e6c42ba0177b431a0cb6f15fe40efa5aab1bda516f6" +checksum = "117725a109d387c937a1533ce01b450cbde6b88abceea8473c4d7a85853cda3c" dependencies = [ - "is-terminal", "lazy_static", "windows-sys", ] @@ -212,7 +210,7 @@ dependencies = [ "lazy_static", "nom", "rust-ini", - "serde 1.0.186", + "serde 1.0.219", "serde-hjson", "serde_json", "toml", @@ -227,79 +225,61 @@ checksum = "245097e9a4535ee1e3e3931fcfcd55a796a44c643e8596ff6566d68f09b87bbc" [[package]] name = "core-foundation-sys" -version = "0.8.4" +version = "0.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e496a50fda8aacccc86d7529e2c1e0892dbd0f898a6b5645b5561b89c3210efa" - -[[package]] -name = "crossbeam-channel" -version = "0.5.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a33c2bf77f2df06183c3aa30d1e96c0695a313d4f9c453cc3762a6db39f99200" -dependencies = [ - "cfg-if", - "crossbeam-utils", -] +checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" [[package]] name = "crossbeam-deque" -version = "0.8.3" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce6fd6f855243022dcecf8702fef0c297d4338e226845fe067f6341ad9fa0cef" +checksum = "9dd111b7b7f7d55b72c0a6ae361660ee5853c9af73f70c3c2ef6858b950e2e51" dependencies = [ - "cfg-if", "crossbeam-epoch", "crossbeam-utils", ] [[package]] name = "crossbeam-epoch" -version = "0.9.15" +version = "0.9.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae211234986c545741a7dc064309f67ee1e5ad243d0e48335adc0484d960bcc7" +checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e" dependencies = [ - "autocfg", - "cfg-if", "crossbeam-utils", - "memoffset", - "scopeguard", ] [[package]] name = "crossbeam-utils" -version = "0.8.16" +version = "0.8.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a22b2d63d4d1dc0b7f1b6b2747dd0088008a9be28b6ddf0b1e7d335e3037294" -dependencies = [ - "cfg-if", -] +checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" [[package]] name = "csv" -version = "1.2.2" +version = "1.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "626ae34994d3d8d668f4269922248239db4ae42d538b14c398b74a52208e8086" +checksum = "acdc4883a9c96732e4733212c01447ebd805833b7275a73ca3ee080fd77afdaf" dependencies = [ "csv-core", "itoa", "ryu", - "serde 1.0.186", + "serde 1.0.219", ] [[package]] name = "csv-core" -version = "0.1.10" +version = "0.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b2466559f260f48ad25fe6317b3c8dac77b5bdb5763ac7d9d6103530663bc90" +checksum = "7d02f3b0da4c6504f86e9cd789d8dbafab48c2321be74e9987593de5a894d93d" dependencies = [ "memchr", ] [[package]] name = "data-encoding" -version = "2.4.0" +version = "2.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2e66c9d817f1720209181c316d28635c050fa304f9c79e47a520882661b7308" +checksum = "2a2330da5de22e8a3cb63252ce2abb30116bf5265e89c0e01bc17015ce30a476" [[package]] name = "dirs" @@ -313,10 +293,21 @@ dependencies = [ ] [[package]] -name = "either" -version = "1.9.0" +name = "displaydoc" +version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a26ae43d7bcc3b814de94796a5e736d4029efb0ee900c12e2d54c993ad1a1e07" +checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.100", +] + +[[package]] +name = "either" +version = "1.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" [[package]] name = "encode_unicode" @@ -336,27 +327,6 @@ dependencies = [ "syn 1.0.109", ] -[[package]] -name = "errno" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b30f669a7961ef1631673d2766cc92f52d64f7ef354d4fe0ddfd30ed52f0f4f" -dependencies = [ - "errno-dragonfly", - "libc", - "windows-sys", -] - -[[package]] -name = "errno-dragonfly" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa68f1b12764fab894d2755d2518754e71b4fd80ecfb822714a1206c2aab39bf" -dependencies = [ - "cc", - "libc", -] - [[package]] name = "failure" version = "0.1.8" @@ -376,7 +346,7 @@ dependencies = [ "proc-macro2", "quote", "syn 1.0.109", - "synstructure", + "synstructure 0.12.6", ] [[package]] @@ -396,45 +366,45 @@ checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" [[package]] name = "form_urlencoded" -version = "1.2.0" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a62bc1cf6f830c2ec14a513a9fb124d0a213a629668a4186f329db21fe045652" +checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" dependencies = [ "percent-encoding", ] [[package]] name = "futures-channel" -version = "0.3.28" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "955518d47e09b25bbebc7a18df10b81f0c766eaf4c4f1cccef2fca5f2a4fb5f2" +checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10" dependencies = [ "futures-core", ] [[package]] name = "futures-core" -version = "0.3.28" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4bca583b7e26f571124fe5b7561d49cb2868d79116cfa0eefce955557c6fee8c" +checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" [[package]] name = "futures-io" -version = "0.3.28" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fff74096e71ed47f8e023204cfd0aa1289cd54ae5430a9523be060cdb849964" +checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" [[package]] name = "futures-task" -version = "0.3.28" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76d3d132be6c0e6aa1534069c705a74a5997a356c0dc2f86a47765e5617c5b65" +checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" [[package]] name = "futures-util" -version = "0.3.28" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26b01e40b772d54cf6c6d721c1d1abd0647a0106a12ecaa1c186273392a69533" +checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" dependencies = [ "futures-core", "futures-task", @@ -456,9 +426,9 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.2.10" +version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be4136b2a15dd319360be1c07d9933517ccf0be8f16bf62a3bee4f0d618df427" +checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" dependencies = [ "cfg-if", "libc", @@ -467,9 +437,9 @@ dependencies = [ [[package]] name = "gimli" -version = "0.28.0" +version = "0.31.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6fb8d784f27acf97159b40fc4db5ecd8aa23b9ad5ef69cdd136d3bc80665f0c0" +checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" [[package]] name = "heck" @@ -486,35 +456,30 @@ dependencies = [ "libc", ] -[[package]] -name = "hermit-abi" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "443144c8cdadd93ebf52ddb4056d257f5b52c04d3c804e657d19eb73fc33668b" - [[package]] name = "hostname" -version = "0.3.1" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c731c3e10504cc8ed35cfe2f1db4c9274c3d35fa486e3b31df46f068ef3e867" +checksum = "a56f203cd1c76362b69e3863fd987520ac36cf70a8c92627449b2f64a8cf7d65" dependencies = [ + "cfg-if", "libc", - "match_cfg", - "winapi", + "windows-link", ] [[package]] name = "iana-time-zone" -version = "0.1.57" +version = "0.1.63" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2fad5b825842d2b38bd206f3e81d6957625fd7f0a361e345c30e01a0ae2dd613" +checksum = "b0c919e5debc312ad217002b8048a17b7d83f80703865bbfcfebb0458b0b27d8" dependencies = [ "android_system_properties", "core-foundation-sys", "iana-time-zone-haiku", "js-sys", + "log", "wasm-bindgen", - "windows", + "windows-core", ] [[package]] @@ -526,6 +491,124 @@ dependencies = [ "cc", ] +[[package]] +name = "icu_collections" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db2fa452206ebee18c4b5c2274dbf1de17008e874b4dc4f0aea9d01ca79e4526" +dependencies = [ + "displaydoc", + "yoke", + "zerofrom", + "zerovec", +] + +[[package]] +name = "icu_locid" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13acbb8371917fc971be86fc8057c41a64b521c184808a698c02acc242dbf637" +dependencies = [ + "displaydoc", + "litemap", + "tinystr", + "writeable", + "zerovec", +] + +[[package]] +name = "icu_locid_transform" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "01d11ac35de8e40fdeda00d9e1e9d92525f3f9d887cdd7aa81d727596788b54e" +dependencies = [ + "displaydoc", + "icu_locid", + "icu_locid_transform_data", + "icu_provider", + "tinystr", + "zerovec", +] + +[[package]] +name = "icu_locid_transform_data" +version = "1.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7515e6d781098bf9f7205ab3fc7e9709d34554ae0b21ddbcb5febfa4bc7df11d" + +[[package]] +name = "icu_normalizer" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19ce3e0da2ec68599d193c93d088142efd7f9c5d6fc9b803774855747dc6a84f" +dependencies = [ + "displaydoc", + "icu_collections", + "icu_normalizer_data", + "icu_properties", + "icu_provider", + "smallvec", + "utf16_iter", + "utf8_iter", + "write16", + "zerovec", +] + +[[package]] +name = "icu_normalizer_data" +version = "1.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c5e8338228bdc8ab83303f16b797e177953730f601a96c25d10cb3ab0daa0cb7" + +[[package]] +name = "icu_properties" +version = "1.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93d6020766cfc6302c15dbbc9c8778c37e62c14427cb7f6e601d849e092aeef5" +dependencies = [ + "displaydoc", + "icu_collections", + "icu_locid_transform", + "icu_properties_data", + "icu_provider", + "tinystr", + "zerovec", +] + +[[package]] +name = "icu_properties_data" +version = "1.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85fb8799753b75aee8d2a21d7c14d9f38921b54b3dbda10f5a3c7a7b82dba5e2" + +[[package]] +name = "icu_provider" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ed421c8a8ef78d3e2dbc98a973be2f3770cb42b606e3ab18d6237c4dfde68d9" +dependencies = [ + "displaydoc", + "icu_locid", + "icu_provider_macros", + "stable_deref_trait", + "tinystr", + "writeable", + "yoke", + "zerofrom", + "zerovec", +] + +[[package]] +name = "icu_provider_macros" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ec89e9337638ecdc08744df490b221a7399bf8d164eb52a665454e60e075ad6" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.100", +] + [[package]] name = "idna" version = "0.2.3" @@ -539,19 +622,30 @@ dependencies = [ [[package]] name = "idna" -version = "0.4.0" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d20d6b07bfbc108882d88ed8e37d39636dcc260e15e30c45e6ba089610b917c" +checksum = "686f825264d630750a544639377bae737628043f20d38bbc029e8f29ea968a7e" dependencies = [ - "unicode-bidi", - "unicode-normalization", + "idna_adapter", + "smallvec", + "utf8_iter", +] + +[[package]] +name = "idna_adapter" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "daca1df1c957320b2cf139ac61e7bd64fed304c5040df000a745aa1de3b4ef71" +dependencies = [ + "icu_normalizer", + "icu_properties", ] [[package]] name = "instant" -version = "0.1.12" +version = "0.1.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c" +checksum = "e0242819d153cba4b4b05a5a8f2a7e9bbf97b6055b2a002b395c96b5ff3c0222" dependencies = [ "cfg-if", ] @@ -570,41 +664,31 @@ dependencies = [ [[package]] name = "ipnet" -version = "2.8.0" +version = "2.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28b29a3cd74f0f4598934efe3aeba42bae0eb4680554128851ebbecb02af14e6" - -[[package]] -name = "is-terminal" -version = "0.4.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb0889898416213fab133e1d33a0e5858a48177452750691bde3666d0fdbaf8b" -dependencies = [ - "hermit-abi 0.3.2", - "rustix", - "windows-sys", -] +checksum = "469fb0b9cefa57e3ef31275ee7cacb78f2fdca44e4765491884a2b119d4eb130" [[package]] name = "itoa" -version = "1.0.9" +version = "1.0.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af150ab688ff2122fcef229be89cb50dd66af9e01a4ff320cc137eecc9bacc38" +checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c" [[package]] name = "js-sys" -version = "0.3.64" +version = "0.3.77" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5f195fe497f702db0f318b07fdd68edb16955aed830df8363d837542f8f935a" +checksum = "1cfaf33c695fc6e08064efbc1f72ec937429614f25eef83af942d0e227c3a28f" dependencies = [ + "once_cell", "wasm-bindgen", ] [[package]] name = "lazy_static" -version = "1.4.0" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" +checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" [[package]] name = "lexical-core" @@ -621,9 +705,9 @@ dependencies = [ [[package]] name = "libc" -version = "0.2.147" +version = "0.2.172" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4668fb0ea861c1df094127ac5f1da3409a82116a4ba74fca2e58ef927159bb3" +checksum = "d750af042f7ef4f724306de029d18836c26c1765a54a6a3f094cbd23a7267ffa" [[package]] name = "linked-hash-map" @@ -632,16 +716,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0717cef1bc8b636c6e1c1bbdefc09e6322da8a9321966e8928ef80d20f7f770f" [[package]] -name = "linux-raw-sys" -version = "0.4.5" +name = "litemap" +version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57bcfdad1b858c2db7c38303a6d2ad4dfaf5eb53dfeb0910128b2c26d6158503" +checksum = "23fb14cb19457329c82206317a5663005a4d404783dc74f4252769b0d5f42856" [[package]] name = "lock_api" -version = "0.4.10" +version = "0.4.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1cc9717a20b1bb222f333e6a92fd32f7d8a18ddc5a3191a11af45dcbf4dcd16" +checksum = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17" dependencies = [ "autocfg", "scopeguard", @@ -649,9 +733,9 @@ dependencies = [ [[package]] name = "log" -version = "0.4.20" +version = "0.4.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f" +checksum = "13dc2df351e3202783a1fe0d44375f7295ffb4049267b0f3018346dc122a1d94" [[package]] name = "lru-cache" @@ -662,12 +746,6 @@ 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.10" @@ -676,33 +754,24 @@ checksum = "2532096657941c2fea9c289d370a250971c689d4f143798ff67113ec042024a5" [[package]] name = "memchr" -version = "2.5.0" +version = "2.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d" - -[[package]] -name = "memoffset" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a634b1c61a95585bd15607c6ab0c4e5b226e695ff2800ba0cdccddf208c406c" -dependencies = [ - "autocfg", -] +checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" [[package]] name = "miniz_oxide" -version = "0.7.1" +version = "0.8.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7810e0be55b428ada41041c41f32c9f1a42817901b4ccf45fa3d4b6561e74c7" +checksum = "3be647b768db090acb35d5ec5db2b0e1f1de11133ca123b9eacf5137868f892a" dependencies = [ - "adler", + "adler2", ] [[package]] name = "mio" -version = "0.8.8" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "927a765cd3fc26206e66b296465fa9d3e5ab003e651c1b3c060e7956d96b19d2" +checksum = "2886843bf800fba2e3377cff24abf6379b4c4d5c6681eaf9ea5b0d15090450bd" dependencies = [ "libc", "wasi 0.11.0+wasi-snapshot-preview1", @@ -726,50 +795,40 @@ version = "0.1.43" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "92e5113e9fd4cc14ded8e499429f396a20f98c772a47cc8622a736e1ec843c31" dependencies = [ - "num-traits 0.2.16", + "num-traits 0.2.19", ] [[package]] name = "num-traits" -version = "0.2.16" +version = "0.2.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f30b0abd723be7e2ffca1272140fac1a2f084c77ec3e123c192b66af1ee9e6c2" +checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" dependencies = [ "autocfg", ] -[[package]] -name = "num_cpus" -version = "1.16.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" -dependencies = [ - "hermit-abi 0.3.2", - "libc", -] - [[package]] name = "object" -version = "0.32.0" +version = "0.36.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77ac5bbd07aea88c60a577a1ce218075ffd59208b2d7ca97adf9bfc5aeb21ebe" +checksum = "62948e14d923ea95ea2c7c86c71013138b66525b86bdc08d2dcc262bdb497b87" dependencies = [ "memchr", ] [[package]] name = "once_cell" -version = "1.18.0" +version = "1.21.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d" +checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" [[package]] name = "openssl" -version = "0.10.56" +version = "0.10.72" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "729b745ad4a5575dd06a3e1af1414bd330ee561c01b3899eb584baeaa8def17e" +checksum = "fedfea7d58a1f73118430a55da6a286e7b044961736ce96a16a17068ea25e5da" dependencies = [ - "bitflags 1.3.2", + "bitflags 2.9.0", "cfg-if", "foreign-types", "libc", @@ -786,23 +845,23 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.29", + "syn 2.0.100", ] [[package]] name = "openssl-src" -version = "111.27.0+1.1.1v" +version = "300.5.0+3.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06e8f197c82d7511c5b014030c9b1efeda40d7d5f99d23b4ceed3524a5e63f02" +checksum = "e8ce546f549326b0e6052b649198487d91320875da901e7bd11a06d1ee3f9c2f" dependencies = [ "cc", ] [[package]] name = "openssl-sys" -version = "0.9.91" +version = "0.9.107" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "866b5f16f90776b9bb8dc1e1802ac6f0513de3a7a7465867bfbc563dc737faac" +checksum = "8288979acd84749c744a9014b4382d42b8f7b2592847b5afb2ed29e5d16ede07" dependencies = [ "cc", "libc", @@ -838,15 +897,15 @@ dependencies = [ [[package]] name = "percent-encoding" -version = "2.3.0" +version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b2a4787296e9989611394c33f193f676704af1686e70b8f8033ab5ba9a35a94" +checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" [[package]] name = "pin-project-lite" -version = "0.2.12" +version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12cc1b0bf1727a77a54b6654e7b5f1af8604923edc8b81885f8ec92f9e3f0a05" +checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" [[package]] name = "pin-utils" @@ -856,15 +915,18 @@ checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" [[package]] name = "pkg-config" -version = "0.3.27" +version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26072860ba924cbfa98ea39c8c19b4dd6a4a25423dbdf219c1eca91aa0cf6964" +checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c" [[package]] name = "ppv-lite86" -version = "0.2.17" +version = "0.2.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" +checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" +dependencies = [ + "zerocopy", +] [[package]] name = "prettytable-rs" @@ -882,24 +944,18 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.66" +version = "1.0.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "18fb31db3f9bddb2ea821cde30a9f70117e3f119938b5ee630b7403aa6e2ead9" +checksum = "02b3e5e68a3a1a02aad3ec490a98007cbc13c37cbe84a3cd7b8e406d76e7f778" dependencies = [ "unicode-ident", ] -[[package]] -name = "quick-error" -version = "1.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0" - [[package]] name = "quote" -version = "1.0.33" +version = "1.0.40" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae" +checksum = "1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d" dependencies = [ "proc-macro2", ] @@ -931,14 +987,14 @@ version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" dependencies = [ - "getrandom 0.2.10", + "getrandom 0.2.15", ] [[package]] name = "rayon" -version = "1.7.0" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d2df5196e37bcc87abebc0053e20787d73847bb33134a69841207dd0a47f03b" +checksum = "b418a60154510ca1a002a752ca9714984e21e4241e804d32555251faf8b78ffa" dependencies = [ "either", "rayon-core", @@ -946,14 +1002,12 @@ dependencies = [ [[package]] name = "rayon-core" -version = "1.11.0" +version = "1.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b8f95bd6966f5c87776639160a66bd8ab9895d9d4ab01ddba9fc60661aebe8d" +checksum = "1465873a3dfdaa8ae7cb14b4383657caab0b3e8a0aa9ae8e04b044854c8dfce2" dependencies = [ - "crossbeam-channel", "crossbeam-deque", "crossbeam-utils", - "num_cpus", ] [[package]] @@ -984,9 +1038,9 @@ dependencies = [ [[package]] name = "regex" -version = "1.9.3" +version = "1.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81bc1d4caf89fac26a70747fe603c130093b53c773888797a6329091246d651a" +checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191" dependencies = [ "aho-corasick", "memchr", @@ -996,9 +1050,9 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.3.6" +version = "0.4.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fed1ceff11a1dddaee50c9dc8e4938bd106e9d89ae372f192311e7da498e3b69" +checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908" dependencies = [ "aho-corasick", "memchr", @@ -1007,18 +1061,17 @@ dependencies = [ [[package]] name = "regex-syntax" -version = "0.7.4" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5ea92a5b6195c6ef2a0295ea818b312502c6fc94dde986c5553242e18fd4ce2" +checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" [[package]] name = "resolv-conf" -version = "0.7.0" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52e44394d2086d010551b14b53b1f24e31647570cd1deb0379e2c21b329aba00" +checksum = "48375394603e3dd4b2d64371f7148fd8c7baa2680e28741f2cb8d23b59e3d4c4" dependencies = [ "hostname", - "quick-error", ] [[package]] @@ -1041,28 +1094,21 @@ checksum = "3e52c148ef37f8c375d49d5a73aa70713125b7f19095948a923f80afdeb22ec2" [[package]] name = "rustc-demangle" -version = "0.1.23" +version = "0.1.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76" +checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" [[package]] -name = "rustix" -version = "0.38.8" +name = "rustversion" +version = "1.0.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19ed4fa021d81c8392ce04db050a3da9a60299050b7ae1cf482d862b54a7218f" -dependencies = [ - "bitflags 2.4.0", - "errno", - "libc", - "linux-raw-sys", - "windows-sys", -] +checksum = "eded382c5f5f786b989652c49544c4877d9f015cc22e145a5ea8ea66c2921cd2" [[package]] name = "ryu" -version = "1.0.15" +version = "1.0.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ad4cc8da4ef723ed60bced201181d83791ad433213d8c24efffda1eec85d741" +checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f" [[package]] name = "scopeguard" @@ -1078,9 +1124,9 @@ checksum = "9dad3f759919b92c3068c696c15c3d17238234498bbdcc80f2c469606f948ac8" [[package]] name = "serde" -version = "1.0.186" +version = "1.0.219" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f5db24220c009de9bd45e69fb2938f4b6d2df856aa9304ce377b3180f83b7c1" +checksum = "5f0e2c6ed6606019b4e29e69dbaba95b11854410e5347d525002456dbbb786b6" dependencies = [ "serde_derive", ] @@ -1104,33 +1150,40 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "65162e9059be2f6a3421ebbb4fef3e74b7d9e7c60c50a0e292c6239f19f1edfa" dependencies = [ "log", - "serde 1.0.186", + "serde 1.0.219", "thiserror", "xml-rs", ] [[package]] name = "serde_derive" -version = "1.0.186" +version = "1.0.219" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ad697f7e0b65af4983a4ce8f56ed5b357e8d3c36651bf6a7e13639c17b8e670" +checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00" dependencies = [ "proc-macro2", "quote", - "syn 2.0.29", + "syn 2.0.100", ] [[package]] name = "serde_json" -version = "1.0.105" +version = "1.0.140" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "693151e1ac27563d6dbcec9dee9fbd5da8539b20fa14ad3752b2e6d363ace360" +checksum = "20068b6e96dc6c9bd23e01df8827e6c7e1f2fddd43c21810382803c136b99373" dependencies = [ "itoa", + "memchr", "ryu", - "serde 1.0.186", + "serde 1.0.219", ] +[[package]] +name = "shlex" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" + [[package]] name = "slab" version = "0.4.9" @@ -1142,9 +1195,9 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.11.0" +version = "1.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62bb4feee49fdd9f707ef802e22365a35de4b7b299de4763d44bfea899442ff9" +checksum = "8917285742e9f3e1683f0a9c4e6b57960b7314d0b08d30d1ecd426713ee2eee9" [[package]] name = "socket2" @@ -1159,14 +1212,20 @@ dependencies = [ [[package]] name = "socket2" -version = "0.5.3" +version = "0.5.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2538b18701741680e0322a2302176d3253a35388e2e62f172f64f4f16605f877" +checksum = "4f5fd57c80058a56cf5c777ab8a126398ece8e442983605d280a44ce79d0edef" dependencies = [ "libc", "windows-sys", ] +[[package]] +name = "stable_deref_trait" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" + [[package]] name = "static_assertions" version = "1.1.0" @@ -1192,9 +1251,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.29" +version = "2.0.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c324c494eba9d92503e6f1ef2e6df781e78f6a7705a0202d9801b198807d518a" +checksum = "b09a44accad81e1ba1cd74a32461ba89dee89095ba17b32f5d03683b1b1fc2a0" dependencies = [ "proc-macro2", "quote", @@ -1213,6 +1272,17 @@ dependencies = [ "unicode-xid", ] +[[package]] +name = "synstructure" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.100", +] + [[package]] name = "term" version = "0.5.2" @@ -1235,40 +1305,39 @@ dependencies = [ [[package]] name = "thiserror" -version = "1.0.47" +version = "1.0.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97a802ec30afc17eee47b2855fc72e0c4cd62be9b4efe6591edde0ec5bd68d8f" +checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.47" +version = "1.0.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6bb623b56e39ab7dcd4b1b98bb6c8f8d907ed255b18de254088016b27a8ee19b" +checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.29", + "syn 2.0.100", ] [[package]] -name = "time" -version = "0.1.45" +name = "tinystr" +version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b797afad3f312d1c66a56d11d0316f916356d11bd158fbc6ca6389ff6bf805a" +checksum = "9117f5d4db391c1cf6927e7bea3db74b9a1c1add8f7eda9ffd5364f40f57b82f" dependencies = [ - "libc", - "wasi 0.10.0+wasi-snapshot-preview1", - "winapi", + "displaydoc", + "zerovec", ] [[package]] name = "tinyvec" -version = "1.6.0" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50" +checksum = "09b3661f17e86524eccd4371ab0429194e0d7c008abb45f7a7495b1719463c71" dependencies = [ "tinyvec_macros", ] @@ -1281,16 +1350,15 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.32.0" +version = "1.44.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17ed6077ed6cd6c74735e21f37eb16dc3935f96878b1fe961074089cc80893f9" +checksum = "e6b88822cbe49de4185e3a4cbf8321dd487cf5fe0c5c65695fef6346371e9c48" dependencies = [ "backtrace", "libc", "mio", - "num_cpus", "pin-project-lite", - "socket2 0.5.3", + "socket2 0.5.9", "windows-sys", ] @@ -1300,7 +1368,7 @@ version = "0.5.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234" dependencies = [ - "serde 1.0.186", + "serde 1.0.219", ] [[package]] @@ -1349,36 +1417,36 @@ dependencies = [ [[package]] name = "unicode-bidi" -version = "0.3.13" +version = "0.3.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460" +checksum = "5c1cb5db39152898a79168971543b1cb5020dff7fe43c8dc468b0885f5e29df5" [[package]] name = "unicode-ident" -version = "1.0.11" +version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "301abaae475aa91687eb82514b328ab47a211a533026cb25fc3e519b86adfc3c" +checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512" [[package]] name = "unicode-normalization" -version = "0.1.22" +version = "0.1.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921" +checksum = "5033c97c4262335cded6d6fc3e5c18ab755e1a3dc96376350f3d8e9f009ad956" dependencies = [ "tinyvec", ] [[package]] name = "unicode-width" -version = "0.1.10" +version = "0.1.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0edd1e5b14653f783770bce4a4dabb4a5108a5370a5f5d8cfe8710c361f6c8b" +checksum = "7dd6e30e90baa6f72411720665d41d89b9a3d039dc45b8faea1ddd07f617f6af" [[package]] name = "unicode-xid" -version = "0.2.4" +version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f962df74c8c05a667b5ee8bcf162993134c104e96440b663c8daa176dc772d8c" +checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" [[package]] name = "unimap" @@ -1396,7 +1464,7 @@ dependencies = [ "prettytable-rs", "rand", "rayon", - "serde 1.0.186", + "serde 1.0.219", "serde-xml-rs", "serde_derive", "trust-dns-resolver", @@ -1405,15 +1473,27 @@ dependencies = [ [[package]] name = "url" -version = "2.4.0" +version = "2.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50bff7831e19200a85b17131d085c25d7811bc4e186efdaf54bbd132994a88cb" +checksum = "32f8b686cadd1473f4bd0117a5d28d36b1ade384ea9b5069a1c40aefed7fda60" dependencies = [ "form_urlencoded", - "idna 0.4.0", + "idna 1.0.3", "percent-encoding", ] +[[package]] +name = "utf16_iter" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8232dd3cdaed5356e0f716d285e4b40b932ac434100fe9b7e0e8e935b9e6246" + +[[package]] +name = "utf8_iter" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" + [[package]] name = "vcpkg" version = "0.2.15" @@ -1428,9 +1508,9 @@ checksum = "f1bddf1187be692e79c5ffeab891132dfb0f236ed36a43c7ed39f1165ee20191" [[package]] name = "version_check" -version = "0.9.4" +version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" +checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" [[package]] name = "wasi" @@ -1438,12 +1518,6 @@ version = "0.9.0+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519" -[[package]] -name = "wasi" -version = "0.10.0+wasi-snapshot-preview1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a143597ca7c7793eff794def352d41792a93c481eb1042423ff7ff72ba2c31f" - [[package]] name = "wasi" version = "0.11.0+wasi-snapshot-preview1" @@ -1452,34 +1526,35 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasm-bindgen" -version = "0.2.87" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7706a72ab36d8cb1f80ffbf0e071533974a60d0a308d01a5d0375bf60499a342" +checksum = "1edc8929d7499fc4e8f0be2262a241556cfc54a0bea223790e71446f2aab1ef5" dependencies = [ "cfg-if", + "once_cell", + "rustversion", "wasm-bindgen-macro", ] [[package]] name = "wasm-bindgen-backend" -version = "0.2.87" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ef2b6d3c510e9625e5fe6f509ab07d66a760f0885d858736483c32ed7809abd" +checksum = "2f0a0651a5c2bc21487bde11ee802ccaf4c51935d0d3d42a6101f98161700bc6" dependencies = [ "bumpalo", "log", - "once_cell", "proc-macro2", "quote", - "syn 2.0.29", + "syn 2.0.100", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-macro" -version = "0.2.87" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dee495e55982a3bd48105a7b947fd2a9b4a8ae3010041b9e0faab3f9cd028f1d" +checksum = "7fe63fc6d09ed3792bd0897b314f53de8e16568c2b3f7982f468c0bf9bd0b407" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -1487,22 +1562,25 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.87" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54681b18a46765f095758388f2d0cf16eb8d4169b639ab575a8f5693af210c7b" +checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de" dependencies = [ "proc-macro2", "quote", - "syn 2.0.29", + "syn 2.0.100", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.87" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca6ad05a4870b2bf5fe995117d3728437bd27d7cd5f06f13c17443ef369775a1" +checksum = "1a05d73b933a847d6cccdda8f838a22ff101ad9bf93e33684f39c1f5f0eece3d" +dependencies = [ + "unicode-ident", +] [[package]] name = "widestring" @@ -1533,32 +1611,83 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" [[package]] -name = "windows" -version = "0.48.0" +name = "windows-core" +version = "0.61.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e686886bc078bc1b0b600cac0147aadb815089b6e4da64016cbd754b6342700f" +checksum = "4763c1de310c86d75a878046489e2e5ba02c649d185f21c67d4cf8a56d098980" dependencies = [ - "windows-targets", + "windows-implement", + "windows-interface", + "windows-link", + "windows-result", + "windows-strings", +] + +[[package]] +name = "windows-implement" +version = "0.60.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a47fddd13af08290e67f4acabf4b459f647552718f683a7b415d290ac744a836" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.100", +] + +[[package]] +name = "windows-interface" +version = "0.59.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd9211b69f8dcdfa817bfd14bf1c97c9188afa36f4750130fcdf3f400eca9fa8" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.100", +] + +[[package]] +name = "windows-link" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76840935b766e1b0a05c0066835fb9ec80071d4c09a16f6bd5f7e655e3c14c38" + +[[package]] +name = "windows-result" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c64fd11a4fd95df68efcfee5f44a294fe71b8bc6a91993e2791938abcc712252" +dependencies = [ + "windows-link", +] + +[[package]] +name = "windows-strings" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a2ba9642430ee452d5a7aa78d72907ebe8cfda358e8cb7918a2050581322f97" +dependencies = [ + "windows-link", ] [[package]] name = "windows-sys" -version = "0.48.0" +version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" +checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" dependencies = [ "windows-targets", ] [[package]] name = "windows-targets" -version = "0.48.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" +checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" dependencies = [ "windows_aarch64_gnullvm", "windows_aarch64_msvc", "windows_i686_gnu", + "windows_i686_gnullvm", "windows_i686_msvc", "windows_x86_64_gnu", "windows_x86_64_gnullvm", @@ -1567,45 +1696,51 @@ dependencies = [ [[package]] name = "windows_aarch64_gnullvm" -version = "0.48.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" +checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" [[package]] name = "windows_aarch64_msvc" -version = "0.48.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" +checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" [[package]] name = "windows_i686_gnu" -version = "0.48.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" +checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" [[package]] name = "windows_i686_msvc" -version = "0.48.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" +checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" [[package]] name = "windows_x86_64_gnu" -version = "0.48.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" +checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" [[package]] name = "windows_x86_64_gnullvm" -version = "0.48.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" +checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" [[package]] name = "windows_x86_64_msvc" -version = "0.48.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" +checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" [[package]] name = "winreg" @@ -1617,10 +1752,22 @@ dependencies = [ ] [[package]] -name = "xml-rs" -version = "0.8.16" +name = "write16" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "47430998a7b5d499ccee752b41567bc3afc57e1327dc855b1a2aa44ce29b5fa1" +checksum = "d1890f4022759daae28ed4fe62859b1236caebfc61ede2f63ed4e695f3f6d936" + +[[package]] +name = "writeable" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e9df38ee2d2c3c5948ea468a8406ff0db0b29ae1ffde1bcf20ef305bcc95c51" + +[[package]] +name = "xml-rs" +version = "0.8.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a62ce76d9b56901b19a74f19431b0d8b3bc7ca4ad685a746dfd78ca8f4fc6bda" [[package]] name = "yaml-rust" @@ -1636,3 +1783,90 @@ checksum = "56c1936c4cc7a1c9ab21a1ebb602eb942ba868cbd44a99cb7cdc5892335e1c85" dependencies = [ "linked-hash-map", ] + +[[package]] +name = "yoke" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "120e6aef9aa629e3d4f52dc8cc43a015c7724194c97dfaf45180d2daf2b77f40" +dependencies = [ + "serde 1.0.219", + "stable_deref_trait", + "yoke-derive", + "zerofrom", +] + +[[package]] +name = "yoke-derive" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2380878cad4ac9aac1e2435f3eb4020e8374b5f13c296cb75b4620ff8e229154" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.100", + "synstructure 0.13.1", +] + +[[package]] +name = "zerocopy" +version = "0.8.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2586fea28e186957ef732a5f8b3be2da217d65c5969d4b1e17f973ebbe876879" +dependencies = [ + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.8.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a996a8f63c5c4448cd959ac1bab0aaa3306ccfd060472f85943ee0750f0169be" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.100", +] + +[[package]] +name = "zerofrom" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50cc42e0333e05660c3587f3bf9d0478688e15d870fab3346451ce7f8c9fbea5" +dependencies = [ + "zerofrom-derive", +] + +[[package]] +name = "zerofrom-derive" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.100", + "synstructure 0.13.1", +] + +[[package]] +name = "zerovec" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa2b893d79df23bfb12d5461018d408ea19dfafe76c2c7ef6d4eba614f8ff079" +dependencies = [ + "yoke", + "zerofrom", + "zerovec-derive", +] + +[[package]] +name = "zerovec-derive" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6eafa6dfb17584ea3e2bd6e76e0cc15ad7af12b09abdd1ca55961bed9b1063c6" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.100", +] diff --git a/Cargo.toml b/Cargo.toml index 4b69b87..ae9ae87 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -13,16 +13,16 @@ readme = "README.md" [dependencies] trust-dns-resolver = "0.20.4" -rayon = "1.7.0" -log = { version = "0.4.20", features = ["std"] } -colored = { version = "2.0.4", optional = true } +rayon = "1.10.0" +log = { version = "0.4.27", features = ["std"] } +colored = { version = "2.2.0", optional = true } rand = "0.8.5" -lazy_static = "1.4.0" -serde = { version = "1.0.186", features = ["derive"] } -serde_derive = "1.0.186" +lazy_static = "1.5.0" +serde = { version = "1.0.219", features = ["derive"] } +serde_derive = "1.0.219" prettytable-rs = "0.8.0" serde-xml-rs = "0.5.1" -chrono = "0.4.26" +chrono = "0.4.40" clap = { version = "2.34.0", features = ["yaml"] } config = { version = "0.11.0", features = [ "yaml", @@ -38,13 +38,13 @@ failure = "0.1.8" trust-dns-resolver = { git = "https://github.com/Findomain/trust-dns", package = "trust-dns-resolver", branch = "custombranch" } [target.arm-unknown-linux-gnueabihf.dependencies] -openssl = { version = "0.10.56", features = ["vendored"] } +openssl = { version = "0.10.72", features = ["vendored"] } [target.aarch64-unknown-linux-gnu.dependencies] -openssl = { version = "0.10.56", features = ["vendored"] } +openssl = { version = "0.10.72", features = ["vendored"] } [target.armv7-unknown-linux-gnueabihf.dependencies] -openssl = { version = "0.10.56", features = ["vendored"] } +openssl = { version = "0.10.72", features = ["vendored"] } [target.'cfg(windows)'.dependencies] atty = "0.2.14" From f56b71a008918a92b54d1e0fbc646066f003eca5 Mon Sep 17 00:00:00 2001 From: Eduard Tolosa Date: Sat, 2 Aug 2025 13:00:43 -0500 Subject: [PATCH 56/62] (chore): update builder.sh - Disable docker checks, we now use podman - Use cross for all builds, otherwise the build ends up in glibc versions mismatch --- builder.sh | 43 +++++++++++-------------------------------- 1 file changed, 11 insertions(+), 32 deletions(-) diff --git a/builder.sh b/builder.sh index 83f33db..2772a1d 100755 --- a/builder.sh +++ b/builder.sh @@ -7,20 +7,12 @@ LINUX_X86_TARGET="i686-unknown-linux-musl" WIN_TARGET="x86_64-pc-windows-gnu" ARMV7_TARGET="armv7-unknown-linux-gnueabihf" AARCH_TARGET="aarch64-unknown-linux-gnu" -OSX_TARGET="x86_64-apple-darwin" +# OSX_TARGET="x86_64-apple-darwin" MANPAGE_DIR="./$NAME.1" -if ! systemctl is-active docker >/dev/null 2>&1; then - echo "Docker is not running. Starting docker." - if ! sudo systemctl start docker; then - echo "Failed to start docker." - exit 1 - fi -fi - # Linux build echo "Building Linux artifact." -if cargo build -q --release --target="$LINUX_TARGET"; then +if cross build -q --release --target="$LINUX_TARGET"; then echo "Linux artifact build: SUCCESS" cp "target/$LINUX_TARGET/release/$NAME" "target/$LINUX_TARGET/release/$NAME-linux" strip "target/$LINUX_TARGET/release/$NAME-linux" @@ -73,15 +65,15 @@ else fi # Mac OS build -echo "Building OSX artifact." -if CC=o64-clang CXX=o64-clang++ LIBZ_SYS_STATIC=1 cargo build -q --release --target="$OSX_TARGET"; then - echo "OSX artifact build: SUCCESS" - cp "target/$OSX_TARGET/release/$NAME" "target/$OSX_TARGET/release/$NAME-osx" - strip "target/$OSX_TARGET/release/$NAME-osx" - sha512sum "target/$OSX_TARGET/release/$NAME-osx" >"target/$OSX_TARGET/release/$NAME-osx.sha512" -else - echo "OSX artifact build: FAILED" -fi +# echo "Building OSX artifact." +# if CC=o64-clang CXX=o64-clang++ LIBZ_SYS_STATIC=1 cargo build -q --release --target="$OSX_TARGET"; then +# echo "OSX artifact build: SUCCESS" +# cp "target/$OSX_TARGET/release/$NAME" "target/$OSX_TARGET/release/$NAME-osx" +# strip "target/$OSX_TARGET/release/$NAME-osx" +# sha512sum "target/$OSX_TARGET/release/$NAME-osx" >"target/$OSX_TARGET/release/$NAME-osx.sha512" +# else +# echo "OSX artifact build: FAILED" +# fi echo "Creating manpage..." if command -v help2man >/dev/null; then @@ -93,16 +85,3 @@ if command -v help2man >/dev/null; then else echo "Please install the help2man package." fi - -if command -v git >/dev/null; then - git add . - git commit -m "Bump version." - git push -fi - -# Stop docker -echo "Stopping docker." -if ! sudo systemctl stop docker; then - echo "Failed to stop docker." - exit 1 -fi From bc08bab228ec945272602bbc3cddbeac327ab786 Mon Sep 17 00:00:00 2001 From: Eduard Tolosa Date: Sat, 2 Aug 2025 13:55:44 -0500 Subject: [PATCH 57/62] Update builder.sh --- builder.sh | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/builder.sh b/builder.sh index 2772a1d..8cf12d4 100755 --- a/builder.sh +++ b/builder.sh @@ -1,5 +1,4 @@ #!/usr/bin/env bash -# Rusolver releaser NAME="unimap" LINUX_TARGET="x86_64-unknown-linux-musl" @@ -9,6 +8,10 @@ ARMV7_TARGET="armv7-unknown-linux-gnueabihf" AARCH_TARGET="aarch64-unknown-linux-gnu" # OSX_TARGET="x86_64-apple-darwin" MANPAGE_DIR="./$NAME.1" +BIN_OUTPUT_DIR="./ghbinaries" + +rm -rf "$BIN_OUTPUT_DIR" +mkdir -p "$BIN_OUTPUT_DIR" # Linux build echo "Building Linux artifact." @@ -16,7 +19,8 @@ if cross build -q --release --target="$LINUX_TARGET"; then echo "Linux artifact build: SUCCESS" cp "target/$LINUX_TARGET/release/$NAME" "target/$LINUX_TARGET/release/$NAME-linux" strip "target/$LINUX_TARGET/release/$NAME-linux" - sha512sum "target/$LINUX_TARGET/release/$NAME-linux" >"target/$LINUX_TARGET/release/$NAME-linux.sha512" + sha512sum "target/$LINUX_TARGET/release/$NAME-linux" >"$BIN_OUTPUT_DIR/$NAME-linux.sha512" + zip -q -j "$BIN_OUTPUT_DIR/$NAME-linux-x64.zip" "target/$LINUX_TARGET/release/$NAME-linux" else echo "Linux artifact build: FAILED" fi @@ -27,7 +31,8 @@ if cross build -q --release --target="$LINUX_X86_TARGET"; then echo "Linux x86 artifact build: SUCCESS" cp "target/$LINUX_X86_TARGET/release/$NAME" "target/$LINUX_X86_TARGET/release/$NAME-linux-i386" strip "target/$LINUX_X86_TARGET/release/$NAME-linux-i386" - sha512sum "target/$LINUX_X86_TARGET/release/$NAME-linux-i386" >"target/$LINUX_X86_TARGET/release/$NAME-linux-i386.sha512" + sha512sum "target/$LINUX_X86_TARGET/release/$NAME-linux-i386" >"$BIN_OUTPUT_DIR/$NAME-linux-i386.sha512" + zip -q -j "$BIN_OUTPUT_DIR/$NAME-linux-i386.zip" "target/$LINUX_X86_TARGET/release/$NAME-linux-i386" else echo "Linux x86 artifact build: FAILED" fi @@ -38,7 +43,8 @@ if cross build -q --release --target="$WIN_TARGET"; then echo "Windows artifact build: SUCCESS" cp "target/$WIN_TARGET/release/$NAME.exe" "target/$WIN_TARGET/release/$NAME-windows.exe" strip "target/$WIN_TARGET/release/$NAME-windows.exe" - sha512sum "target/$WIN_TARGET/release/$NAME-windows.exe" >"target/$WIN_TARGET/release/$NAME-windows.exe.sha512" + sha512sum "target/$WIN_TARGET/release/$NAME-windows.exe" >"$BIN_OUTPUT_DIR/$NAME-windows.exe.sha512" + zip -q -j "$BIN_OUTPUT_DIR/$NAME-windows.zip" "target/$WIN_TARGET/release/$NAME-windows.exe" else echo "Windows artifact build: FAILED" fi @@ -49,7 +55,8 @@ if cross build -q --release --target="$ARMV7_TARGET"; then echo "ARMv7 artifact build: SUCCESS" cp "target/$ARMV7_TARGET/release/$NAME" "target/$ARMV7_TARGET/release/$NAME-armv7" strip "target/$ARMV7_TARGET/release/$NAME-armv7" - sha512sum "target/$ARMV7_TARGET/release/$NAME-armv7" >"target/$ARMV7_TARGET/release/$NAME-armv7.sha512" + sha512sum "target/$ARMV7_TARGET/release/$NAME-armv7" >"$BIN_OUTPUT_DIR/$NAME-armv7.sha512" + zip -q -j "$BIN_OUTPUT_DIR/$NAME-armv7.zip" "target/$ARMV7_TARGET/release/$NAME-armv7" else echo "ARMv7 artifact build: FAILED" fi @@ -60,17 +67,20 @@ if cross build -q --release --target="$AARCH_TARGET"; then echo "Aarch64 artifact build: SUCCESS" cp "target/$AARCH_TARGET/release/$NAME" "target/$AARCH_TARGET/release/$NAME-aarch64" strip "target/$AARCH_TARGET/release/$NAME-aarch64" + sha512sum "target/$AARCH_TARGET/release/$NAME-aarch64" >"$BIN_OUTPUT_DIR/$NAME-aarch64.sha512" + zip -q -j "$BIN_OUTPUT_DIR/$NAME-aarch64.zip" "target/$AARCH_TARGET/release/$NAME-aarch64" else echo "Aarch64 artifact build: FAILED" fi -# Mac OS build +# # Mac OS build # echo "Building OSX artifact." # if CC=o64-clang CXX=o64-clang++ LIBZ_SYS_STATIC=1 cargo build -q --release --target="$OSX_TARGET"; then # echo "OSX artifact build: SUCCESS" # cp "target/$OSX_TARGET/release/$NAME" "target/$OSX_TARGET/release/$NAME-osx" # strip "target/$OSX_TARGET/release/$NAME-osx" # sha512sum "target/$OSX_TARGET/release/$NAME-osx" >"target/$OSX_TARGET/release/$NAME-osx.sha512" +# zip -q "$BIN_OUTPUT_DIR/$NAME-osx.zip" "target/$OSX_TARGET/release/$NAME-osx" # else # echo "OSX artifact build: FAILED" # fi From f5049e1074512e8405f0c4a41fbcb77b24fe553f Mon Sep 17 00:00:00 2001 From: Eduard Tolosa Date: Sat, 2 Aug 2025 14:05:49 -0500 Subject: [PATCH 58/62] Update manpage and exclude binaries folder --- .gitignore | 1 + unimap.1 | 8 ++++---- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/.gitignore b/.gitignore index eb93940..b25556b 100644 --- a/.gitignore +++ b/.gitignore @@ -2,3 +2,4 @@ /logs *.txt /unimap_logs +/ghbinaries \ No newline at end of file diff --git a/unimap.1 b/unimap.1 index 5320030..da554d1 100644 --- a/unimap.1 +++ b/unimap.1 @@ -1,9 +1,9 @@ -.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.48.3. -.TH UNIMAP "1" "May 2021" "Unimap 0.5.1" "User Commands" +.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.49.3. +.TH UNIMAP "1" "August 2025" "Unimap 0.6.0" "User Commands" .SH NAME -Unimap \- manual page for Unimap 0.5.1 +Unimap \- manual page for Unimap 0.6.0 .SH DESCRIPTION -Unimap 0.5.1 +Unimap 0.6.0 Eduard Tolosa Scan only once by IP address and reduce scan times with Nmap for large amounts of data. .SS "USAGE:" From cba63c2a046373c01f20ef59ef6a294a1dc38535 Mon Sep 17 00:00:00 2001 From: Eduard Tolosa Date: Sat, 2 Aug 2025 15:10:52 -0500 Subject: [PATCH 59/62] (feat): update from old clap definition --- src/args.rs | 206 +++++++++++++++++++++++++++++++++++-------------- src/cli.yml | 113 --------------------------- src/files.rs | 15 ++-- src/main.rs | 5 +- src/misc.rs | 25 ------ src/nmap.rs | 21 +++-- src/structs.rs | 31 +------- 7 files changed, 173 insertions(+), 243 deletions(-) delete mode 100644 src/cli.yml diff --git a/src/args.rs b/src/args.rs index d3f6cc5..91a6da7 100644 --- a/src/args.rs +++ b/src/args.rs @@ -1,73 +1,167 @@ use { - crate::{ - defaults, - logic::validate_target, - misc::{return_matches_vec, sanitize_target_string}, - structs::Args, - }, + crate::{defaults, logic::validate_target, misc::sanitize_target_string}, chrono::Utc, - clap::{load_yaml, value_t, App}, + clap::Parser, std::{collections::HashSet, time::Instant}, }; -#[allow(clippy::cognitive_complexity)] -#[must_use] -pub fn get_args() -> Args { - let yaml = load_yaml!("cli.yml"); - let matches = App::from_yaml(yaml) - .version(clap::crate_version!()) - .get_matches(); +/// Scan only once by IP address and reduce scan times with Nmap for large amounts of data. +#[derive(Parser, Debug, Clone)] +#[command(author = "Eduard Tolosa ", version, about, long_about = None)] +#[command(arg_required_else_help = true)] +pub struct Args { + /// Target host + #[arg(short, long, conflicts_with_all = ["files", "stdin"])] + pub target: Option, - Args { - target: { - let target = sanitize_target_string( - value_t!(matches, "target", String).unwrap_or_else(|_| String::new()), - ); - if validate_target(&target) { - target + /// Use a list of targets written in a file as input + #[arg(short, long, conflicts_with_all = ["target", "stdin"])] + pub files: Vec, + + /// Write to an output file. The name of the output file will be unimap-log-date + #[arg(short, long, conflicts_with = "unique_output")] + pub output: bool, + + /// Write the output in CSV format to the specified filename + #[arg(short, long, conflicts_with = "output")] + pub unique_output: Option, + + /// Remove informative messages + #[arg(short, long)] + pub quiet: bool, + + /// Number of threads to use to perform the resolution + #[arg(long)] + pub threads: Option, + + /// Path to a file (or files) containing a list of DNS IP address. If no specified then a list of built-in DNS servers is used + #[arg(long = "resolvers")] + pub custom_resolvers: Vec, + + /// Ports to scan. You can specify a range of ports, a list, or both. Put them inside double quotes, for example: "22, 80, 443, 1000-5000" + #[arg(long)] + pub ports: Option, + + /// Nmap --min-rate value for ports scan + #[arg(long)] + pub min_rate: Option, + + /// Use fast scanning for ports (no version detection) + #[arg(long)] + pub fast_scan: bool, + + /// Path to save the CSV data of the process and/or Nmap XML files. Default to logs/ + #[arg(long, default_value = "unimap_logs")] + pub logs_dir: String, + + /// Keep Nmap XML files created in the logs/ folder for every scanned IP. This data will be useful for other tasks + #[arg(short = 'k', long)] + pub no_keep_nmap_logs: bool, + + /// Use raw output instead of a table + #[arg(short, long, conflicts_with = "url_output")] + pub raw_output: bool, + + /// Use HOST:IP output format + #[arg(long, conflicts_with = "raw_output")] + pub url_output: bool, + + /// Read from stdin instead of files or arguments + #[arg(long, conflicts_with_all = ["files", "target"])] + pub stdin: bool, +} + +impl Args { + /// Create the processed args with computed fields + #[must_use] + pub fn into_processed_args(self) -> ProcessedArgs { + let target = self.target.map_or_else(String::new, |target| { + let sanitized = sanitize_target_string(target); + if validate_target(&sanitized) { + sanitized } else { String::new() } - }, - file_name: if matches.is_present("output") { - value_t!(matches, "logs-dir", String).unwrap_or_else(|_| "unimap_logs".to_string()) - + "/" - + "unimap" - + &Utc::now().format("-log-%Y-%m-%d_%H-%M-%S").to_string() - + ".csv" - } else if matches.is_present("unique-output") { - matches.value_of("unique-output").unwrap().to_string() + }); + + let file_name = if self.output { + format!( + "{}/unimap{}", + self.logs_dir, + Utc::now().format("-log-%Y-%m-%d_%H-%M-%S") + ) + ".csv" + } else if let Some(unique_output) = &self.unique_output { + unique_output.clone() } else { String::new() - }, - logs_dir: value_t!(matches, "logs-dir", String) - .unwrap_or_else(|_| "unimap_logs".to_string()), - threads: if matches.is_present("ports") && !matches.is_present("threads") { + }; + + let threads = if self.ports.is_some() && self.threads.is_none() { 30 } else { - value_t!(matches, "threads", usize).unwrap_or_else(|_| 50) - }, - version: clap::crate_version!().to_string(), - ports: value_t!(matches, "ports", String).unwrap_or_else(|_| String::new()), - with_output: matches.is_present("output") || matches.is_present("unique-output"), - unique_output_flag: matches.is_present("unique-output"), - from_file_flag: matches.is_present("files"), - quiet_flag: matches.is_present("quiet"), - custom_resolvers: matches.is_present("custom-resolvers"), - custom_ports_range: matches.is_present("ports"), - fast_scan: matches.is_present("fast-scan"), - no_keep_nmap_logs: matches.is_present("no-keep-nmap-logs"), - raw_output: matches.is_present("raw-output"), - url_output: matches.is_present("url-output"), - from_stdin: matches.is_present("stdin"), - files: return_matches_vec(&matches, "files"), - min_rate: value_t!(matches, "min-rate", String).unwrap_or_else(|_| String::new()), - resolvers: if matches.is_present("custom-resolvers") { - return_matches_vec(&matches, "custom-resolvers") + self.threads.unwrap_or(50) + }; + + let custom_resolvers_flag = !self.custom_resolvers.is_empty(); + let custom_ports_range = self.ports.is_some(); + let ports_value = self.ports.unwrap_or_default(); + + let resolvers = if custom_resolvers_flag { + self.custom_resolvers } else { defaults::ipv4_resolvers() - }, - targets: HashSet::new(), - time_wasted: Instant::now(), + }; + + ProcessedArgs { + target, + file_name, + version: env!("CARGO_PKG_VERSION").to_string(), + logs_dir: self.logs_dir, + threads, + ports: ports_value, + with_output: self.output || self.unique_output.is_some(), + unique_output_flag: self.unique_output.is_some(), + min_rate: self.min_rate.unwrap_or_default(), + from_file_flag: !self.files.is_empty(), + quiet_flag: self.quiet, + custom_resolvers: custom_resolvers_flag, + custom_ports_range, + no_keep_nmap_logs: self.no_keep_nmap_logs, + raw_output: self.raw_output, + fast_scan: self.fast_scan, + url_output: self.url_output, + from_stdin: self.stdin, + files: self.files, + resolvers, + targets: HashSet::new(), + time_wasted: Instant::now(), + } } } + +/// Processed args with computed fields and flags +#[derive(Clone, Debug)] +pub struct ProcessedArgs { + pub target: String, + pub file_name: String, + pub version: String, + pub logs_dir: String, + pub threads: usize, + pub ports: String, + pub with_output: bool, + pub unique_output_flag: bool, + pub min_rate: String, + pub from_file_flag: bool, + pub quiet_flag: bool, + pub custom_resolvers: bool, + pub custom_ports_range: bool, + pub no_keep_nmap_logs: bool, + pub raw_output: bool, + pub fast_scan: bool, + pub url_output: bool, + pub from_stdin: bool, + pub files: Vec, + pub resolvers: Vec, + pub targets: HashSet, + pub time_wasted: Instant, +} diff --git a/src/cli.yml b/src/cli.yml deleted file mode 100644 index ca109bd..0000000 --- a/src/cli.yml +++ /dev/null @@ -1,113 +0,0 @@ -name: Unimap -author: Eduard Tolosa -settings: - - ArgRequiredElseHelp - - StrictUtf8 -about: Scan only once by IP address and reduce scan times with Nmap for large amounts of data. -args: - - target: - short: t - long: target - help: Target host. - takes_value: true - multiple: false - conflicts_with: - - files - - stdin - - - files: - short: f - long: file - help: Use a list of targets writen in a file as input. - takes_value: true - multiple: true - conflicts_with: - - target - - stdin - - - output: - short: o - long: output - help: Write to an output file. The name of the output file will be unimap-log-date. - takes_value: false - - - unique-output: - short: u - long: unique-output - help: Write the output in CSV format to the specified filename. - takes_value: true - multiple: false - conflicts_with: - - output - - - quiet: - short: q - long: quiet - help: Remove informative messages. - takes_value: false - - - threads: - help: Number of threads to use to perform the resolution. - long: threads - takes_value: true - - - custom-resolvers: - help: Path to a file (or files) containing a list of DNS IP address. If no specified then 1.6k of built-in valid DNS servers from public-dns.info are used. - long: resolvers - takes_value: true - multiple: true - - - ports: - help: 'Ports to scan. You can specify a range of ports, a list, or both. Put them inside double quotes, for example: "22, 80, 443, 1000-5000"' - long: ports - takes_value: true - multiple: false - - - min-rate: - help: Nmap --min-rate value for ports scan. - long: min-rate - takes_value: true - - - fast-scan: - help: Use fast scanning for ports (no version detection). - long: fast-scan - takes_value: false - - - logs-dir: - help: Path to save the CSV data of the process and/or Nmap XML files. Default to logs/. - long: logs-dir - takes_value: true - multiple: false - - - no-keep-nmap-logs: - help: Keep Nmap XML files created in the logs/ folder for every scanned IP. This data will be useful for other tasks. - short: k - long: no-keep-nmap-logs - takes_value: false - multiple: false - - - raw-output: - help: Use raw output instead of a table. - short: r - long: raw-output - takes_value: false - multiple: false - conflicts_with: - - url-output - - - url-output: - help: Use HOST:IP output format. - long: url-output - takes_value: false - multiple: false - conflicts_with: - - raw-output - - - stdin: - help: Read from stdin instead of files or aguments. - long: stdin - takes_value: false - multiple: false - conflicts_with: - - files - - target diff --git a/src/files.rs b/src/files.rs index 4678146..3564dc1 100644 --- a/src/files.rs +++ b/src/files.rs @@ -1,7 +1,7 @@ use { crate::{ + args::ProcessedArgs, errors::{Result, ResultExt}, - structs::Args, }, log::error, prettytable::Table, @@ -14,14 +14,17 @@ use { }; #[must_use] -pub fn return_file_targets(args: &Args, mut files: Vec) -> Vec { +pub fn return_file_targets(args: &ProcessedArgs, mut files: Vec) -> Vec { let mut targets: Vec = Vec::new(); files.sort(); files.dedup(); for f in files { match File::open(&f) { Ok(file) => { - for target in BufReader::new(file).lines().flatten() { + for target in BufReader::new(file) + .lines() + .map_while(std::result::Result::ok) + { targets.push(target); } } @@ -46,7 +49,7 @@ pub fn table_to_file(table: &Table, file_name: Option) -> Result< } #[must_use] -pub fn return_output_file(args: &Args) -> Option { +pub fn return_output_file(args: &ProcessedArgs) -> Option { if args.file_name.is_empty() || !args.with_output { None } else { @@ -67,7 +70,7 @@ pub fn check_full_path(full_path: &str) -> bool { || fs::create_dir_all(full_path).is_ok() } -pub fn delete_files(paths: &HashSet) { +pub fn delete_files(paths: &HashSet) { for file in paths { if Path::new(&file).exists() { match std::fs::remove_file(file) { @@ -78,7 +81,7 @@ pub fn delete_files(paths: &HashSet) { } } -pub fn string_to_file(data: String, mut file: File) -> Result<()> { +pub fn string_to_file(data: &str, mut file: File) -> Result<()> { file.write_all(data.as_bytes())?; Ok(()) } diff --git a/src/main.rs b/src/main.rs index f2b778d..4398a91 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,4 +1,5 @@ use { + clap::Parser, log::{error, Level}, std::{collections::HashSet, iter::FromIterator}, unimap::{args, errors::Result, files::return_file_targets, logger, misc, resolver_engine}, @@ -10,7 +11,9 @@ fn run() -> Result<()> { } else { logger::init_with_level(Level::Info).unwrap(); } - let mut arguments = args::get_args(); + + let mut arguments = args::Args::parse().into_processed_args(); + if !arguments.files.is_empty() { arguments.targets = HashSet::from_iter(return_file_targets(&arguments, arguments.files.clone())); diff --git a/src/misc.rs b/src/misc.rs index adb5326..5c789d5 100644 --- a/src/misc.rs +++ b/src/misc.rs @@ -12,31 +12,6 @@ pub fn sanitize_target_string(target: String) -> String { .replace('/', "") } -pub fn return_matches_vec(matches: &clap::ArgMatches, value: &str) -> Vec { - if matches.is_present(value) { - matches - .values_of(value) - .unwrap() - .map(str::to_owned) - .collect() - } else { - Vec::new() - } -} - -#[allow(dead_code)] -pub fn return_matches_hashset(matches: &clap::ArgMatches, value: &str) -> HashSet { - if matches.is_present(value) { - matches - .values_of(value) - .unwrap() - .map(str::to_owned) - .collect() - } else { - HashSet::new() - } -} - pub fn read_stdin() -> HashSet { let mut buffer = String::new(); let mut stdin = io::stdin(); diff --git a/src/nmap.rs b/src/nmap.rs index 2192a35..a148cf0 100644 --- a/src/nmap.rs +++ b/src/nmap.rs @@ -1,18 +1,8 @@ use { - crate::resolver_engine, log::error, - std::{path::Path, process::Command}, + std::{net::Ipv4Addr, path::Path, process::Command}, }; -lazy_static! { - static ref NMAP_DNS_RESOLVERS: String = resolver_engine::RESOLVERS - .clone() - .iter() - .map(ToString::to_string) - .collect::>() - .join(","); -} - #[derive(Default, Debug, Clone, PartialEq, Eq, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct Root { @@ -114,12 +104,19 @@ pub fn get_nmap_data( min_rate: &str, ports: &str, fast_scan: bool, + resolvers: &[Ipv4Addr], ) -> Result { let min_rate = min_rate.to_string(); + let nmap_dns_resolvers = resolvers + .iter() + .map(ToString::to_string) + .collect::>() + .join(","); + let mut nmap_args = vec![ "nmap", "--dns-servers", - &NMAP_DNS_RESOLVERS, + &nmap_dns_resolvers, "-Pn", "-sS", "--open", diff --git a/src/structs.rs b/src/structs.rs index 5cd7162..46db1a5 100644 --- a/src/structs.rs +++ b/src/structs.rs @@ -1,33 +1,4 @@ -use { - crate::nmap::Port, - std::{collections::HashSet, time::Instant}, -}; - -#[derive(Clone, Debug)] -pub struct Args { - pub target: String, - pub file_name: String, - pub version: String, - pub logs_dir: String, - pub threads: usize, - pub ports: String, - pub with_output: bool, - pub unique_output_flag: bool, - pub min_rate: String, - pub from_file_flag: bool, - pub quiet_flag: bool, - pub custom_resolvers: bool, - pub custom_ports_range: bool, - pub no_keep_nmap_logs: bool, - pub raw_output: bool, - pub fast_scan: bool, - pub url_output: bool, - pub from_stdin: bool, - pub files: Vec, - pub resolvers: Vec, - pub targets: HashSet, - pub time_wasted: Instant, -} +use crate::nmap::Port; #[derive(Clone, Debug, Eq, PartialEq, Hash)] pub struct ResolvData { From a6c166e470381de9482d369096976f07859f0b5b Mon Sep 17 00:00:00 2001 From: Eduard Tolosa Date: Sat, 2 Aug 2025 15:11:15 -0500 Subject: [PATCH 60/62] (chore): remove invalid DNS --- src/defaults.rs | 6 ------ 1 file changed, 6 deletions(-) diff --git a/src/defaults.rs b/src/defaults.rs index 2471345..05e776d 100644 --- a/src/defaults.rs +++ b/src/defaults.rs @@ -16,12 +16,6 @@ pub fn ipv4_resolvers() -> Vec { // Verisign "64.6.64.6", "64.6.65.6", - // UncensoredDNS - "91.239.100.100", - "89.233.43.71", - // dns.watch - "84.200.69.80", - "84.200.70.40", ] .into_iter() .map(str::to_owned) From c6a06db04b538cd9892cede9fc8c485f60e588df Mon Sep 17 00:00:00 2001 From: Eduard Tolosa Date: Sat, 2 Aug 2025 15:11:48 -0500 Subject: [PATCH 61/62] (chore): bump dependencies and adapt code to new ones --- Cargo.lock | 1677 ++++++++++++++++++++++++++++------------ Cargo.toml | 39 +- src/networking.rs | 64 +- src/resolver_engine.rs | 79 +- unimap.1 | 104 ++- 5 files changed, 1316 insertions(+), 647 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 065ddb6..aa4b269 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -13,9 +13,9 @@ dependencies = [ [[package]] name = "adler2" -version = "2.0.0" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627" +checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" [[package]] name = "aho-corasick" @@ -42,25 +42,60 @@ dependencies = [ ] [[package]] -name = "ansi_term" -version = "0.12.1" +name = "anstream" +version = "0.6.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d52a9bb7ec0cf484c551830a7ce27bd20d67eac647e1befb56b0be4ee39a55d2" +checksum = "301af1932e46185686725e0fad2f8f2aa7da69dd70bf6ecc44d6b703844a3933" dependencies = [ - "winapi", + "anstyle", + "anstyle-parse", + "anstyle-query", + "anstyle-wincon", + "colorchoice", + "is_terminal_polyfill", + "utf8parse", ] [[package]] -name = "arrayref" -version = "0.3.9" +name = "anstyle" +version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76a2e8124351fda1ef8aaaa3bbd7ebbcb486bbcd4225aca0aa0d84bb2db8fecb" +checksum = "862ed96ca487e809f1c8e5a8447f6ee2cf102f846893800b20cebdf541fc6bbd" [[package]] -name = "arrayvec" -version = "0.5.2" +name = "anstyle-parse" +version = "0.2.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23b62fc65de8e4e7f52534fb52b0f3ed04746ae267519eef2a83941e8085068b" +checksum = "4e7644824f0aa2c7b9384579234ef10eb7efb6a0deb83f9630a49594dd9c15c2" +dependencies = [ + "utf8parse", +] + +[[package]] +name = "anstyle-query" +version = "1.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c8bdeb6047d8983be085bab0ba1472e6dc604e7041dbf6fcd5e71523014fae9" +dependencies = [ + "windows-sys 0.59.0", +] + +[[package]] +name = "anstyle-wincon" +version = "3.0.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "403f75924867bb1033c59fbf0797484329750cfbe3c4325cd33127941fabc882" +dependencies = [ + "anstyle", + "once_cell_polyfill", + "windows-sys 0.59.0", +] + +[[package]] +name = "arraydeque" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d902e3d592a523def97af8f317b08ce16b7ab854c1985a0c671e6f15cebc236" [[package]] name = "async-trait" @@ -70,7 +105,7 @@ checksum = "e539d3fca749fcee5236ab05e93a52867dd549cc157c8cb7f99595f3cedffdb5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.100", + "syn 2.0.104", ] [[package]] @@ -79,22 +114,22 @@ version = "0.2.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" dependencies = [ - "hermit-abi", + "hermit-abi 0.1.19", "libc", "winapi", ] [[package]] name = "autocfg" -version = "1.4.0" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" +checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" [[package]] name = "backtrace" -version = "0.3.74" +version = "0.3.75" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d82cb332cdfaed17ae235a638438ac4d4839913cc2af585c3c6746e8f8bee1a" +checksum = "6806a6321ec58106fea15becdad98371e28d92ccbc7c8f1b3b6dd724fe8f1002" dependencies = [ "addr2line", "cfg-if", @@ -102,126 +137,176 @@ dependencies = [ "miniz_oxide", "object", "rustc-demangle", - "windows-targets", + "windows-targets 0.52.6", ] [[package]] name = "base64" -version = "0.13.1" +version = "0.21.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" +checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" [[package]] name = "bitflags" -version = "1.3.2" +version = "2.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" - -[[package]] -name = "bitflags" -version = "2.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c8214115b7bf84099f1309324e63141d4c5d7cc26862f97a0a857dbefe165bd" - -[[package]] -name = "blake2b_simd" -version = "0.5.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "afa748e348ad3be8263be728124b24a24f268266f6f5d58af9d75f6a40b5c587" +checksum = "1b8e56985ec62d17e9c1001dc89c88ecd7dc08e47eba5ec7c29c7b5eeecde967" dependencies = [ - "arrayref", - "arrayvec", - "constant_time_eq", + "serde", +] + +[[package]] +name = "block-buffer" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" +dependencies = [ + "generic-array", ] [[package]] name = "bumpalo" -version = "3.17.0" +version = "3.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1628fb46dfa0b37568d12e5edd512553eccf6a22a78e8bde00bb4aed84d5bdbf" +checksum = "46c5e41b57b8bba42a04676d81cb89e9ee8e859a1a66f80a5a72e1cb76b34d43" [[package]] -name = "byteorder" -version = "1.5.0" +name = "bytes" +version = "1.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" +checksum = "d71b6127be86fdcfddb610f7182ac57211d4b18a3e9c82eb2d17662f2227ad6a" [[package]] name = "cc" -version = "1.2.19" +version = "1.2.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e3a13707ac958681c13b39b458c073d0d9bc8a22cb1b2f4c8e55eb72c13f362" +checksum = "c3a42d84bb6b69d3a8b3eaacf0d88f179e1929695e1ad012b6cf64d9caaa5fd2" dependencies = [ "shlex", ] [[package]] name = "cfg-if" -version = "1.0.0" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" +checksum = "9555578bc9e57714c812a1f84e4fc5b4d21fcb063490c624de019f7464c91268" [[package]] name = "chrono" -version = "0.4.40" +version = "0.4.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a7964611d71df112cb1730f2ee67324fcf4d0fc6606acbbe9bfe06df124637c" +checksum = "c469d952047f47f91b68d1cba3f10d63c11d73e4636f24f08daf0278abf01c4d" dependencies = [ "android-tzdata", "iana-time-zone", "js-sys", - "num-traits 0.2.19", + "num-traits", "wasm-bindgen", "windows-link", ] [[package]] name = "clap" -version = "2.34.0" +version = "4.5.42" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a0610544180c38b88101fecf2dd634b174a62eef6946f84dfc6a7127512b381c" +checksum = "ed87a9d530bb41a67537289bafcac159cb3ee28460e0a4571123d2a778a6a882" dependencies = [ - "ansi_term", - "atty", - "bitflags 1.3.2", - "strsim", - "textwrap", - "unicode-width", - "vec_map", - "yaml-rust 0.3.5", + "clap_builder", + "clap_derive", ] [[package]] -name = "colored" -version = "2.2.0" +name = "clap_builder" +version = "4.5.42" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "117725a109d387c937a1533ce01b450cbde6b88abceea8473c4d7a85853cda3c" +checksum = "64f4f3f3c77c94aff3c7e9aac9a2ca1974a5adf392a8bb751e827d6d127ab966" dependencies = [ - "lazy_static", - "windows-sys", + "anstream", + "anstyle", + "clap_lex", + "strsim", +] + +[[package]] +name = "clap_derive" +version = "4.5.41" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef4f52386a59ca4c860f7393bcf8abd8dfd91ecccc0f774635ff68e92eeef491" +dependencies = [ + "heck", + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "clap_lex" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b94f61472cee1439c0b966b47e3aca9ae07e45d070759512cd390ea2bebc6675" + +[[package]] +name = "colorchoice" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b05b61dc5112cbb17e4b6cd61790d9845d13888356391624cbe7e41efeac1e75" + +[[package]] +name = "colored" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fde0e0ec90c9dfb3b4b1a0891a7dcd0e2bffde2f7efed5fe7c9bb00e5bfb915e" +dependencies = [ + "windows-sys 0.59.0", ] [[package]] name = "config" -version = "0.11.0" +version = "0.15.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b1b9d958c2b1368a663f05538fc1b5975adce1e19f435acceae987aceeeb369" +checksum = "5b1eb4fb07bc7f012422df02766c7bd5971effb894f573865642f06fa3265440" dependencies = [ - "lazy_static", - "nom", + "async-trait", + "convert_case", + "json5", + "pathdiff", + "ron", "rust-ini", - "serde 1.0.219", - "serde-hjson", + "serde", "serde_json", "toml", - "yaml-rust 0.4.5", + "winnow", + "yaml-rust2", ] [[package]] -name = "constant_time_eq" -version = "0.1.5" +name = "const-random" +version = "0.1.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "245097e9a4535ee1e3e3931fcfcd55a796a44c643e8596ff6566d68f09b87bbc" +checksum = "87e00182fe74b066627d63b85fd550ac2998d4b0bd86bfed477a0ae4c7c71359" +dependencies = [ + "const-random-macro", +] + +[[package]] +name = "const-random-macro" +version = "0.1.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9d839f2a20b0aee515dc581a6172f2321f96cab76c1a38a4c584a194955390e" +dependencies = [ + "getrandom 0.2.16", + "once_cell", + "tiny-keccak", +] + +[[package]] +name = "convert_case" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec182b0ca2f35d8fc196cf3404988fd8b8c739a4d270ff118a398feb0cbec1ca" +dependencies = [ + "unicode-segmentation", +] [[package]] name = "core-foundation-sys" @@ -229,6 +314,30 @@ version = "0.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" +[[package]] +name = "cpufeatures" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" +dependencies = [ + "libc", +] + +[[package]] +name = "critical-section" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "790eea4361631c5e7d22598ecd5723ff611904e3344ce8720784c93e3d83d40b" + +[[package]] +name = "crossbeam-channel" +version = "0.5.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "82b8f8f868b36967f9606790d1903570de9ceaf870a7bf9fbbd3016d636a2cb2" +dependencies = [ + "crossbeam-utils", +] + [[package]] name = "crossbeam-deque" version = "0.8.6" @@ -254,6 +363,22 @@ version = "0.8.21" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" +[[package]] +name = "crunchy" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "460fbee9c2c2f33933d720630a6a0bac33ba7053db5344fac858d4b8952d77d5" + +[[package]] +name = "crypto-common" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" +dependencies = [ + "generic-array", + "typenum", +] + [[package]] name = "csv" version = "1.3.1" @@ -263,7 +388,7 @@ dependencies = [ "csv-core", "itoa", "ryu", - "serde 1.0.219", + "serde", ] [[package]] @@ -282,10 +407,30 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2a2330da5de22e8a3cb63252ce2abb30116bf5265e89c0e01bc17015ce30a476" [[package]] -name = "dirs" -version = "1.0.5" +name = "digest" +version = "0.10.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fd78930633bd1c6e35c4b42b1df7b0cbc6bc191146e512bb3bedf243fcc3901" +checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" +dependencies = [ + "block-buffer", + "crypto-common", +] + +[[package]] +name = "dirs-next" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b98cf8ebf19c3d1b223e151f99a4f9f0690dca41414773390fc824184ac833e1" +dependencies = [ + "cfg-if", + "dirs-sys-next", +] + +[[package]] +name = "dirs-sys-next" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ebda144c4fe02d1f7ea1a7d9641b6fc6b580adcfa024ae48797ecdeb6825b4d" dependencies = [ "libc", "redox_users", @@ -300,7 +445,16 @@ checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.100", + "syn 2.0.104", +] + +[[package]] +name = "dlv-list" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "442039f5147480ba31067cb00ada1adae6892028e40e45fc5de7b7df6dcc1b5f" +dependencies = [ + "const-random", ] [[package]] @@ -311,20 +465,29 @@ checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" [[package]] name = "encode_unicode" -version = "0.3.6" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a357d28ed41a50f9c765dbfe56cbc04a64e53e5fc58ba79fbc34c10ef3df831f" +checksum = "34aa73646ffb006b8f5147f3dc182bd4bcb190227ce861fc4a4844bf8e3cb2c0" + +[[package]] +name = "encoding_rs" +version = "0.8.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75030f3c4f45dafd7586dd6780965a8c7e8e285a5ecb86713e63a79c5b2766f3" +dependencies = [ + "cfg-if", +] [[package]] name = "enum-as-inner" -version = "0.3.4" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "570d109b813e904becc80d8d5da38376818a143348413f7149f1340fe04754d4" +checksum = "a1e6a265c649f3f5979b601d26f1d05ada116434c87741c9493cb56218f76cbc" dependencies = [ "heck", "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.104", ] [[package]] @@ -349,6 +512,12 @@ dependencies = [ "synstructure 0.12.6", ] +[[package]] +name = "foldhash" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" + [[package]] name = "foreign-types" version = "0.3.2" @@ -373,6 +542,21 @@ dependencies = [ "percent-encoding", ] +[[package]] +name = "futures" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "65bc07b1a8bc7c85c5f2e110c476c7389b4554ba72af57d8445ea63a576b0876" +dependencies = [ + "futures-channel", + "futures-core", + "futures-executor", + "futures-io", + "futures-sink", + "futures-task", + "futures-util", +] + [[package]] name = "futures-channel" version = "0.3.31" @@ -380,6 +564,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10" dependencies = [ "futures-core", + "futures-sink", ] [[package]] @@ -388,12 +573,40 @@ version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" +[[package]] +name = "futures-executor" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e28d1d997f585e54aebc3f97d39e72338912123a67330d723fdbb564d646c9f" +dependencies = [ + "futures-core", + "futures-task", + "futures-util", +] + [[package]] name = "futures-io" version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" +[[package]] +name = "futures-macro" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "futures-sink" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7" + [[package]] name = "futures-task" version = "0.3.31" @@ -406,33 +619,63 @@ version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" dependencies = [ + "futures-channel", "futures-core", + "futures-io", + "futures-macro", + "futures-sink", "futures-task", + "memchr", "pin-project-lite", "pin-utils", "slab", ] [[package]] -name = "getrandom" -version = "0.1.16" +name = "generator" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce" +checksum = "d18470a76cb7f8ff746cf1f7470914f900252ec36bbc40b569d74b1258446827" dependencies = [ + "cc", "cfg-if", "libc", - "wasi 0.9.0+wasi-snapshot-preview1", + "log", + "rustversion", + "windows", +] + +[[package]] +name = "generic-array" +version = "0.14.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" +dependencies = [ + "typenum", + "version_check", ] [[package]] name = "getrandom" -version = "0.2.15" +version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" +checksum = "335ff9f135e4384c8150d6f27c6daed433577f86b4750418338c01a1a2528592" dependencies = [ "cfg-if", "libc", - "wasi 0.11.0+wasi-snapshot-preview1", + "wasi 0.11.1+wasi-snapshot-preview1", +] + +[[package]] +name = "getrandom" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26145e563e54f2cadc477553f1ec5ee650b00862f0a58bcd12cbdc5f0ea2d2f4" +dependencies = [ + "cfg-if", + "libc", + "r-efi", + "wasi 0.14.2+wasi-0.2.4", ] [[package]] @@ -442,10 +685,34 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" [[package]] -name = "heck" -version = "0.4.1" +name = "hashbrown" +version = "0.14.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" +checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" + +[[package]] +name = "hashbrown" +version = "0.15.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5971ac85611da7067dbfcabef3c70ebb5606018acd9e2a3903a0da507521e0d5" +dependencies = [ + "foldhash", +] + +[[package]] +name = "hashlink" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7382cf6263419f2d8df38c55d7da83da5c18aef87fc7a7fc1fb1e344edfe14c1" +dependencies = [ + "hashbrown 0.15.4", +] + +[[package]] +name = "heck" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" [[package]] name = "hermit-abi" @@ -457,14 +724,55 @@ dependencies = [ ] [[package]] -name = "hostname" -version = "0.4.1" +name = "hermit-abi" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a56f203cd1c76362b69e3863fd987520ac36cf70a8c92627449b2f64a8cf7d65" +checksum = "fc0fef456e4baa96da950455cd02c081ca953b141298e41db3fc7e36b1da849c" + +[[package]] +name = "hickory-proto" +version = "0.25.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8a6fe56c0038198998a6f217ca4e7ef3a5e51f46163bd6dd60b5c71ca6c6502" +dependencies = [ + "async-trait", + "cfg-if", + "data-encoding", + "enum-as-inner", + "futures-channel", + "futures-io", + "futures-util", + "idna", + "ipnet", + "once_cell", + "rand", + "ring", + "thiserror 2.0.12", + "tinyvec", + "tokio", + "tracing", + "url", +] + +[[package]] +name = "hickory-resolver" +version = "0.25.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc62a9a99b0bfb44d2ab95a7208ac952d31060efc16241c87eaf36406fecf87a" dependencies = [ "cfg-if", - "libc", - "windows-link", + "futures-util", + "hickory-proto", + "ipconfig", + "moka", + "once_cell", + "parking_lot", + "rand", + "resolv-conf", + "smallvec", + "thiserror 2.0.12", + "tokio", + "tracing", ] [[package]] @@ -493,21 +801,22 @@ dependencies = [ [[package]] name = "icu_collections" -version = "1.5.0" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db2fa452206ebee18c4b5c2274dbf1de17008e874b4dc4f0aea9d01ca79e4526" +checksum = "200072f5d0e3614556f94a9930d5dc3e0662a652823904c3a75dc3b0af7fee47" dependencies = [ "displaydoc", + "potential_utf", "yoke", "zerofrom", "zerovec", ] [[package]] -name = "icu_locid" -version = "1.5.0" +name = "icu_locale_core" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13acbb8371917fc971be86fc8057c41a64b521c184808a698c02acc242dbf637" +checksum = "0cde2700ccaed3872079a65fb1a78f6c0a36c91570f28755dda67bc8f7d9f00a" dependencies = [ "displaydoc", "litemap", @@ -516,31 +825,11 @@ dependencies = [ "zerovec", ] -[[package]] -name = "icu_locid_transform" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "01d11ac35de8e40fdeda00d9e1e9d92525f3f9d887cdd7aa81d727596788b54e" -dependencies = [ - "displaydoc", - "icu_locid", - "icu_locid_transform_data", - "icu_provider", - "tinystr", - "zerovec", -] - -[[package]] -name = "icu_locid_transform_data" -version = "1.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7515e6d781098bf9f7205ab3fc7e9709d34554ae0b21ddbcb5febfa4bc7df11d" - [[package]] name = "icu_normalizer" -version = "1.5.0" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19ce3e0da2ec68599d193c93d088142efd7f9c5d6fc9b803774855747dc6a84f" +checksum = "436880e8e18df4d7bbc06d58432329d6458cc84531f7ac5f024e93deadb37979" dependencies = [ "displaydoc", "icu_collections", @@ -548,78 +837,54 @@ dependencies = [ "icu_properties", "icu_provider", "smallvec", - "utf16_iter", - "utf8_iter", - "write16", "zerovec", ] [[package]] name = "icu_normalizer_data" -version = "1.5.1" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5e8338228bdc8ab83303f16b797e177953730f601a96c25d10cb3ab0daa0cb7" +checksum = "00210d6893afc98edb752b664b8890f0ef174c8adbb8d0be9710fa66fbbf72d3" [[package]] name = "icu_properties" -version = "1.5.1" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93d6020766cfc6302c15dbbc9c8778c37e62c14427cb7f6e601d849e092aeef5" +checksum = "016c619c1eeb94efb86809b015c58f479963de65bdb6253345c1a1276f22e32b" dependencies = [ "displaydoc", "icu_collections", - "icu_locid_transform", + "icu_locale_core", "icu_properties_data", "icu_provider", - "tinystr", + "potential_utf", + "zerotrie", "zerovec", ] [[package]] name = "icu_properties_data" -version = "1.5.1" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85fb8799753b75aee8d2a21d7c14d9f38921b54b3dbda10f5a3c7a7b82dba5e2" +checksum = "298459143998310acd25ffe6810ed544932242d3f07083eee1084d83a71bd632" [[package]] name = "icu_provider" -version = "1.5.0" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ed421c8a8ef78d3e2dbc98a973be2f3770cb42b606e3ab18d6237c4dfde68d9" +checksum = "03c80da27b5f4187909049ee2d72f276f0d9f99a42c306bd0131ecfe04d8e5af" dependencies = [ "displaydoc", - "icu_locid", - "icu_provider_macros", + "icu_locale_core", "stable_deref_trait", "tinystr", "writeable", "yoke", "zerofrom", + "zerotrie", "zerovec", ] -[[package]] -name = "icu_provider_macros" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ec89e9337638ecdc08744df490b221a7399bf8d164eb52a665454e60e075ad6" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.100", -] - -[[package]] -name = "idna" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "418a0a6fab821475f634efe3ccc45c013f742efe03d853e8d3355d5cb850ecf8" -dependencies = [ - "matches", - "unicode-bidi", - "unicode-normalization", -] - [[package]] name = "idna" version = "1.0.3" @@ -633,32 +898,34 @@ dependencies = [ [[package]] name = "idna_adapter" -version = "1.2.0" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "daca1df1c957320b2cf139ac61e7bd64fed304c5040df000a745aa1de3b4ef71" +checksum = "3acae9609540aa318d1bc588455225fb2085b9ed0c4f6bd0d9d5bcd86f1a0344" dependencies = [ "icu_normalizer", "icu_properties", ] [[package]] -name = "instant" -version = "0.1.13" +name = "io-uring" +version = "0.7.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0242819d153cba4b4b05a5a8f2a7e9bbf97b6055b2a002b395c96b5ff3c0222" +checksum = "d93587f37623a1a17d94ef2bc9ada592f5465fe7732084ab7beefabe5c77c0c4" dependencies = [ + "bitflags", "cfg-if", + "libc", ] [[package]] name = "ipconfig" -version = "0.2.2" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7e2f18aece9709094573a9f24f483c4f65caa4298e2f7ae1b71cc65d853fad7" +checksum = "b58db92f96b720de98181bbbe63c831e87005ab460c1bf306eb2622b4707997f" dependencies = [ - "socket2 0.3.19", + "socket2 0.5.10", "widestring", - "winapi", + "windows-sys 0.48.0", "winreg", ] @@ -668,6 +935,23 @@ version = "2.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "469fb0b9cefa57e3ef31275ee7cacb78f2fdca44e4765491884a2b119d4eb130" +[[package]] +name = "is-terminal" +version = "0.4.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e04d7f318608d35d4b61ddd75cbdaee86b023ebe2bd5a66ee0915f0bf93095a9" +dependencies = [ + "hermit-abi 0.5.2", + "libc", + "windows-sys 0.59.0", +] + +[[package]] +name = "is_terminal_polyfill" +version = "1.70.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf" + [[package]] name = "itoa" version = "1.0.15" @@ -684,6 +968,17 @@ dependencies = [ "wasm-bindgen", ] +[[package]] +name = "json5" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96b0db21af676c1ce64250b5f40f3ce2cf27e4e47cb91ed91eb6fe9350b430c1" +dependencies = [ + "pest", + "pest_derive", + "serde", +] + [[package]] name = "lazy_static" version = "1.5.0" @@ -691,41 +986,32 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" [[package]] -name = "lexical-core" -version = "0.7.6" +name = "libc" +version = "0.2.174" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6607c62aa161d23d17a9072cc5da0be67cdfc89d3afb1e8d9c842bebc2525ffe" +checksum = "1171693293099992e19cddea4e8b849964e9846f4acee11b3948bcc337be8776" + +[[package]] +name = "libredox" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "391290121bad3d37fbddad76d8f5d1c1c314cfc646d143d7e07a3086ddff0ce3" dependencies = [ - "arrayvec", - "bitflags 1.3.2", - "cfg-if", - "ryu", - "static_assertions", + "bitflags", + "libc", ] -[[package]] -name = "libc" -version = "0.2.172" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d750af042f7ef4f724306de029d18836c26c1765a54a6a3f094cbd23a7267ffa" - -[[package]] -name = "linked-hash-map" -version = "0.5.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0717cef1bc8b636c6e1c1bbdefc09e6322da8a9321966e8928ef80d20f7f770f" - [[package]] name = "litemap" -version = "0.7.5" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23fb14cb19457329c82206317a5663005a4d404783dc74f4252769b0d5f42856" +checksum = "241eaef5fd12c88705a01fc1066c48c4b36e0dd4377dcdc7ec3942cea7a69956" [[package]] name = "lock_api" -version = "0.4.12" +version = "0.4.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17" +checksum = "96936507f153605bddfcda068dd804796c84324ed2510809e5b2a624c81da765" dependencies = [ "autocfg", "scopeguard", @@ -738,64 +1024,80 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "13dc2df351e3202783a1fe0d44375f7295ffb4049267b0f3018346dc122a1d94" [[package]] -name = "lru-cache" -version = "0.1.2" +name = "loom" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31e24f1ad8321ca0e8a1e0ac13f23cb668e6f5466c2c57319f6a5cf1cc8e3b1c" +checksum = "419e0dc8046cb947daa77eb95ae174acfbddb7673b4151f56d1eed8e93fbfaca" dependencies = [ - "linked-hash-map", + "cfg-if", + "generator", + "scoped-tls", + "tracing", + "tracing-subscriber", ] [[package]] -name = "matches" -version = "0.1.10" +name = "matchers" +version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2532096657941c2fea9c289d370a250971c689d4f143798ff67113ec042024a5" +checksum = "8263075bb86c5a1b1427b5ae862e8889656f126e9f77c484496e8b47cf5c5558" +dependencies = [ + "regex-automata 0.1.10", +] [[package]] name = "memchr" -version = "2.7.4" +version = "2.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" +checksum = "32a282da65faaf38286cf3be983213fcf1d2e2a58700e808f83f4ea9a4804bc0" [[package]] name = "miniz_oxide" -version = "0.8.8" +version = "0.8.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3be647b768db090acb35d5ec5db2b0e1f1de11133ca123b9eacf5137868f892a" +checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316" dependencies = [ "adler2", ] [[package]] name = "mio" -version = "1.0.3" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2886843bf800fba2e3377cff24abf6379b4c4d5c6681eaf9ea5b0d15090450bd" +checksum = "78bed444cc8a2160f01cbcf811ef18cac863ad68ae8ca62092e8db51d51c761c" dependencies = [ "libc", - "wasi 0.11.0+wasi-snapshot-preview1", - "windows-sys", + "wasi 0.11.1+wasi-snapshot-preview1", + "windows-sys 0.59.0", ] [[package]] -name = "nom" -version = "5.1.3" +name = "moka" +version = "0.12.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08959a387a676302eebf4ddbcbc611da04285579f76f88ee0506c63b1a61dd4b" +checksum = "a9321642ca94a4282428e6ea4af8cc2ca4eac48ac7a6a4ea8f33f76d0ce70926" dependencies = [ - "lexical-core", - "memchr", - "version_check", + "crossbeam-channel", + "crossbeam-epoch", + "crossbeam-utils", + "loom", + "parking_lot", + "portable-atomic", + "rustc_version", + "smallvec", + "tagptr", + "thiserror 1.0.69", + "uuid", ] [[package]] -name = "num-traits" -version = "0.1.43" +name = "nu-ansi-term" +version = "0.46.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92e5113e9fd4cc14ded8e499429f396a20f98c772a47cc8622a736e1ec843c31" +checksum = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84" dependencies = [ - "num-traits 0.2.19", + "overload", + "winapi", ] [[package]] @@ -821,14 +1123,24 @@ name = "once_cell" version = "1.21.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" +dependencies = [ + "critical-section", + "portable-atomic", +] + +[[package]] +name = "once_cell_polyfill" +version = "1.70.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4895175b425cb1f87721b59f0f286c2092bd4af812243672510e1ac53e2e0ad" [[package]] name = "openssl" -version = "0.10.72" +version = "0.10.73" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fedfea7d58a1f73118430a55da6a286e7b044961736ce96a16a17068ea25e5da" +checksum = "8505734d46c8ab1e19a1dce3aef597ad87dcb4c37e7188231769bd6bd51cebf8" dependencies = [ - "bitflags 2.9.0", + "bitflags", "cfg-if", "foreign-types", "libc", @@ -845,23 +1157,23 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.100", + "syn 2.0.104", ] [[package]] name = "openssl-src" -version = "300.5.0+3.5.0" +version = "300.5.1+3.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8ce546f549326b0e6052b649198487d91320875da901e7bd11a06d1ee3f9c2f" +checksum = "735230c832b28c000e3bc117119e6466a663ec73506bc0a9907ea4187508e42a" dependencies = [ "cc", ] [[package]] name = "openssl-sys" -version = "0.9.107" +version = "0.9.109" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8288979acd84749c744a9014b4382d42b8f7b2592847b5afb2ed29e5d16ede07" +checksum = "90096e2e47630d78b7d1c20952dc621f957103f8bc2c8359ec81290d75238571" dependencies = [ "cc", "libc", @@ -871,36 +1183,100 @@ dependencies = [ ] [[package]] -name = "parking_lot" -version = "0.11.2" +name = "ordered-multimap" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d17b78036a60663b797adeaee46f5c9dfebb86948d1255007a1d6be0271ff99" +checksum = "49203cdcae0030493bad186b28da2fa25645fa276a51b6fec8010d281e02ef79" +dependencies = [ + "dlv-list", + "hashbrown 0.14.5", +] + +[[package]] +name = "overload" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" + +[[package]] +name = "parking_lot" +version = "0.12.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70d58bf43669b5795d1576d0641cfb6fbb2057bf629506267a92807158584a13" dependencies = [ - "instant", "lock_api", "parking_lot_core", ] [[package]] name = "parking_lot_core" -version = "0.8.6" +version = "0.9.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60a2cfe6f0ad2bfc16aefa463b497d5c7a5ecd44a23efa72aa342d90177356dc" +checksum = "bc838d2a56b5b1a6c25f55575dfc605fabb63bb2365f6c2353ef9159aa69e4a5" dependencies = [ "cfg-if", - "instant", "libc", - "redox_syscall 0.2.16", + "redox_syscall", "smallvec", - "winapi", + "windows-targets 0.52.6", ] +[[package]] +name = "pathdiff" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df94ce210e5bc13cb6651479fa48d14f601d9858cfe0467f43ae157023b938d3" + [[package]] name = "percent-encoding" version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" +[[package]] +name = "pest" +version = "2.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1db05f56d34358a8b1066f67cbb203ee3e7ed2ba674a6263a1d5ec6db2204323" +dependencies = [ + "memchr", + "thiserror 2.0.12", + "ucd-trie", +] + +[[package]] +name = "pest_derive" +version = "2.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb056d9e8ea77922845ec74a1c4e8fb17e7c218cc4fc11a15c5d25e189aa40bc" +dependencies = [ + "pest", + "pest_generator", +] + +[[package]] +name = "pest_generator" +version = "2.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87e404e638f781eb3202dc82db6760c8ae8a1eeef7fb3fa8264b2ef280504966" +dependencies = [ + "pest", + "pest_meta", + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "pest_meta" +version = "2.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "edd1101f170f5903fde0914f899bb503d9ff5271d7ba76bbb70bea63690cc0d5" +dependencies = [ + "pest", + "sha2", +] + [[package]] name = "pin-project-lite" version = "0.2.16" @@ -919,6 +1295,21 @@ version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c" +[[package]] +name = "portable-atomic" +version = "1.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f84267b20a16ea918e43c6a88433c2d54fa145c92a811b5b047ccbe153674483" + +[[package]] +name = "potential_utf" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5a7c30837279ca13e7c867e9e40053bc68740f988cb07f7ca6df43cc734b585" +dependencies = [ + "zerovec", +] + [[package]] name = "ppv-lite86" version = "0.2.21" @@ -930,13 +1321,13 @@ dependencies = [ [[package]] name = "prettytable-rs" -version = "0.8.0" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fd04b170004fa2daccf418a7f8253aaf033c27760b5f225889024cf66d7ac2e" +checksum = "eea25e07510aa6ab6547308ebe3c036016d162b8da920dbb079e3ba8acf3d95a" dependencies = [ - "atty", "csv", "encode_unicode", + "is-terminal", "lazy_static", "term", "unicode-width", @@ -961,21 +1352,26 @@ dependencies = [ ] [[package]] -name = "rand" -version = "0.8.5" +name = "r-efi" +version = "5.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" + +[[package]] +name = "rand" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6db2770f06117d490610c7488547d543617b21bfa07796d7a12f6f1bd53850d1" dependencies = [ - "libc", "rand_chacha", "rand_core", ] [[package]] name = "rand_chacha" -version = "0.3.1" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" +checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb" dependencies = [ "ppv-lite86", "rand_core", @@ -983,11 +1379,11 @@ dependencies = [ [[package]] name = "rand_core" -version = "0.6.4" +version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38" dependencies = [ - "getrandom 0.2.15", + "getrandom 0.3.3", ] [[package]] @@ -1012,28 +1408,22 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.1.57" +version = "0.5.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41cc0f7e4d5d4544e8861606a285bb08d3e70712ccc7d2b84d7c0ccfaf4b05ce" - -[[package]] -name = "redox_syscall" -version = "0.2.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a" +checksum = "5407465600fb0548f1442edf71dd20683c6ed326200ace4b1ef0763521bb3b77" dependencies = [ - "bitflags 1.3.2", + "bitflags", ] [[package]] name = "redox_users" -version = "0.3.5" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de0737333e7a9502c789a36d7c7fa6092a49895d4faa31ca5df163857ded2e9d" +checksum = "ba009ff324d1fc1b900bd1fdb31564febe58a8ccc8a6fdbb93b543d33b13ca43" dependencies = [ - "getrandom 0.1.16", - "redox_syscall 0.1.57", - "rust-argon2", + "getrandom 0.2.16", + "libredox", + "thiserror 1.0.69", ] [[package]] @@ -1044,8 +1434,17 @@ checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191" dependencies = [ "aho-corasick", "memchr", - "regex-automata", - "regex-syntax", + "regex-automata 0.4.9", + "regex-syntax 0.8.5", +] + +[[package]] +name = "regex-automata" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132" +dependencies = [ + "regex-syntax 0.6.29", ] [[package]] @@ -1056,9 +1455,15 @@ checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908" dependencies = [ "aho-corasick", "memchr", - "regex-syntax", + "regex-syntax 0.8.5", ] +[[package]] +name = "regex-syntax" +version = "0.6.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" + [[package]] name = "regex-syntax" version = "0.8.5" @@ -1067,42 +1472,66 @@ checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" [[package]] name = "resolv-conf" -version = "0.7.1" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48375394603e3dd4b2d64371f7148fd8c7baa2680e28741f2cb8d23b59e3d4c4" +checksum = "95325155c684b1c89f7765e30bc1c42e4a6da51ca513615660cb8a62ef9a88e3" + +[[package]] +name = "ring" +version = "0.17.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4689e6c2294d81e88dc6261c768b63bc4fcdb852be6d1352498b114f61383b7" dependencies = [ - "hostname", + "cc", + "cfg-if", + "getrandom 0.2.16", + "libc", + "untrusted", + "windows-sys 0.52.0", ] [[package]] -name = "rust-argon2" -version = "0.8.3" +name = "ron" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b18820d944b33caa75a71378964ac46f58517c92b6ae5f762636247c09e78fb" +checksum = "b91f7eff05f748767f183df4320a63d6936e9c6107d97c9e6bdd9784f4289c94" dependencies = [ "base64", - "blake2b_simd", - "constant_time_eq", - "crossbeam-utils", + "bitflags", + "serde", + "serde_derive", ] [[package]] name = "rust-ini" -version = "0.13.0" +version = "0.21.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e52c148ef37f8c375d49d5a73aa70713125b7f19095948a923f80afdeb22ec2" +checksum = "e7295b7ce3bf4806b419dc3420745998b447178b7005e2011947b38fc5aa6791" +dependencies = [ + "cfg-if", + "ordered-multimap", +] [[package]] name = "rustc-demangle" -version = "0.1.24" +version = "0.1.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" +checksum = "56f7d92ca342cea22a06f2121d944b4fd82af56988c270852495420f961d4ace" + +[[package]] +name = "rustc_version" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" +dependencies = [ + "semver", +] [[package]] name = "rustversion" -version = "1.0.20" +version = "1.0.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eded382c5f5f786b989652c49544c4877d9f015cc22e145a5ea8ea66c2921cd2" +checksum = "8a0d197bd2c9dc6e53b84da9556a69ba4cdfab8619eb41a8bd1cc2027a0f6b1d" [[package]] name = "ryu" @@ -1110,6 +1539,12 @@ version = "1.0.20" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f" +[[package]] +name = "scoped-tls" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1cf6437eb19a8f4a6cc0f7dca544973b0b78843adbfeb3683d1a94a0024a294" + [[package]] name = "scopeguard" version = "1.2.0" @@ -1117,10 +1552,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" [[package]] -name = "serde" -version = "0.8.23" +name = "semver" +version = "1.0.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9dad3f759919b92c3068c696c15c3d17238234498bbdcc80f2c469606f948ac8" +checksum = "56e6fa9c48d24d85fb3de5ad847117517440f6beceb7798af16b4a87d616b8d0" [[package]] name = "serde" @@ -1131,27 +1566,15 @@ dependencies = [ "serde_derive", ] -[[package]] -name = "serde-hjson" -version = "0.9.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a3a4e0ea8a88553209f6cc6cfe8724ecad22e1acf372793c27d995290fe74f8" -dependencies = [ - "lazy_static", - "num-traits 0.1.43", - "regex", - "serde 0.8.23", -] - [[package]] name = "serde-xml-rs" -version = "0.5.1" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "65162e9059be2f6a3421ebbb4fef3e74b7d9e7c60c50a0e292c6239f19f1edfa" +checksum = "53630160a98edebde0123eb4dfd0fce6adff091b2305db3154a9e920206eb510" dependencies = [ "log", - "serde 1.0.219", - "thiserror", + "serde", + "thiserror 1.0.69", "xml-rs", ] @@ -1163,19 +1586,48 @@ checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00" dependencies = [ "proc-macro2", "quote", - "syn 2.0.100", + "syn 2.0.104", ] [[package]] name = "serde_json" -version = "1.0.140" +version = "1.0.142" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "20068b6e96dc6c9bd23e01df8827e6c7e1f2fddd43c21810382803c136b99373" +checksum = "030fedb782600dcbd6f02d479bf0d817ac3bb40d644745b769d6a96bc3afc5a7" dependencies = [ "itoa", "memchr", "ryu", - "serde 1.0.219", + "serde", +] + +[[package]] +name = "serde_spanned" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "40734c41988f7306bb04f0ecf60ec0f3f1caa34290e4e8ea471dcd3346483b83" +dependencies = [ + "serde", +] + +[[package]] +name = "sha2" +version = "0.10.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest", +] + +[[package]] +name = "sharded-slab" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6" +dependencies = [ + "lazy_static", ] [[package]] @@ -1186,38 +1638,34 @@ checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" [[package]] name = "slab" -version = "0.4.9" +version = "0.4.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" -dependencies = [ - "autocfg", -] +checksum = "04dc19736151f35336d325007ac991178d504a119863a2fcb3758cdb5e52c50d" [[package]] name = "smallvec" -version = "1.15.0" +version = "1.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8917285742e9f3e1683f0a9c4e6b57960b7314d0b08d30d1ecd426713ee2eee9" +checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" [[package]] name = "socket2" -version = "0.3.19" +version = "0.5.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "122e570113d28d773067fab24266b66753f6ea915758651696b6e35e49f88d6e" +checksum = "e22376abed350d73dd1cd119b57ffccad95b4e585a7cda43e286245ce23c0678" dependencies = [ - "cfg-if", "libc", - "winapi", + "windows-sys 0.52.0", ] [[package]] name = "socket2" -version = "0.5.9" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f5fd57c80058a56cf5c777ab8a126398ece8e442983605d280a44ce79d0edef" +checksum = "233504af464074f9d066d7b5416c5f9b894a5862a6506e306f7b816cdd6f1807" dependencies = [ "libc", - "windows-sys", + "windows-sys 0.59.0", ] [[package]] @@ -1226,17 +1674,11 @@ version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" -[[package]] -name = "static_assertions" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" - [[package]] name = "strsim" -version = "0.8.0" +version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ea5119cdb4c55b55d432abb513a0429384878c15dde60cc77b1c99de1a95a6a" +checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" [[package]] name = "syn" @@ -1251,9 +1693,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.100" +version = "2.0.104" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b09a44accad81e1ba1cd74a32461ba89dee89095ba17b32f5d03683b1b1fc2a0" +checksum = "17b6f705963418cdb9927482fa304bc562ece2fdd4f616084c50b7023b435a40" dependencies = [ "proc-macro2", "quote", @@ -1274,42 +1716,48 @@ dependencies = [ [[package]] name = "synstructure" -version = "0.13.1" +version = "0.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971" +checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" dependencies = [ "proc-macro2", "quote", - "syn 2.0.100", + "syn 2.0.104", ] +[[package]] +name = "tagptr" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b2093cf4c8eb1e67749a6762251bc9cd836b6fc171623bd0a9d324d37af2417" + [[package]] name = "term" -version = "0.5.2" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "edd106a334b7657c10b7c540a0106114feadeb4dc314513e97df481d5d966f42" +checksum = "c59df8ac95d96ff9bede18eb7300b0fda5e5d8d90960e76f8e14ae765eedbf1f" dependencies = [ - "byteorder", - "dirs", + "dirs-next", + "rustversion", "winapi", ] -[[package]] -name = "textwrap" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d326610f408c7a4eb6f51c37c330e496b08506c9457c9d34287ecc38809fb060" -dependencies = [ - "unicode-width", -] - [[package]] name = "thiserror" version = "1.0.69" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" dependencies = [ - "thiserror-impl", + "thiserror-impl 1.0.69", +] + +[[package]] +name = "thiserror" +version = "2.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "567b8a2dae586314f7be2a752ec7474332959c6460e02bde30d702a66d488708" +dependencies = [ + "thiserror-impl 2.0.12", ] [[package]] @@ -1320,14 +1768,43 @@ checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.100", + "syn 2.0.104", +] + +[[package]] +name = "thiserror-impl" +version = "2.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f7cf42b4507d8ea322120659672cf1b9dbb93f8f2d4ecfd6e51350ff5b17a1d" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "thread_local" +version = "1.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f60246a4944f24f6e018aa17cdeffb7818b76356965d03b07d6a9886e8962185" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "tiny-keccak" +version = "2.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c9d3793400a45f954c52e73d068316d76b6f4e36977e3fcebb13a2721e80237" +dependencies = [ + "crunchy", ] [[package]] name = "tinystr" -version = "0.7.6" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9117f5d4db391c1cf6927e7bea3db74b9a1c1add8f7eda9ffd5364f40f57b82f" +checksum = "5d4f6d1145dcb577acf783d4e601bc1d76a13337bb54e6233add580b07344c8b" dependencies = [ "displaydoc", "zerovec", @@ -1350,76 +1827,124 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.44.2" +version = "1.47.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6b88822cbe49de4185e3a4cbf8321dd487cf5fe0c5c65695fef6346371e9c48" +checksum = "89e49afdadebb872d3145a5638b59eb0691ea23e46ca484037cfab3b76b95038" dependencies = [ "backtrace", + "bytes", + "io-uring", "libc", "mio", "pin-project-lite", - "socket2 0.5.9", - "windows-sys", + "slab", + "socket2 0.6.0", + "tokio-macros", + "windows-sys 0.59.0", +] + +[[package]] +name = "tokio-macros" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e06d43f1345a3bcd39f6a56dbb7dcab2ba47e68e8ac134855e7e2bdbaf8cab8" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.104", ] [[package]] name = "toml" -version = "0.5.11" +version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234" +checksum = "41ae868b5a0f67631c14589f7e250c1ea2c574ee5ba21c6c8dd4b1485705a5a1" dependencies = [ - "serde 1.0.219", + "serde", + "serde_spanned", + "toml_datetime", + "toml_parser", + "winnow", ] [[package]] -name = "trust-dns-proto" -version = "0.20.4" -source = "git+https://github.com/Findomain/trust-dns?branch=custombranch#f339a5e806bed9109ad205d2143d8b18701d2ab0" -dependencies = [ - "async-trait", - "cfg-if", - "data-encoding", - "enum-as-inner", - "futures-channel", - "futures-io", - "futures-util", - "idna 0.2.3", - "ipnet", - "lazy_static", - "log", - "rand", - "smallvec", - "thiserror", - "tinyvec", - "tokio", - "url", -] - -[[package]] -name = "trust-dns-resolver" -version = "0.20.4" -source = "git+https://github.com/Findomain/trust-dns?branch=custombranch#f339a5e806bed9109ad205d2143d8b18701d2ab0" -dependencies = [ - "cfg-if", - "futures-util", - "ipconfig", - "lazy_static", - "log", - "lru-cache", - "parking_lot", - "rand", - "resolv-conf", - "smallvec", - "thiserror", - "tokio", - "trust-dns-proto", -] - -[[package]] -name = "unicode-bidi" -version = "0.3.18" +name = "toml_datetime" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c1cb5db39152898a79168971543b1cb5020dff7fe43c8dc468b0885f5e29df5" +checksum = "bade1c3e902f58d73d3f294cd7f20391c1cb2fbcb643b73566bc773971df91e3" +dependencies = [ + "serde", +] + +[[package]] +name = "toml_parser" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97200572db069e74c512a14117b296ba0a80a30123fbbb5aa1f4a348f639ca30" +dependencies = [ + "winnow", +] + +[[package]] +name = "tracing" +version = "0.1.41" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0" +dependencies = [ + "pin-project-lite", + "tracing-core", +] + +[[package]] +name = "tracing-core" +version = "0.1.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9d12581f227e93f094d3af2ae690a574abb8a2b9b7a96e7cfe9647b2b617678" +dependencies = [ + "once_cell", + "valuable", +] + +[[package]] +name = "tracing-log" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3" +dependencies = [ + "log", + "once_cell", + "tracing-core", +] + +[[package]] +name = "tracing-subscriber" +version = "0.3.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8189decb5ac0fa7bc8b96b7cb9b2701d60d48805aca84a238004d665fcc4008" +dependencies = [ + "matchers", + "nu-ansi-term", + "once_cell", + "regex", + "sharded-slab", + "smallvec", + "thread_local", + "tracing", + "tracing-core", + "tracing-log", +] + +[[package]] +name = "typenum" +version = "1.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1dccffe3ce07af9386bfd29e80c0ab1a8205a2fc34e4bcd40364df902cfa8f3f" + +[[package]] +name = "ucd-trie" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2896d95c02a80c6d6a5d6e953d479f5ddf2dfdb6a244441010e373ac0fb88971" [[package]] name = "unicode-ident" @@ -1428,13 +1953,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512" [[package]] -name = "unicode-normalization" -version = "0.1.24" +name = "unicode-segmentation" +version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5033c97c4262335cded6d6fc3e5c18ab755e1a3dc96376350f3d8e9f009ad956" -dependencies = [ - "tinyvec", -] +checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493" [[package]] name = "unicode-width" @@ -1450,7 +1972,7 @@ checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" [[package]] name = "unimap" -version = "0.6.0" +version = "0.7.0" dependencies = [ "atty", "chrono", @@ -1458,19 +1980,27 @@ dependencies = [ "colored", "config", "failure", + "futures", + "hickory-resolver", "lazy_static", "log", "openssl", "prettytable-rs", "rand", "rayon", - "serde 1.0.219", + "serde", "serde-xml-rs", "serde_derive", - "trust-dns-resolver", + "tokio", "winapi", ] +[[package]] +name = "untrusted" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" + [[package]] name = "url" version = "2.5.4" @@ -1478,34 +2008,45 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "32f8b686cadd1473f4bd0117a5d28d36b1ade384ea9b5069a1c40aefed7fda60" dependencies = [ "form_urlencoded", - "idna 1.0.3", + "idna", "percent-encoding", ] -[[package]] -name = "utf16_iter" -version = "1.0.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8232dd3cdaed5356e0f716d285e4b40b932ac434100fe9b7e0e8e935b9e6246" - [[package]] name = "utf8_iter" version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" +[[package]] +name = "utf8parse" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" + +[[package]] +name = "uuid" +version = "1.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3cf4199d1e5d15ddd86a694e4d0dffa9c323ce759fea589f00fef9d81cc1931d" +dependencies = [ + "getrandom 0.3.3", + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "valuable" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba73ea9cf16a25df0c8caa16c51acb937d5712a8429db78a3ee29d5dcacd3a65" + [[package]] name = "vcpkg" version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" -[[package]] -name = "vec_map" -version = "0.8.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1bddf1187be692e79c5ffeab891132dfb0f236ed36a43c7ed39f1165ee20191" - [[package]] name = "version_check" version = "0.9.5" @@ -1514,15 +2055,18 @@ checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" [[package]] name = "wasi" -version = "0.9.0+wasi-snapshot-preview1" +version = "0.11.1+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519" +checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" [[package]] name = "wasi" -version = "0.11.0+wasi-snapshot-preview1" +version = "0.14.2+wasi-0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" +checksum = "9683f9a5a998d873c0d21fcbe3c083009670149a8fab228644b8bd36b2c48cb3" +dependencies = [ + "wit-bindgen-rt", +] [[package]] name = "wasm-bindgen" @@ -1546,7 +2090,7 @@ dependencies = [ "log", "proc-macro2", "quote", - "syn 2.0.100", + "syn 2.0.104", "wasm-bindgen-shared", ] @@ -1568,7 +2112,7 @@ checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de" dependencies = [ "proc-macro2", "quote", - "syn 2.0.100", + "syn 2.0.104", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -1584,9 +2128,9 @@ dependencies = [ [[package]] name = "widestring" -version = "0.4.3" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c168940144dd21fd8046987c16a46a33d5fc84eec29ef9dcddc2ac9e31526b7c" +checksum = "dd7cf3379ca1aac9eea11fba24fd7e315d621f8dfe35c8d7d2be8b793726e07d" [[package]] name = "winapi" @@ -1611,10 +2155,32 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" [[package]] -name = "windows-core" -version = "0.61.0" +name = "windows" +version = "0.61.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4763c1de310c86d75a878046489e2e5ba02c649d185f21c67d4cf8a56d098980" +checksum = "9babd3a767a4c1aef6900409f85f5d53ce2544ccdfaa86dad48c91782c6d6893" +dependencies = [ + "windows-collections", + "windows-core", + "windows-future", + "windows-link", + "windows-numerics", +] + +[[package]] +name = "windows-collections" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3beeceb5e5cfd9eb1d76b381630e82c4241ccd0d27f1a39ed41b2760b255c5e8" +dependencies = [ + "windows-core", +] + +[[package]] +name = "windows-core" +version = "0.61.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0fdd3ddb90610c7638aa2b3a3ab2904fb9e5cdbecc643ddb3647212781c4ae3" dependencies = [ "windows-implement", "windows-interface", @@ -1623,6 +2189,17 @@ dependencies = [ "windows-strings", ] +[[package]] +name = "windows-future" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc6a41e98427b19fe4b73c550f060b59fa592d7d686537eebf9385621bfbad8e" +dependencies = [ + "windows-core", + "windows-link", + "windows-threading", +] + [[package]] name = "windows-implement" version = "0.60.0" @@ -1631,7 +2208,7 @@ checksum = "a47fddd13af08290e67f4acabf4b459f647552718f683a7b415d290ac744a836" dependencies = [ "proc-macro2", "quote", - "syn 2.0.100", + "syn 2.0.104", ] [[package]] @@ -1642,40 +2219,83 @@ checksum = "bd9211b69f8dcdfa817bfd14bf1c97c9188afa36f4750130fcdf3f400eca9fa8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.100", + "syn 2.0.104", ] [[package]] name = "windows-link" -version = "0.1.1" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76840935b766e1b0a05c0066835fb9ec80071d4c09a16f6bd5f7e655e3c14c38" +checksum = "5e6ad25900d524eaabdbbb96d20b4311e1e7ae1699af4fb28c17ae66c80d798a" + +[[package]] +name = "windows-numerics" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9150af68066c4c5c07ddc0ce30421554771e528bde427614c61038bc2c92c2b1" +dependencies = [ + "windows-core", + "windows-link", +] [[package]] name = "windows-result" -version = "0.3.2" +version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c64fd11a4fd95df68efcfee5f44a294fe71b8bc6a91993e2791938abcc712252" +checksum = "56f42bd332cc6c8eac5af113fc0c1fd6a8fd2aa08a0119358686e5160d0586c6" dependencies = [ "windows-link", ] [[package]] name = "windows-strings" -version = "0.4.0" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a2ba9642430ee452d5a7aa78d72907ebe8cfda358e8cb7918a2050581322f97" +checksum = "56e6c93f3a0c3b36176cb1327a4958a0353d5d166c2a35cb268ace15e91d3b57" dependencies = [ "windows-link", ] +[[package]] +name = "windows-sys" +version = "0.48.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" +dependencies = [ + "windows-targets 0.48.5", +] + [[package]] name = "windows-sys" version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" dependencies = [ - "windows-targets", + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-sys" +version = "0.59.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-targets" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" +dependencies = [ + "windows_aarch64_gnullvm 0.48.5", + "windows_aarch64_msvc 0.48.5", + "windows_i686_gnu 0.48.5", + "windows_i686_msvc 0.48.5", + "windows_x86_64_gnu 0.48.5", + "windows_x86_64_gnullvm 0.48.5", + "windows_x86_64_msvc 0.48.5", ] [[package]] @@ -1684,28 +2304,55 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" dependencies = [ - "windows_aarch64_gnullvm", - "windows_aarch64_msvc", - "windows_i686_gnu", + "windows_aarch64_gnullvm 0.52.6", + "windows_aarch64_msvc 0.52.6", + "windows_i686_gnu 0.52.6", "windows_i686_gnullvm", - "windows_i686_msvc", - "windows_x86_64_gnu", - "windows_x86_64_gnullvm", - "windows_x86_64_msvc", + "windows_i686_msvc 0.52.6", + "windows_x86_64_gnu 0.52.6", + "windows_x86_64_gnullvm 0.52.6", + "windows_x86_64_msvc 0.52.6", ] +[[package]] +name = "windows-threading" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b66463ad2e0ea3bbf808b7f1d371311c80e115c0b71d60efc142cafbcfb057a6" +dependencies = [ + "windows-link", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" + [[package]] name = "windows_aarch64_gnullvm" version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" +[[package]] +name = "windows_aarch64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" + [[package]] name = "windows_aarch64_msvc" version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" +[[package]] +name = "windows_i686_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" + [[package]] name = "windows_i686_gnu" version = "0.52.6" @@ -1718,24 +2365,48 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" +[[package]] +name = "windows_i686_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" + [[package]] name = "windows_i686_msvc" version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" +[[package]] +name = "windows_x86_64_gnu" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" + [[package]] name = "windows_x86_64_gnu" version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" + [[package]] name = "windows_x86_64_gnullvm" version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" +[[package]] +name = "windows_x86_64_msvc" +version = "0.48.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" + [[package]] name = "windows_x86_64_msvc" version = "0.52.6" @@ -1743,54 +2414,63 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" [[package]] -name = "winreg" -version = "0.6.2" +name = "winnow" +version = "0.7.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2986deb581c4fe11b621998a5e53361efe6b48a151178d0cd9eeffa4dc6acc9" +checksum = "f3edebf492c8125044983378ecb5766203ad3b4c2f7a922bd7dd207f6d443e95" dependencies = [ - "winapi", + "memchr", ] [[package]] -name = "write16" -version = "1.0.0" +name = "winreg" +version = "0.50.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d1890f4022759daae28ed4fe62859b1236caebfc61ede2f63ed4e695f3f6d936" +checksum = "524e57b2c537c0f9b1e69f1965311ec12182b4122e45035b1508cd24d2adadb1" +dependencies = [ + "cfg-if", + "windows-sys 0.48.0", +] + +[[package]] +name = "wit-bindgen-rt" +version = "0.39.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f42320e61fe2cfd34354ecb597f86f413484a798ba44a8ca1165c58d42da6c1" +dependencies = [ + "bitflags", +] [[package]] name = "writeable" -version = "0.5.5" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e9df38ee2d2c3c5948ea468a8406ff0db0b29ae1ffde1bcf20ef305bcc95c51" +checksum = "ea2f10b9bb0928dfb1b42b65e1f9e36f7f54dbdf08457afefb38afcdec4fa2bb" [[package]] name = "xml-rs" -version = "0.8.26" +version = "0.8.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a62ce76d9b56901b19a74f19431b0d8b3bc7ca4ad685a746dfd78ca8f4fc6bda" +checksum = "6fd8403733700263c6eb89f192880191f1b83e332f7a20371ddcf421c4a337c7" [[package]] -name = "yaml-rust" -version = "0.3.5" +name = "yaml-rust2" +version = "0.10.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e66366e18dc58b46801afbf2ca7661a9f59cc8c5962c29892b6039b4f86fa992" - -[[package]] -name = "yaml-rust" -version = "0.4.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56c1936c4cc7a1c9ab21a1ebb602eb942ba868cbd44a99cb7cdc5892335e1c85" +checksum = "4ce2a4ff45552406d02501cea6c18d8a7e50228e7736a872951fe2fe75c91be7" dependencies = [ - "linked-hash-map", + "arraydeque", + "encoding_rs", + "hashlink", ] [[package]] name = "yoke" -version = "0.7.5" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "120e6aef9aa629e3d4f52dc8cc43a015c7724194c97dfaf45180d2daf2b77f40" +checksum = "5f41bb01b8226ef4bfd589436a297c53d118f65921786300e427be8d487695cc" dependencies = [ - "serde 1.0.219", + "serde", "stable_deref_trait", "yoke-derive", "zerofrom", @@ -1798,34 +2478,34 @@ dependencies = [ [[package]] name = "yoke-derive" -version = "0.7.5" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2380878cad4ac9aac1e2435f3eb4020e8374b5f13c296cb75b4620ff8e229154" +checksum = "38da3c9736e16c5d3c8c597a9aaa5d1fa565d0532ae05e27c24aa62fb32c0ab6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.100", - "synstructure 0.13.1", + "syn 2.0.104", + "synstructure 0.13.2", ] [[package]] name = "zerocopy" -version = "0.8.24" +version = "0.8.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2586fea28e186957ef732a5f8b3be2da217d65c5969d4b1e17f973ebbe876879" +checksum = "1039dd0d3c310cf05de012d8a39ff557cb0d23087fd44cad61df08fc31907a2f" dependencies = [ "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.8.24" +version = "0.8.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a996a8f63c5c4448cd959ac1bab0aaa3306ccfd060472f85943ee0750f0169be" +checksum = "9ecf5b4cc5364572d7f4c329661bcc82724222973f2cab6f050a4e5c22f75181" dependencies = [ "proc-macro2", "quote", - "syn 2.0.100", + "syn 2.0.104", ] [[package]] @@ -1845,15 +2525,26 @@ checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" dependencies = [ "proc-macro2", "quote", - "syn 2.0.100", - "synstructure 0.13.1", + "syn 2.0.104", + "synstructure 0.13.2", +] + +[[package]] +name = "zerotrie" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "36f0bbd478583f79edad978b407914f61b2972f5af6fa089686016be8f9af595" +dependencies = [ + "displaydoc", + "yoke", + "zerofrom", ] [[package]] name = "zerovec" -version = "0.10.4" +version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa2b893d79df23bfb12d5461018d408ea19dfafe76c2c7ef6d4eba614f8ff079" +checksum = "4a05eb080e015ba39cc9e23bbe5e7fb04d5fb040350f99f34e338d5fdd294428" dependencies = [ "yoke", "zerofrom", @@ -1862,11 +2553,11 @@ dependencies = [ [[package]] name = "zerovec-derive" -version = "0.10.3" +version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6eafa6dfb17584ea3e2bd6e76e0cc15ad7af12b09abdd1ca55961bed9b1063c6" +checksum = "5b96237efa0c878c64bd89c436f661be4e46b2f3eff1ebb976f7ef2321d2f58f" dependencies = [ "proc-macro2", "quote", - "syn 2.0.100", + "syn 2.0.104", ] diff --git a/Cargo.toml b/Cargo.toml index ae9ae87..d2496a0 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "unimap" -version = "0.6.0" +version = "0.7.0" authors = ["Eduard Tolosa "] edition = "2018" description = "Scan only once by IP address and reduce scan times with Nmap for large amounts of data." @@ -12,39 +12,31 @@ readme = "README.md" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] -trust-dns-resolver = "0.20.4" +hickory-resolver = "0.25.2" rayon = "1.10.0" log = { version = "0.4.27", features = ["std"] } -colored = { version = "2.2.0", optional = true } -rand = "0.8.5" +colored = { version = "3.0.0", optional = true } +rand = "0.9.2" lazy_static = "1.5.0" +tokio = { version = "1.47.0", features = ["rt"] } +futures = "0.3" serde = { version = "1.0.219", features = ["derive"] } serde_derive = "1.0.219" -prettytable-rs = "0.8.0" -serde-xml-rs = "0.5.1" -chrono = "0.4.40" -clap = { version = "2.34.0", features = ["yaml"] } -config = { version = "0.11.0", features = [ - "yaml", - "json", - "toml", - "hjson", - "ini", -] } +prettytable-rs = "0.10.0" +serde-xml-rs = "0.8.1" +chrono = "0.4.41" +clap = { version = "4.5.42", features = ["derive"] } +config = { version = "0.15.13", features = ["yaml", "json", "toml", "ini"] } failure = "0.1.8" -# https://github.com/bluejekyll/trust-dns/pull/1632 -[patch.crates-io] -trust-dns-resolver = { git = "https://github.com/Findomain/trust-dns", package = "trust-dns-resolver", branch = "custombranch" } - [target.arm-unknown-linux-gnueabihf.dependencies] -openssl = { version = "0.10.72", features = ["vendored"] } +openssl = { version = "0.10.73", features = ["vendored"] } [target.aarch64-unknown-linux-gnu.dependencies] -openssl = { version = "0.10.72", features = ["vendored"] } +openssl = { version = "0.10.73", features = ["vendored"] } [target.armv7-unknown-linux-gnueabihf.dependencies] -openssl = { version = "0.10.72", features = ["vendored"] } +openssl = { version = "0.10.73", features = ["vendored"] } [target.'cfg(windows)'.dependencies] atty = "0.2.14" @@ -55,5 +47,4 @@ winapi = { version = "0.3.9", features = ["handleapi", "winbase"] } lto = true codegen-units = 1 panic = 'abort' -incremental = false -opt-level = "s" +strip = true diff --git a/src/networking.rs b/src/networking.rs index 4c20bfc..cdc43df 100644 --- a/src/networking.rs +++ b/src/networking.rs @@ -1,43 +1,43 @@ use { - crate::{files, structs::Args}, - std::{collections::HashSet, net::SocketAddr}, - trust_dns_resolver::{ - config::{NameServerConfig, NameServerConfigGroup, Protocol, ResolverConfig, ResolverOpts}, - Resolver, + crate::{args::ProcessedArgs, files}, + hickory_resolver::{ + config::{NameServerConfig, NameServerConfigGroup, ResolverConfig, ResolverOpts}, + name_server::TokioConnectionProvider, + proto::xfer::Protocol, + TokioResolver, }, + std::{collections::HashSet, net::SocketAddr}, }; -pub fn get_records(resolver: &Resolver, domain: &str) -> String { - if let Ok(ips) = resolver.ipv4_lookup(domain) { - ips.iter() - .map(std::string::ToString::to_string) - .next() - .expect("Failed to get IPV4.") - } else { - String::new() - } +pub fn get_records(resolver: &TokioResolver, domain: &str) -> String { + futures::executor::block_on(resolver.ipv4_lookup(domain)).map_or_else( + |_| String::new(), + |ips| { + ips.iter() + .map(std::string::ToString::to_string) + .next() + .expect("Failed to get IPV4.") + }, + ) } -pub fn get_resolver(nameserver_ips: HashSet, opts: ResolverOpts) -> Resolver { - let mut name_servers = NameServerConfigGroup::with_capacity(nameserver_ips.len() * 2); - name_servers.extend(nameserver_ips.into_iter().flat_map(|socket_addr| { - std::iter::once(NameServerConfig { - socket_addr, - protocol: Protocol::Udp, - tls_dns_name: None, - trust_nx_responses: false, - }) - .chain(std::iter::once(NameServerConfig { - socket_addr, - protocol: Protocol::Tcp, - tls_dns_name: None, - trust_nx_responses: false, - })) - })); - Resolver::new(ResolverConfig::from_parts(None, vec![], name_servers), opts).unwrap() +pub fn get_resolver(nameserver_ips: HashSet, opts: ResolverOpts) -> TokioResolver { + let mut name_servers = NameServerConfigGroup::with_capacity(nameserver_ips.len()); + name_servers.extend( + nameserver_ips + .into_iter() + .map(|socket_addr| NameServerConfig::new(socket_addr, Protocol::Udp)), + ); + + TokioResolver::builder_with_config( + ResolverConfig::from_parts(None, vec![], name_servers), + TokioConnectionProvider::default(), + ) + .with_options(opts) + .build() } -pub fn return_socket_address(args: &Args) -> HashSet { +pub fn return_socket_address(args: &ProcessedArgs) -> HashSet { let mut resolver_ips = HashSet::new(); if args.custom_resolvers { for r in &files::return_file_targets(args, args.resolvers.clone()) { diff --git a/src/resolver_engine.rs b/src/resolver_engine.rs index 8844004..dd0f37d 100644 --- a/src/resolver_engine.rs +++ b/src/resolver_engine.rs @@ -1,11 +1,12 @@ use { crate::{ - args, + args::ProcessedArgs, errors::Result, files, logic, networking, nmap::{self, Nmaprun}, - structs::{Args, ResolvData}, + structs::ResolvData, }, + hickory_resolver::config::{LookupIpStrategy, ResolverOpts}, log::{error, info}, prettytable, prettytable::Table, @@ -15,42 +16,35 @@ use { net::Ipv4Addr, time::Duration, }, - trust_dns_resolver::{ - config::{LookupIpStrategy, ResolverOpts}, - Resolver, - }, }; -lazy_static! { - pub static ref RESOLVERS: Vec = { - let args = args::get_args(); - let mut resolver_ips = Vec::new(); - if args.custom_resolvers { - for r in &files::return_file_targets(&args, args.resolvers.clone()) { - match r.parse::() { - Ok(ip) => resolver_ips.push(ip), - Err(e) => { - error!("Error parsing the {r} IP from resolvers file to IP address. Please check and try again. Error: {e}\n"); - std::process::exit(1) - } - } - } - } else { - for r in args.resolvers { - match r.parse::() { - Ok(ip) => resolver_ips.push(ip), - Err(e) => { - error!("Error parsing the {r} IP from resolvers file to IP address. Please check and try again. Error: {e}\n"); - std::process::exit(1) - } +fn create_resolvers(args: &ProcessedArgs) -> Vec { + let mut resolver_ips = Vec::new(); + if args.custom_resolvers { + for r in &files::return_file_targets(args, args.resolvers.clone()) { + match r.parse::() { + Ok(ip) => resolver_ips.push(ip), + Err(e) => { + error!("Error parsing the {r} IP from resolvers file to IP address. Please check and try again. Error: {e}\n"); + std::process::exit(1) } } } - resolver_ips - }; + } else { + for r in &args.resolvers { + match r.parse::() { + Ok(ip) => resolver_ips.push(ip), + Err(e) => { + error!("Error parsing the {r} IP from resolvers file to IP address. Please check and try again. Error: {e}\n"); + std::process::exit(1) + } + } + } + } + resolver_ips } -pub fn parallel_resolver_all(args: &mut Args) -> Result<()> { +pub fn parallel_resolver_all(args: &mut ProcessedArgs) -> Result<()> { if !files::check_full_path(&args.logs_dir) { error!("The logs directory {} does not exist.\n", args.logs_dir); std::process::exit(1) @@ -63,16 +57,14 @@ pub fn parallel_resolver_all(args: &mut Args) -> Result<()> { ); } - let opts = ResolverOpts { - timeout: Duration::from_secs(1), - ip_strategy: LookupIpStrategy::Ipv4Only, - num_concurrent_reqs: 1, - ..Default::default() - }; + let mut opts = ResolverOpts::default(); + opts.timeout = Duration::from_secs(1); + opts.ip_strategy = LookupIpStrategy::Ipv4Only; + opts.num_concurrent_reqs = 1; let resolver = networking::get_resolver(networking::return_socket_address(args), opts); - let data = parallel_resolver_engine(args, args.targets.clone(), resolver); + let data = parallel_resolver_engine(args, &args.targets, &resolver); let mut table = Table::new(); table.set_titles(row![ @@ -202,20 +194,22 @@ pub fn parallel_resolver_all(args: &mut Args) -> Result<()> { } fn parallel_resolver_engine( - args: &Args, - targets: HashSet, - resolver: Resolver, + args: &ProcessedArgs, + targets: &HashSet, + resolver: &hickory_resolver::TokioResolver, ) -> HashMap { let resolv_data: HashMap = targets .par_iter() .map(|target| { let fqdn_target = format!("{target}."); let mut resolv_data = ResolvData::default(); - resolv_data.ip = networking::get_records(&resolver, &fqdn_target); + resolv_data.ip = networking::get_records(resolver, &fqdn_target); (target.to_owned(), resolv_data) }) .collect(); + let resolvers = create_resolvers(args); + let mut nmap_ips: HashSet = resolv_data .values() .map(|resolv_data| resolv_data.ip.clone()) @@ -243,6 +237,7 @@ fn parallel_resolver_engine( &args.min_rate, &args.ports, args.fast_scan, + &resolvers, ) { Ok(nmap_data) => { nmap_data diff --git a/unimap.1 b/unimap.1 index da554d1..94fca47 100644 --- a/unimap.1 +++ b/unimap.1 @@ -1,81 +1,73 @@ .\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.49.3. -.TH UNIMAP "1" "August 2025" "Unimap 0.6.0" "User Commands" +.TH UNIMAP "1" "August 2025" "unimap 0.7.0" "User Commands" .SH NAME -Unimap \- manual page for Unimap 0.6.0 +unimap \- manual page for unimap 0.7.0 +.SH SYNOPSIS +.B unimap +[\fI\,OPTIONS\/\fR] .SH DESCRIPTION -Unimap 0.6.0 -Eduard Tolosa Scan only once by IP address and reduce scan times with Nmap for large amounts of data. -.SS "USAGE:" -.IP -unimap [FLAGS] [OPTIONS] -.SS "FLAGS:" +.SH OPTIONS .TP -\fB\-\-fast\-scan\fR -Use fast scanning for ports (no version detection). +\fB\-t\fR, \fB\-\-target\fR +Target host .TP -\fB\-h\fR, \fB\-\-help\fR -Prints help information -.TP -\fB\-k\fR, \fB\-\-no\-keep\-nmap\-logs\fR -Keep Nmap XML files created in the logs/ folder for every scanned IP. This data will be -useful for other tasks. +\fB\-f\fR, \fB\-\-files\fR +Use a list of targets written in a file as input .TP \fB\-o\fR, \fB\-\-output\fR -Write to an output file. The name of the output file will be unimap\-log\-date. +Write to an output file. The name of the output file will be unimap\-log\-date +.TP +\fB\-u\fR, \fB\-\-unique\-output\fR +Write the output in CSV format to the specified filename .TP \fB\-q\fR, \fB\-\-quiet\fR -Remove informative messages. +Remove informative messages +.TP +\fB\-\-threads\fR +Number of threads to use to perform the resolution +.TP +\fB\-\-resolvers\fR +Path to a file (or files) containing a list of DNS IP address. If no specified then a list of built\-in DNS servers is used +.TP +\fB\-\-ports\fR +Ports to scan. You can specify a range of ports, a list, or both. Put them inside double quotes, for example: "22, 80, 443, 1000\-5000" +.TP +\fB\-\-min\-rate\fR +Nmap \fB\-\-min\-rate\fR value for ports scan +.TP +\fB\-\-fast\-scan\fR +Use fast scanning for ports (no version detection) +.TP +\fB\-\-logs\-dir\fR +Path to save the CSV data of the process and/or Nmap XML files. Default to logs/ [default: unimap_logs] +.TP +\fB\-k\fR, \fB\-\-no\-keep\-nmap\-logs\fR +Keep Nmap XML files created in the logs/ folder for every scanned IP. This data will be useful for other tasks .TP \fB\-r\fR, \fB\-\-raw\-output\fR -Use raw output instead of a table. -.TP -\fB\-\-stdin\fR -Read from stdin instead of files or aguments. +Use raw output instead of a table .TP \fB\-\-url\-output\fR -Use HOST:IP output format. +Use HOST:IP output format +.TP +\fB\-\-stdin\fR +Read from stdin instead of files or arguments +.TP +\fB\-h\fR, \fB\-\-help\fR +Print help .TP \fB\-V\fR, \fB\-\-version\fR -Prints version information -.SS "OPTIONS:" -.TP -\fB\-\-resolvers\fR ... -Path to a file (or files) containing a list of DNS IP address. If no -specified then 1.6k of built\-in valid DNS servers from public\-dns.info are -used. -.TP -\fB\-f\fR, \fB\-\-file\fR ... -Use a list of targets writen in a file as input. -.TP -\fB\-\-logs\-dir\fR -Path to save the CSV data of the process and/or Nmap XML files. Default to -logs/. -.TP -\fB\-\-min\-rate\fR -Nmap \fB\-\-min\-rate\fR value for ports scan. -.TP -\fB\-\-ports\fR -Ports to scan. You can specify a range of ports, a list, or both. Put them -inside double quotes, for example: "22, 80, 443, 1000\-5000" -.TP -\fB\-t\fR, \fB\-\-target\fR -Target host. -.TP -\fB\-\-threads\fR -Number of threads to use to perform the resolution. -.TP -\fB\-u\fR, \fB\-\-unique\-output\fR -Write the output in CSV format to the specified filename. +Print version .SH "SEE ALSO" The full documentation for -.B Unimap +.B unimap is maintained as a Texinfo manual. If the .B info and -.B Unimap +.B unimap programs are properly installed at your site, the command .IP -.B info Unimap +.B info unimap .PP should give you access to the complete manual. From 20b6822834099d09cd3ac4d560eecad9fff91a0d Mon Sep 17 00:00:00 2001 From: RoomWithOutRoof <166608075+Jah-yee@users.noreply.github.com> Date: Sun, 28 Jun 2026 05:12:46 +0800 Subject: [PATCH 62/62] fix: correct sucessfully to successfully typo in echo message (#14) --- builder.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/builder.sh b/builder.sh index 8cf12d4..03d10c9 100755 --- a/builder.sh +++ b/builder.sh @@ -88,7 +88,7 @@ fi echo "Creating manpage..." if command -v help2man >/dev/null; then if help2man -o "$MANPAGE_DIR" "target/$LINUX_TARGET/release/$NAME"; then - echo "Manpage created sucessfully and saved in $MANPAGE_DIR" + echo "Manpage created successfully and saved in $MANPAGE_DIR" else echo "Error creating manpage." fi