[INFO] cloning repository https://github.com/splax-s/NLAG [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/splax-s/NLAG" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fsplax-s%2FNLAG", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fsplax-s%2FNLAG'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] 11e9f8f929ccce4705a09af2bd2c1d8f4e34699c [INFO] checking splax-s/NLAG against c999cef531ea9059e189e82fe0e82c5daf249bc9 for pr-152972 [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fsplax-s%2FNLAG" "/workspace/builds/worker-7-tc1/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-7-tc1/source'... [INFO] [stderr] done. [INFO] removed /workspace/builds/worker-7-tc1/source/rust-toolchain.toml [INFO] started tweaking git repo https://github.com/splax-s/NLAG [INFO] finished tweaking git repo https://github.com/splax-s/NLAG [INFO] tweaked toml for git repo https://github.com/splax-s/NLAG written to /workspace/builds/worker-7-tc1/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/splax-s/NLAG on toolchain c999cef531ea9059e189e82fe0e82c5daf249bc9 [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+c999cef531ea9059e189e82fe0e82c5daf249bc9" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] crate git repo https://github.com/splax-s/NLAG already has a lockfile, it will not be regenerated [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+c999cef531ea9059e189e82fe0e82c5daf249bc9" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] Downloading crates ... [INFO] [stderr] Downloaded reqwest v0.12.26 [INFO] [stderr] Downloaded fastbloom v0.14.0 [INFO] [stderr] Downloaded bcrypt v0.15.1 [INFO] [stderr] Downloaded axum v0.8.7 [INFO] [stderr] Downloaded prometheus v0.13.4 [INFO] [stderr] Downloaded protobuf v2.28.0 [INFO] [stderr] Downloaded clap_complete v4.5.61 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:3111399a4047eeb3a02b7a90e478d715f38a8c6669b5c4b49d30a17385265909" "sleep" "infinity", kill_on_drop: false }` [INFO] [stdout] 3e31289c955afb040cefdfabd782406edfa2cbc1fdb113d3ebcb8ac8599bcfe8 [INFO] running `Command { std: "docker" "start" "3e31289c955afb040cefdfabd782406edfa2cbc1fdb113d3ebcb8ac8599bcfe8", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "3e31289c955afb040cefdfabd782406edfa2cbc1fdb113d3ebcb8ac8599bcfe8", kill_on_drop: false }` [INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-w" "/opt/rustwide/workdir" "--user" "0:0" "3e31289c955afb040cefdfabd782406edfa2cbc1fdb113d3ebcb8ac8599bcfe8" "/opt/rustwide/cargo-home/bin/cargo" "+c999cef531ea9059e189e82fe0e82c5daf249bc9" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "3e31289c955afb040cefdfabd782406edfa2cbc1fdb113d3ebcb8ac8599bcfe8", kill_on_drop: false }` [INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-w" "/opt/rustwide/workdir" "--user" "0:0" "3e31289c955afb040cefdfabd782406edfa2cbc1fdb113d3ebcb8ac8599bcfe8" "/opt/rustwide/cargo-home/bin/cargo" "+c999cef531ea9059e189e82fe0e82c5daf249bc9" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }` [INFO] [stderr] Checking log v0.4.29 [INFO] [stderr] Checking memchr v2.7.6 [INFO] [stderr] Checking smallvec v1.15.1 [INFO] [stderr] Checking bytes v1.11.0 [INFO] [stderr] Compiling serde_core v1.0.228 [INFO] [stderr] Compiling find-msvc-tools v0.1.5 [INFO] [stderr] Checking tracing-core v0.1.35 [INFO] [stderr] Compiling syn v2.0.111 [INFO] [stderr] Checking signal-hook-registry v1.4.7 [INFO] [stderr] Checking socket2 v0.6.1 [INFO] [stderr] Checking zeroize v1.8.2 [INFO] [stderr] Checking digest v0.10.7 [INFO] [stderr] Checking getrandom v0.3.4 [INFO] [stderr] Checking indexmap v2.12.1 [INFO] [stderr] Compiling time-core v0.1.6 [INFO] [stderr] Checking deranged v0.5.5 [INFO] [stderr] Compiling cc v1.2.49 [INFO] [stderr] Checking rustls-pki-types v1.13.1 [INFO] [stderr] Checking mio v1.1.1 [INFO] [stderr] Compiling time-macros v0.2.24 [INFO] [stderr] Compiling thiserror v2.0.17 [INFO] [stderr] Checking rand_core v0.9.3 [INFO] [stderr] Checking parking_lot_core v0.9.12 [INFO] [stderr] Compiling rustls v0.23.35 [INFO] [stderr] Checking rand_chacha v0.9.0 [INFO] [stderr] Checking ahash v0.8.12 [INFO] [stderr] Checking parking_lot v0.12.5 [INFO] [stderr] Checking rand v0.9.2 [INFO] [stderr] Compiling serde_json v1.0.145 [INFO] [stderr] Checking litemap v0.8.1 [INFO] [stderr] Checking writeable v0.6.2 [INFO] [stderr] Compiling icu_properties_data v2.1.2 [INFO] [stderr] Checking data-encoding v2.9.0 [INFO] [stderr] Checking hashbrown v0.14.5 [INFO] [stderr] Compiling icu_normalizer_data v2.1.1 [INFO] [stderr] Checking sha1 v0.10.6 [INFO] [stderr] Compiling openssl v0.10.75 [INFO] [stderr] Compiling quinn-udp v0.5.14 [INFO] [stderr] Checking rustls-native-certs v0.8.2 [INFO] [stderr] Checking webpki-roots v1.0.4 [INFO] [stderr] Checking minimal-lexical v0.2.1 [INFO] [stderr] Checking tinyvec v1.10.0 [INFO] [stderr] Checking aho-corasick v1.1.4 [INFO] [stderr] Compiling quinn v0.11.9 [INFO] [stderr] Checking pem v3.0.6 [INFO] [stderr] Checking http v1.4.0 [INFO] [stderr] Checking nom v7.1.3 [INFO] [stderr] Checking lru-slab v0.1.2 [INFO] [stderr] Checking sha2 v0.10.9 [INFO] [stderr] Checking encoding_rs v0.8.35 [INFO] [stderr] Checking clap_builder v4.5.53 [INFO] [stderr] Checking webpki-roots v0.26.11 [INFO] [stderr] Checking rustls-pemfile v2.2.0 [INFO] [stderr] Checking iri-string v0.7.9 [INFO] [stderr] Checking dlv-list v0.5.2 [INFO] [stderr] Checking tracing-log v0.2.0 [INFO] [stderr] Checking ucd-trie v0.1.7 [INFO] [stderr] Checking winnow v0.7.14 [INFO] [stderr] Checking pest v2.8.4 [INFO] [stderr] Checking cipher v0.4.4 [INFO] [stderr] Checking fastbloom v0.14.0 [INFO] [stderr] Checking ordered-multimap v0.7.3 [INFO] [stderr] Checking hashlink v0.8.4 [INFO] [stderr] Checking arraydeque v0.5.1 [INFO] [stderr] Checking time v0.3.44 [INFO] [stderr] Compiling ring v0.17.14 [INFO] [stderr] Compiling openssl-sys v0.9.111 [INFO] [stderr] Checking rust-ini v0.20.0 [INFO] [stderr] Checking blowfish v0.9.1 [INFO] [stderr] Checking signal-hook v0.3.18 [INFO] [stderr] Checking http-body v1.0.1 [INFO] [stderr] Checking regex-automata v0.4.13 [INFO] [stderr] Compiling curve25519-dalek v4.1.3 [INFO] [stderr] Checking http-body-util v0.1.3 [INFO] [stderr] Checking convert_case v0.6.0 [INFO] [stderr] Checking dashmap v5.5.3 [INFO] [stderr] Compiling native-tls v0.2.14 [INFO] [stderr] Compiling oid-registry v0.7.1 [INFO] [stderr] Compiling protobuf v2.28.0 [INFO] [stderr] Checking pathdiff v0.2.3 [INFO] [stderr] Compiling instability v0.3.10 [INFO] [stderr] Compiling portable-atomic v1.11.1 [INFO] [stderr] Checking itertools v0.13.0 [INFO] [stderr] Checking signal-hook-mio v0.2.5 [INFO] [stderr] Checking yaml-rust2 v0.8.1 [INFO] [stderr] Checking bcrypt v0.15.1 [INFO] [stderr] Checking castaway v0.2.4 [INFO] [stderr] Compiling prometheus v0.13.4 [INFO] [stderr] Compiling rustix v1.1.2 [INFO] [stderr] Checking signature v2.2.0 [INFO] [stderr] Checking ed25519 v2.2.3 [INFO] [stderr] Checking bitflags v2.10.0 [INFO] [stderr] Checking uuid v1.19.0 [INFO] [stderr] Checking serde_path_to_error v0.1.20 [INFO] [stderr] Checking serde_bytes v0.11.19 [INFO] [stderr] Checking raw-cpuid v11.6.0 [INFO] [stderr] Checking rustix v0.38.44 [INFO] [stderr] Checking compact_str v0.8.1 [INFO] [stderr] Compiling pest_meta v2.8.4 [INFO] [stderr] Checking dirs-sys v0.4.1 [INFO] [stderr] Checking yasna v0.5.2 [INFO] [stderr] Checking lru v0.12.5 [INFO] [stderr] Checking rusticata-macros v4.1.0 [INFO] [stderr] Checking rtoolbox v0.0.3 [INFO] [stderr] Checking spinning_top v0.3.0 [INFO] [stderr] Checking nonzero_ext v0.3.0 [INFO] [stderr] Checking futures-timer v3.0.3 [INFO] [stderr] Checking cassowary v0.3.0 [INFO] [stderr] Checking no-std-compat v0.4.1 [INFO] [stderr] Checking rpassword v7.4.0 [INFO] [stderr] Checking dirs v5.0.1 [INFO] [stderr] Checking hmac v0.12.1 [INFO] [stderr] Checking crossterm v0.28.1 [INFO] [stderr] Checking matchers v0.2.0 [INFO] [stderr] Checking regex v1.12.2 [INFO] [stderr] Checking unicode-truncate v1.1.0 [INFO] [stderr] Checking quanta v0.12.6 [INFO] [stderr] Checking tempfile v3.23.0 [INFO] [stderr] Compiling synstructure v0.13.2 [INFO] [stderr] Compiling pest_generator v2.8.4 [INFO] [stderr] Compiling darling_core v0.20.11 [INFO] [stderr] Compiling tracing-attributes v0.1.31 [INFO] [stderr] Compiling serde_derive v1.0.228 [INFO] [stderr] Compiling tokio-macros v2.6.0 [INFO] [stderr] Compiling futures-macro v0.3.31 [INFO] [stderr] Compiling displaydoc v0.2.5 [INFO] [stderr] Compiling zerovec-derive v0.11.2 [INFO] [stderr] Compiling thiserror-impl v1.0.69 [INFO] [stderr] Compiling thiserror-impl v2.0.17 [INFO] [stderr] Compiling openssl-macros v0.1.1 [INFO] [stderr] Compiling async-trait v0.1.89 [INFO] [stderr] Compiling clap_derive v4.5.49 [INFO] [stderr] Compiling pest_derive v2.8.4 [INFO] [stderr] Checking rustls-webpki v0.103.8 [INFO] [stderr] Checking rcgen v0.13.2 [INFO] [stderr] Compiling zerofrom-derive v0.1.6 [INFO] [stderr] Compiling yoke-derive v0.8.1 [INFO] [stderr] Compiling asn1-rs-derive v0.5.1 [INFO] [stderr] Compiling asn1-rs-impl v0.2.0 [INFO] [stderr] Compiling strum_macros v0.26.4 [INFO] [stderr] Checking tokio v1.48.0 [INFO] [stderr] Compiling curve25519-dalek-derive v0.1.1 [INFO] [stderr] Checking futures-util v0.3.31 [INFO] [stderr] Checking tracing v0.1.43 [INFO] [stderr] Checking zerofrom v0.1.6 [INFO] [stderr] Checking yoke v0.8.1 [INFO] [stderr] Checking clap v4.5.53 [INFO] [stderr] Checking axum-core v0.5.5 [INFO] [stderr] Checking tower-http v0.5.2 [INFO] [stderr] Checking tower v0.4.13 [INFO] [stderr] Checking zerovec v0.11.5 [INFO] [stderr] Checking zerotrie v0.2.3 [INFO] [stderr] Checking thiserror v1.0.69 [INFO] [stderr] Checking clap_complete v4.5.61 [INFO] [stderr] Checking tungstenite v0.28.0 [INFO] [stderr] Checking asn1-rs v0.6.2 [INFO] [stderr] Checking simple_asn1 v0.6.3 [INFO] [stderr] Checking tungstenite v0.24.0 [INFO] [stderr] Checking tinystr v0.8.2 [INFO] [stderr] Checking potential_utf v0.1.4 [INFO] [stderr] Checking icu_locale_core v2.1.1 [INFO] [stderr] Checking icu_collections v2.1.1 [INFO] [stderr] Checking strum v0.26.3 [INFO] [stderr] Checking ed25519-dalek v2.2.0 [INFO] [stderr] Compiling darling_macro v0.20.11 [INFO] [stderr] Compiling darling v0.20.11 [INFO] [stderr] Checking icu_provider v2.1.1 [INFO] [stderr] Checking serde v1.0.228 [INFO] [stderr] Checking ratatui v0.29.0 [INFO] [stderr] Checking serde_urlencoded v0.7.1 [INFO] [stderr] Checking chrono v0.4.42 [INFO] [stderr] Checking bincode v1.3.3 [INFO] [stderr] Checking toml_datetime v0.6.11 [INFO] [stderr] Checking tracing-serde v0.2.0 [INFO] [stderr] Checking serde_spanned v0.6.9 [INFO] [stderr] Checking ron v0.8.1 [INFO] [stderr] Checking json5 v0.4.1 [INFO] [stderr] Checking icu_properties v2.1.2 [INFO] [stderr] Checking icu_normalizer v2.1.1 [INFO] [stderr] Checking tracing-subscriber v0.3.22 [INFO] [stderr] Checking toml_edit v0.22.27 [INFO] [stderr] Checking serde_yaml v0.9.34+deprecated [INFO] [stderr] Checking jsonwebtoken v9.3.1 [INFO] [stderr] Checking der-parser v9.0.0 [INFO] [stderr] Checking rustls-platform-verifier v0.6.2 [INFO] [stderr] Checking quinn-proto v0.11.13 [INFO] [stderr] Checking x509-parser v0.16.0 [INFO] [stderr] Checking idna_adapter v1.2.1 [INFO] [stderr] Checking idna v1.1.0 [INFO] [stderr] Checking url v2.5.7 [INFO] [stderr] Checking futures-executor v0.3.31 [INFO] [stderr] Checking axum-core v0.4.5 [INFO] [stderr] Checking futures v0.3.31 [INFO] [stderr] Checking toml v0.8.23 [INFO] [stderr] Checking governor v0.6.3 [INFO] [stderr] Checking tokio-util v0.7.17 [INFO] [stderr] Checking tower v0.5.2 [INFO] [stderr] Checking tokio-rustls v0.26.4 [INFO] [stderr] Checking tokio-native-tls v0.3.1 [INFO] [stderr] Checking tokio-tungstenite v0.28.0 [INFO] [stderr] Checking tokio-tungstenite v0.24.0 [INFO] [stderr] Checking config v0.14.1 [INFO] [stderr] Checking h2 v0.4.12 [INFO] [stderr] Checking tower-http v0.6.8 [INFO] [stderr] Checking nlag-common v0.1.0 (/opt/rustwide/workdir/crates/nlag-common) [INFO] [stderr] Checking hyper v1.8.1 [INFO] [stderr] Checking hyper-util v0.1.19 [INFO] [stderr] Checking hyper-tls v0.6.0 [INFO] [stderr] Checking hyper-rustls v0.27.7 [INFO] [stderr] Checking axum v0.8.7 [INFO] [stderr] Checking axum v0.7.9 [INFO] [stderr] Checking reqwest v0.12.26 [INFO] [stderr] Checking nlag-agent v0.1.0 (/opt/rustwide/workdir/crates/nlag-agent) [INFO] [stderr] Checking nlag-control v0.1.0 (/opt/rustwide/workdir/crates/nlag-control) [INFO] [stdout] warning: unused import: `debug` [INFO] [stdout] --> crates/nlag-agent/src/file_server.rs:29:15 [INFO] [stdout] | [INFO] [stdout] 29 | use tracing::{debug, info, warn}; [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Checking nlag-edge v0.1.0 (/opt/rustwide/workdir/crates/nlag-edge) [INFO] [stdout] warning: unused import: `debug` [INFO] [stdout] --> crates/nlag-agent/src/file_server.rs:29:15 [INFO] [stdout] | [INFO] [stdout] 29 | use tracing::{debug, info, warn}; [INFO] [stdout] | ^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Timelike` [INFO] [stdout] --> crates/nlag-control/src/analytics.rs:21:29 [INFO] [stdout] | [INFO] [stdout] 21 | use chrono::{DateTime, Utc, Timelike, Datelike}; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `tracing::debug` [INFO] [stdout] --> crates/nlag-control/src/analytics.rs:26:5 [INFO] [stdout] | [INFO] [stdout] 26 | use tracing::debug; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unexpected `cfg` condition value: `dns-verification` [INFO] [stdout] --> crates/nlag-control/src/domains.rs:408:15 [INFO] [stdout] | [INFO] [stdout] 408 | #[cfg(feature = "dns-verification")] [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: expected values for `feature` are: `default`, `postgres`, and `sqlx` [INFO] [stdout] = help: consider adding `dns-verification` as a feature in `Cargo.toml` [INFO] [stdout] = note: see for more information about checking conditional configuration [INFO] [stdout] = note: `#[warn(unexpected_cfgs)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unexpected `cfg` condition value: `dns-verification` [INFO] [stdout] --> crates/nlag-control/src/domains.rs:425:19 [INFO] [stdout] | [INFO] [stdout] 425 | #[cfg(not(feature = "dns-verification"))] [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: expected values for `feature` are: `default`, `postgres`, and `sqlx` [INFO] [stdout] = help: consider adding `dns-verification` as a feature in `Cargo.toml` [INFO] [stdout] = note: see for more information about checking conditional configuration [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unexpected `cfg` condition value: `dns-verification` [INFO] [stdout] --> crates/nlag-control/src/domains.rs:436:15 [INFO] [stdout] | [INFO] [stdout] 436 | #[cfg(feature = "dns-verification")] [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: expected values for `feature` are: `default`, `postgres`, and `sqlx` [INFO] [stdout] = help: consider adding `dns-verification` as a feature in `Cargo.toml` [INFO] [stdout] = note: see for more information about checking conditional configuration [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unexpected `cfg` condition value: `dns-verification` [INFO] [stdout] --> crates/nlag-control/src/domains.rs:456:19 [INFO] [stdout] | [INFO] [stdout] 456 | #[cfg(not(feature = "dns-verification"))] [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: expected values for `feature` are: `default`, `postgres`, and `sqlx` [INFO] [stdout] = help: consider adding `dns-verification` as a feature in `Cargo.toml` [INFO] [stdout] = note: see for more information about checking conditional configuration [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `error` and `warn` [INFO] [stdout] --> crates/nlag-control/src/oauth.rs:21:22 [INFO] [stdout] | [INFO] [stdout] 21 | use tracing::{debug, error, info, warn}; [INFO] [stdout] | ^^^^^ ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `parking_lot::RwLock` [INFO] [stdout] --> crates/nlag-control/src/sla.rs:22:5 [INFO] [stdout] | [INFO] [stdout] 22 | use parking_lot::RwLock; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `info` [INFO] [stdout] --> crates/nlag-control/src/sla.rs:26:22 [INFO] [stdout] | [INFO] [stdout] 26 | use tracing::{debug, info, warn}; [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `warn` [INFO] [stdout] --> crates/nlag-control/src/sso.rs:34:28 [INFO] [stdout] | [INFO] [stdout] 34 | use tracing::{debug, info, warn}; [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `debug` and `warn` [INFO] [stdout] --> crates/nlag-control/src/teams.rs:25:15 [INFO] [stdout] | [INFO] [stdout] 25 | use tracing::{debug, info, warn}; [INFO] [stdout] | ^^^^^ ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `Timelike` [INFO] [stdout] --> crates/nlag-control/src/analytics.rs:21:29 [INFO] [stdout] | [INFO] [stdout] 21 | use chrono::{DateTime, Utc, Timelike, Datelike}; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `tracing::debug` [INFO] [stdout] --> crates/nlag-control/src/analytics.rs:26:5 [INFO] [stdout] | [INFO] [stdout] 26 | use tracing::debug; [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unexpected `cfg` condition value: `dns-verification` [INFO] [stdout] --> crates/nlag-control/src/domains.rs:408:15 [INFO] [stdout] | [INFO] [stdout] 408 | #[cfg(feature = "dns-verification")] [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: expected values for `feature` are: `default`, `postgres`, and `sqlx` [INFO] [stdout] = help: consider adding `dns-verification` as a feature in `Cargo.toml` [INFO] [stdout] = note: see for more information about checking conditional configuration [INFO] [stdout] = note: `#[warn(unexpected_cfgs)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unexpected `cfg` condition value: `dns-verification` [INFO] [stdout] --> crates/nlag-control/src/domains.rs:425:19 [INFO] [stdout] | [INFO] [stdout] 425 | #[cfg(not(feature = "dns-verification"))] [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: expected values for `feature` are: `default`, `postgres`, and `sqlx` [INFO] [stdout] = help: consider adding `dns-verification` as a feature in `Cargo.toml` [INFO] [stdout] = note: see for more information about checking conditional configuration [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unexpected `cfg` condition value: `dns-verification` [INFO] [stdout] --> crates/nlag-control/src/domains.rs:436:15 [INFO] [stdout] | [INFO] [stdout] 436 | #[cfg(feature = "dns-verification")] [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: expected values for `feature` are: `default`, `postgres`, and `sqlx` [INFO] [stdout] = help: consider adding `dns-verification` as a feature in `Cargo.toml` [INFO] [stdout] = note: see for more information about checking conditional configuration [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unexpected `cfg` condition value: `dns-verification` [INFO] [stdout] --> crates/nlag-control/src/domains.rs:456:19 [INFO] [stdout] | [INFO] [stdout] 456 | #[cfg(not(feature = "dns-verification"))] [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: expected values for `feature` are: `default`, `postgres`, and `sqlx` [INFO] [stdout] = help: consider adding `dns-verification` as a feature in `Cargo.toml` [INFO] [stdout] = note: see for more information about checking conditional configuration [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `error` and `warn` [INFO] [stdout] --> crates/nlag-control/src/oauth.rs:21:22 [INFO] [stdout] | [INFO] [stdout] 21 | use tracing::{debug, error, info, warn}; [INFO] [stdout] | ^^^^^ ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `parking_lot::RwLock` [INFO] [stdout] --> crates/nlag-control/src/sla.rs:22:5 [INFO] [stdout] | [INFO] [stdout] 22 | use parking_lot::RwLock; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `info` [INFO] [stdout] --> crates/nlag-control/src/sla.rs:26:22 [INFO] [stdout] | [INFO] [stdout] 26 | use tracing::{debug, info, warn}; [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `warn` [INFO] [stdout] --> crates/nlag-control/src/sso.rs:34:28 [INFO] [stdout] | [INFO] [stdout] 34 | use tracing::{debug, info, warn}; [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `debug` and `warn` [INFO] [stdout] --> crates/nlag-control/src/teams.rs:25:15 [INFO] [stdout] | [INFO] [stdout] 25 | use tracing::{debug, info, warn}; [INFO] [stdout] | ^^^^^ ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `warn` [INFO] [stdout] --> crates/nlag-edge/src/circuit_breaker.rs:32:28 [INFO] [stdout] | [INFO] [stdout] 32 | use tracing::{debug, info, warn}; [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Duration` and `Instant` [INFO] [stdout] --> crates/nlag-edge/src/event_webhooks.rs:12:17 [INFO] [stdout] | [INFO] [stdout] 12 | use std::time::{Duration, Instant}; [INFO] [stdout] | ^^^^^^^^ ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `SocketAddr` [INFO] [stdout] --> crates/nlag-edge/src/ssh_tunnel.rs:31:24 [INFO] [stdout] | [INFO] [stdout] 31 | use std::net::{IpAddr, SocketAddr}; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `warn` [INFO] [stdout] --> crates/nlag-edge/src/ssh_tunnel.rs:41:28 [INFO] [stdout] | [INFO] [stdout] 41 | use tracing::{debug, info, warn}; [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `warn` [INFO] [stdout] --> crates/nlag-edge/src/geo.rs:26:28 [INFO] [stdout] | [INFO] [stdout] 26 | use tracing::{debug, info, warn}; [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `warn` [INFO] [stdout] --> crates/nlag-edge/src/circuit_breaker.rs:32:28 [INFO] [stdout] | [INFO] [stdout] 32 | use tracing::{debug, info, warn}; [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused imports: `Duration` and `Instant` [INFO] [stdout] --> crates/nlag-edge/src/event_webhooks.rs:12:17 [INFO] [stdout] | [INFO] [stdout] 12 | use std::time::{Duration, Instant}; [INFO] [stdout] | ^^^^^^^^ ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `SocketAddr` [INFO] [stdout] --> crates/nlag-edge/src/ssh_tunnel.rs:31:24 [INFO] [stdout] | [INFO] [stdout] 31 | use std::net::{IpAddr, SocketAddr}; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `warn` [INFO] [stdout] --> crates/nlag-edge/src/ssh_tunnel.rs:41:28 [INFO] [stdout] | [INFO] [stdout] 41 | use tracing::{debug, info, warn}; [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused import: `warn` [INFO] [stdout] --> crates/nlag-edge/src/geo.rs:26:28 [INFO] [stdout] | [INFO] [stdout] 26 | use tracing::{debug, info, warn}; [INFO] [stdout] | ^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `domain` is never read [INFO] [stdout] --> crates/nlag-agent/src/agent_config.rs:171:9 [INFO] [stdout] | [INFO] [stdout] 159 | pub struct SimpleTunnelConfig { [INFO] [stdout] | ------------------ field in this struct [INFO] [stdout] ... [INFO] [stdout] 171 | pub domain: Option, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `SimpleTunnelConfig` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `effective_tunnel_config` is never used [INFO] [stdout] --> crates/nlag-agent/src/agent_config.rs:550:12 [INFO] [stdout] | [INFO] [stdout] 253 | impl AgentConfig { [INFO] [stdout] | ---------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 550 | pub fn effective_tunnel_config(&self, tunnel: &TunnelConfig) -> TunnelConfig { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `ConfigManager` is never constructed [INFO] [stdout] --> crates/nlag-agent/src/agent_config.rs:609:12 [INFO] [stdout] | [INFO] [stdout] 609 | pub struct ConfigManager { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new`, `from_file`, `config`, `reload`, and `update` are never used [INFO] [stdout] --> crates/nlag-agent/src/agent_config.rs:618:12 [INFO] [stdout] | [INFO] [stdout] 616 | impl ConfigManager { [INFO] [stdout] | ------------------ associated items in this implementation [INFO] [stdout] 617 | /// Create a new config manager [INFO] [stdout] 618 | pub fn new(config: AgentConfig) -> Arc { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 626 | pub fn from_file(path: &Path) -> Result, ConfigError> { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 637 | pub fn config(&self) -> AgentConfig { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 642 | pub fn reload(&self) -> Result<(), ConfigError> { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 655 | pub fn update(&self, config: AgentConfig) -> Result<(), ConfigError> { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `max_tunnels` is never used [INFO] [stdout] --> crates/nlag-agent/src/auth.rs:58:12 [INFO] [stdout] | [INFO] [stdout] 56 | impl UserTier { [INFO] [stdout] | ------------- method in this implementation [INFO] [stdout] 57 | /// Get the maximum number of tunnels allowed for this tier [INFO] [stdout] 58 | pub fn max_tunnels(&self) -> u32 { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `can_create_tunnel` is never used [INFO] [stdout] --> crates/nlag-agent/src/auth.rs:253:14 [INFO] [stdout] | [INFO] [stdout] 253 | pub async fn can_create_tunnel(creds: &Credentials) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `FileServerError` is never used [INFO] [stdout] --> crates/nlag-agent/src/file_server.rs:33:10 [INFO] [stdout] | [INFO] [stdout] 33 | pub enum FileServerError { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: type alias `Result` is never used [INFO] [stdout] --> crates/nlag-agent/src/file_server.rs:50:10 [INFO] [stdout] | [INFO] [stdout] 50 | pub type Result = std::result::Result; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `FileServerConfig` is never constructed [INFO] [stdout] --> crates/nlag-agent/src/file_server.rs:54:12 [INFO] [stdout] | [INFO] [stdout] 54 | pub struct FileServerConfig { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `default_index_files` is never used [INFO] [stdout] --> crates/nlag-agent/src/file_server.rs:99:4 [INFO] [stdout] | [INFO] [stdout] 99 | fn default_index_files() -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `default_true` is never used [INFO] [stdout] --> crates/nlag-agent/src/file_server.rs:103:4 [INFO] [stdout] | [INFO] [stdout] 103 | fn default_true() -> bool { true } [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `default_cache_age` is never used [INFO] [stdout] --> crates/nlag-agent/src/file_server.rs:104:4 [INFO] [stdout] | [INFO] [stdout] 104 | fn default_cache_age() -> u64 { 3600 } // 1 hour [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `default_mime` is never used [INFO] [stdout] --> crates/nlag-agent/src/file_server.rs:105:4 [INFO] [stdout] | [INFO] [stdout] 105 | fn default_mime() -> String { "application/octet-stream".to_string() } [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new`, `no_listing`, `with_index`, and `with_cache_age` are never used [INFO] [stdout] --> crates/nlag-agent/src/file_server.rs:127:12 [INFO] [stdout] | [INFO] [stdout] 125 | impl FileServerConfig { [INFO] [stdout] | --------------------- associated items in this implementation [INFO] [stdout] 126 | /// Create a new file server config for a directory [INFO] [stdout] 127 | pub fn new>(root: P) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 135 | pub fn no_listing(mut self) -> Self { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 141 | pub fn with_index, S: Into>(mut self, files: I) -> Self { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 147 | pub fn with_cache_age(mut self, seconds: u64) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `FileResponse` is never constructed [INFO] [stdout] --> crates/nlag-agent/src/file_server.rs:155:12 [INFO] [stdout] | [INFO] [stdout] 155 | pub struct FileResponse { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new`, `header`, `body`, `not_found`, and `forbidden` are never used [INFO] [stdout] --> crates/nlag-agent/src/file_server.rs:166:12 [INFO] [stdout] | [INFO] [stdout] 164 | impl FileResponse { [INFO] [stdout] | ----------------- associated items in this implementation [INFO] [stdout] 165 | /// Create a new response [INFO] [stdout] 166 | pub fn new(status: u16) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 175 | pub fn header(mut self, key: &str, value: &str) -> Self { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 181 | pub fn body(mut self, body: Vec) -> Self { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 187 | pub fn not_found(path: &str) -> Self { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 207 | pub fn forbidden(path: &str) -> Self { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `FileServer` is never constructed [INFO] [stdout] --> crates/nlag-agent/src/file_server.rs:228:12 [INFO] [stdout] | [INFO] [stdout] 228 | pub struct FileServer { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated items are never used [INFO] [stdout] --> crates/nlag-agent/src/file_server.rs:234:12 [INFO] [stdout] | [INFO] [stdout] 232 | impl FileServer { [INFO] [stdout] | --------------- associated items in this implementation [INFO] [stdout] 233 | /// Create a new file server [INFO] [stdout] 234 | pub fn new(config: FileServerConfig) -> Result { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 254 | pub fn handle_request( [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 316 | fn resolve_path(&self, url_path: &str) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 352 | fn serve_file( [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 451 | fn read_file(&self, path: &Path, range: Option<(u64, u64)>) -> Result<(Vec, Option)> { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 472 | fn serve_directory(&self, path: &Path, url_path: &str) -> FileResponse { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 522 | fn render_directory_listing(&self, path: &str, entries: &[DirEntry]) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 611 | fn handle_not_found(&self, path: &str) -> FileResponse { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 628 | fn get_mime_type(&self, path: &Path) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 692 | fn generate_etag(&self, metadata: &Metadata, path: &Path) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 716 | fn get_last_modified(&self, metadata: &Metadata) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `DirEntry` is never constructed [INFO] [stdout] --> crates/nlag-agent/src/file_server.rs:726:8 [INFO] [stdout] | [INFO] [stdout] 726 | struct DirEntry { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `parse_range` is never used [INFO] [stdout] --> crates/nlag-agent/src/file_server.rs:734:4 [INFO] [stdout] | [INFO] [stdout] 734 | fn parse_range(range: &str, file_size: u64) -> Option<(u64, u64)> { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `format_size` is never used [INFO] [stdout] --> crates/nlag-agent/src/file_server.rs:765:4 [INFO] [stdout] | [INFO] [stdout] 765 | fn format_size(bytes: u64) -> String { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `html_escape` is never used [INFO] [stdout] --> crates/nlag-agent/src/file_server.rs:782:4 [INFO] [stdout] | [INFO] [stdout] 782 | fn html_escape(s: &str) -> String { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: constant `MAX_REQUESTS_PER_TUNNEL` is never used [INFO] [stdout] --> crates/nlag-agent/src/inspect.rs:27:7 [INFO] [stdout] | [INFO] [stdout] 27 | const MAX_REQUESTS_PER_TUNNEL: usize = 1000; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `RequestStarted` and `ResponseReceived` are never constructed [INFO] [stdout] --> crates/nlag-agent/src/inspect.rs:67:5 [INFO] [stdout] | [INFO] [stdout] 65 | pub enum InspectorEvent { [INFO] [stdout] | -------------- variants in this enum [INFO] [stdout] 66 | /// New request started [INFO] [stdout] 67 | RequestStarted(CapturedRequest), [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] 68 | /// Response received [INFO] [stdout] 69 | ResponseReceived { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `InspectorEvent` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `record_request`, `record_response`, and `sync_to_dashboard` are never used [INFO] [stdout] --> crates/nlag-agent/src/inspect.rs:128:12 [INFO] [stdout] | [INFO] [stdout] 107 | impl LocalInspector { [INFO] [stdout] | ------------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 128 | pub fn record_request(&self, request: CapturedRequest) { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 160 | pub fn record_response(&self, request_id: &str, status: u16, duration_ms: u64, [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 251 | fn sync_to_dashboard(&self, request: CapturedRequest) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `sync_traffic` is never used [INFO] [stdout] --> crates/nlag-agent/src/tunnel/mod.rs:95:12 [INFO] [stdout] | [INFO] [stdout] 43 | impl DashboardSync { [INFO] [stdout] | ------------------ method in this implementation [INFO] [stdout] ... [INFO] [stdout] 95 | pub fn sync_traffic(&self, method: &str, path: &str, status: u16, duration_ms: u64) { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `handle_stream` is never used [INFO] [stdout] --> crates/nlag-agent/src/tunnel/forwarder.rs:469:10 [INFO] [stdout] | [INFO] [stdout] 469 | async fn handle_stream( [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `domain` is never read [INFO] [stdout] --> crates/nlag-agent/src/agent_config.rs:171:9 [INFO] [stdout] | [INFO] [stdout] 159 | pub struct SimpleTunnelConfig { [INFO] [stdout] | ------------------ field in this struct [INFO] [stdout] ... [INFO] [stdout] 171 | pub domain: Option, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `SimpleTunnelConfig` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `config_path` is never read [INFO] [stdout] --> crates/nlag-agent/src/agent_config.rs:613:5 [INFO] [stdout] | [INFO] [stdout] 609 | pub struct ConfigManager { [INFO] [stdout] | ------------- field in this struct [INFO] [stdout] ... [INFO] [stdout] 613 | config_path: Option, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `from_file` and `reload` are never used [INFO] [stdout] --> crates/nlag-agent/src/agent_config.rs:626:12 [INFO] [stdout] | [INFO] [stdout] 616 | impl ConfigManager { [INFO] [stdout] | ------------------ associated items in this implementation [INFO] [stdout] ... [INFO] [stdout] 626 | pub fn from_file(path: &Path) -> Result, ConfigError> { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 642 | pub fn reload(&self) -> Result<(), ConfigError> { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `can_create_tunnel` is never used [INFO] [stdout] --> crates/nlag-agent/src/auth.rs:253:14 [INFO] [stdout] | [INFO] [stdout] 253 | pub async fn can_create_tunnel(creds: &Credentials) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `no_listing`, `with_index`, and `with_cache_age` are never used [INFO] [stdout] --> crates/nlag-agent/src/file_server.rs:135:12 [INFO] [stdout] | [INFO] [stdout] 125 | impl FileServerConfig { [INFO] [stdout] | --------------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 135 | pub fn no_listing(mut self) -> Self { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 141 | pub fn with_index, S: Into>(mut self, files: I) -> Self { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 147 | pub fn with_cache_age(mut self, seconds: u64) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `sync_traffic` is never used [INFO] [stdout] --> crates/nlag-agent/src/tunnel/mod.rs:95:12 [INFO] [stdout] | [INFO] [stdout] 43 | impl DashboardSync { [INFO] [stdout] | ------------------ method in this implementation [INFO] [stdout] ... [INFO] [stdout] 95 | pub fn sync_traffic(&self, method: &str, path: &str, status: u16, duration_ms: u64) { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `handle_stream` is never used [INFO] [stdout] --> crates/nlag-agent/src/tunnel/forwarder.rs:469:10 [INFO] [stdout] | [INFO] [stdout] 469 | async fn handle_stream( [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> crates/nlag-control/src/analytics.rs:710:17 [INFO] [stdout] | [INFO] [stdout] 710 | let mut event = test_event(200, i as f64); [INFO] [stdout] | ----^^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `DomainError` is never used [INFO] [stdout] --> crates/nlag-control/src/domains.rs:28:10 [INFO] [stdout] | [INFO] [stdout] 28 | pub enum DomainError { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: type alias `Result` is never used [INFO] [stdout] --> crates/nlag-control/src/domains.rs:57:10 [INFO] [stdout] | [INFO] [stdout] 57 | pub type Result = std::result::Result; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `DomainType` is never used [INFO] [stdout] --> crates/nlag-control/src/domains.rs:62:10 [INFO] [stdout] | [INFO] [stdout] 62 | pub enum DomainType { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `VerificationStatus` is never used [INFO] [stdout] --> crates/nlag-control/src/domains.rs:74:10 [INFO] [stdout] | [INFO] [stdout] 74 | pub enum VerificationStatus { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `ReservedDomain` is never constructed [INFO] [stdout] --> crates/nlag-control/src/domains.rs:87:12 [INFO] [stdout] | [INFO] [stdout] 87 | pub struct ReservedDomain { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new_subdomain`, `new_custom`, `is_active`, and `needs_reverification` are never used [INFO] [stdout] --> crates/nlag-control/src/domains.rs:137:12 [INFO] [stdout] | [INFO] [stdout] 135 | impl ReservedDomain { [INFO] [stdout] | ------------------- associated items in this implementation [INFO] [stdout] 136 | /// Create a new subdomain reservation [INFO] [stdout] 137 | pub fn new_subdomain(subdomain: &str, base_domain: &str, user_id: &str) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 156 | pub fn new_custom(domain: &str, user_id: &str, cname_target: &str) -> Self { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 176 | pub fn is_active(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 182 | pub fn needs_reverification(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `DomainLimits` is never constructed [INFO] [stdout] --> crates/nlag-control/src/domains.rs:195:12 [INFO] [stdout] | [INFO] [stdout] 195 | pub struct DomainLimits { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated functions `free`, `pro`, and `enterprise` are never used [INFO] [stdout] --> crates/nlag-control/src/domains.rs:222:12 [INFO] [stdout] | [INFO] [stdout] 220 | impl DomainLimits { [INFO] [stdout] | ----------------- associated functions in this implementation [INFO] [stdout] 221 | /// Free tier limits [INFO] [stdout] 222 | pub fn free() -> Self { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 227 | pub fn pro() -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 238 | pub fn enterprise() -> Self { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `DomainManager` is never constructed [INFO] [stdout] --> crates/nlag-control/src/domains.rs:250:12 [INFO] [stdout] | [INFO] [stdout] 250 | pub struct DomainManager { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated items are never used [INFO] [stdout] --> crates/nlag-control/src/domains.rs:272:12 [INFO] [stdout] | [INFO] [stdout] 270 | impl DomainManager { [INFO] [stdout] | ------------------ associated items in this implementation [INFO] [stdout] 271 | /// Create a new domain manager [INFO] [stdout] 272 | pub fn new(base_domain: &str, cname_target: &str) -> Arc { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 284 | pub fn reserve_subdomain( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 323 | pub fn reserve_custom_domain( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 365 | pub async fn verify_custom_domain(&self, domain_id: &str) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 403 | async fn verify_cname(&self, domain: &str, expected_target: &str) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 433 | async fn verify_txt_record(&self, domain: &str, expected_value: &str) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 464 | pub fn get_domain(&self, domain_id: &str) -> Option { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 469 | pub fn get_domain_by_name(&self, domain: &str) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 476 | pub fn list_user_domains(&self, user_id: &str) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 488 | pub fn release_domain(&self, domain_id: &str, user_id: &str) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 514 | pub fn assign_tunnel(&self, domain_id: &str, tunnel_id: &str, user_id: &str) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 534 | pub fn unassign_tunnel(&self, domain_id: &str) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 544 | pub fn find_domain_for_request(&self, hostname: &str) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 570 | pub fn cleanup_expired(&self) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 598 | pub fn start_cleanup_task(self: Arc) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 613 | fn validate_subdomain(&self, subdomain: &str, limits: &DomainLimits) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 654 | fn validate_custom_domain(&self, domain: &str) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 694 | fn store_domain(&self, domain: ReservedDomain) { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 708 | fn get_user_subdomain_count(&self, user_id: &str) -> usize { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 715 | fn get_user_custom_domain_count(&self, user_id: &str) -> usize { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `generate_verification_token` is never used [INFO] [stdout] --> crates/nlag-control/src/domains.rs:724:4 [INFO] [stdout] | [INFO] [stdout] 724 | fn generate_verification_token() -> String { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `default_blocked_subdomains` is never used [INFO] [stdout] --> crates/nlag-control/src/domains.rs:743:4 [INFO] [stdout] | [INFO] [stdout] 743 | fn default_blocked_subdomains() -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `OAuthError` is never used [INFO] [stdout] --> crates/nlag-control/src/oauth.rs:25:10 [INFO] [stdout] | [INFO] [stdout] 25 | pub enum OAuthError { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: type alias `Result` is never used [INFO] [stdout] --> crates/nlag-control/src/oauth.rs:51:10 [INFO] [stdout] | [INFO] [stdout] 51 | pub type Result = std::result::Result; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `OAuthProvider` is never constructed [INFO] [stdout] --> crates/nlag-control/src/oauth.rs:55:12 [INFO] [stdout] | [INFO] [stdout] 55 | pub struct OAuthProvider { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `default_scopes` is never used [INFO] [stdout] --> crates/nlag-control/src/oauth.rs:102:4 [INFO] [stdout] | [INFO] [stdout] 102 | fn default_scopes() -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `default_true` is never used [INFO] [stdout] --> crates/nlag-control/src/oauth.rs:106:4 [INFO] [stdout] | [INFO] [stdout] 106 | fn default_true() -> bool { true } [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `ProviderType` is never used [INFO] [stdout] --> crates/nlag-control/src/oauth.rs:111:10 [INFO] [stdout] | [INFO] [stdout] 111 | pub enum ProviderType { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated functions `google`, `github`, and `microsoft` are never used [INFO] [stdout] --> crates/nlag-control/src/oauth.rs:126:12 [INFO] [stdout] | [INFO] [stdout] 124 | impl OAuthProvider { [INFO] [stdout] | ------------------ associated functions in this implementation [INFO] [stdout] 125 | /// Create a Google OAuth provider [INFO] [stdout] 126 | pub fn google(client_id: &str, client_secret: &str, redirect_uri: &str) -> Self { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 149 | pub fn github(client_id: &str, client_secret: &str, redirect_uri: &str) -> Self { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 168 | pub fn microsoft(client_id: &str, client_secret: &str, redirect_uri: &str, tenant: &str) -> Self { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `OAuthState` is never constructed [INFO] [stdout] --> crates/nlag-control/src/oauth.rs:197:12 [INFO] [stdout] | [INFO] [stdout] 197 | pub struct OAuthState { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `OAuthUserInfo` is never constructed [INFO] [stdout] --> crates/nlag-control/src/oauth.rs:212:12 [INFO] [stdout] | [INFO] [stdout] 212 | pub struct OAuthUserInfo { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `TokenResponse` is never constructed [INFO] [stdout] --> crates/nlag-control/src/oauth.rs:237:12 [INFO] [stdout] | [INFO] [stdout] 237 | pub struct TokenResponse { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `OAuthManager` is never constructed [INFO] [stdout] --> crates/nlag-control/src/oauth.rs:257:12 [INFO] [stdout] | [INFO] [stdout] 257 | pub struct OAuthManager { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated items are never used [INFO] [stdout] --> crates/nlag-control/src/oauth.rs:270:12 [INFO] [stdout] | [INFO] [stdout] 268 | impl OAuthManager { [INFO] [stdout] | ----------------- associated items in this implementation [INFO] [stdout] 269 | /// Create a new OAuth manager [INFO] [stdout] 270 | pub fn new() -> Arc { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 284 | pub fn add_provider(&self, provider: OAuthProvider) { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 290 | pub fn remove_provider(&self, id: &str) { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 295 | pub fn get_provider(&self, id: &str) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 300 | pub fn list_providers(&self) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 305 | pub fn get_auth_url(&self, provider_id: &str, redirect_to: Option<&str>) -> Result<(String, String)> { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 356 | pub async fn exchange_code(&self, code: &str, state: &str) -> Result<(TokenResponse, OAuthUserInfo)> { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 417 | async fn get_user_info(&self, provider: &OAuthProvider, tokens: &TokenResponse) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 447 | fn parse_id_token(&self, provider: &OAuthProvider, id_token: &str) -> Result> { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 465 | fn parse_claims(&self, provider: &OAuthProvider, claims: serde_json::Value) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 525 | pub fn cleanup_expired_states(&self) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 535 | pub fn start_cleanup_task(self: Arc) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `generate_random_string` is never used [INFO] [stdout] --> crates/nlag-control/src/oauth.rs:562:4 [INFO] [stdout] | [INFO] [stdout] 562 | fn generate_random_string(len: usize) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `sha256` is never used [INFO] [stdout] --> crates/nlag-control/src/oauth.rs:575:4 [INFO] [stdout] | [INFO] [stdout] 575 | fn sha256(data: &[u8]) -> Vec { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `base64_url_encode` is never used [INFO] [stdout] --> crates/nlag-control/src/oauth.rs:581:4 [INFO] [stdout] | [INFO] [stdout] 581 | fn base64_url_encode(data: &[u8]) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `base64_url_decode` is never used [INFO] [stdout] --> crates/nlag-control/src/oauth.rs:586:4 [INFO] [stdout] | [INFO] [stdout] 586 | fn base64_url_decode(data: &str) -> std::result::Result, base64::DecodeError> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `delete_before` is never used [INFO] [stdout] --> crates/nlag-control/src/traffic.rs:119:14 [INFO] [stdout] | [INFO] [stdout] 108 | pub trait TrafficStore: Send + Sync { [INFO] [stdout] | ------------ method in this trait [INFO] [stdout] ... [INFO] [stdout] 119 | async fn delete_before(&self, timestamp: DateTime) -> Result; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variable does not need to be mutable [INFO] [stdout] --> crates/nlag-control/src/teams.rs:1040:13 [INFO] [stdout] | [INFO] [stdout] 1040 | let mut team = manager.create_team( [INFO] [stdout] | ----^^^^ [INFO] [stdout] | | [INFO] [stdout] | help: remove this `mut` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `VerificationFailed`, `Expired`, and `DnsError` are never constructed [INFO] [stdout] --> crates/nlag-control/src/domains.rs:36:5 [INFO] [stdout] | [INFO] [stdout] 28 | pub enum DomainError { [INFO] [stdout] | ----------- variants in this enum [INFO] [stdout] ... [INFO] [stdout] 36 | VerificationFailed(String), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 45 | Expired, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 54 | DnsError(String), [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `DomainError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `needs_reverification` is never used [INFO] [stdout] --> crates/nlag-control/src/domains.rs:182:12 [INFO] [stdout] | [INFO] [stdout] 135 | impl ReservedDomain { [INFO] [stdout] | ------------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 182 | pub fn needs_reverification(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated functions `free` and `enterprise` are never used [INFO] [stdout] --> crates/nlag-control/src/domains.rs:222:12 [INFO] [stdout] | [INFO] [stdout] 220 | impl DomainLimits { [INFO] [stdout] | ----------------- associated functions in this implementation [INFO] [stdout] 221 | /// Free tier limits [INFO] [stdout] 222 | pub fn free() -> Self { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 238 | pub fn enterprise() -> Self { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple methods are never used [INFO] [stdout] --> crates/nlag-control/src/domains.rs:365:18 [INFO] [stdout] | [INFO] [stdout] 270 | impl DomainManager { [INFO] [stdout] | ------------------ methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 365 | pub async fn verify_custom_domain(&self, domain_id: &str) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 403 | async fn verify_cname(&self, domain: &str, expected_target: &str) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 433 | async fn verify_txt_record(&self, domain: &str, expected_value: &str) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 514 | pub fn assign_tunnel(&self, domain_id: &str, tunnel_id: &str, user_id: &str) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 534 | pub fn unassign_tunnel(&self, domain_id: &str) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 570 | pub fn cleanup_expired(&self) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 598 | pub fn start_cleanup_task(self: Arc) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `InvalidState`, `TokenExchangeFailed`, `UserInfoFailed`, `InvalidToken`, `MissingClaim`, and `HttpError` are never constructed [INFO] [stdout] --> crates/nlag-control/src/oauth.rs:30:5 [INFO] [stdout] | [INFO] [stdout] 25 | pub enum OAuthError { [INFO] [stdout] | ---------- variants in this enum [INFO] [stdout] ... [INFO] [stdout] 30 | InvalidState, [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 33 | TokenExchangeFailed(String), [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 36 | UserInfoFailed(String), [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 39 | InvalidToken(String), [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 42 | MissingClaim(String), [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 45 | HttpError(String), [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `OAuthError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `client_secret` is never read [INFO] [stdout] --> crates/nlag-control/src/oauth.rs:70:9 [INFO] [stdout] | [INFO] [stdout] 55 | pub struct OAuthProvider { [INFO] [stdout] | ------------- field in this struct [INFO] [stdout] ... [INFO] [stdout] 70 | pub client_secret: String, [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `OAuthProvider` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `OAuthUserInfo` is never constructed [INFO] [stdout] --> crates/nlag-control/src/oauth.rs:212:12 [INFO] [stdout] | [INFO] [stdout] 212 | pub struct OAuthUserInfo { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `TokenResponse` is never constructed [INFO] [stdout] --> crates/nlag-control/src/oauth.rs:237:12 [INFO] [stdout] | [INFO] [stdout] 237 | pub struct TokenResponse { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `client` is never read [INFO] [stdout] --> crates/nlag-control/src/oauth.rs:265:5 [INFO] [stdout] | [INFO] [stdout] 257 | pub struct OAuthManager { [INFO] [stdout] | ------------ field in this struct [INFO] [stdout] ... [INFO] [stdout] 265 | client: reqwest::Client, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple methods are never used [INFO] [stdout] --> crates/nlag-control/src/oauth.rs:290:12 [INFO] [stdout] | [INFO] [stdout] 268 | impl OAuthManager { [INFO] [stdout] | ----------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 290 | pub fn remove_provider(&self, id: &str) { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 295 | pub fn get_provider(&self, id: &str) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 300 | pub fn list_providers(&self) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 356 | pub async fn exchange_code(&self, code: &str, state: &str) -> Result<(TokenResponse, OAuthUserInfo)> { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 417 | async fn get_user_info(&self, provider: &OAuthProvider, tokens: &TokenResponse) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 447 | fn parse_id_token(&self, provider: &OAuthProvider, id_token: &str) -> Result> { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 465 | fn parse_claims(&self, provider: &OAuthProvider, claims: serde_json::Value) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 535 | pub fn start_cleanup_task(self: Arc) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `base64_url_decode` is never used [INFO] [stdout] --> crates/nlag-control/src/oauth.rs:586:4 [INFO] [stdout] | [INFO] [stdout] 586 | fn base64_url_decode(data: &str) -> std::result::Result, base64::DecodeError> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `delete_before` is never used [INFO] [stdout] --> crates/nlag-control/src/traffic.rs:119:14 [INFO] [stdout] | [INFO] [stdout] 108 | pub trait TrafficStore: Send + Sync { [INFO] [stdout] | ------------ method in this trait [INFO] [stdout] ... [INFO] [stdout] 119 | async fn delete_before(&self, timestamp: DateTime) -> Result; [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `domain` [INFO] [stdout] --> crates/nlag-edge/src/acme.rs:605:83 [INFO] [stdout] | [INFO] [stdout] 605 | async fn get_authorization(&self, key_pair: &AccountKeyPair, order_url: &str, domain: &str) -> Result<(String, AcmeChallenge)> { [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_domain` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `now` [INFO] [stdout] --> crates/nlag-edge/src/circuit_breaker.rs:523:13 [INFO] [stdout] | [INFO] [stdout] 523 | let now = Instant::now(); [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_now` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `domain` [INFO] [stdout] --> crates/nlag-edge/src/acme.rs:605:83 [INFO] [stdout] | [INFO] [stdout] 605 | async fn get_authorization(&self, key_pair: &AccountKeyPair, order_url: &str, domain: &str) -> Result<(String, AcmeChallenge)> { [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_domain` [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `now` [INFO] [stdout] --> crates/nlag-edge/src/circuit_breaker.rs:523:13 [INFO] [stdout] | [INFO] [stdout] 523 | let now = Instant::now(); [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_now` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `now` [INFO] [stdout] --> crates/nlag-edge/src/ssh_tunnel.rs:678:13 [INFO] [stdout] | [INFO] [stdout] 678 | let now = Instant::now(); [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_now` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `PasswordFormat` is never used [INFO] [stdout] --> crates/nlag-edge/src/basic_auth.rs:19:10 [INFO] [stdout] | [INFO] [stdout] 19 | pub enum PasswordFormat { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Credential` is never constructed [INFO] [stdout] --> crates/nlag-edge/src/basic_auth.rs:36:12 [INFO] [stdout] | [INFO] [stdout] 36 | pub struct Credential { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `BasicAuthConfig` is never constructed [INFO] [stdout] --> crates/nlag-edge/src/basic_auth.rs:48:12 [INFO] [stdout] | [INFO] [stdout] 48 | pub struct BasicAuthConfig { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `default_realm` is never used [INFO] [stdout] --> crates/nlag-edge/src/basic_auth.rs:64:4 [INFO] [stdout] | [INFO] [stdout] 64 | fn default_realm() -> String { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `default_true` is never used [INFO] [stdout] --> crates/nlag-edge/src/basic_auth.rs:68:4 [INFO] [stdout] | [INFO] [stdout] 68 | fn default_true() -> bool { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `AuthResult` is never used [INFO] [stdout] --> crates/nlag-edge/src/basic_auth.rs:86:10 [INFO] [stdout] | [INFO] [stdout] 86 | pub enum AuthResult { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `is_allowed` and `username` are never used [INFO] [stdout] --> crates/nlag-edge/src/basic_auth.rs:103:12 [INFO] [stdout] | [INFO] [stdout] 101 | impl AuthResult { [INFO] [stdout] | --------------- methods in this implementation [INFO] [stdout] 102 | /// Check if authentication was successful or path was excluded [INFO] [stdout] 103 | pub fn is_allowed(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 108 | pub fn username(&self) -> Option<&str> { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `BasicAuth` is never constructed [INFO] [stdout] --> crates/nlag-edge/src/basic_auth.rs:117:12 [INFO] [stdout] | [INFO] [stdout] 117 | pub struct BasicAuth { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated items are never used [INFO] [stdout] --> crates/nlag-edge/src/basic_auth.rs:124:12 [INFO] [stdout] | [INFO] [stdout] 122 | impl BasicAuth { [INFO] [stdout] | -------------- associated items in this implementation [INFO] [stdout] 123 | /// Create a new BasicAuth middleware [INFO] [stdout] 124 | pub fn new() -> Arc { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 131 | pub fn add_config(&self, key: &str, config: BasicAuthConfig) { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 136 | pub fn remove_config(&self, key: &str) { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 141 | pub fn get_config(&self, tunnel_id: &str) -> Option { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 151 | pub fn authenticate( [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 210 | pub fn www_authenticate_header(&self, tunnel_id: &str) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 221 | pub fn unauthorized_body(&self, tunnel_id: &str) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 230 | fn parse_basic_auth(header: &str) -> Option<(String, String)> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 248 | fn verify_sha256(password: &str, hash: &str) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 260 | fn verify_bcrypt(password: &str, hash: &str) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 266 | pub fn hash_sha256(password: &str) -> String { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 276 | pub fn hash_bcrypt(password: &str) -> Result { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: type alias `SharedBasicAuth` is never used [INFO] [stdout] --> crates/nlag-edge/src/basic_auth.rs:290:10 [INFO] [stdout] | [INFO] [stdout] 290 | pub type SharedBasicAuth = Arc; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `BasicAuthBuilder` is never constructed [INFO] [stdout] --> crates/nlag-edge/src/basic_auth.rs:293:12 [INFO] [stdout] | [INFO] [stdout] 293 | pub struct BasicAuthBuilder { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated items are never used [INFO] [stdout] --> crates/nlag-edge/src/basic_auth.rs:299:12 [INFO] [stdout] | [INFO] [stdout] 297 | impl BasicAuthBuilder { [INFO] [stdout] | --------------------- associated items in this implementation [INFO] [stdout] 298 | /// Create a new builder [INFO] [stdout] 299 | pub fn new() -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 306 | pub fn realm(mut self, realm: &str) -> Self { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 312 | pub fn add_user(mut self, username: &str, password: &str) -> Self { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 322 | pub fn add_user_sha256(mut self, username: &str, password_hash: &str) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 332 | pub fn add_user_bcrypt(mut self, username: &str, password_hash: &str) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 342 | pub fn exclude_path(mut self, path: &str) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 348 | pub fn unauthorized_message(mut self, message: &str) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 354 | pub fn disabled(mut self) -> Self { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 360 | pub fn build(self) -> BasicAuthConfig { [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `encode_basic_auth` is never used [INFO] [stdout] --> crates/nlag-edge/src/basic_auth.rs:372:8 [INFO] [stdout] | [INFO] [stdout] 372 | pub fn encode_basic_auth(username: &str, password: &str) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `CircuitState` is never used [INFO] [stdout] --> crates/nlag-edge/src/circuit_breaker.rs:37:10 [INFO] [stdout] | [INFO] [stdout] 37 | pub enum CircuitState { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `CircuitBreakerConfig` is never constructed [INFO] [stdout] --> crates/nlag-edge/src/circuit_breaker.rs:58:12 [INFO] [stdout] | [INFO] [stdout] 58 | pub struct CircuitBreakerConfig { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `default_failure_threshold` is never used [INFO] [stdout] --> crates/nlag-edge/src/circuit_breaker.rs:92:4 [INFO] [stdout] | [INFO] [stdout] 92 | fn default_failure_threshold() -> u32 { 5 } [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `default_success_threshold` is never used [INFO] [stdout] --> crates/nlag-edge/src/circuit_breaker.rs:93:4 [INFO] [stdout] | [INFO] [stdout] 93 | fn default_success_threshold() -> u32 { 3 } [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `default_timeout` is never used [INFO] [stdout] --> crates/nlag-edge/src/circuit_breaker.rs:94:4 [INFO] [stdout] | [INFO] [stdout] 94 | fn default_timeout() -> Duration { Duration::from_secs(30) } [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `default_half_open_max` is never used [INFO] [stdout] --> crates/nlag-edge/src/circuit_breaker.rs:95:4 [INFO] [stdout] | [INFO] [stdout] 95 | fn default_half_open_max() -> u32 { 3 } [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `default_min_requests` is never used [INFO] [stdout] --> crates/nlag-edge/src/circuit_breaker.rs:96:4 [INFO] [stdout] | [INFO] [stdout] 96 | fn default_min_requests() -> u32 { 10 } [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `default_failure_rate` is never used [INFO] [stdout] --> crates/nlag-edge/src/circuit_breaker.rs:97:4 [INFO] [stdout] | [INFO] [stdout] 97 | fn default_failure_rate() -> f64 { 0.5 } [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `default_slow_rate` is never used [INFO] [stdout] --> crates/nlag-edge/src/circuit_breaker.rs:98:4 [INFO] [stdout] | [INFO] [stdout] 98 | fn default_slow_rate() -> f64 { 0.8 } [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `CallResult` is never used [INFO] [stdout] --> crates/nlag-edge/src/circuit_breaker.rs:117:10 [INFO] [stdout] | [INFO] [stdout] 117 | pub enum CallResult { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `CircuitStats` is never constructed [INFO] [stdout] --> crates/nlag-edge/src/circuit_breaker.rs:126:12 [INFO] [stdout] | [INFO] [stdout] 126 | pub struct CircuitStats { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `CircuitInternal` is never constructed [INFO] [stdout] --> crates/nlag-edge/src/circuit_breaker.rs:150:8 [INFO] [stdout] | [INFO] [stdout] 150 | struct CircuitInternal { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new`, `should_reset_window`, `reset_window`, `failure_rate`, and `slow_rate` are never used [INFO] [stdout] --> crates/nlag-edge/src/circuit_breaker.rs:174:8 [INFO] [stdout] | [INFO] [stdout] 173 | impl CircuitInternal { [INFO] [stdout] | -------------------- associated items in this implementation [INFO] [stdout] 174 | fn new(config: CircuitBreakerConfig) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 195 | fn should_reset_window(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 199 | fn reset_window(&mut self) { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 206 | fn failure_rate(&self) -> f64 { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 214 | fn slow_rate(&self) -> f64 { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `CircuitBreaker` is never constructed [INFO] [stdout] --> crates/nlag-edge/src/circuit_breaker.rs:224:12 [INFO] [stdout] | [INFO] [stdout] 224 | pub struct CircuitBreaker { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated items are never used [INFO] [stdout] --> crates/nlag-edge/src/circuit_breaker.rs:233:12 [INFO] [stdout] | [INFO] [stdout] 231 | impl CircuitBreaker { [INFO] [stdout] | ------------------- associated items in this implementation [INFO] [stdout] 232 | /// Create a new circuit breaker [INFO] [stdout] 233 | pub fn new(id: &str, config: CircuitBreakerConfig) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 241 | pub fn allow_request(&self) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 275 | pub fn record_result(&self, result: CallResult) { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 305 | pub fn record_success(&self) { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 310 | pub fn record_failure(&self) { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 315 | pub fn record_call(&self, success: bool, duration: Duration) { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 333 | pub fn state(&self) -> CircuitState { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 338 | pub fn stats(&self) -> CircuitStats { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 355 | pub fn force_open(&self) { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 361 | pub fn force_close(&self) { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 367 | pub fn reset(&self) { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 380 | fn handle_success(&self, internal: &mut CircuitInternal) { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 398 | fn handle_failure(&self, internal: &mut CircuitInternal) { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 428 | fn transition_to(&self, internal: &mut CircuitInternal, new_state: CircuitState) { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `CircuitBreakerRegistry` is never constructed [INFO] [stdout] --> crates/nlag-edge/src/circuit_breaker.rs:446:12 [INFO] [stdout] | [INFO] [stdout] 446 | pub struct CircuitBreakerRegistry { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated items are never used [INFO] [stdout] --> crates/nlag-edge/src/circuit_breaker.rs:457:12 [INFO] [stdout] | [INFO] [stdout] 455 | impl CircuitBreakerRegistry { [INFO] [stdout] | --------------------------- associated items in this implementation [INFO] [stdout] 456 | /// Create a new registry [INFO] [stdout] 457 | pub fn new(default_config: CircuitBreakerConfig) -> Arc { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 466 | pub fn get_or_create(&self, backend_id: &str) -> Arc { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 483 | pub fn set_config(&self, backend_id: &str, config: CircuitBreakerConfig) { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 492 | pub fn all_stats(&self) -> HashMap { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 500 | pub fn get_open_circuits(&self) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 509 | pub fn reset_all(&self) { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 516 | pub fn remove(&self, backend_id: &str) { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 522 | pub fn cleanup_inactive(&self, max_age: Duration) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `CircuitGuard` is never constructed [INFO] [stdout] --> crates/nlag-edge/src/circuit_breaker.rs:557:12 [INFO] [stdout] | [INFO] [stdout] 557 | pub struct CircuitGuard { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `try_new`, `success`, `failure`, and `elapsed` are never used [INFO] [stdout] --> crates/nlag-edge/src/circuit_breaker.rs:565:12 [INFO] [stdout] | [INFO] [stdout] 563 | impl CircuitGuard { [INFO] [stdout] | ----------------- associated items in this implementation [INFO] [stdout] 564 | /// Create a new guard, returns None if circuit is open [INFO] [stdout] 565 | pub fn try_new(breaker: Arc) -> Option { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 578 | pub fn success(mut self) { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 584 | pub fn failure(mut self) { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 590 | pub fn elapsed(&self) -> Duration { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `ErrorPageConfig` is never constructed [INFO] [stdout] --> crates/nlag-edge/src/error_pages.rs:18:12 [INFO] [stdout] | [INFO] [stdout] 18 | pub struct ErrorPageConfig { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `ErrorContext` is never constructed [INFO] [stdout] --> crates/nlag-edge/src/error_pages.rs:51:12 [INFO] [stdout] | [INFO] [stdout] 51 | pub struct ErrorContext { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `ErrorTemplate` is never constructed [INFO] [stdout] --> crates/nlag-edge/src/error_pages.rs:74:12 [INFO] [stdout] | [INFO] [stdout] 74 | pub struct ErrorTemplate { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `ErrorPageManager` is never constructed [INFO] [stdout] --> crates/nlag-edge/src/error_pages.rs:82:12 [INFO] [stdout] | [INFO] [stdout] 82 | pub struct ErrorPageManager { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated items are never used [INFO] [stdout] --> crates/nlag-edge/src/error_pages.rs:93:12 [INFO] [stdout] | [INFO] [stdout] 91 | impl ErrorPageManager { [INFO] [stdout] | --------------------- associated items in this implementation [INFO] [stdout] 92 | /// Create a new error page manager [INFO] [stdout] 93 | pub fn new(config: ErrorPageConfig) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 102 | pub fn with_defaults() -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 107 | pub fn set_template(&self, status_code: u16, template: ErrorTemplate) { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 112 | pub fn set_tunnel_config(&self, tunnel_id: &str, config: ErrorPageConfig) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 117 | pub fn remove_tunnel_config(&self, tunnel_id: &str) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 122 | pub fn get_config(&self, tunnel_id: Option<&str>) -> ErrorPageConfig { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 132 | pub fn render(&self, context: &ErrorContext, tunnel_id: Option<&str>) -> (String, String) { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 155 | fn render_default(&self, context: &ErrorContext, config: &ErrorPageConfig) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 349 | fn interpolate(&self, template: &str, context: &ErrorContext, config: &ErrorPageConfig) -> String { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `html_escape` is never used [INFO] [stdout] --> crates/nlag-edge/src/error_pages.rs:369:4 [INFO] [stdout] | [INFO] [stdout] 369 | fn html_escape(s: &str) -> String { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple methods are never used [INFO] [stdout] --> crates/nlag-edge/src/error_pages.rs:380:12 [INFO] [stdout] | [INFO] [stdout] 378 | impl ErrorPageManager { [INFO] [stdout] | --------------------- methods in this implementation [INFO] [stdout] 379 | /// Generate a 400 Bad Request page [INFO] [stdout] 380 | pub fn bad_request(&self, message: &str, request_id: Option<&str>) -> (String, String, u16) { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 397 | pub fn unauthorized(&self, message: &str, request_id: Option<&str>) -> (String, String, u16) { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 414 | pub fn forbidden(&self, message: &str, request_id: Option<&str>) -> (String, String, u16) { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 431 | pub fn not_found(&self, path: &str, request_id: Option<&str>) -> (String, String, u16) { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 448 | pub fn rate_limited(&self, retry_after: Option, request_id: Option<&str>) -> (String, String, u16) { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 471 | pub fn internal_error(&self, request_id: Option<&str>) -> (String, String, u16) { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 488 | pub fn bad_gateway(&self, tunnel_id: Option<&str>, request_id: Option<&str>) -> (String, String, u16) { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 505 | pub fn service_unavailable(&self, message: &str, request_id: Option<&str>) -> (String, String, u16) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 522 | pub fn gateway_timeout(&self, tunnel_id: Option<&str>, request_id: Option<&str>) -> (String, String, u16) { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 539 | pub fn tunnel_not_found(&self, subdomain: &str, request_id: Option<&str>) -> (String, String, u16) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 556 | pub fn tunnel_offline(&self, tunnel_id: &str, request_id: Option<&str>) -> (String, String, u16) { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: type alias `SharedErrorPageManager` is never used [INFO] [stdout] --> crates/nlag-edge/src/error_pages.rs:574:10 [INFO] [stdout] | [INFO] [stdout] 574 | pub type SharedErrorPageManager = Arc; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `EventType` is never used [INFO] [stdout] --> crates/nlag-edge/src/event_webhooks.rs:23:10 [INFO] [stdout] | [INFO] [stdout] 23 | pub enum EventType { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Event` is never constructed [INFO] [stdout] --> crates/nlag-edge/src/event_webhooks.rs:62:12 [INFO] [stdout] | [INFO] [stdout] 62 | pub struct Event { [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new`, `with_tunnel`, `with_request`, and `with_metadata` are never used [INFO] [stdout] --> crates/nlag-edge/src/event_webhooks.rs:83:12 [INFO] [stdout] | [INFO] [stdout] 81 | impl Event { [INFO] [stdout] | ---------- associated items in this implementation [INFO] [stdout] 82 | /// Create a new event [INFO] [stdout] 83 | pub fn new(event_type: EventType, data: EventData) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 96 | pub fn with_tunnel(mut self, tunnel_id: &str) -> Self { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 102 | pub fn with_request(mut self, request_id: &str) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 108 | pub fn with_metadata(mut self, key: &str, value: serde_json::Value) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `EventData` is never used [INFO] [stdout] --> crates/nlag-edge/src/event_webhooks.rs:117:10 [INFO] [stdout] | [INFO] [stdout] 117 | pub enum EventData { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `TunnelEventData` is never constructed [INFO] [stdout] --> crates/nlag-edge/src/event_webhooks.rs:130:12 [INFO] [stdout] | [INFO] [stdout] 130 | pub struct TunnelEventData { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `RequestEventData` is never constructed [INFO] [stdout] --> crates/nlag-edge/src/event_webhooks.rs:145:12 [INFO] [stdout] | [INFO] [stdout] 145 | pub struct RequestEventData { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `ErrorEventData` is never constructed [INFO] [stdout] --> crates/nlag-edge/src/event_webhooks.rs:166:12 [INFO] [stdout] | [INFO] [stdout] 166 | pub struct ErrorEventData { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `WebhookEndpoint` is never constructed [INFO] [stdout] --> crates/nlag-edge/src/event_webhooks.rs:180:12 [INFO] [stdout] | [INFO] [stdout] 180 | pub struct WebhookEndpoint { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `default_true` is never used [INFO] [stdout] --> crates/nlag-edge/src/event_webhooks.rs:210:4 [INFO] [stdout] | [INFO] [stdout] 210 | fn default_true() -> bool { true } [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `default_retries` is never used [INFO] [stdout] --> crates/nlag-edge/src/event_webhooks.rs:211:4 [INFO] [stdout] | [INFO] [stdout] 211 | fn default_retries() -> u32 { 3 } [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `default_timeout` is never used [INFO] [stdout] --> crates/nlag-edge/src/event_webhooks.rs:212:4 [INFO] [stdout] | [INFO] [stdout] 212 | fn default_timeout() -> u64 { 30 } [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `default_batch_timeout` is never used [INFO] [stdout] --> crates/nlag-edge/src/event_webhooks.rs:213:4 [INFO] [stdout] | [INFO] [stdout] 213 | fn default_batch_timeout() -> u64 { 1000 } [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `DeliveryStatus` is never used [INFO] [stdout] --> crates/nlag-edge/src/event_webhooks.rs:217:10 [INFO] [stdout] | [INFO] [stdout] 217 | pub enum DeliveryStatus { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `DeliveryRecord` is never constructed [INFO] [stdout] --> crates/nlag-edge/src/event_webhooks.rs:230:12 [INFO] [stdout] | [INFO] [stdout] 230 | pub struct DeliveryRecord { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `EventWebhooks` is never constructed [INFO] [stdout] --> crates/nlag-edge/src/event_webhooks.rs:246:12 [INFO] [stdout] | [INFO] [stdout] 246 | pub struct EventWebhooks { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated items are never used [INFO] [stdout] --> crates/nlag-edge/src/event_webhooks.rs:259:12 [INFO] [stdout] | [INFO] [stdout] 257 | impl EventWebhooks { [INFO] [stdout] | ------------------ associated items in this implementation [INFO] [stdout] 258 | /// Create a new event webhook manager [INFO] [stdout] 259 | pub fn new() -> Arc { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 269 | pub fn with_channel() -> (Arc, mpsc::UnboundedReceiver<(Event, String)>) { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 281 | pub fn register_endpoint(&self, endpoint: WebhookEndpoint) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 286 | pub fn unregister_endpoint(&self, endpoint_id: &str) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 291 | pub fn get_endpoint(&self, endpoint_id: &str) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 296 | pub fn list_endpoints(&self) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 301 | pub fn emit(&self, event: Event) { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 322 | pub fn emit_tunnel_started(&self, tunnel_id: &str, subdomain: Option<&str>, public_url: Option<&str>) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 338 | pub fn emit_tunnel_stopped(&self, tunnel_id: &str) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 354 | pub fn emit_request( [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 382 | pub fn emit_response( [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 409 | pub fn emit_error(&self, tunnel_id: Option<&str>, code: &str, message: &str) { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 428 | pub fn record_delivery(&self, record: DeliveryRecord) { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 439 | pub fn get_history(&self, endpoint_id: Option<&str>) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 452 | pub fn sign_payload(secret: &str, payload: &[u8]) -> String { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 466 | pub fn build_headers( [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: type alias `SharedEventWebhooks` is never used [INFO] [stdout] --> crates/nlag-edge/src/event_webhooks.rs:501:10 [INFO] [stdout] | [INFO] [stdout] 501 | pub type SharedEventWebhooks = Arc; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `EndpointBuilder` is never constructed [INFO] [stdout] --> crates/nlag-edge/src/event_webhooks.rs:504:12 [INFO] [stdout] | [INFO] [stdout] 504 | pub struct EndpointBuilder { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated items are never used [INFO] [stdout] --> crates/nlag-edge/src/event_webhooks.rs:510:12 [INFO] [stdout] | [INFO] [stdout] 508 | impl EndpointBuilder { [INFO] [stdout] | -------------------- associated items in this implementation [INFO] [stdout] 509 | /// Create a new endpoint builder [INFO] [stdout] 510 | pub fn new(id: &str, url: &str) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 528 | pub fn secret(mut self, secret: &str) -> Self { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 534 | pub fn subscribe(mut self, event_type: EventType) -> Self { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 540 | pub fn subscribe_all(mut self, events: Vec) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 546 | pub fn header(mut self, name: &str, value: &str) -> Self { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 552 | pub fn max_retries(mut self, retries: u32) -> Self { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 558 | pub fn timeout(mut self, secs: u64) -> Self { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 564 | pub fn batch(mut self, size: usize, timeout_ms: u64) -> Self { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 571 | pub fn disabled(mut self) -> Self { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 577 | pub fn build(self) -> WebhookEndpoint { [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `TunnelMiddleware` is never constructed [INFO] [stdout] --> crates/nlag-edge/src/middleware.rs:27:12 [INFO] [stdout] | [INFO] [stdout] 27 | pub struct TunnelMiddleware { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `IpRestrictionConfig` is never constructed [INFO] [stdout] --> crates/nlag-edge/src/middleware.rs:36:12 [INFO] [stdout] | [INFO] [stdout] 36 | pub struct IpRestrictionConfig { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `MiddlewareResult` is never used [INFO] [stdout] --> crates/nlag-edge/src/middleware.rs:45:10 [INFO] [stdout] | [INFO] [stdout] 45 | pub enum MiddlewareResult { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `MiddlewarePipeline` is never constructed [INFO] [stdout] --> crates/nlag-edge/src/middleware.rs:72:12 [INFO] [stdout] | [INFO] [stdout] 72 | pub struct MiddlewarePipeline { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated items are never used [INFO] [stdout] --> crates/nlag-edge/src/middleware.rs:89:12 [INFO] [stdout] | [INFO] [stdout] 87 | impl MiddlewarePipeline { [INFO] [stdout] | ----------------------- associated items in this implementation [INFO] [stdout] 88 | /// Create a new middleware pipeline [INFO] [stdout] 89 | pub fn new() -> Arc { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 101 | pub fn with_components( [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 119 | pub fn register_tunnel(&self, config: TunnelMiddleware) { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 124 | pub fn unregister_tunnel(&self, tunnel_id: &TunnelId) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 129 | pub fn basic_auth(&self) -> &BasicAuth { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 134 | pub fn rewrite(&self) -> &RewriteEngine { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 139 | pub fn error_pages(&self) -> &ErrorPageManager { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 144 | pub fn event_webhooks(&self) -> &EventWebhooks { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 149 | pub fn wildcard_router(&self) -> &WildcardRouter { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 154 | pub fn process_request( [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 247 | pub fn error_response(&self, tunnel_id: &TunnelId, status: u16, path: &str, method: &str, error_message: &str) -> (Vec<(String,... [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 285 | pub fn route_wildcard(&self, host: &str) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 290 | pub fn emit_event(&self, event_type: EventType, tunnel_id: TunnelId, metadata: HashMap) { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 299 | fn check_ip_allowed(&self, ip: &IpAddr, config: &IpRestrictionConfig) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 322 | fn ip_matches(&self, ip: &IpAddr, pattern: &str) -> bool { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 339 | fn cidr_contains(&self, network: &IpAddr, prefix_len: u8, ip: &IpAddr) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `PolicyError` is never used [INFO] [stdout] --> crates/nlag-edge/src/policy.rs:53:10 [INFO] [stdout] | [INFO] [stdout] 53 | pub enum PolicyError { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: type alias `Result` is never used [INFO] [stdout] --> crates/nlag-edge/src/policy.rs:76:10 [INFO] [stdout] | [INFO] [stdout] 76 | pub type Result = std::result::Result; [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `PolicyDecision` is never used [INFO] [stdout] --> crates/nlag-edge/src/policy.rs:80:10 [INFO] [stdout] | [INFO] [stdout] 80 | pub enum PolicyDecision { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `RequestContext` is never constructed [INFO] [stdout] --> crates/nlag-edge/src/policy.rs:95:12 [INFO] [stdout] | [INFO] [stdout] 95 | pub struct RequestContext { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `RequestModifications` is never constructed [INFO] [stdout] --> crates/nlag-edge/src/policy.rs:114:12 [INFO] [stdout] | [INFO] [stdout] 114 | pub struct RequestModifications { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `ResponseModifications` is never constructed [INFO] [stdout] --> crates/nlag-edge/src/policy.rs:127:12 [INFO] [stdout] | [INFO] [stdout] 127 | pub struct ResponseModifications { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `CompressionSettings` is never constructed [INFO] [stdout] --> crates/nlag-edge/src/policy.rs:140:12 [INFO] [stdout] | [INFO] [stdout] 140 | pub struct CompressionSettings { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `CachingSettings` is never constructed [INFO] [stdout] --> crates/nlag-edge/src/policy.rs:151:12 [INFO] [stdout] | [INFO] [stdout] 151 | pub struct CachingSettings { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `PolicyConfig` is never constructed [INFO] [stdout] --> crates/nlag-edge/src/policy.rs:166:12 [INFO] [stdout] | [INFO] [stdout] 166 | pub struct PolicyConfig { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `GlobalSettings` is never constructed [INFO] [stdout] --> crates/nlag-edge/src/policy.rs:187:12 [INFO] [stdout] | [INFO] [stdout] 187 | pub struct GlobalSettings { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `default_true` is never used [INFO] [stdout] --> crates/nlag-edge/src/policy.rs:205:4 [INFO] [stdout] | [INFO] [stdout] 205 | fn default_true() -> bool { true } [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `default_body_size` is never used [INFO] [stdout] --> crates/nlag-edge/src/policy.rs:206:4 [INFO] [stdout] | [INFO] [stdout] 206 | fn default_body_size() -> usize { 10 * 1024 * 1024 } // 10MB [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `default_timeout` is never used [INFO] [stdout] --> crates/nlag-edge/src/policy.rs:207:4 [INFO] [stdout] | [INFO] [stdout] 207 | fn default_timeout() -> u64 { 60 } [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `Policy` is never constructed [INFO] [stdout] --> crates/nlag-edge/src/policy.rs:211:12 [INFO] [stdout] | [INFO] [stdout] 211 | pub struct Policy { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `MatchConditions` is never constructed [INFO] [stdout] --> crates/nlag-edge/src/policy.rs:233:12 [INFO] [stdout] | [INFO] [stdout] 233 | pub struct MatchConditions { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `PolicyActions` is never constructed [INFO] [stdout] --> crates/nlag-edge/src/policy.rs:261:12 [INFO] [stdout] | [INFO] [stdout] 261 | pub struct PolicyActions { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `RateLimitAction` is never constructed [INFO] [stdout] --> crates/nlag-edge/src/policy.rs:317:12 [INFO] [stdout] | [INFO] [stdout] 317 | pub struct RateLimitAction { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `default_burst` is never used [INFO] [stdout] --> crates/nlag-edge/src/policy.rs:328:4 [INFO] [stdout] | [INFO] [stdout] 328 | fn default_burst() -> u32 { 10 } [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `default_key` is never used [INFO] [stdout] --> crates/nlag-edge/src/policy.rs:329:4 [INFO] [stdout] | [INFO] [stdout] 329 | fn default_key() -> String { "ip".to_string() } [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `AuthAction` is never constructed [INFO] [stdout] --> crates/nlag-edge/src/policy.rs:333:12 [INFO] [stdout] | [INFO] [stdout] 333 | pub struct AuthAction { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `default_realm` is never used [INFO] [stdout] --> crates/nlag-edge/src/policy.rs:351:4 [INFO] [stdout] | [INFO] [stdout] 351 | fn default_realm() -> String { "Restricted".to_string() } [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `IpPolicyAction` is never constructed [INFO] [stdout] --> crates/nlag-edge/src/policy.rs:355:12 [INFO] [stdout] | [INFO] [stdout] 355 | pub struct IpPolicyAction { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `TransformAction` is never constructed [INFO] [stdout] --> crates/nlag-edge/src/policy.rs:366:12 [INFO] [stdout] | [INFO] [stdout] 366 | pub struct TransformAction { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `RewriteAction` is never constructed [INFO] [stdout] --> crates/nlag-edge/src/policy.rs:380:12 [INFO] [stdout] | [INFO] [stdout] 380 | pub struct RewriteAction { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `RedirectAction` is never constructed [INFO] [stdout] --> crates/nlag-edge/src/policy.rs:397:12 [INFO] [stdout] | [INFO] [stdout] 397 | pub struct RedirectAction { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `default_redirect_status` is never used [INFO] [stdout] --> crates/nlag-edge/src/policy.rs:405:4 [INFO] [stdout] | [INFO] [stdout] 405 | fn default_redirect_status() -> u16 { 302 } [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `CustomResponseAction` is never constructed [INFO] [stdout] --> crates/nlag-edge/src/policy.rs:409:12 [INFO] [stdout] | [INFO] [stdout] 409 | pub struct CustomResponseAction { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `default_content_type` is never used [INFO] [stdout] --> crates/nlag-edge/src/policy.rs:423:4 [INFO] [stdout] | [INFO] [stdout] 423 | fn default_content_type() -> String { "text/plain".to_string() } [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `WebhookVerifyAction` is never constructed [INFO] [stdout] --> crates/nlag-edge/src/policy.rs:427:12 [INFO] [stdout] | [INFO] [stdout] 427 | pub struct WebhookVerifyAction { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `CompressAction` is never constructed [INFO] [stdout] --> crates/nlag-edge/src/policy.rs:439:12 [INFO] [stdout] | [INFO] [stdout] 439 | pub struct CompressAction { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `default_algorithm` is never used [INFO] [stdout] --> crates/nlag-edge/src/policy.rs:451:4 [INFO] [stdout] | [INFO] [stdout] 451 | fn default_algorithm() -> String { "gzip".to_string() } [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `default_min_size` is never used [INFO] [stdout] --> crates/nlag-edge/src/policy.rs:452:4 [INFO] [stdout] | [INFO] [stdout] 452 | fn default_min_size() -> usize { 1024 } [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `default_compress_types` is never used [INFO] [stdout] --> crates/nlag-edge/src/policy.rs:453:4 [INFO] [stdout] | [INFO] [stdout] 453 | fn default_compress_types() -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `CacheAction` is never constructed [INFO] [stdout] --> crates/nlag-edge/src/policy.rs:463:12 [INFO] [stdout] | [INFO] [stdout] 463 | pub struct CacheAction { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `default_cache_key` is never used [INFO] [stdout] --> crates/nlag-edge/src/policy.rs:474:4 [INFO] [stdout] | [INFO] [stdout] 474 | fn default_cache_key() -> String { "$method:$path".to_string() } [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `default_cache_methods` is never used [INFO] [stdout] --> crates/nlag-edge/src/policy.rs:475:4 [INFO] [stdout] | [INFO] [stdout] 475 | fn default_cache_methods() -> Vec { vec!["GET".to_string()] } [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `TimeoutAction` is never constructed [INFO] [stdout] --> crates/nlag-edge/src/policy.rs:479:12 [INFO] [stdout] | [INFO] [stdout] 479 | pub struct TimeoutAction { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `DenyAction` is never constructed [INFO] [stdout] --> crates/nlag-edge/src/policy.rs:486:12 [INFO] [stdout] | [INFO] [stdout] 486 | pub struct DenyAction { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `default_deny_status` is never used [INFO] [stdout] --> crates/nlag-edge/src/policy.rs:495:4 [INFO] [stdout] | [INFO] [stdout] 495 | fn default_deny_status() -> u16 { 403 } [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `default_deny_message` is never used [INFO] [stdout] --> crates/nlag-edge/src/policy.rs:496:4 [INFO] [stdout] | [INFO] [stdout] 496 | fn default_deny_message() -> String { "Access denied".to_string() } [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: type alias `PolicyRateLimiter` is never used [INFO] [stdout] --> crates/nlag-edge/src/policy.rs:502:6 [INFO] [stdout] | [INFO] [stdout] 502 | type PolicyRateLimiter = RateLimiter, DefaultClock, NoOpMiddleware>; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `PolicyEngine` is never constructed [INFO] [stdout] --> crates/nlag-edge/src/policy.rs:505:12 [INFO] [stdout] | [INFO] [stdout] 505 | pub struct PolicyEngine { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `CompiledPattern` is never constructed [INFO] [stdout] --> crates/nlag-edge/src/policy.rs:517:8 [INFO] [stdout] | [INFO] [stdout] 517 | struct CompiledPattern { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated items are never used [INFO] [stdout] --> crates/nlag-edge/src/policy.rs:525:12 [INFO] [stdout] | [INFO] [stdout] 523 | impl PolicyEngine { [INFO] [stdout] | ----------------- associated items in this implementation [INFO] [stdout] 524 | /// Create a new policy engine with default config [INFO] [stdout] 525 | pub fn new() -> Arc { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 534 | pub fn load_from_file(&self, path: &Path) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 543 | pub fn load_from_string(&self, yaml: &str) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 550 | pub fn set_config(&self, mut config: PolicyConfig) { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 583 | pub fn config(&self) -> PolicyConfig { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 588 | pub fn evaluate(&self, ctx: &RequestContext) -> (PolicyDecision, RequestModifications, ResponseModifications) { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 615 | fn matches_policy(&self, ctx: &RequestContext, policy: &Policy, pattern: &CompiledPattern) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 673 | fn apply_actions( [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 800 | fn check_rate_limit(&self, ctx: &RequestContext, config: &RateLimitAction) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 831 | fn check_auth(&self, ctx: &RequestContext, config: &AuthAction) -> Option { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 886 | pub fn get_response_modifications(&self, ctx: &RequestContext) -> ResponseModifications { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `glob_to_regex` is never used [INFO] [stdout] --> crates/nlag-edge/src/policy.rs:922:4 [INFO] [stdout] | [INFO] [stdout] 922 | fn glob_to_regex(pattern: &str) -> String { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `cidr_contains` is never used [INFO] [stdout] --> crates/nlag-edge/src/policy.rs:950:4 [INFO] [stdout] | [INFO] [stdout] 950 | fn cidr_contains(cidr: &str, ip: IpAddr) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `HeaderOperation` is never used [INFO] [stdout] --> crates/nlag-edge/src/transform.rs:19:10 [INFO] [stdout] | [INFO] [stdout] 19 | pub enum HeaderOperation { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `HeaderRule` is never constructed [INFO] [stdout] --> crates/nlag-edge/src/transform.rs:34:12 [INFO] [stdout] | [INFO] [stdout] 34 | pub struct HeaderRule { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `PathRewriteRule` is never constructed [INFO] [stdout] --> crates/nlag-edge/src/transform.rs:51:12 [INFO] [stdout] | [INFO] [stdout] 51 | pub struct PathRewriteRule { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `QueryRule` is never constructed [INFO] [stdout] --> crates/nlag-edge/src/transform.rs:62:12 [INFO] [stdout] | [INFO] [stdout] 62 | pub struct QueryRule { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `BodyTransform` is never used [INFO] [stdout] --> crates/nlag-edge/src/transform.rs:74:10 [INFO] [stdout] | [INFO] [stdout] 74 | pub enum BodyTransform { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `JsonPatchOp` is never constructed [INFO] [stdout] --> crates/nlag-edge/src/transform.rs:85:12 [INFO] [stdout] | [INFO] [stdout] 85 | pub struct JsonPatchOp { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `RuleCondition` is never constructed [INFO] [stdout] --> crates/nlag-edge/src/transform.rs:96:12 [INFO] [stdout] | [INFO] [stdout] 96 | pub struct RuleCondition { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `HeaderCondition` is never constructed [INFO] [stdout] --> crates/nlag-edge/src/transform.rs:111:12 [INFO] [stdout] | [INFO] [stdout] 111 | pub struct HeaderCondition { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `RequestTransform` is never constructed [INFO] [stdout] --> crates/nlag-edge/src/transform.rs:122:12 [INFO] [stdout] | [INFO] [stdout] 122 | pub struct RequestTransform { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `ResponseTransform` is never constructed [INFO] [stdout] --> crates/nlag-edge/src/transform.rs:138:12 [INFO] [stdout] | [INFO] [stdout] 138 | pub struct ResponseTransform { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `TransformConfig` is never constructed [INFO] [stdout] --> crates/nlag-edge/src/transform.rs:148:12 [INFO] [stdout] | [INFO] [stdout] 148 | pub struct TransformConfig { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `default_true` is never used [INFO] [stdout] --> crates/nlag-edge/src/transform.rs:160:4 [INFO] [stdout] | [INFO] [stdout] 160 | fn default_true() -> bool { true } [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `TransformContext` is never constructed [INFO] [stdout] --> crates/nlag-edge/src/transform.rs:164:12 [INFO] [stdout] | [INFO] [stdout] 164 | pub struct TransformContext { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `TransformEngine` is never constructed [INFO] [stdout] --> crates/nlag-edge/src/transform.rs:184:12 [INFO] [stdout] | [INFO] [stdout] 184 | pub struct TransformEngine { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated items are never used [INFO] [stdout] --> crates/nlag-edge/src/transform.rs:193:12 [INFO] [stdout] | [INFO] [stdout] 191 | impl TransformEngine { [INFO] [stdout] | -------------------- associated items in this implementation [INFO] [stdout] 192 | /// Create a new transformation engine [INFO] [stdout] 193 | pub fn new() -> Arc { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 201 | pub fn add_config(&self, key: &str, config: TransformConfig) { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 216 | pub fn remove_config(&self, key: &str) { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 221 | pub fn get_config(&self, tunnel_id: &str, path: &str) -> Option { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 249 | pub fn transform_request_headers( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 305 | pub fn transform_path( [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 329 | pub fn transform_query( [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 352 | pub fn transform_response_headers( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 409 | fn interpolate(&self, template: &str, ctx: &TransformContext) -> String { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 430 | fn check_request_condition( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 487 | fn check_response_condition( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 510 | fn compile_pattern(&self, pattern: &str) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 526 | fn get_pattern(&self, pattern: &str) -> Option { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: type alias `SharedTransformEngine` is never used [INFO] [stdout] --> crates/nlag-edge/src/transform.rs:544:10 [INFO] [stdout] | [INFO] [stdout] 544 | pub type SharedTransformEngine = Arc; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `TransformBuilder` is never constructed [INFO] [stdout] --> crates/nlag-edge/src/transform.rs:547:12 [INFO] [stdout] | [INFO] [stdout] 547 | pub struct TransformBuilder { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated items are never used [INFO] [stdout] --> crates/nlag-edge/src/transform.rs:553:12 [INFO] [stdout] | [INFO] [stdout] 551 | impl TransformBuilder { [INFO] [stdout] | --------------------- associated items in this implementation [INFO] [stdout] 552 | /// Create a new builder [INFO] [stdout] 553 | pub fn new() -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 560 | pub fn add_request_header(mut self, name: &str, value: &str) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 573 | pub fn remove_request_header(mut self, name: &str) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 586 | pub fn add_response_header(mut self, name: &str, value: &str) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 599 | pub fn enable_cors(mut self, origin: &str) -> Self { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 630 | pub fn add_security_headers(mut self) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 669 | pub fn rewrite_path(mut self, pattern: &str, replacement: &str) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 679 | pub fn strip_prefix(mut self, prefix: &str) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 690 | pub fn add_prefix(mut self, prefix: &str) -> Self { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 700 | pub fn build(self) -> TransformConfig { [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `RewriteAction` is never used [INFO] [stdout] --> crates/nlag-edge/src/url_rewrite.rs:20:10 [INFO] [stdout] | [INFO] [stdout] 20 | pub enum RewriteAction { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `MatchType` is never used [INFO] [stdout] --> crates/nlag-edge/src/url_rewrite.rs:38:10 [INFO] [stdout] | [INFO] [stdout] 38 | pub enum MatchType { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `MatchCondition` is never constructed [INFO] [stdout] --> crates/nlag-edge/src/url_rewrite.rs:53:12 [INFO] [stdout] | [INFO] [stdout] 53 | pub struct MatchCondition { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `default_match_type` is never used [INFO] [stdout] --> crates/nlag-edge/src/url_rewrite.rs:67:4 [INFO] [stdout] | [INFO] [stdout] 67 | fn default_match_type() -> MatchType { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `RewriteRule` is never constructed [INFO] [stdout] --> crates/nlag-edge/src/url_rewrite.rs:73:12 [INFO] [stdout] | [INFO] [stdout] 73 | pub struct RewriteRule { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `default_true` is never used [INFO] [stdout] --> crates/nlag-edge/src/url_rewrite.rs:115:4 [INFO] [stdout] | [INFO] [stdout] 115 | fn default_true() -> bool { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `RewriteResult` is never used [INFO] [stdout] --> crates/nlag-edge/src/url_rewrite.rs:121:10 [INFO] [stdout] | [INFO] [stdout] 121 | pub enum RewriteResult { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `RewriteContext` is never constructed [INFO] [stdout] --> crates/nlag-edge/src/url_rewrite.rs:144:12 [INFO] [stdout] | [INFO] [stdout] 144 | pub struct RewriteContext { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new`, `with_headers`, `with_variables`, and `parse_query` are never used [INFO] [stdout] --> crates/nlag-edge/src/url_rewrite.rs:163:12 [INFO] [stdout] | [INFO] [stdout] 161 | impl RewriteContext { [INFO] [stdout] | ------------------- associated items in this implementation [INFO] [stdout] 162 | /// Create a new context from request parts [INFO] [stdout] 163 | pub fn new(method: &str, path: &str, query: Option<&str>, host: &str) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 180 | pub fn with_headers(mut self, headers: HashMap) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 186 | pub fn with_variables(mut self, variables: HashMap) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 192 | fn parse_query(query: &str) -> HashMap { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `RewriteEngine` is never constructed [INFO] [stdout] --> crates/nlag-edge/src/url_rewrite.rs:207:12 [INFO] [stdout] | [INFO] [stdout] 207 | pub struct RewriteEngine { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated items are never used [INFO] [stdout] --> crates/nlag-edge/src/url_rewrite.rs:216:12 [INFO] [stdout] | [INFO] [stdout] 214 | impl RewriteEngine { [INFO] [stdout] | ------------------ associated items in this implementation [INFO] [stdout] 215 | /// Create a new rewrite engine [INFO] [stdout] 216 | pub fn new() -> Arc { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 224 | pub fn add_rules(&self, key: &str, mut rules: Vec) { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 246 | pub fn remove_rules(&self, key: &str) { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 251 | pub fn evaluate(&self, key: &str, ctx: &RewriteContext) -> RewriteResult { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 280 | fn check_conditions( [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 328 | fn check_condition( [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 380 | fn apply_rule( [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 438 | fn split_path_query(url: &str) -> (String, Option) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 447 | fn interpolate( [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 486 | fn compile_pattern(&self, pattern: &str, case_insensitive: bool) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 510 | fn get_pattern(&self, pattern: &str, case_insensitive: bool) -> Option { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: type alias `SharedRewriteEngine` is never used [INFO] [stdout] --> crates/nlag-edge/src/url_rewrite.rs:530:10 [INFO] [stdout] | [INFO] [stdout] 530 | pub type SharedRewriteEngine = Arc; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `RuleBuilder` is never constructed [INFO] [stdout] --> crates/nlag-edge/src/url_rewrite.rs:533:12 [INFO] [stdout] | [INFO] [stdout] 533 | pub struct RuleBuilder { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated items are never used [INFO] [stdout] --> crates/nlag-edge/src/url_rewrite.rs:539:12 [INFO] [stdout] | [INFO] [stdout] 537 | impl RuleBuilder { [INFO] [stdout] | ---------------- associated items in this implementation [INFO] [stdout] 538 | /// Create a new rule builder [INFO] [stdout] 539 | pub fn new(name: &str) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 562 | pub fn priority(mut self, priority: i32) -> Self { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 568 | pub fn path_prefix(mut self, prefix: &str) -> Self { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 579 | pub fn path_exact(mut self, path: &str) -> Self { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 590 | pub fn path_regex(mut self, pattern: &str) -> Self { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 601 | pub fn host(mut self, host: &str) -> Self { [INFO] [stdout] | ^^^^ [INFO] [stdout] ... [INFO] [stdout] 612 | pub fn method(mut self, method: &str) -> Self { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 618 | pub fn rewrite_to(mut self, target: &str) -> Self { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 625 | pub fn redirect_permanent(mut self, target: &str) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 632 | pub fn redirect_temporary(mut self, target: &str) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 639 | pub fn proxy_to(mut self, target: &str) -> Self { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 646 | pub fn set_header(mut self, name: &str, value: &str) -> Self { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 652 | pub fn continue_rules(mut self) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 658 | pub fn build(self) -> RewriteRule { [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: type alias `HmacSha256` is never used [INFO] [stdout] --> crates/nlag-edge/src/webhooks.rs:22:6 [INFO] [stdout] | [INFO] [stdout] 22 | type HmacSha256 = Hmac; [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: type alias `HmacSha1` is never used [INFO] [stdout] --> crates/nlag-edge/src/webhooks.rs:23:6 [INFO] [stdout] | [INFO] [stdout] 23 | type HmacSha1 = Hmac; [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `WebhookProvider` is never used [INFO] [stdout] --> crates/nlag-edge/src/webhooks.rs:28:10 [INFO] [stdout] | [INFO] [stdout] 28 | pub enum WebhookProvider { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `WebhookConfig` is never constructed [INFO] [stdout] --> crates/nlag-edge/src/webhooks.rs:67:12 [INFO] [stdout] | [INFO] [stdout] 67 | pub struct WebhookConfig { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: enum `VerificationResult` is never used [INFO] [stdout] --> crates/nlag-edge/src/webhooks.rs:97:10 [INFO] [stdout] | [INFO] [stdout] 97 | pub enum VerificationResult { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `is_valid` is never used [INFO] [stdout] --> crates/nlag-edge/src/webhooks.rs:116:12 [INFO] [stdout] | [INFO] [stdout] 114 | impl VerificationResult { [INFO] [stdout] | ----------------------- method in this implementation [INFO] [stdout] 115 | /// Check if verification passed [INFO] [stdout] 116 | pub fn is_valid(&self) -> bool { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `WebhookVerifier` is never constructed [INFO] [stdout] --> crates/nlag-edge/src/webhooks.rs:122:12 [INFO] [stdout] | [INFO] [stdout] 122 | pub struct WebhookVerifier { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated items are never used [INFO] [stdout] --> crates/nlag-edge/src/webhooks.rs:129:12 [INFO] [stdout] | [INFO] [stdout] 127 | impl WebhookVerifier { [INFO] [stdout] | -------------------- associated items in this implementation [INFO] [stdout] 128 | /// Create a new webhook verifier [INFO] [stdout] 129 | pub fn new() -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 137 | pub fn add_config(&self, key: &str, config: WebhookConfig) { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 142 | pub fn remove_config(&self, key: &str) { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 147 | pub fn get_config(&self, tunnel_id: &str, path: &str) -> Option { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 175 | pub fn verify( [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 207 | fn verify_github( [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 233 | fn verify_stripe( [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 291 | fn verify_slack( [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 340 | fn verify_twilio( [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 361 | fn verify_shopify( [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 382 | fn verify_discord( [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 446 | fn verify_hmac_sha256( [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 465 | fn verify_hmac_sha1( [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 484 | fn verify_hmac_signature(&self, secret: &str, data: &[u8], signature: &str) -> VerificationResult [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 507 | fn verify_hmac_signature_base64(&self, secret: &str, data: &[u8], signature: &str) -> VerificationResult [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: type alias `SharedWebhookVerifier` is never used [INFO] [stdout] --> crates/nlag-edge/src/webhooks.rs:539:10 [INFO] [stdout] | [INFO] [stdout] 539 | pub type SharedWebhookVerifier = Arc; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `github_webhook` is never used [INFO] [stdout] --> crates/nlag-edge/src/webhooks.rs:542:8 [INFO] [stdout] | [INFO] [stdout] 542 | pub fn github_webhook(secret: &str) -> WebhookConfig { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `stripe_webhook` is never used [INFO] [stdout] --> crates/nlag-edge/src/webhooks.rs:552:8 [INFO] [stdout] | [INFO] [stdout] 552 | pub fn stripe_webhook(secret: &str) -> WebhookConfig { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `slack_webhook` is never used [INFO] [stdout] --> crates/nlag-edge/src/webhooks.rs:562:8 [INFO] [stdout] | [INFO] [stdout] 562 | pub fn slack_webhook(secret: &str) -> WebhookConfig { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `discord_webhook` is never used [INFO] [stdout] --> crates/nlag-edge/src/webhooks.rs:572:8 [INFO] [stdout] | [INFO] [stdout] 572 | pub fn discord_webhook(public_key: &str) -> WebhookConfig { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `WildcardPattern` is never constructed [INFO] [stdout] --> crates/nlag-edge/src/wildcard.rs:18:12 [INFO] [stdout] | [INFO] [stdout] 18 | pub struct WildcardPattern { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `default_true` is never used [INFO] [stdout] --> crates/nlag-edge/src/wildcard.rs:34:4 [INFO] [stdout] | [INFO] [stdout] 34 | fn default_true() -> bool { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `WildcardMatch` is never constructed [INFO] [stdout] --> crates/nlag-edge/src/wildcard.rs:40:12 [INFO] [stdout] | [INFO] [stdout] 40 | pub struct WildcardMatch { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `CompiledPattern` is never constructed [INFO] [stdout] --> crates/nlag-edge/src/wildcard.rs:54:8 [INFO] [stdout] | [INFO] [stdout] 54 | struct CompiledPattern { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `WildcardRouter` is never constructed [INFO] [stdout] --> crates/nlag-edge/src/wildcard.rs:70:12 [INFO] [stdout] | [INFO] [stdout] 70 | pub struct WildcardRouter { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated items are never used [INFO] [stdout] --> crates/nlag-edge/src/wildcard.rs:81:12 [INFO] [stdout] | [INFO] [stdout] 79 | impl WildcardRouter { [INFO] [stdout] | ------------------- associated items in this implementation [INFO] [stdout] 80 | /// Create a new wildcard router [INFO] [stdout] 81 | pub fn new() -> Arc { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 90 | pub fn with_cache_size(max_cache_size: usize) -> Arc { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 99 | pub fn add_pattern(&self, pattern: WildcardPattern) -> Result<(), String> { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 117 | pub fn remove_pattern(&self, pattern: &str) { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 124 | pub fn add_patterns(&self, patterns: Vec) -> Result<(), String> { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 132 | pub fn match_hostname(&self, hostname: &str) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 191 | pub fn list_patterns(&self) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 206 | pub fn clear(&self) { [INFO] [stdout] | ^^^^^ [INFO] [stdout] ... [INFO] [stdout] 212 | pub fn cache_stats(&self) -> (usize, usize) { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 219 | fn compile_pattern(pattern: &WildcardPattern) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 235 | fn pattern_to_regex(pattern: &str) -> Result { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: type alias `SharedWildcardRouter` is never used [INFO] [stdout] --> crates/nlag-edge/src/wildcard.rs:282:10 [INFO] [stdout] | [INFO] [stdout] 282 | pub type SharedWildcardRouter = Arc; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `PatternBuilder` is never constructed [INFO] [stdout] --> crates/nlag-edge/src/wildcard.rs:285:12 [INFO] [stdout] | [INFO] [stdout] 285 | pub struct PatternBuilder { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `new`, `priority`, `metadata`, `disabled`, and `build` are never used [INFO] [stdout] --> crates/nlag-edge/src/wildcard.rs:291:12 [INFO] [stdout] | [INFO] [stdout] 289 | impl PatternBuilder { [INFO] [stdout] | ------------------- associated items in this implementation [INFO] [stdout] 290 | /// Create a new pattern builder [INFO] [stdout] 291 | pub fn new(pattern: &str, target: &str) -> Self { [INFO] [stdout] | ^^^ [INFO] [stdout] ... [INFO] [stdout] 304 | pub fn priority(mut self, priority: i32) -> Self { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 310 | pub fn metadata(mut self, key: &str, value: &str) -> Self { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 316 | pub fn disabled(mut self) -> Self { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 322 | pub fn build(self) -> WildcardPattern { [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `validate_domain` is never used [INFO] [stdout] --> crates/nlag-edge/src/wildcard.rs:328:8 [INFO] [stdout] | [INFO] [stdout] 328 | pub fn validate_domain(domain: &str) -> bool { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `i` [INFO] [stdout] --> crates/nlag-edge/src/loadbalancer.rs:493:13 [INFO] [stdout] | [INFO] [stdout] 493 | for i in 0..3 { [INFO] [stdout] | ^ help: if this is intentional, prefix it with an underscore: `_i` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `agent1` [INFO] [stdout] --> crates/nlag-edge/src/loadbalancer.rs:528:13 [INFO] [stdout] | [INFO] [stdout] 528 | let agent1 = b1.agent_id; [INFO] [stdout] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_agent1` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: unused variable: `now` [INFO] [stdout] --> crates/nlag-edge/src/ssh_tunnel.rs:678:13 [INFO] [stdout] | [INFO] [stdout] 678 | let now = Instant::now(); [INFO] [stdout] | ^^^ help: if this is intentional, prefix it with an underscore: `_now` [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `remove_config` is never used [INFO] [stdout] --> crates/nlag-edge/src/basic_auth.rs:136:12 [INFO] [stdout] | [INFO] [stdout] 122 | impl BasicAuth { [INFO] [stdout] | -------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 136 | pub fn remove_config(&self, key: &str) { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: type alias `SharedBasicAuth` is never used [INFO] [stdout] --> crates/nlag-edge/src/basic_auth.rs:290:10 [INFO] [stdout] | [INFO] [stdout] 290 | pub type SharedBasicAuth = Arc; [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variant `Timeout` is never constructed [INFO] [stdout] --> crates/nlag-edge/src/circuit_breaker.rs:121:5 [INFO] [stdout] | [INFO] [stdout] 117 | pub enum CallResult { [INFO] [stdout] | ---------- variant in this enum [INFO] [stdout] ... [INFO] [stdout] 121 | Timeout, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `CallResult` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `reset` is never used [INFO] [stdout] --> crates/nlag-edge/src/circuit_breaker.rs:367:12 [INFO] [stdout] | [INFO] [stdout] 231 | impl CircuitBreaker { [INFO] [stdout] | ------------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 367 | pub fn reset(&self) { [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `set_config`, `all_stats`, `get_open_circuits`, `reset_all`, `remove`, and `cleanup_inactive` are never used [INFO] [stdout] --> crates/nlag-edge/src/circuit_breaker.rs:483:12 [INFO] [stdout] | [INFO] [stdout] 455 | impl CircuitBreakerRegistry { [INFO] [stdout] | --------------------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 483 | pub fn set_config(&self, backend_id: &str, config: CircuitBreakerConfig) { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 492 | pub fn all_stats(&self) -> HashMap { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 500 | pub fn get_open_circuits(&self) -> Vec { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 509 | pub fn reset_all(&self) { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 516 | pub fn remove(&self, backend_id: &str) { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 522 | pub fn cleanup_inactive(&self, max_age: Duration) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: struct `CircuitGuard` is never constructed [INFO] [stdout] --> crates/nlag-edge/src/circuit_breaker.rs:557:12 [INFO] [stdout] | [INFO] [stdout] 557 | pub struct CircuitGuard { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: associated items `try_new`, `success`, `failure`, and `elapsed` are never used [INFO] [stdout] --> crates/nlag-edge/src/circuit_breaker.rs:565:12 [INFO] [stdout] | [INFO] [stdout] 563 | impl CircuitGuard { [INFO] [stdout] | ----------------- associated items in this implementation [INFO] [stdout] 564 | /// Create a new guard, returns None if circuit is open [INFO] [stdout] 565 | pub fn try_new(breaker: Arc) -> Option { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 578 | pub fn success(mut self) { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 584 | pub fn failure(mut self) { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 590 | pub fn elapsed(&self) -> Duration { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `remove_tunnel_config` is never used [INFO] [stdout] --> crates/nlag-edge/src/error_pages.rs:117:12 [INFO] [stdout] | [INFO] [stdout] 91 | impl ErrorPageManager { [INFO] [stdout] | --------------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 117 | pub fn remove_tunnel_config(&self, tunnel_id: &str) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple methods are never used [INFO] [stdout] --> crates/nlag-edge/src/error_pages.rs:380:12 [INFO] [stdout] | [INFO] [stdout] 378 | impl ErrorPageManager { [INFO] [stdout] | --------------------- methods in this implementation [INFO] [stdout] 379 | /// Generate a 400 Bad Request page [INFO] [stdout] 380 | pub fn bad_request(&self, message: &str, request_id: Option<&str>) -> (String, String, u16) { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 397 | pub fn unauthorized(&self, message: &str, request_id: Option<&str>) -> (String, String, u16) { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 414 | pub fn forbidden(&self, message: &str, request_id: Option<&str>) -> (String, String, u16) { [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 505 | pub fn service_unavailable(&self, message: &str, request_id: Option<&str>) -> (String, String, u16) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 522 | pub fn gateway_timeout(&self, tunnel_id: Option<&str>, request_id: Option<&str>) -> (String, String, u16) { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 539 | pub fn tunnel_not_found(&self, subdomain: &str, request_id: Option<&str>) -> (String, String, u16) { [INFO] [stdout] | ^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 556 | pub fn tunnel_offline(&self, tunnel_id: &str, request_id: Option<&str>) -> (String, String, u16) { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: type alias `SharedErrorPageManager` is never used [INFO] [stdout] --> crates/nlag-edge/src/error_pages.rs:574:10 [INFO] [stdout] | [INFO] [stdout] 574 | pub type SharedErrorPageManager = Arc; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `event_id`, `status`, `timestamp`, `response_status`, and `response_body` are never read [INFO] [stdout] --> crates/nlag-edge/src/event_webhooks.rs:232:9 [INFO] [stdout] | [INFO] [stdout] 230 | pub struct DeliveryRecord { [INFO] [stdout] | -------------- fields in this struct [INFO] [stdout] 231 | /// Event ID [INFO] [stdout] 232 | pub event_id: String, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 236 | pub status: DeliveryStatus, [INFO] [stdout] | ^^^^^^ [INFO] [stdout] 237 | /// Timestamp [INFO] [stdout] 238 | pub timestamp: DateTime, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] 239 | /// Response status code (if delivered) [INFO] [stdout] 240 | pub response_status: Option, [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] 241 | /// Response body preview [INFO] [stdout] 242 | pub response_body: Option, [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `DeliveryRecord` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: type alias `SharedEventWebhooks` is never used [INFO] [stdout] --> crates/nlag-edge/src/event_webhooks.rs:501:10 [INFO] [stdout] | [INFO] [stdout] 501 | pub type SharedEventWebhooks = Arc; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `subscribe_all` is never used [INFO] [stdout] --> crates/nlag-edge/src/event_webhooks.rs:540:12 [INFO] [stdout] | [INFO] [stdout] 508 | impl EndpointBuilder { [INFO] [stdout] | -------------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 540 | pub fn subscribe_all(mut self, events: Vec) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `headers` and `body` are never read [INFO] [stdout] --> crates/nlag-edge/src/middleware.rs:58:9 [INFO] [stdout] | [INFO] [stdout] 54 | Response { [INFO] [stdout] | -------- fields in this variant [INFO] [stdout] ... [INFO] [stdout] 58 | headers: Vec<(String, String)>, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] 59 | /// Response body [INFO] [stdout] 60 | body: String, [INFO] [stdout] | ^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `MiddlewareResult` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `location` and `permanent` are never read [INFO] [stdout] --> crates/nlag-edge/src/middleware.rs:65:9 [INFO] [stdout] | [INFO] [stdout] 63 | Redirect { [INFO] [stdout] | -------- fields in this variant [INFO] [stdout] 64 | /// Target URL [INFO] [stdout] 65 | location: String, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] 66 | /// Permanent (301) or temporary (302) [INFO] [stdout] 67 | permanent: bool, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `MiddlewareResult` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `wildcard_router` and `event_webhooks` are never read [INFO] [stdout] --> crates/nlag-edge/src/middleware.rs:82:5 [INFO] [stdout] | [INFO] [stdout] 72 | pub struct MiddlewarePipeline { [INFO] [stdout] | ------------------ fields in this struct [INFO] [stdout] ... [INFO] [stdout] 82 | wildcard_router: Arc, [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] 83 | /// Event webhooks [INFO] [stdout] 84 | event_webhooks: Arc, [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: multiple associated items are never used [INFO] [stdout] --> crates/nlag-edge/src/middleware.rs:101:12 [INFO] [stdout] | [INFO] [stdout] 87 | impl MiddlewarePipeline { [INFO] [stdout] | ----------------------- associated items in this implementation [INFO] [stdout] ... [INFO] [stdout] 101 | pub fn with_components( [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 129 | pub fn basic_auth(&self) -> &BasicAuth { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 134 | pub fn rewrite(&self) -> &RewriteEngine { [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 139 | pub fn error_pages(&self) -> &ErrorPageManager { [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 144 | pub fn event_webhooks(&self) -> &EventWebhooks { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 149 | pub fn wildcard_router(&self) -> &WildcardRouter { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 285 | pub fn route_wildcard(&self, host: &str) -> Option { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 290 | pub fn emit_event(&self, event_type: EventType, tunnel_id: TunnelId, metadata: HashMap) { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: variants `Denied`, `RateLimited`, `AuthRequired`, `InvalidConfig`, and `IpBlocked` are never constructed [INFO] [stdout] --> crates/nlag-edge/src/policy.rs:55:5 [INFO] [stdout] | [INFO] [stdout] 53 | pub enum PolicyError { [INFO] [stdout] | ----------- variants in this enum [INFO] [stdout] 54 | #[error("Policy denied: {0}")] [INFO] [stdout] 55 | Denied(String), [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 58 | RateLimited(String), [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 61 | AuthRequired(String), [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 64 | InvalidConfig(String), [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 67 | IpBlocked(String), [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `PolicyError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `message` is never read [INFO] [stdout] --> crates/nlag-edge/src/policy.rs:84:25 [INFO] [stdout] | [INFO] [stdout] 84 | Deny { status: u16, message: String }, [INFO] [stdout] | ---- ^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | field in this variant [INFO] [stdout] | [INFO] [stdout] = note: `PolicyDecision` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `url` and `status` are never read [INFO] [stdout] --> crates/nlag-edge/src/policy.rs:86:16 [INFO] [stdout] | [INFO] [stdout] 86 | Redirect { url: String, status: u16 }, [INFO] [stdout] | -------- ^^^ ^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | fields in this variant [INFO] [stdout] | [INFO] [stdout] = note: `PolicyDecision` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `auth_type` and `realm` are never read [INFO] [stdout] --> crates/nlag-edge/src/policy.rs:88:19 [INFO] [stdout] | [INFO] [stdout] 88 | RequireAuth { auth_type: String, realm: String }, [INFO] [stdout] | ----------- ^^^^^^^^^ ^^^^^ [INFO] [stdout] | | [INFO] [stdout] | fields in this variant [INFO] [stdout] | [INFO] [stdout] = note: `PolicyDecision` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `retry_after` is never read [INFO] [stdout] --> crates/nlag-edge/src/policy.rs:90:19 [INFO] [stdout] | [INFO] [stdout] 90 | RateLimited { retry_after: u64 }, [INFO] [stdout] | ----------- ^^^^^^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | field in this variant [INFO] [stdout] | [INFO] [stdout] = note: `PolicyDecision` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `subdomain` is never read [INFO] [stdout] --> crates/nlag-edge/src/policy.rs:107:9 [INFO] [stdout] | [INFO] [stdout] 95 | pub struct RequestContext { [INFO] [stdout] | -------------- field in this struct [INFO] [stdout] ... [INFO] [stdout] 107 | pub subdomain: Option, [INFO] [stdout] | ^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `RequestContext` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `add_headers` and `remove_headers` are never read [INFO] [stdout] --> crates/nlag-edge/src/policy.rs:129:9 [INFO] [stdout] | [INFO] [stdout] 127 | pub struct ResponseModifications { [INFO] [stdout] | --------------------- fields in this struct [INFO] [stdout] 128 | /// Headers to add [INFO] [stdout] 129 | pub add_headers: HashMap, [INFO] [stdout] | ^^^^^^^^^^^ [INFO] [stdout] 130 | /// Headers to remove [INFO] [stdout] 131 | pub remove_headers: Vec, [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `ResponseModifications` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `methods` is never read [INFO] [stdout] --> crates/nlag-edge/src/policy.rs:157:9 [INFO] [stdout] | [INFO] [stdout] 151 | pub struct CachingSettings { [INFO] [stdout] | --------------- field in this struct [INFO] [stdout] ... [INFO] [stdout] 157 | pub methods: Vec, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `CachingSettings` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `load_from_file`, `config`, and `get_response_modifications` are never used [INFO] [stdout] --> crates/nlag-edge/src/policy.rs:534:12 [INFO] [stdout] | [INFO] [stdout] 523 | impl PolicyEngine { [INFO] [stdout] | ----------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 534 | pub fn load_from_file(&self, path: &Path) -> Result<()> { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 583 | pub fn config(&self) -> PolicyConfig { [INFO] [stdout] | ^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 886 | pub fn get_response_modifications(&self, ctx: &RequestContext) -> ResponseModifications { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `remove_config` is never used [INFO] [stdout] --> crates/nlag-edge/src/transform.rs:216:12 [INFO] [stdout] | [INFO] [stdout] 191 | impl TransformEngine { [INFO] [stdout] | -------------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 216 | pub fn remove_config(&self, key: &str) { [INFO] [stdout] | ^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: type alias `SharedTransformEngine` is never used [INFO] [stdout] --> crates/nlag-edge/src/transform.rs:544:10 [INFO] [stdout] | [INFO] [stdout] 544 | pub type SharedTransformEngine = Arc; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `add_response_header` is never used [INFO] [stdout] --> crates/nlag-edge/src/transform.rs:586:12 [INFO] [stdout] | [INFO] [stdout] 551 | impl TransformBuilder { [INFO] [stdout] | --------------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 586 | pub fn add_response_header(mut self, name: &str, value: &str) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `with_variables` is never used [INFO] [stdout] --> crates/nlag-edge/src/url_rewrite.rs:186:12 [INFO] [stdout] | [INFO] [stdout] 161 | impl RewriteContext { [INFO] [stdout] | ------------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 186 | pub fn with_variables(mut self, variables: HashMap) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `remove_rules` is never used [INFO] [stdout] --> crates/nlag-edge/src/url_rewrite.rs:246:12 [INFO] [stdout] | [INFO] [stdout] 214 | impl RewriteEngine { [INFO] [stdout] | ------------------ method in this implementation [INFO] [stdout] ... [INFO] [stdout] 246 | pub fn remove_rules(&self, key: &str) { [INFO] [stdout] | ^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: type alias `SharedRewriteEngine` is never used [INFO] [stdout] --> crates/nlag-edge/src/url_rewrite.rs:530:10 [INFO] [stdout] | [INFO] [stdout] 530 | pub type SharedRewriteEngine = Arc; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: methods `path_exact`, `redirect_temporary`, and `continue_rules` are never used [INFO] [stdout] --> crates/nlag-edge/src/url_rewrite.rs:579:12 [INFO] [stdout] | [INFO] [stdout] 537 | impl RuleBuilder { [INFO] [stdout] | ---------------- methods in this implementation [INFO] [stdout] ... [INFO] [stdout] 579 | pub fn path_exact(mut self, path: &str) -> Self { [INFO] [stdout] | ^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 632 | pub fn redirect_temporary(mut self, target: &str) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 652 | pub fn continue_rules(mut self) -> Self { [INFO] [stdout] | ^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `0` is never read [INFO] [stdout] --> crates/nlag-edge/src/webhooks.rs:105:19 [INFO] [stdout] | [INFO] [stdout] 105 | MissingHeader(String), [INFO] [stdout] | ------------- ^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | field in this variant [INFO] [stdout] | [INFO] [stdout] = note: `VerificationResult` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field [INFO] [stdout] | [INFO] [stdout] 105 - MissingHeader(String), [INFO] [stdout] 105 + MissingHeader(()), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `0` is never read [INFO] [stdout] --> crates/nlag-edge/src/webhooks.rs:107:19 [INFO] [stdout] | [INFO] [stdout] 107 | InvalidFormat(String), [INFO] [stdout] | ------------- ^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | field in this variant [INFO] [stdout] | [INFO] [stdout] = note: `VerificationResult` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field [INFO] [stdout] | [INFO] [stdout] 107 - InvalidFormat(String), [INFO] [stdout] 107 + InvalidFormat(()), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: field `0` is never read [INFO] [stdout] --> crates/nlag-edge/src/webhooks.rs:109:11 [INFO] [stdout] | [INFO] [stdout] 109 | Error(String), [INFO] [stdout] | ----- ^^^^^^ [INFO] [stdout] | | [INFO] [stdout] | field in this variant [INFO] [stdout] | [INFO] [stdout] = note: `VerificationResult` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field [INFO] [stdout] | [INFO] [stdout] 109 - Error(String), [INFO] [stdout] 109 + Error(()), [INFO] [stdout] | [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: type alias `SharedWebhookVerifier` is never used [INFO] [stdout] --> crates/nlag-edge/src/webhooks.rs:539:10 [INFO] [stdout] | [INFO] [stdout] 539 | pub type SharedWebhookVerifier = Arc; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: function `discord_webhook` is never used [INFO] [stdout] --> crates/nlag-edge/src/webhooks.rs:572:8 [INFO] [stdout] | [INFO] [stdout] 572 | pub fn discord_webhook(public_key: &str) -> WebhookConfig { [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: fields `pattern` and `hostname` are never read [INFO] [stdout] --> crates/nlag-edge/src/wildcard.rs:42:9 [INFO] [stdout] | [INFO] [stdout] 40 | pub struct WildcardMatch { [INFO] [stdout] | ------------- fields in this struct [INFO] [stdout] 41 | /// The matched pattern [INFO] [stdout] 42 | pub pattern: String, [INFO] [stdout] | ^^^^^^^ [INFO] [stdout] ... [INFO] [stdout] 48 | pub hostname: String, [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `WildcardMatch` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `clear` is never used [INFO] [stdout] --> crates/nlag-edge/src/wildcard.rs:206:12 [INFO] [stdout] | [INFO] [stdout] 79 | impl WildcardRouter { [INFO] [stdout] | ------------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 206 | pub fn clear(&self) { [INFO] [stdout] | ^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: type alias `SharedWildcardRouter` is never used [INFO] [stdout] --> crates/nlag-edge/src/wildcard.rs:282:10 [INFO] [stdout] | [INFO] [stdout] 282 | pub type SharedWildcardRouter = Arc; [INFO] [stdout] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] warning: method `disabled` is never used [INFO] [stdout] --> crates/nlag-edge/src/wildcard.rs:316:12 [INFO] [stdout] | [INFO] [stdout] 289 | impl PatternBuilder { [INFO] [stdout] | ------------------- method in this implementation [INFO] [stdout] ... [INFO] [stdout] 316 | pub fn disabled(mut self) -> Self { [INFO] [stdout] | ^^^^^^^^ [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 1m 37s [INFO] [stderr] warning: the following packages contain code that will be rejected by a future version of Rust: quinn v0.11.9, quinn-udp v0.5.14 [INFO] [stderr] note: to see what the problems were, use the option `--future-incompat-report`, or run `cargo report future-incompatibilities --id 8` [INFO] running `Command { std: "docker" "inspect" "3e31289c955afb040cefdfabd782406edfa2cbc1fdb113d3ebcb8ac8599bcfe8", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "3e31289c955afb040cefdfabd782406edfa2cbc1fdb113d3ebcb8ac8599bcfe8", kill_on_drop: false }` [INFO] [stdout] 3e31289c955afb040cefdfabd782406edfa2cbc1fdb113d3ebcb8ac8599bcfe8