[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] testing splax-s/NLAG against try#dec9417b8611e34e787a3e4c37686b5131f9e5c5 for pr-154210 [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fsplax-s%2FNLAG" "/workspace/builds/worker-2-tc2/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-2-tc2/source'... [INFO] [stderr] done. [INFO] removed /workspace/builds/worker-2-tc2/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-2-tc2/source/Cargo.toml [INFO] validating manifest of git repo https://github.com/splax-s/NLAG on toolchain dec9417b8611e34e787a3e4c37686b5131f9e5c5 [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+dec9417b8611e34e787a3e4c37686b5131f9e5c5" "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" "+dec9417b8611e34e787a3e4c37686b5131f9e5c5" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] Blocking waiting for file lock on package cache [INFO] [stderr] Blocking waiting for file lock on package cache [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc2/source:/opt/rustwide/workdir:ro,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" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+dec9417b8611e34e787a3e4c37686b5131f9e5c5" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] 8d0b50f3d1b5278ea863c7fab58962f214ddc1381b04f7e210938e911fe0cf00 [INFO] running `Command { std: "docker" "start" "-a" "8d0b50f3d1b5278ea863c7fab58962f214ddc1381b04f7e210938e911fe0cf00", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "8d0b50f3d1b5278ea863c7fab58962f214ddc1381b04f7e210938e911fe0cf00", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "8d0b50f3d1b5278ea863c7fab58962f214ddc1381b04f7e210938e911fe0cf00", kill_on_drop: false }` [INFO] [stdout] 8d0b50f3d1b5278ea863c7fab58962f214ddc1381b04f7e210938e911fe0cf00 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc2/source:/opt/rustwide/workdir:ro,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" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-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" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+dec9417b8611e34e787a3e4c37686b5131f9e5c5" "build" "--frozen" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 40f915d7f1231f99265cf23eb3f591b1ea157ebe40cc14e26b894fff49b3e43f [INFO] running `Command { std: "docker" "start" "-a" "40f915d7f1231f99265cf23eb3f591b1ea157ebe40cc14e26b894fff49b3e43f", kill_on_drop: false }` [INFO] [stderr] Compiling proc-macro2 v1.0.103 [INFO] [stderr] Compiling unicode-ident v1.0.22 [INFO] [stderr] Compiling quote v1.0.42 [INFO] [stderr] Compiling cfg-if v1.0.4 [INFO] [stderr] Compiling libc v0.2.178 [INFO] [stderr] Compiling serde_core v1.0.228 [INFO] [stderr] Compiling once_cell v1.21.3 [INFO] [stderr] Compiling memchr v2.7.6 [INFO] [stderr] Compiling log v0.4.29 [INFO] [stderr] Compiling smallvec v1.15.1 [INFO] [stderr] Compiling bytes v1.11.0 [INFO] [stderr] Compiling parking_lot_core v0.9.12 [INFO] [stderr] Compiling zerocopy v0.8.31 [INFO] [stderr] Compiling lock_api v0.4.14 [INFO] [stderr] Compiling find-msvc-tools v0.1.5 [INFO] [stderr] Compiling tracing-core v0.1.35 [INFO] [stderr] Compiling cc v1.2.49 [INFO] [stderr] Compiling typenum v1.19.0 [INFO] [stderr] Compiling syn v2.0.111 [INFO] [stderr] Compiling serde v1.0.228 [INFO] [stderr] Compiling slab v0.4.11 [INFO] [stderr] Compiling http v1.4.0 [INFO] [stderr] Compiling signal-hook-registry v1.4.7 [INFO] [stderr] Compiling parking_lot v0.12.5 [INFO] [stderr] Compiling mio v1.1.1 [INFO] [stderr] Compiling getrandom v0.2.16 [INFO] [stderr] Compiling generic-array v0.14.7 [INFO] [stderr] Compiling socket2 v0.6.1 [INFO] [stderr] Compiling zeroize v1.8.2 [INFO] [stderr] Compiling rustls-pki-types v1.13.1 [INFO] [stderr] Compiling ring v0.17.14 [INFO] [stderr] Compiling bitflags v2.10.0 [INFO] [stderr] Compiling stable_deref_trait v1.2.1 [INFO] [stderr] Compiling ppv-lite86 v0.2.21 [INFO] [stderr] Compiling crypto-common v0.1.7 [INFO] [stderr] Compiling block-buffer v0.10.4 [INFO] [stderr] Compiling getrandom v0.3.4 [INFO] [stderr] Compiling hashbrown v0.16.1 [INFO] [stderr] Compiling autocfg v1.5.0 [INFO] [stderr] Compiling httparse v1.10.1 [INFO] [stderr] Compiling digest v0.10.7 [INFO] [stderr] Compiling http-body v1.0.1 [INFO] [stderr] Compiling time-core v0.1.6 [INFO] [stderr] Compiling allocator-api2 v0.2.21 [INFO] [stderr] Compiling deranged v0.5.5 [INFO] [stderr] Compiling time-macros v0.2.24 [INFO] [stderr] Compiling num-traits v0.2.19 [INFO] [stderr] Compiling ahash v0.8.12 [INFO] [stderr] Compiling indexmap v2.12.1 [INFO] [stderr] Compiling thiserror v2.0.17 [INFO] [stderr] Compiling openssl-sys v0.9.111 [INFO] [stderr] Compiling rand_core v0.9.3 [INFO] [stderr] Compiling percent-encoding v2.3.2 [INFO] [stderr] Compiling rustls v0.23.35 [INFO] [stderr] Compiling rand_chacha v0.9.0 [INFO] [stderr] Compiling rustversion v1.0.22 [INFO] [stderr] Compiling strsim v0.11.1 [INFO] [stderr] Compiling writeable v0.6.2 [INFO] [stderr] Compiling litemap v0.8.1 [INFO] [stderr] Compiling serde_json v1.0.145 [INFO] [stderr] Compiling crunchy v0.2.4 [INFO] [stderr] Compiling hashbrown v0.14.5 [INFO] [stderr] Compiling rand v0.9.2 [INFO] [stderr] Compiling http-body-util v0.1.3 [INFO] [stderr] Compiling icu_normalizer_data v2.1.1 [INFO] [stderr] Compiling icu_properties_data v2.1.2 [INFO] [stderr] Compiling data-encoding v2.9.0 [INFO] [stderr] Compiling httpdate v1.0.3 [INFO] [stderr] Compiling time v0.3.44 [INFO] [stderr] Compiling sha1 v0.10.6 [INFO] [stderr] Compiling openssl v0.10.75 [INFO] [stderr] Compiling synstructure v0.13.2 [INFO] [stderr] Compiling libm v0.2.15 [INFO] [stderr] Compiling utf-8 v0.7.6 [INFO] [stderr] Compiling heck v0.5.0 [INFO] [stderr] Compiling nom v7.1.3 [INFO] [stderr] Compiling tiny-keccak v2.0.2 [INFO] [stderr] Compiling form_urlencoded v1.2.2 [INFO] [stderr] Compiling rand_core v0.6.4 [INFO] [stderr] Compiling native-tls v0.2.14 [INFO] [stderr] Compiling utf8parse v0.2.2 [INFO] [stderr] Compiling ucd-trie v0.1.7 [INFO] [stderr] Compiling rustls-webpki v0.103.8 [INFO] [stderr] Compiling pest v2.8.4 [INFO] [stderr] Compiling anstyle-parse v0.2.7 [INFO] [stderr] Compiling const-random-macro v0.1.16 [INFO] [stderr] Compiling serde_derive v1.0.228 [INFO] [stderr] Compiling tracing-attributes v0.1.31 [INFO] [stderr] Compiling tokio-macros v2.6.0 [INFO] [stderr] Compiling futures-macro v0.3.31 [INFO] [stderr] Compiling zerofrom-derive v0.1.6 [INFO] [stderr] Compiling tokio v1.48.0 [INFO] [stderr] Compiling displaydoc v0.2.5 [INFO] [stderr] Compiling futures-util v0.3.31 [INFO] [stderr] Compiling yoke-derive v0.8.1 [INFO] [stderr] Compiling zerovec-derive v0.11.2 [INFO] [stderr] Compiling tracing v0.1.43 [INFO] [stderr] Compiling thiserror-impl v1.0.69 [INFO] [stderr] Compiling zerofrom v0.1.6 [INFO] [stderr] Compiling thiserror-impl v2.0.17 [INFO] [stderr] Compiling yoke v0.8.1 [INFO] [stderr] Compiling openssl-macros v0.1.1 [INFO] [stderr] Compiling zerovec v0.11.5 [INFO] [stderr] Compiling zerotrie v0.2.3 [INFO] [stderr] Compiling thiserror v1.0.69 [INFO] [stderr] Compiling rand_chacha v0.3.1 [INFO] [stderr] Compiling tinystr v0.8.2 [INFO] [stderr] Compiling icu_locale_core v2.1.1 [INFO] [stderr] Compiling potential_utf v0.1.4 [INFO] [stderr] Compiling icu_collections v2.1.1 [INFO] [stderr] Compiling quinn-udp v0.5.14 [INFO] [stderr] Compiling num-integer v0.1.46 [INFO] [stderr] Compiling rustls-native-certs v0.8.2 [INFO] [stderr] Compiling icu_provider v2.1.1 [INFO] [stderr] Compiling webpki-roots v1.0.4 [INFO] [stderr] Compiling icu_normalizer v2.1.1 [INFO] [stderr] Compiling icu_properties v2.1.2 [INFO] [stderr] Compiling aho-corasick v1.1.4 [INFO] [stderr] Compiling regex-syntax v0.8.8 [INFO] [stderr] Compiling colorchoice v1.0.4 [INFO] [stderr] Compiling anstyle-query v1.1.5 [INFO] [stderr] Compiling lazy_static v1.5.0 [INFO] [stderr] Compiling is_terminal_polyfill v1.70.2 [INFO] [stderr] Compiling anstyle v1.0.13 [INFO] [stderr] Compiling anstream v0.6.21 [INFO] [stderr] Compiling fastbloom v0.14.0 [INFO] [stderr] Compiling tinyvec v1.10.0 [INFO] [stderr] Compiling num-bigint v0.4.6 [INFO] [stderr] Compiling idna_adapter v1.2.1 [INFO] [stderr] Compiling futures-executor v0.3.31 [INFO] [stderr] Compiling rustls-platform-verifier v0.6.2 [INFO] [stderr] Compiling tokio-util v0.7.17 [INFO] [stderr] Compiling tower v0.5.2 [INFO] [stderr] Compiling h2 v0.4.12 [INFO] [stderr] Compiling regex-automata v0.4.13 [INFO] [stderr] Compiling serde_urlencoded v0.7.1 [INFO] [stderr] Compiling rand v0.8.5 [INFO] [stderr] Compiling pest_meta v2.8.4 [INFO] [stderr] Compiling const-random v0.1.18 [INFO] [stderr] Compiling async-trait v0.1.89 [INFO] [stderr] Compiling quinn v0.11.9 [INFO] [stderr] Compiling pem v3.0.6 [INFO] [stderr] Compiling encoding_rs v0.8.35 [INFO] [stderr] Compiling unicode-segmentation v1.12.0 [INFO] [stderr] Compiling rustc-hash v2.1.1 [INFO] [stderr] Compiling signal-hook v0.3.18 [INFO] [stderr] Compiling clap_lex v0.7.6 [INFO] [stderr] Compiling lru-slab v0.1.2 [INFO] [stderr] Compiling semver v1.0.27 [INFO] [stderr] Compiling anyhow v1.0.100 [INFO] [stderr] Compiling ident_case v1.0.1 [INFO] [stderr] Compiling darling_core v0.20.11 [INFO] [stderr] Compiling rustc_version v0.4.1 [INFO] [stderr] Compiling clap_builder v4.5.53 [INFO] [stderr] Compiling quinn-proto v0.11.13 [INFO] [stderr] Compiling idna v1.1.0 [INFO] [stderr] Compiling pest_generator v2.8.4 [INFO] [stderr] Compiling dlv-list v0.5.2 [INFO] [stderr] Compiling tokio-native-tls v0.3.1 [INFO] [stderr] Compiling tokio-rustls v0.26.4 [INFO] [stderr] Compiling futures v0.3.31 [INFO] [stderr] Compiling toml_datetime v0.6.11 [INFO] [stderr] Compiling hyper v1.8.1 [INFO] [stderr] Compiling serde_spanned v0.6.9 [INFO] [stderr] Compiling rusticata-macros v4.1.0 [INFO] [stderr] Compiling asn1-rs-derive v0.5.1 [INFO] [stderr] Compiling asn1-rs-impl v0.2.0 [INFO] [stderr] Compiling clap_derive v4.5.49 [INFO] [stderr] Compiling yasna v0.5.2 [INFO] [stderr] Compiling sha2 v0.10.9 [INFO] [stderr] Compiling hyper-util v0.1.19 [INFO] [stderr] Compiling inout v0.1.4 [INFO] [stderr] Compiling serde_path_to_error v0.1.20 [INFO] [stderr] Compiling rustix v0.38.44 [INFO] [stderr] Compiling toml_write v0.1.2 [INFO] [stderr] Compiling winnow v0.7.14 [INFO] [stderr] Compiling iri-string v0.7.9 [INFO] [stderr] Compiling iana-time-zone v0.1.64 [INFO] [stderr] Compiling chrono v0.4.42 [INFO] [stderr] Compiling clap v4.5.53 [INFO] [stderr] Compiling cipher v0.4.4 [INFO] [stderr] Compiling darling_macro v0.20.11 [INFO] [stderr] Compiling rcgen v0.13.2 [INFO] [stderr] Compiling hyper-tls v0.6.0 [INFO] [stderr] Compiling hyper-rustls v0.27.7 [INFO] [stderr] Compiling tower-http v0.6.8 [INFO] [stderr] Compiling asn1-rs v0.6.2 [INFO] [stderr] Compiling toml_edit v0.22.27 [INFO] [stderr] Compiling pest_derive v2.8.4 [INFO] [stderr] Compiling ordered-multimap v0.7.3 [INFO] [stderr] Compiling url v2.5.7 [INFO] [stderr] Compiling matchers v0.2.0 [INFO] [stderr] Compiling curve25519-dalek v4.1.3 [INFO] [stderr] Compiling sharded-slab v0.1.7 [INFO] [stderr] Compiling webpki-roots v0.26.11 [INFO] [stderr] Compiling bincode v1.3.3 [INFO] [stderr] Compiling tracing-serde v0.2.0 [INFO] [stderr] Compiling tungstenite v0.28.0 [INFO] [stderr] Compiling hashlink v0.8.4 [INFO] [stderr] Compiling uuid v1.19.0 [INFO] [stderr] Compiling rustls-pemfile v2.2.0 [INFO] [stderr] Compiling serde_bytes v0.11.19 [INFO] [stderr] Compiling tracing-log v0.2.0 [INFO] [stderr] Compiling thread_local v1.1.9 [INFO] [stderr] Compiling protobuf v2.28.0 [INFO] [stderr] Compiling instability v0.3.10 [INFO] [stderr] Compiling nu-ansi-term v0.50.3 [INFO] [stderr] Compiling arraydeque v0.5.1 [INFO] [stderr] Compiling base64 v0.21.7 [INFO] [stderr] Compiling portable-atomic v1.11.1 [INFO] [stderr] Compiling linux-raw-sys v0.4.15 [INFO] [stderr] Compiling oid-registry v0.7.1 [INFO] [stderr] Compiling foldhash v0.1.5 [INFO] [stderr] Compiling hashbrown v0.15.5 [INFO] [stderr] Compiling toml v0.8.23 [INFO] [stderr] Compiling ron v0.8.1 [INFO] [stderr] Compiling tracing-subscriber v0.3.22 [INFO] [stderr] Compiling yaml-rust2 v0.8.1 [INFO] [stderr] Compiling nlag-common v0.1.0 (/opt/rustwide/workdir/crates/nlag-common) [INFO] [stderr] Compiling itertools v0.13.0 [INFO] [stderr] Compiling tokio-tungstenite v0.28.0 [INFO] [stderr] Compiling reqwest v0.12.26 [INFO] [stderr] Compiling rust-ini v0.20.0 [INFO] [stderr] Compiling signal-hook-mio v0.2.5 [INFO] [stderr] Compiling json5 v0.4.1 [INFO] [stderr] Compiling darling v0.20.11 [INFO] [stderr] Compiling blowfish v0.9.1 [INFO] [stderr] Compiling convert_case v0.6.0 [INFO] [stderr] Compiling tungstenite v0.24.0 [INFO] [stderr] Compiling simple_asn1 v0.6.3 [INFO] [stderr] Compiling axum-core v0.5.5 [INFO] [stderr] Compiling strum_macros v0.26.4 [INFO] [stderr] Compiling curve25519-dalek-derive v0.1.1 [INFO] [stderr] Compiling castaway v0.2.4 [INFO] [stderr] Compiling dashmap v5.5.3 [INFO] [stderr] Compiling raw-cpuid v11.6.0 [INFO] [stderr] Compiling indoc v2.0.7 [INFO] [stderr] Compiling pathdiff v0.2.3 [INFO] [stderr] Compiling matchit v0.8.4 [INFO] [stderr] Compiling signature v2.2.0 [INFO] [stderr] Compiling unsafe-libyaml v0.2.11 [INFO] [stderr] Compiling prometheus v0.13.4 [INFO] [stderr] Compiling compact_str v0.8.1 [INFO] [stderr] Compiling unicode-truncate v1.1.0 [INFO] [stderr] Compiling ed25519 v2.2.3 [INFO] [stderr] Compiling axum v0.8.7 [INFO] [stderr] Compiling serde_yaml v0.9.34+deprecated [INFO] [stderr] Compiling dirs-sys v0.4.1 [INFO] [stderr] Compiling config v0.14.1 [INFO] [stderr] Compiling jsonwebtoken v9.3.1 [INFO] [stderr] Compiling strum v0.26.3 [INFO] [stderr] Compiling quanta v0.12.6 [INFO] [stderr] Compiling tokio-tungstenite v0.24.0 [INFO] [stderr] Compiling bcrypt v0.15.1 [INFO] [stderr] Compiling crossterm v0.28.1 [INFO] [stderr] Compiling lru v0.12.5 [INFO] [stderr] Compiling der-parser v9.0.0 [INFO] [stderr] Compiling regex v1.12.2 [INFO] [stderr] Compiling axum-core v0.4.5 [INFO] [stderr] Compiling rtoolbox v0.0.3 [INFO] [stderr] Compiling spinning_top v0.3.0 [INFO] [stderr] Compiling no-std-compat v0.4.1 [INFO] [stderr] Compiling futures-timer v3.0.3 [INFO] [stderr] Compiling urlencoding v2.1.3 [INFO] [stderr] Compiling nonzero_ext v0.3.0 [INFO] [stderr] Compiling cassowary v0.3.0 [INFO] [stderr] Compiling unicode-width v0.2.0 [INFO] [stderr] Compiling matchit v0.7.3 [INFO] [stderr] Compiling governor v0.6.3 [INFO] [stderr] Compiling ratatui v0.29.0 [INFO] [stderr] Compiling rpassword v7.4.0 [INFO] [stderr] Compiling x509-parser v0.16.0 [INFO] [stderr] Compiling ed25519-dalek v2.2.0 [INFO] [stderr] Compiling dirs v5.0.1 [INFO] [stderr] Compiling clap_complete v4.5.61 [INFO] [stderr] Compiling tower-http v0.5.2 [INFO] [stderr] Compiling tower v0.4.13 [INFO] [stderr] Compiling hmac v0.12.1 [INFO] [stderr] Compiling nlag-control v0.1.0 (/opt/rustwide/workdir/crates/nlag-control) [INFO] [stderr] Compiling axum v0.7.9 [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] [stderr] Compiling nlag-agent v0.1.0 (/opt/rustwide/workdir/crates/nlag-agent) [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: 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: 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] [stderr] Compiling nlag-edge v0.1.0 (/opt/rustwide/workdir/crates/nlag-edge) [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 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] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 4m 18s [INFO] running `Command { std: "docker" "inspect" "40f915d7f1231f99265cf23eb3f591b1ea157ebe40cc14e26b894fff49b3e43f", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "40f915d7f1231f99265cf23eb3f591b1ea157ebe40cc14e26b894fff49b3e43f", kill_on_drop: false }` [INFO] [stdout] 40f915d7f1231f99265cf23eb3f591b1ea157ebe40cc14e26b894fff49b3e43f [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc2/source:/opt/rustwide/workdir:ro,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" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-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" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+dec9417b8611e34e787a3e4c37686b5131f9e5c5" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 81e52e140f6db6c45e2c70a344e7dc7050f3ca32cb7c3c9769b857b0027cf7b0 [INFO] running `Command { std: "docker" "start" "-a" "81e52e140f6db6c45e2c70a344e7dc7050f3ca32cb7c3c9769b857b0027cf7b0", kill_on_drop: false }` [INFO] [stderr] Compiling tokio v1.48.0 [INFO] [stderr] Compiling rustix v1.1.2 [INFO] [stderr] Compiling linux-raw-sys v0.11.0 [INFO] [stderr] Compiling tempfile v3.23.0 [INFO] [stderr] Compiling tokio-util v0.7.17 [INFO] [stderr] Compiling tower v0.5.2 [INFO] [stderr] Compiling quinn v0.11.9 [INFO] [stderr] Compiling tokio-rustls v0.26.4 [INFO] [stderr] Compiling tokio-native-tls v0.3.1 [INFO] [stderr] Compiling tokio-tungstenite v0.28.0 [INFO] [stderr] Compiling tokio-tungstenite v0.24.0 [INFO] [stderr] Compiling h2 v0.4.12 [INFO] [stderr] Compiling tower-http v0.6.8 [INFO] [stderr] Compiling nlag-common v0.1.0 (/opt/rustwide/workdir/crates/nlag-common) [INFO] [stderr] Compiling hyper v1.8.1 [INFO] [stderr] Compiling hyper-util v0.1.19 [INFO] [stderr] Compiling hyper-tls v0.6.0 [INFO] [stderr] Compiling hyper-rustls v0.27.7 [INFO] [stderr] Compiling axum v0.8.7 [INFO] [stderr] Compiling axum v0.7.9 [INFO] [stderr] Compiling reqwest v0.12.26 [INFO] [stderr] Compiling nlag-control v0.1.0 (/opt/rustwide/workdir/crates/nlag-control) [INFO] [stderr] Compiling nlag-agent v0.1.0 (/opt/rustwide/workdir/crates/nlag-agent) [INFO] [stderr] Compiling 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: `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: 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: 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: 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: `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 `test` profile [unoptimized + debuginfo] target(s) in 1m 48s [INFO] running `Command { std: "docker" "inspect" "81e52e140f6db6c45e2c70a344e7dc7050f3ca32cb7c3c9769b857b0027cf7b0", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "81e52e140f6db6c45e2c70a344e7dc7050f3ca32cb7c3c9769b857b0027cf7b0", kill_on_drop: false }` [INFO] [stdout] 81e52e140f6db6c45e2c70a344e7dc7050f3ca32cb7c3c9769b857b0027cf7b0 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc2/source:/opt/rustwide/workdir:ro,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" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-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" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+dec9417b8611e34e787a3e4c37686b5131f9e5c5" "test" "--frozen", kill_on_drop: false }` [INFO] [stdout] 95511be2c6065592a350f1e8c9bc4dba5707f060dd6478a2a3080a84053a1572 [INFO] running `Command { std: "docker" "start" "-a" "95511be2c6065592a350f1e8c9bc4dba5707f060dd6478a2a3080a84053a1572", kill_on_drop: false }` [INFO] [stderr] warning: unused import: `Timelike` [INFO] [stderr] --> crates/nlag-control/src/analytics.rs:21:29 [INFO] [stderr] | [INFO] [stderr] 21 | use chrono::{DateTime, Utc, Timelike, Datelike}; [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stderr] [INFO] [stderr] warning: unused import: `tracing::debug` [INFO] [stderr] --> crates/nlag-control/src/analytics.rs:26:5 [INFO] [stderr] | [INFO] [stderr] 26 | use tracing::debug; [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unexpected `cfg` condition value: `dns-verification` [INFO] [stderr] --> crates/nlag-control/src/domains.rs:408:15 [INFO] [stderr] | [INFO] [stderr] 408 | #[cfg(feature = "dns-verification")] [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: expected values for `feature` are: `default`, `postgres`, and `sqlx` [INFO] [stderr] = help: consider adding `dns-verification` as a feature in `Cargo.toml` [INFO] [stderr] = note: see for more information about checking conditional configuration [INFO] [stderr] = note: `#[warn(unexpected_cfgs)]` on by default [INFO] [stderr] [INFO] [stderr] warning: unexpected `cfg` condition value: `dns-verification` [INFO] [stderr] --> crates/nlag-control/src/domains.rs:425:19 [INFO] [stderr] | [INFO] [stderr] 425 | #[cfg(not(feature = "dns-verification"))] [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: expected values for `feature` are: `default`, `postgres`, and `sqlx` [INFO] [stderr] = help: consider adding `dns-verification` as a feature in `Cargo.toml` [INFO] [stderr] = note: see for more information about checking conditional configuration [INFO] [stderr] [INFO] [stderr] warning: unexpected `cfg` condition value: `dns-verification` [INFO] [stderr] --> crates/nlag-control/src/domains.rs:436:15 [INFO] [stderr] | [INFO] [stderr] 436 | #[cfg(feature = "dns-verification")] [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: expected values for `feature` are: `default`, `postgres`, and `sqlx` [INFO] [stderr] = help: consider adding `dns-verification` as a feature in `Cargo.toml` [INFO] [stderr] = note: see for more information about checking conditional configuration [INFO] [stderr] [INFO] [stderr] warning: unexpected `cfg` condition value: `dns-verification` [INFO] [stderr] --> crates/nlag-control/src/domains.rs:456:19 [INFO] [stderr] | [INFO] [stderr] 456 | #[cfg(not(feature = "dns-verification"))] [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: expected values for `feature` are: `default`, `postgres`, and `sqlx` [INFO] [stderr] = help: consider adding `dns-verification` as a feature in `Cargo.toml` [INFO] [stderr] = note: see for more information about checking conditional configuration [INFO] [stderr] [INFO] [stderr] warning: unused imports: `error` and `warn` [INFO] [stderr] --> crates/nlag-control/src/oauth.rs:21:22 [INFO] [stderr] | [INFO] [stderr] 21 | use tracing::{debug, error, info, warn}; [INFO] [stderr] | ^^^^^ ^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `parking_lot::RwLock` [INFO] [stderr] --> crates/nlag-control/src/sla.rs:22:5 [INFO] [stderr] | [INFO] [stderr] 22 | use parking_lot::RwLock; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `info` [INFO] [stderr] --> crates/nlag-control/src/sla.rs:26:22 [INFO] [stderr] | [INFO] [stderr] 26 | use tracing::{debug, info, warn}; [INFO] [stderr] | ^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `warn` [INFO] [stderr] --> crates/nlag-control/src/sso.rs:34:28 [INFO] [stderr] | [INFO] [stderr] 34 | use tracing::{debug, info, warn}; [INFO] [stderr] | ^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused imports: `debug` and `warn` [INFO] [stderr] --> crates/nlag-control/src/teams.rs:25:15 [INFO] [stderr] | [INFO] [stderr] 25 | use tracing::{debug, info, warn}; [INFO] [stderr] | ^^^^^ ^^^^ [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> crates/nlag-control/src/analytics.rs:710:17 [INFO] [stderr] | [INFO] [stderr] 710 | let mut event = test_event(200, i as f64); [INFO] [stderr] | ----^^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default [INFO] [stderr] [INFO] [stderr] warning: variable does not need to be mutable [INFO] [stderr] --> crates/nlag-control/src/teams.rs:1040:13 [INFO] [stderr] | [INFO] [stderr] 1040 | let mut team = manager.create_team( [INFO] [stderr] | ----^^^^ [INFO] [stderr] | | [INFO] [stderr] | help: remove this `mut` [INFO] [stderr] [INFO] [stderr] warning: variants `VerificationFailed`, `Expired`, and `DnsError` are never constructed [INFO] [stderr] --> crates/nlag-control/src/domains.rs:36:5 [INFO] [stderr] | [INFO] [stderr] 28 | pub enum DomainError { [INFO] [stderr] | ----------- variants in this enum [INFO] [stderr] ... [INFO] [stderr] 36 | VerificationFailed(String), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 45 | Expired, [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 54 | DnsError(String), [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `DomainError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stderr] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stderr] [INFO] [stderr] warning: method `needs_reverification` is never used [INFO] [stderr] --> crates/nlag-control/src/domains.rs:182:12 [INFO] [stderr] | [INFO] [stderr] 135 | impl ReservedDomain { [INFO] [stderr] | ------------------- method in this implementation [INFO] [stderr] ... [INFO] [stderr] 182 | pub fn needs_reverification(&self) -> bool { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: associated functions `free` and `enterprise` are never used [INFO] [stderr] --> crates/nlag-control/src/domains.rs:222:12 [INFO] [stderr] | [INFO] [stderr] 220 | impl DomainLimits { [INFO] [stderr] | ----------------- associated functions in this implementation [INFO] [stderr] 221 | /// Free tier limits [INFO] [stderr] 222 | pub fn free() -> Self { [INFO] [stderr] | ^^^^ [INFO] [stderr] ... [INFO] [stderr] 238 | pub fn enterprise() -> Self { [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: multiple methods are never used [INFO] [stderr] --> crates/nlag-control/src/domains.rs:365:18 [INFO] [stderr] | [INFO] [stderr] 270 | impl DomainManager { [INFO] [stderr] | ------------------ methods in this implementation [INFO] [stderr] ... [INFO] [stderr] 365 | pub async fn verify_custom_domain(&self, domain_id: &str) -> Result { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 403 | async fn verify_cname(&self, domain: &str, expected_target: &str) -> Result { [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 433 | async fn verify_txt_record(&self, domain: &str, expected_value: &str) -> Result { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 514 | pub fn assign_tunnel(&self, domain_id: &str, tunnel_id: &str, user_id: &str) -> Result<()> { [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 534 | pub fn unassign_tunnel(&self, domain_id: &str) -> Result<()> { [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 570 | pub fn cleanup_expired(&self) -> Vec { [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 598 | pub fn start_cleanup_task(self: Arc) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: variants `InvalidState`, `TokenExchangeFailed`, `UserInfoFailed`, `InvalidToken`, `MissingClaim`, and `HttpError` are never constructed [INFO] [stderr] --> crates/nlag-control/src/oauth.rs:30:5 [INFO] [stderr] | [INFO] [stderr] 25 | pub enum OAuthError { [INFO] [stderr] | ---------- variants in this enum [INFO] [stderr] ... [INFO] [stderr] 30 | InvalidState, [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 33 | TokenExchangeFailed(String), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 36 | UserInfoFailed(String), [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 39 | InvalidToken(String), [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 42 | MissingClaim(String), [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 45 | HttpError(String), [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `OAuthError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stderr] [INFO] [stderr] warning: field `client_secret` is never read [INFO] [stderr] --> crates/nlag-control/src/oauth.rs:70:9 [INFO] [stderr] | [INFO] [stderr] 55 | pub struct OAuthProvider { [INFO] [stderr] | ------------- field in this struct [INFO] [stderr] ... [INFO] [stderr] 70 | pub client_secret: String, [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `OAuthProvider` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stderr] [INFO] [stderr] warning: struct `OAuthUserInfo` is never constructed [INFO] [stderr] --> crates/nlag-control/src/oauth.rs:212:12 [INFO] [stderr] | [INFO] [stderr] 212 | pub struct OAuthUserInfo { [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: struct `TokenResponse` is never constructed [INFO] [stderr] --> crates/nlag-control/src/oauth.rs:237:12 [INFO] [stderr] | [INFO] [stderr] 237 | pub struct TokenResponse { [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: field `client` is never read [INFO] [stderr] --> crates/nlag-control/src/oauth.rs:265:5 [INFO] [stderr] | [INFO] [stderr] 257 | pub struct OAuthManager { [INFO] [stderr] | ------------ field in this struct [INFO] [stderr] ... [INFO] [stderr] 265 | client: reqwest::Client, [INFO] [stderr] | ^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: multiple methods are never used [INFO] [stderr] --> crates/nlag-control/src/oauth.rs:290:12 [INFO] [stderr] | [INFO] [stderr] 268 | impl OAuthManager { [INFO] [stderr] | ----------------- methods in this implementation [INFO] [stderr] ... [INFO] [stderr] 290 | pub fn remove_provider(&self, id: &str) { [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 295 | pub fn get_provider(&self, id: &str) -> Option { [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 300 | pub fn list_providers(&self) -> Vec { [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 356 | pub async fn exchange_code(&self, code: &str, state: &str) -> Result<(TokenResponse, OAuthUserInfo)> { [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 417 | async fn get_user_info(&self, provider: &OAuthProvider, tokens: &TokenResponse) -> Result { [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 447 | fn parse_id_token(&self, provider: &OAuthProvider, id_token: &str) -> Result> { [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 465 | fn parse_claims(&self, provider: &OAuthProvider, claims: serde_json::Value) -> Result { [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 535 | pub fn start_cleanup_task(self: Arc) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function `base64_url_decode` is never used [INFO] [stderr] --> crates/nlag-control/src/oauth.rs:586:4 [INFO] [stderr] | [INFO] [stderr] 586 | fn base64_url_decode(data: &str) -> std::result::Result, base64::DecodeError> { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method `delete_before` is never used [INFO] [stderr] --> crates/nlag-control/src/traffic.rs:119:14 [INFO] [stderr] | [INFO] [stderr] 108 | pub trait TrafficStore: Send + Sync { [INFO] [stderr] | ------------ method in this trait [INFO] [stderr] ... [INFO] [stderr] 119 | async fn delete_before(&self, timestamp: DateTime) -> Result; [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: `nlag-control` (bin "nlag-control" test) generated 25 warnings (run `cargo fix --bin "nlag-control" -p nlag-control --tests` to apply 9 suggestions) [INFO] [stderr] warning: unused import: `warn` [INFO] [stderr] --> crates/nlag-edge/src/circuit_breaker.rs:32:28 [INFO] [stderr] | [INFO] [stderr] 32 | use tracing::{debug, info, warn}; [INFO] [stderr] | ^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stderr] [INFO] [stderr] warning: unused imports: `Duration` and `Instant` [INFO] [stderr] --> crates/nlag-edge/src/event_webhooks.rs:12:17 [INFO] [stderr] | [INFO] [stderr] 12 | use std::time::{Duration, Instant}; [INFO] [stderr] | ^^^^^^^^ ^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `SocketAddr` [INFO] [stderr] --> crates/nlag-edge/src/ssh_tunnel.rs:31:24 [INFO] [stderr] | [INFO] [stderr] 31 | use std::net::{IpAddr, SocketAddr}; [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `warn` [INFO] [stderr] --> crates/nlag-edge/src/ssh_tunnel.rs:41:28 [INFO] [stderr] | [INFO] [stderr] 41 | use tracing::{debug, info, warn}; [INFO] [stderr] | ^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `warn` [INFO] [stderr] --> crates/nlag-edge/src/geo.rs:26:28 [INFO] [stderr] | [INFO] [stderr] 26 | use tracing::{debug, info, warn}; [INFO] [stderr] | ^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused variable: `domain` [INFO] [stderr] --> crates/nlag-edge/src/acme.rs:605:83 [INFO] [stderr] | [INFO] [stderr] 605 | async fn get_authorization(&self, key_pair: &AccountKeyPair, order_url: &str, domain: &str) -> Result<(String, AcmeChallenge)> { [INFO] [stderr] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_domain` [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default [INFO] [stderr] [INFO] [stderr] warning: unused variable: `now` [INFO] [stderr] --> crates/nlag-edge/src/circuit_breaker.rs:523:13 [INFO] [stderr] | [INFO] [stderr] 523 | let now = Instant::now(); [INFO] [stderr] | ^^^ help: if this is intentional, prefix it with an underscore: `_now` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `i` [INFO] [stderr] --> crates/nlag-edge/src/loadbalancer.rs:493:13 [INFO] [stderr] | [INFO] [stderr] 493 | for i in 0..3 { [INFO] [stderr] | ^ help: if this is intentional, prefix it with an underscore: `_i` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `agent1` [INFO] [stderr] --> crates/nlag-edge/src/loadbalancer.rs:528:13 [INFO] [stderr] | [INFO] [stderr] 528 | let agent1 = b1.agent_id; [INFO] [stderr] | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_agent1` [INFO] [stderr] [INFO] [stderr] warning: unused variable: `now` [INFO] [stderr] --> crates/nlag-edge/src/ssh_tunnel.rs:678:13 [INFO] [stderr] | [INFO] [stderr] 678 | let now = Instant::now(); [INFO] [stderr] | ^^^ help: if this is intentional, prefix it with an underscore: `_now` [INFO] [stderr] [INFO] [stderr] warning: method `remove_config` is never used [INFO] [stderr] --> crates/nlag-edge/src/basic_auth.rs:136:12 [INFO] [stderr] | [INFO] [stderr] 122 | impl BasicAuth { [INFO] [stderr] | -------------- method in this implementation [INFO] [stderr] ... [INFO] [stderr] 136 | pub fn remove_config(&self, key: &str) { [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stderr] [INFO] [stderr] warning: type alias `SharedBasicAuth` is never used [INFO] [stderr] --> crates/nlag-edge/src/basic_auth.rs:290:10 [INFO] [stderr] | [INFO] [stderr] 290 | pub type SharedBasicAuth = Arc; [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: variant `Timeout` is never constructed [INFO] [stderr] --> crates/nlag-edge/src/circuit_breaker.rs:121:5 [INFO] [stderr] | [INFO] [stderr] 117 | pub enum CallResult { [INFO] [stderr] | ---------- variant in this enum [INFO] [stderr] ... [INFO] [stderr] 121 | Timeout, [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `CallResult` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stderr] [INFO] [stderr] warning: method `reset` is never used [INFO] [stderr] --> crates/nlag-edge/src/circuit_breaker.rs:367:12 [INFO] [stderr] | [INFO] [stderr] 231 | impl CircuitBreaker { [INFO] [stderr] | ------------------- method in this implementation [INFO] [stderr] ... [INFO] [stderr] 367 | pub fn reset(&self) { [INFO] [stderr] | ^^^^^ [INFO] [stderr] [INFO] [stderr] warning: methods `set_config`, `all_stats`, `get_open_circuits`, `reset_all`, `remove`, and `cleanup_inactive` are never used [INFO] [stderr] --> crates/nlag-edge/src/circuit_breaker.rs:483:12 [INFO] [stderr] | [INFO] [stderr] 455 | impl CircuitBreakerRegistry { [INFO] [stderr] | --------------------------- methods in this implementation [INFO] [stderr] ... [INFO] [stderr] 483 | pub fn set_config(&self, backend_id: &str, config: CircuitBreakerConfig) { [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 492 | pub fn all_stats(&self) -> HashMap { [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 500 | pub fn get_open_circuits(&self) -> Vec { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 509 | pub fn reset_all(&self) { [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 516 | pub fn remove(&self, backend_id: &str) { [INFO] [stderr] | ^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 522 | pub fn cleanup_inactive(&self, max_age: Duration) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: struct `CircuitGuard` is never constructed [INFO] [stderr] --> crates/nlag-edge/src/circuit_breaker.rs:557:12 [INFO] [stderr] | [INFO] [stderr] 557 | pub struct CircuitGuard { [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: associated items `try_new`, `success`, `failure`, and `elapsed` are never used [INFO] [stderr] --> crates/nlag-edge/src/circuit_breaker.rs:565:12 [INFO] [stderr] | [INFO] [stderr] 563 | impl CircuitGuard { [INFO] [stderr] | ----------------- associated items in this implementation [INFO] [stderr] 564 | /// Create a new guard, returns None if circuit is open [INFO] [stderr] 565 | pub fn try_new(breaker: Arc) -> Option { [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 578 | pub fn success(mut self) { [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 584 | pub fn failure(mut self) { [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 590 | pub fn elapsed(&self) -> Duration { [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method `remove_tunnel_config` is never used [INFO] [stderr] --> crates/nlag-edge/src/error_pages.rs:117:12 [INFO] [stderr] | [INFO] [stderr] 91 | impl ErrorPageManager { [INFO] [stderr] | --------------------- method in this implementation [INFO] [stderr] ... [INFO] [stderr] 117 | pub fn remove_tunnel_config(&self, tunnel_id: &str) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: multiple methods are never used [INFO] [stderr] --> crates/nlag-edge/src/error_pages.rs:380:12 [INFO] [stderr] | [INFO] [stderr] 378 | impl ErrorPageManager { [INFO] [stderr] | --------------------- methods in this implementation [INFO] [stderr] 379 | /// Generate a 400 Bad Request page [INFO] [stderr] 380 | pub fn bad_request(&self, message: &str, request_id: Option<&str>) -> (String, String, u16) { [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 397 | pub fn unauthorized(&self, message: &str, request_id: Option<&str>) -> (String, String, u16) { [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 414 | pub fn forbidden(&self, message: &str, request_id: Option<&str>) -> (String, String, u16) { [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 505 | pub fn service_unavailable(&self, message: &str, request_id: Option<&str>) -> (String, String, u16) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 522 | pub fn gateway_timeout(&self, tunnel_id: Option<&str>, request_id: Option<&str>) -> (String, String, u16) { [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 539 | pub fn tunnel_not_found(&self, subdomain: &str, request_id: Option<&str>) -> (String, String, u16) { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 556 | pub fn tunnel_offline(&self, tunnel_id: &str, request_id: Option<&str>) -> (String, String, u16) { [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: type alias `SharedErrorPageManager` is never used [INFO] [stderr] --> crates/nlag-edge/src/error_pages.rs:574:10 [INFO] [stderr] | [INFO] [stderr] 574 | pub type SharedErrorPageManager = Arc; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: fields `event_id`, `status`, `timestamp`, `response_status`, and `response_body` are never read [INFO] [stderr] --> crates/nlag-edge/src/event_webhooks.rs:232:9 [INFO] [stderr] | [INFO] [stderr] 230 | pub struct DeliveryRecord { [INFO] [stderr] | -------------- fields in this struct [INFO] [stderr] 231 | /// Event ID [INFO] [stderr] 232 | pub event_id: String, [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 236 | pub status: DeliveryStatus, [INFO] [stderr] | ^^^^^^ [INFO] [stderr] 237 | /// Timestamp [INFO] [stderr] 238 | pub timestamp: DateTime, [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] 239 | /// Response status code (if delivered) [INFO] [stderr] 240 | pub response_status: Option, [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] 241 | /// Response body preview [INFO] [stderr] 242 | pub response_body: Option, [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `DeliveryRecord` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stderr] [INFO] [stderr] warning: type alias `SharedEventWebhooks` is never used [INFO] [stderr] --> crates/nlag-edge/src/event_webhooks.rs:501:10 [INFO] [stderr] | [INFO] [stderr] 501 | pub type SharedEventWebhooks = Arc; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method `subscribe_all` is never used [INFO] [stderr] --> crates/nlag-edge/src/event_webhooks.rs:540:12 [INFO] [stderr] | [INFO] [stderr] 508 | impl EndpointBuilder { [INFO] [stderr] | -------------------- method in this implementation [INFO] [stderr] ... [INFO] [stderr] 540 | pub fn subscribe_all(mut self, events: Vec) -> Self { [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: fields `headers` and `body` are never read [INFO] [stderr] --> crates/nlag-edge/src/middleware.rs:58:9 [INFO] [stderr] | [INFO] [stderr] 54 | Response { [INFO] [stderr] | -------- fields in this variant [INFO] [stderr] ... [INFO] [stderr] 58 | headers: Vec<(String, String)>, [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] 59 | /// Response body [INFO] [stderr] 60 | body: String, [INFO] [stderr] | ^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `MiddlewareResult` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stderr] [INFO] [stderr] warning: fields `location` and `permanent` are never read [INFO] [stderr] --> crates/nlag-edge/src/middleware.rs:65:9 [INFO] [stderr] | [INFO] [stderr] 63 | Redirect { [INFO] [stderr] | -------- fields in this variant [INFO] [stderr] 64 | /// Target URL [INFO] [stderr] 65 | location: String, [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] 66 | /// Permanent (301) or temporary (302) [INFO] [stderr] 67 | permanent: bool, [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `MiddlewareResult` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stderr] [INFO] [stderr] warning: fields `wildcard_router` and `event_webhooks` are never read [INFO] [stderr] --> crates/nlag-edge/src/middleware.rs:82:5 [INFO] [stderr] | [INFO] [stderr] 72 | pub struct MiddlewarePipeline { [INFO] [stderr] | ------------------ fields in this struct [INFO] [stderr] ... [INFO] [stderr] 82 | wildcard_router: Arc, [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] 83 | /// Event webhooks [INFO] [stderr] 84 | event_webhooks: Arc, [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: multiple associated items are never used [INFO] [stderr] --> crates/nlag-edge/src/middleware.rs:101:12 [INFO] [stderr] | [INFO] [stderr] 87 | impl MiddlewarePipeline { [INFO] [stderr] | ----------------------- associated items in this implementation [INFO] [stderr] ... [INFO] [stderr] 101 | pub fn with_components( [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 129 | pub fn basic_auth(&self) -> &BasicAuth { [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 134 | pub fn rewrite(&self) -> &RewriteEngine { [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 139 | pub fn error_pages(&self) -> &ErrorPageManager { [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 144 | pub fn event_webhooks(&self) -> &EventWebhooks { [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 149 | pub fn wildcard_router(&self) -> &WildcardRouter { [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 285 | pub fn route_wildcard(&self, host: &str) -> Option { [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 290 | pub fn emit_event(&self, event_type: EventType, tunnel_id: TunnelId, metadata: HashMap) { [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: variants `Denied`, `RateLimited`, `AuthRequired`, `InvalidConfig`, and `IpBlocked` are never constructed [INFO] [stderr] --> crates/nlag-edge/src/policy.rs:55:5 [INFO] [stderr] | [INFO] [stderr] 53 | pub enum PolicyError { [INFO] [stderr] | ----------- variants in this enum [INFO] [stderr] 54 | #[error("Policy denied: {0}")] [INFO] [stderr] 55 | Denied(String), [INFO] [stderr] | ^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 58 | RateLimited(String), [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 61 | AuthRequired(String), [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 64 | InvalidConfig(String), [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 67 | IpBlocked(String), [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `PolicyError` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis [INFO] [stderr] [INFO] [stderr] warning: field `message` is never read [INFO] [stderr] --> crates/nlag-edge/src/policy.rs:84:25 [INFO] [stderr] | [INFO] [stderr] 84 | Deny { status: u16, message: String }, [INFO] [stderr] | ---- ^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | field in this variant [INFO] [stderr] | [INFO] [stderr] = note: `PolicyDecision` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stderr] [INFO] [stderr] warning: fields `url` and `status` are never read [INFO] [stderr] --> crates/nlag-edge/src/policy.rs:86:16 [INFO] [stderr] | [INFO] [stderr] 86 | Redirect { url: String, status: u16 }, [INFO] [stderr] | -------- ^^^ ^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | fields in this variant [INFO] [stderr] | [INFO] [stderr] = note: `PolicyDecision` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stderr] [INFO] [stderr] warning: fields `auth_type` and `realm` are never read [INFO] [stderr] --> crates/nlag-edge/src/policy.rs:88:19 [INFO] [stderr] | [INFO] [stderr] 88 | RequireAuth { auth_type: String, realm: String }, [INFO] [stderr] | ----------- ^^^^^^^^^ ^^^^^ [INFO] [stderr] | | [INFO] [stderr] | fields in this variant [INFO] [stderr] | [INFO] [stderr] = note: `PolicyDecision` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stderr] [INFO] [stderr] warning: field `retry_after` is never read [INFO] [stderr] --> crates/nlag-edge/src/policy.rs:90:19 [INFO] [stderr] | [INFO] [stderr] 90 | RateLimited { retry_after: u64 }, [INFO] [stderr] | ----------- ^^^^^^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | field in this variant [INFO] [stderr] | [INFO] [stderr] = note: `PolicyDecision` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stderr] [INFO] [stderr] warning: field `subdomain` is never read [INFO] [stderr] --> crates/nlag-edge/src/policy.rs:107:9 [INFO] [stderr] | [INFO] [stderr] 95 | pub struct RequestContext { [INFO] [stderr] | -------------- field in this struct [INFO] [stderr] ... [INFO] [stderr] 107 | pub subdomain: Option, [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `RequestContext` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stderr] [INFO] [stderr] warning: fields `add_headers` and `remove_headers` are never read [INFO] [stderr] --> crates/nlag-edge/src/policy.rs:129:9 [INFO] [stderr] | [INFO] [stderr] 127 | pub struct ResponseModifications { [INFO] [stderr] | --------------------- fields in this struct [INFO] [stderr] 128 | /// Headers to add [INFO] [stderr] 129 | pub add_headers: HashMap, [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] 130 | /// Headers to remove [INFO] [stderr] 131 | pub remove_headers: Vec, [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `ResponseModifications` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stderr] [INFO] [stderr] warning: field `methods` is never read [INFO] [stderr] --> crates/nlag-edge/src/policy.rs:157:9 [INFO] [stderr] | [INFO] [stderr] 151 | pub struct CachingSettings { [INFO] [stderr] | --------------- field in this struct [INFO] [stderr] ... [INFO] [stderr] 157 | pub methods: Vec, [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `CachingSettings` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stderr] [INFO] [stderr] warning: methods `load_from_file`, `config`, and `get_response_modifications` are never used [INFO] [stderr] --> crates/nlag-edge/src/policy.rs:534:12 [INFO] [stderr] | [INFO] [stderr] 523 | impl PolicyEngine { [INFO] [stderr] | ----------------- methods in this implementation [INFO] [stderr] ... [INFO] [stderr] 534 | pub fn load_from_file(&self, path: &Path) -> Result<()> { [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 583 | pub fn config(&self) -> PolicyConfig { [INFO] [stderr] | ^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 886 | pub fn get_response_modifications(&self, ctx: &RequestContext) -> ResponseModifications { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method `remove_config` is never used [INFO] [stderr] --> crates/nlag-edge/src/transform.rs:216:12 [INFO] [stderr] | [INFO] [stderr] 191 | impl TransformEngine { [INFO] [stderr] | -------------------- method in this implementation [INFO] [stderr] ... [INFO] [stderr] 216 | pub fn remove_config(&self, key: &str) { [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: type alias `SharedTransformEngine` is never used [INFO] [stderr] --> crates/nlag-edge/src/transform.rs:544:10 [INFO] [stderr] | [INFO] [stderr] 544 | pub type SharedTransformEngine = Arc; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method `add_response_header` is never used [INFO] [stderr] --> crates/nlag-edge/src/transform.rs:586:12 [INFO] [stderr] | [INFO] [stderr] 551 | impl TransformBuilder { [INFO] [stderr] | --------------------- method in this implementation [INFO] [stderr] ... [INFO] [stderr] 586 | pub fn add_response_header(mut self, name: &str, value: &str) -> Self { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method `with_variables` is never used [INFO] [stderr] --> crates/nlag-edge/src/url_rewrite.rs:186:12 [INFO] [stderr] | [INFO] [stderr] 161 | impl RewriteContext { [INFO] [stderr] | ------------------- method in this implementation [INFO] [stderr] ... [INFO] [stderr] 186 | pub fn with_variables(mut self, variables: HashMap) -> Self { [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method `remove_rules` is never used [INFO] [stderr] --> crates/nlag-edge/src/url_rewrite.rs:246:12 [INFO] [stderr] | [INFO] [stderr] 214 | impl RewriteEngine { [INFO] [stderr] | ------------------ method in this implementation [INFO] [stderr] ... [INFO] [stderr] 246 | pub fn remove_rules(&self, key: &str) { [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: type alias `SharedRewriteEngine` is never used [INFO] [stderr] --> crates/nlag-edge/src/url_rewrite.rs:530:10 [INFO] [stderr] | [INFO] [stderr] 530 | pub type SharedRewriteEngine = Arc; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: methods `path_exact`, `redirect_temporary`, and `continue_rules` are never used [INFO] [stderr] --> crates/nlag-edge/src/url_rewrite.rs:579:12 [INFO] [stderr] | [INFO] [stderr] 537 | impl RuleBuilder { [INFO] [stderr] | ---------------- methods in this implementation [INFO] [stderr] ... [INFO] [stderr] 579 | pub fn path_exact(mut self, path: &str) -> Self { [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 632 | pub fn redirect_temporary(mut self, target: &str) -> Self { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 652 | pub fn continue_rules(mut self) -> Self { [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: field `0` is never read [INFO] [stderr] --> crates/nlag-edge/src/webhooks.rs:105:19 [INFO] [stderr] | [INFO] [stderr] 105 | MissingHeader(String), [INFO] [stderr] | ------------- ^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | field in this variant [INFO] [stderr] | [INFO] [stderr] = note: `VerificationResult` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stderr] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field [INFO] [stderr] | [INFO] [stderr] 105 - MissingHeader(String), [INFO] [stderr] 105 + MissingHeader(()), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: field `0` is never read [INFO] [stderr] --> crates/nlag-edge/src/webhooks.rs:107:19 [INFO] [stderr] | [INFO] [stderr] 107 | InvalidFormat(String), [INFO] [stderr] | ------------- ^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | field in this variant [INFO] [stderr] | [INFO] [stderr] = note: `VerificationResult` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stderr] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field [INFO] [stderr] | [INFO] [stderr] 107 - InvalidFormat(String), [INFO] [stderr] 107 + InvalidFormat(()), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: field `0` is never read [INFO] [stderr] --> crates/nlag-edge/src/webhooks.rs:109:11 [INFO] [stderr] | [INFO] [stderr] 109 | Error(String), [INFO] [stderr] | ----- ^^^^^^ [INFO] [stderr] | | [INFO] [stderr] | field in this variant [INFO] [stderr] | [INFO] [stderr] = note: `VerificationResult` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stderr] help: consider changing the field to be of unit type to suppress this warning while preserving the field numbering, or remove the field [INFO] [stderr] | [INFO] [stderr] 109 - Error(String), [INFO] [stderr] 109 + Error(()), [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: type alias `SharedWebhookVerifier` is never used [INFO] [stderr] --> crates/nlag-edge/src/webhooks.rs:539:10 [INFO] [stderr] | [INFO] [stderr] 539 | pub type SharedWebhookVerifier = Arc; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function `discord_webhook` is never used [INFO] [stderr] --> crates/nlag-edge/src/webhooks.rs:572:8 [INFO] [stderr] | [INFO] [stderr] 572 | pub fn discord_webhook(public_key: &str) -> WebhookConfig { [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: fields `pattern` and `hostname` are never read [INFO] [stderr] --> crates/nlag-edge/src/wildcard.rs:42:9 [INFO] [stderr] | [INFO] [stderr] 40 | pub struct WildcardMatch { [INFO] [stderr] | ------------- fields in this struct [INFO] [stderr] 41 | /// The matched pattern [INFO] [stderr] 42 | pub pattern: String, [INFO] [stderr] | ^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 48 | pub hostname: String, [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `WildcardMatch` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stderr] [INFO] [stderr] warning: method `clear` is never used [INFO] [stderr] --> crates/nlag-edge/src/wildcard.rs:206:12 [INFO] [stderr] | [INFO] [stderr] 79 | impl WildcardRouter { [INFO] [stderr] | ------------------- method in this implementation [INFO] [stderr] ... [INFO] [stderr] 206 | pub fn clear(&self) { [INFO] [stderr] | ^^^^^ [INFO] [stderr] [INFO] [stderr] warning: type alias `SharedWildcardRouter` is never used [INFO] [stderr] --> crates/nlag-edge/src/wildcard.rs:282:10 [INFO] [stderr] | [INFO] [stderr] 282 | pub type SharedWildcardRouter = Arc; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method `disabled` is never used [INFO] [stderr] --> crates/nlag-edge/src/wildcard.rs:316:12 [INFO] [stderr] | [INFO] [stderr] 289 | impl PatternBuilder { [INFO] [stderr] | ------------------- method in this implementation [INFO] [stderr] ... [INFO] [stderr] 316 | pub fn disabled(mut self) -> Self { [INFO] [stderr] | ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: unused import: `debug` [INFO] [stderr] --> crates/nlag-agent/src/file_server.rs:29:15 [INFO] [stderr] | [INFO] [stderr] 29 | use tracing::{debug, info, warn}; [INFO] [stderr] | ^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default [INFO] [stderr] [INFO] [stderr] warning: field `domain` is never read [INFO] [stderr] --> crates/nlag-agent/src/agent_config.rs:171:9 [INFO] [stderr] | [INFO] [stderr] 159 | pub struct SimpleTunnelConfig { [INFO] [stderr] | ------------------ field in this struct [INFO] [stderr] ... [INFO] [stderr] 171 | pub domain: Option, [INFO] [stderr] | ^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: `SimpleTunnelConfig` has derived impls for the traits `Clone` and `Debug`, but these are intentionally ignored during dead code analysis [INFO] [stderr] = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default [INFO] [stderr] [INFO] [stderr] warning: field `config_path` is never read [INFO] [stderr] --> crates/nlag-agent/src/agent_config.rs:613:5 [INFO] [stderr] | [INFO] [stderr] 609 | pub struct ConfigManager { [INFO] [stderr] | ------------- field in this struct [INFO] [stderr] ... [INFO] [stderr] 613 | config_path: Option, [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: associated items `from_file` and `reload` are never used [INFO] [stderr] --> crates/nlag-agent/src/agent_config.rs:626:12 [INFO] [stderr] | [INFO] [stderr] 616 | impl ConfigManager { [INFO] [stderr] | ------------------ associated items in this implementation [INFO] [stderr] ... [INFO] [stderr] 626 | pub fn from_file(path: &Path) -> Result, ConfigError> { [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 642 | pub fn reload(&self) -> Result<(), ConfigError> { [INFO] [stderr] | ^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function `can_create_tunnel` is never used [INFO] [stderr] --> crates/nlag-agent/src/auth.rs:253:14 [INFO] [stderr] | [INFO] [stderr] 253 | pub async fn can_create_tunnel(creds: &Credentials) -> Result { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: methods `no_listing`, `with_index`, and `with_cache_age` are never used [INFO] [stderr] --> crates/nlag-agent/src/file_server.rs:135:12 [INFO] [stderr] | [INFO] [stderr] 125 | impl FileServerConfig { [INFO] [stderr] | --------------------- methods in this implementation [INFO] [stderr] ... [INFO] [stderr] 135 | pub fn no_listing(mut self) -> Self { [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 141 | pub fn with_index, S: Into>(mut self, files: I) -> Self { [INFO] [stderr] | ^^^^^^^^^^ [INFO] [stderr] ... [INFO] [stderr] 147 | pub fn with_cache_age(mut self, seconds: u64) -> Self { [INFO] [stderr] | ^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: method `sync_traffic` is never used [INFO] [stderr] --> crates/nlag-agent/src/tunnel/mod.rs:95:12 [INFO] [stderr] | [INFO] [stderr] 43 | impl DashboardSync { [INFO] [stderr] | ------------------ method in this implementation [INFO] [stderr] ... [INFO] [stderr] 95 | pub fn sync_traffic(&self, method: &str, path: &str, status: u16, duration_ms: u64) { [INFO] [stderr] | ^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: function `handle_stream` is never used [INFO] [stderr] --> crates/nlag-agent/src/tunnel/forwarder.rs:469:10 [INFO] [stderr] | [INFO] [stderr] 469 | async fn handle_stream( [INFO] [stderr] | ^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: `nlag-edge` (bin "nlag-edge" test) generated 52 warnings (run `cargo fix --bin "nlag-edge" -p nlag-edge --tests` to apply 10 suggestions) [INFO] [stderr] warning: `nlag-agent` (bin "nlag" test) generated 8 warnings (run `cargo fix --bin "nlag" -p nlag-agent --tests` to apply 1 suggestion) [INFO] [stderr] Finished `test` profile [unoptimized + debuginfo] target(s) in 0.77s [INFO] [stderr] Running unittests src/main.rs (/opt/rustwide/target/debug/deps/nlag-6f06ebfef2f45ec5) [INFO] [stdout] [INFO] [stdout] running 40 tests [INFO] [stdout] test agent_config::tests::test_env_interpolation_with_default ... ok [INFO] [stdout] test agent_config::tests::test_basic_auth_config ... ok [INFO] [stdout] test agent_config::tests::test_get_tunnel_by_name ... ok [INFO] [stdout] test agent_config::tests::test_ip_restriction ... ok [INFO] [stdout] test agent_config::tests::test_oauth_config ... ok [INFO] [stdout] test agent_config::tests::test_global_headers_merge ... ok [INFO] [stdout] test agent_config::tests::test_tunnel_groups ... ok [INFO] [stdout] test agent_config::tests::test_parse_yaml_config ... ok [INFO] [stdout] test agent_config::tests::test_env_interpolation ... ok [INFO] [stdout] test agent_config::tests::test_webhook_config ... ok [INFO] [stdout] test auth::tests::test_credentials_serialization ... ok [INFO] [stdout] test agent_config::tests::test_validation_invalid_tcp_address ... ok [INFO] [stdout] test agent_config::tests::test_config_manager ... ok [INFO] [stdout] test agent_config::tests::test_validation_empty_address ... ok [INFO] [stdout] test auth::tests::test_user_tier_max_tunnels ... ok [INFO] [stdout] test cli::tests::test_shell_type_conversion ... ok [INFO] [stdout] test config::tests::test_default_config ... ok [INFO] [stdout] test auth::tests::test_user_tier_display ... ok [INFO] [stdout] test config::tests::test_tunnel_options ... ok [INFO] [stdout] test cli::tests::test_expose_with_options ... ok [INFO] [stdout] test cli::tests::test_completions_command ... ok [INFO] [stdout] test cli::tests::test_cli_parsing ... ok [INFO] [stdout] test file_server::tests::test_etag_caching ... ok [INFO] [stdout] test file_server::tests::test_directory_listing ... ok [INFO] [stdout] test file_server::tests::test_file_server_creation ... ok [INFO] [stdout] test file_server::tests::test_head_request ... ok [INFO] [stdout] test file_server::tests::test_mime_types ... ok [INFO] [stdout] test file_server::tests::test_format_size ... ok [INFO] [stdout] test file_server::tests::test_range_parsing ... ok [INFO] [stdout] test file_server::tests::test_not_found ... ok [INFO] [stdout] test file_server::tests::test_hidden_files ... ok [INFO] [stdout] test file_server::tests::test_serve_file ... ok [INFO] [stdout] test file_server::tests::test_path_traversal ... ok [INFO] [stdout] test tunnel::forwarder::tests::test_forward_stats ... ok [INFO] [stdout] test agent_config::tests::test_parse_toml_config ... ok [INFO] [stdout] test inspect::tests::test_record_response ... ok [INFO] [stdout] test inspect::tests::test_local_inspector_creation ... ok [INFO] [stdout] test inspect::tests::test_record_request ... ok [INFO] [stdout] test file_server::tests::test_serve_index ... ok [INFO] [stdout] test inspect::tests::test_clear_requests ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 40 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.05s [INFO] [stdout] [INFO] [stderr] Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/nlag_common-e5a4b9a8bd2f63e9) [INFO] [stdout] [INFO] [stdout] running 29 tests [INFO] [stdout] test error::tests::test_error_conversion ... ok [INFO] [stdout] test error::tests::test_error_display ... ok [INFO] [stdout] test protocol::codec::tests::test_message_too_large ... ok [INFO] [stdout] test protocol::message::tests::test_invalid_message_type ... ok [INFO] [stdout] test protocol::codec::tests::test_codec_partial_read ... ok [INFO] [stdout] test protocol::codec::tests::test_codec_roundtrip ... ok [INFO] [stdout] test protocol::message::tests::test_message_type_roundtrip ... ok [INFO] [stdout] test crypto::cert::tests::test_generate_self_signed ... ok [INFO] [stdout] test types::tests::test_agent_id_display ... ok [INFO] [stdout] test types::tests::test_agent_id_generation ... ok [INFO] [stdout] test crypto::cert::tests::test_generate_ca ... ok [INFO] [stdout] test types::tests::test_protocol_default_ports ... ok [INFO] [stdout] test types::tests::test_protocol_display ... ok [INFO] [stdout] test types::tests::test_protocol_is_udp ... ok [INFO] [stdout] test types::tests::test_protocol_tls_termination ... ok [INFO] [stdout] test types::tests::test_stream_id_display ... ok [INFO] [stdout] test types::tests::test_tunnel_config ... ok [INFO] [stdout] test types::tests::test_tunnel_config_defaults ... ok [INFO] [stdout] test types::tests::test_tunnel_id_from_str ... ok [INFO] [stdout] test types::tests::test_tunnel_id_invalid ... ok [INFO] [stdout] test types::tests::test_tunnel_state_display ... ok [INFO] [stdout] test types::tests::test_tunnel_status ... ok [INFO] [stdout] test crypto::tls::tests::test_create_server_config ... ok [INFO] [stdout] test transport::quic::tests::test_quic_server_creation ... ok [INFO] [stdout] test transport::quic::tests::test_quic_client_creation ... ok [INFO] [stdout] test crypto::cert::tests::test_load_cert ... ok [INFO] [stdout] test protocol::message::tests::test_message_serialization ... ok [INFO] [stdout] test types::tests::test_protocol_parsing ... ok [INFO] [stdout] test crypto::tls::tests::test_create_client_config_insecure ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 29 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.03s [INFO] [stdout] [INFO] [stderr] Running unittests src/main.rs (/opt/rustwide/target/debug/deps/nlag_control-2fc4d200718322f4) [INFO] [stdout] [INFO] [stdout] running 67 tests [INFO] [stdout] test analytics::tests::test_simplify_user_agent ... ok [INFO] [stdout] test analytics::tests::test_time_granularity ... ok [INFO] [stdout] test analytics::tests::test_top_counter ... ok [INFO] [stdout] test analytics::tests::test_error_rate ... ok [INFO] [stdout] test apikeys::tests::test_key_scopes ... ok [INFO] [stdout] test analytics::tests::test_metrics_bucket ... ok [INFO] [stdout] test analytics::tests::test_latency_percentiles ... ok [INFO] [stdout] test audit::tests::test_actor_types ... ok [INFO] [stdout] test audit::tests::test_audit_event_builder ... ok [INFO] [stdout] test audit::tests::test_audit_event_creation ... ok [INFO] [stdout] test audit::tests::test_audit_filter ... ok [INFO] [stdout] test apikeys::tests::test_ip_allowlist ... ok [INFO] [stdout] test audit::tests::test_export_config_filter ... ok [INFO] [stdout] test audit::tests::test_failed_event ... ok [INFO] [stdout] test audit::tests::test_severity_levels ... ok [INFO] [stdout] test audit::tests::test_target_types ... ok [INFO] [stdout] test billing::tests::test_quota_check ... ok [INFO] [stdout] test billing::tests::test_subscription_update ... ok [INFO] [stdout] test billing::tests::test_tier_limits ... ok [INFO] [stdout] test apikeys::tests::test_revoke_key ... ok [INFO] [stdout] test apikeys::tests::test_create_and_validate_key ... ok [INFO] [stdout] test billing::tests::test_usage_counter ... ok [INFO] [stdout] test domains::tests::test_blocked_subdomain ... ok [INFO] [stdout] test analytics::tests::test_tunnel_analytics ... ok [INFO] [stdout] test analytics::tests::test_analytics_manager ... ok [INFO] [stdout] test domains::tests::test_subdomain_too_short ... ok [INFO] [stdout] test domains::tests::test_reserve_subdomain ... ok [INFO] [stdout] test domains::tests::test_release_not_owner ... ok [INFO] [stdout] test domains::tests::test_domain_limits ... ok [INFO] [stdout] test domains::tests::test_release_domain ... ok [INFO] [stdout] test domains::tests::test_duplicate_subdomain ... ok [INFO] [stdout] test domains::tests::test_custom_domain_reservation ... ok [INFO] [stdout] test oauth::tests::test_google_provider ... ok [INFO] [stdout] test domains::tests::test_wildcard_matching ... ok [INFO] [stdout] test oauth::tests::test_microsoft_provider ... ok [INFO] [stdout] test oauth::tests::test_github_provider ... ok [INFO] [stdout] test sla::tests::test_latency_stats ... ok [INFO] [stdout] test sla::tests::test_sla_compliance_failing_uptime ... ok [INFO] [stdout] test sla::tests::test_sla_compliance_passing ... ok [INFO] [stdout] test sla::tests::test_error_rate_calculation ... ok [INFO] [stdout] test sla::tests::test_sla_tiers ... ok [INFO] [stdout] test sla::tests::test_uptime_percentage ... ok [INFO] [stdout] test sla::tests::test_uptime_tracker ... ok [INFO] [stdout] test sso::tests::test_allowed_domains ... ok [INFO] [stdout] test sla::tests::test_sla_compliance_failing_error_rate ... ok [INFO] [stdout] test sso::tests::test_generate_metadata ... ok [INFO] [stdout] test sso::tests::test_initiate_login_unknown_provider ... ok [INFO] [stdout] test sso::tests::test_initiate_login ... ok [INFO] [stdout] test sso::tests::test_authn_request_xml ... ok [INFO] [stdout] test sso::tests::test_register_provider ... ok [INFO] [stdout] test sso::tests::test_saml_assertion_validity ... ok [INFO] [stdout] test sso::tests::test_session_expiry ... ok [INFO] [stdout] test teams::tests::test_create_team ... ok [INFO] [stdout] test teams::tests::test_email_domain_restriction ... ok [INFO] [stdout] test teams::tests::test_custom_role ... ok [INFO] [stdout] test teams::tests::test_invite_and_accept ... ok [INFO] [stdout] test teams::tests::test_cannot_remove_last_owner ... ok [INFO] [stdout] test teams::tests::test_role_update ... ok [INFO] [stdout] test teams::tests::test_member_limit ... ok [INFO] [stdout] test teams::tests::test_user_teams ... ok [INFO] [stdout] test teams::tests::test_permission_check ... ok [INFO] [stdout] test traffic::tests::test_memory_store_metrics ... ok [INFO] [stdout] test traffic::tests::test_memory_store_insert_and_query ... ok [INFO] [stdout] test analytics::tests::test_dashboard_data ... ok [INFO] [stdout] test traffic::tests::test_memory_store_capacity_limit ... ok [INFO] [stdout] test oauth::tests::test_state_cleanup ... ok [INFO] [stdout] test oauth::tests::test_auth_url_generation ... ok [INFO] [stderr] Running unittests src/main.rs (/opt/rustwide/target/debug/deps/nlag_edge-4600152402d50d64) [INFO] [stdout] [INFO] [stdout] test result: ok. 67 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.22s [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] running 186 tests [INFO] [stdout] test acme::tests::test_acme_config_default ... ok [INFO] [stdout] test acme::tests::test_certificate_status ... ok [INFO] [stdout] test acme::tests::test_days_until_expiry ... ok [INFO] [stdout] test acme::tests::test_certificate_manager_creation ... ok [INFO] [stdout] test acme::tests::test_compute_key_authorization ... ok [INFO] [stdout] test acme::tests::test_expired_certificate ... ok [INFO] [stdout] test acme::tests::test_expiring_certificate ... ok [INFO] [stdout] test acme::tests::test_parse_challenge_type ... ok [INFO] [stdout] test acme::tests::test_sign_jws ... ok [INFO] [stdout] test audit::tests::test_event_creation ... ok [INFO] [stdout] test audit::tests::test_event_serialization ... ok [INFO] [stdout] test auth::tests::test_dev_mode_auth ... ok [INFO] [stdout] test auth::tests::test_scope_check ... ok [INFO] [stdout] test auth::tests::test_subdomain_check ... ok [INFO] [stdout] test basic_auth::tests::test_excluded_path ... ok [INFO] [stdout] test basic_auth::tests::test_custom_unauthorized_message ... ok [INFO] [stdout] test basic_auth::tests::test_invalid_credentials ... ok [INFO] [stdout] test acme::tests::test_generate_account_key ... ok [INFO] [stdout] test basic_auth::tests::test_disabled_auth ... ok [INFO] [stdout] test acme::tests::test_http01_store ... ok [INFO] [stdout] test basic_auth::tests::test_no_credentials ... ok [INFO] [stdout] test basic_auth::tests::test_password_with_colon ... ok [INFO] [stdout] test basic_auth::tests::test_sha256_password ... ok [INFO] [stdout] test basic_auth::tests::test_unknown_tunnel ... ok [INFO] [stdout] test basic_auth::tests::test_valid_credentials ... ok [INFO] [stdout] test circuit_breaker::tests::test_circuit_opens_after_failures ... ok [INFO] [stdout] test circuit_breaker::tests::test_circuit_rejects_when_open ... ok [INFO] [stdout] test basic_auth::tests::test_www_authenticate_header ... ok [INFO] [stdout] test circuit_breaker::tests::test_circuit_starts_closed ... ok [INFO] [stdout] test circuit_breaker::tests::test_circuit_closes_after_successes ... ok [INFO] [stdout] test circuit_breaker::tests::test_force_open_close ... ok [INFO] [stdout] test acme::tests::test_account_key_to_jwk ... ok [INFO] [stdout] test basic_auth::tests::test_multiple_users ... ok [INFO] [stdout] test circuit_breaker::tests::test_registry ... ok [INFO] [stdout] test basic_auth::tests::test_malformed_auth_header ... ok [INFO] [stdout] test circuit_breaker::tests::test_slow_call_detection ... ok [INFO] [stdout] test domains::tests::test_register_domain ... ok [INFO] [stdout] test domains::tests::test_domain_normalization ... ok [INFO] [stdout] test error_pages::tests::test_bad_gateway ... ok [INFO] [stdout] test error_pages::tests::test_custom_template ... ok [INFO] [stdout] test error_pages::tests::test_default_config ... ok [INFO] [stdout] test error_pages::tests::test_disabled_pages ... ok [INFO] [stdout] test error_pages::tests::test_html_escape ... ok [INFO] [stdout] test error_pages::tests::test_rate_limited ... ok [INFO] [stdout] test error_pages::tests::test_render_404 ... ok [INFO] [stdout] test error_pages::tests::test_render_500 ... ok [INFO] [stdout] test error_pages::tests::test_tunnel_config ... ok [INFO] [stdout] test event_webhooks::tests::test_build_headers ... ok [INFO] [stdout] test event_webhooks::tests::test_delivery_history ... ok [INFO] [stdout] test domains::tests::test_duplicate_domain ... ok [INFO] [stdout] test event_webhooks::tests::test_disabled_endpoint ... ok [INFO] [stdout] test domains::tests::test_lookup_unverified ... ok [INFO] [stdout] test event_webhooks::tests::test_emit_convenience_methods ... ok [INFO] [stdout] test event_webhooks::tests::test_endpoint_builder ... ok [INFO] [stdout] test event_webhooks::tests::test_event_creation ... ok [INFO] [stdout] test event_webhooks::tests::test_event_emission_with_channel ... ok [INFO] [stdout] test event_webhooks::tests::test_event_type_filtering ... ok [INFO] [stdout] test event_webhooks::tests::test_payload_signing ... ok [INFO] [stdout] test event_webhooks::tests::test_unregister_endpoint ... ok [INFO] [stdout] test geo::tests::test_allow_all_policy ... ok [INFO] [stdout] test geo::tests::test_allow_countries ... ok [INFO] [stdout] test geo::tests::test_block_asn ... ok [INFO] [stdout] test geo::tests::test_block_countries ... ok [INFO] [stdout] test geo::tests::test_block_proxy ... ok [INFO] [stdout] test geo::tests::test_block_tor ... ok [INFO] [stdout] test geo::tests::test_custom_block_message ... ok [INFO] [stdout] test geo::tests::test_disabled_policy ... ok [INFO] [stdout] test event_webhooks::tests::test_endpoint_filtering ... ok [INFO] [stdout] test event_webhooks::tests::test_endpoint_registration ... ok [INFO] [stdout] test geo::tests::test_ip_in_cidr_v6 ... ok [INFO] [stdout] test geo::tests::test_validate_country_code ... ok [INFO] [stdout] test geo::tests::test_geo_manager ... ok [INFO] [stdout] test geo::tests::test_global_block ... ok [INFO] [stdout] test grpc::tests::test_parse_grpc_timeout ... ok [INFO] [stdout] test grpc::tests::test_encode_decode_frame ... ok [INFO] [stdout] test grpc::tests::test_grpc_status_codes ... ok [INFO] [stdout] test loadbalancer::tests::test_health_check ... ok [INFO] [stdout] test loadbalancer::tests::test_least_connections ... ok [INFO] [stdout] test loadbalancer::tests::test_round_robin ... ok [INFO] [stdout] test logging::tests::test_http_log_builder ... ok [INFO] [stdout] test inspect::tests::test_capture_request ... ok [INFO] [stdout] test inspect::tests::test_disabled_inspector ... ok [INFO] [stdout] test metrics::tests::test_metrics_recording ... ok [INFO] [stdout] test middleware::tests::test_cidr_contains_v4 ... ok [INFO] [stdout] test middleware::tests::test_cidr_contains_v6 ... ok [INFO] [stdout] test circuit_breaker::tests::test_half_open_fails_on_failure ... ok [INFO] [stdout] test geo::tests::test_ip_in_cidr_v4 ... ok [INFO] [stdout] test middleware::tests::test_error_response_generation ... ok [INFO] [stdout] test middleware::tests::test_process_request_no_middleware ... ok [INFO] [stdout] test middleware::tests::test_ip_restriction_allow_list ... ok [INFO] [stdout] test middleware::tests::test_ip_restriction_deny ... ok [INFO] [stdout] test middleware::tests::test_register_tunnel ... ok [INFO] [stdout] test inspect::tests::test_request_list ... ok [INFO] [stdout] test policy::tests::test_glob_to_regex ... ok [INFO] [stdout] test policy::tests::test_cidr_contains ... ok [INFO] [stdout] test middleware::tests::test_pipeline_creation ... ok [INFO] [stdout] test policy::tests::test_policy_matching ... ok [INFO] [stdout] test policy::tests::test_cache_action ... ok [INFO] [stdout] test pool::tests::test_connection_reuse ... ok [INFO] [stdout] test pool::tests::test_connection_validity ... ok [INFO] [stdout] test region::tests::test_edge_selection ... ok [INFO] [stdout] test pool::tests::test_pool_acquire_and_release ... ok [INFO] [stdout] test region::tests::test_edge_availability ... ok [INFO] [stdout] test registry::tests::test_subdomain_generation ... ok [INFO] [stdout] test region::tests::test_region_registry ... ok [INFO] [stdout] test registry::tests::test_registry_creation ... ok [INFO] [stdout] test replay::tests::test_nonce_tracking ... ok [INFO] [stdout] test replay::tests::test_replay_guard ... ok [INFO] [stdout] test replay::tests::test_generate_nonce ... ok [INFO] [stdout] test circuit_breaker::tests::test_circuit_transitions_to_half_open ... ok [INFO] [stdout] test replay::tests::test_timestamp_validation ... ok [INFO] [stdout] test server::public::tests::test_extract_http_method ... ok [INFO] [stdout] test server::public::tests::test_extract_subdomain ... ok [INFO] [stdout] test server::public::tests::test_extract_http_host ... ok [INFO] [stdout] test server::public::tests::test_extract_http_status ... ok [INFO] [stdout] test server::public::tests::test_extract_websocket_key ... ok [INFO] [stdout] test server::public::tests::test_websocket_detection ... ok [INFO] [stdout] test server::tcp::tests::test_port_config_default ... ok [INFO] [stdout] test ssh_tunnel::tests::test_add_forward ... ok [INFO] [stdout] test ssh_tunnel::tests::test_close_session ... ok [INFO] [stdout] test ssh_tunnel::tests::test_forward_binding_invalid ... ok [INFO] [stdout] test server::rate_limit::tests::test_rate_limiter_creation ... ok [INFO] [stdout] test server::rate_limit::tests::test_rate_limiter_per_tunnel ... ok [INFO] [stdout] test ssh_tunnel::tests::test_forward_binding_parse_3_parts ... ok [INFO] [stdout] test ssh_tunnel::tests::test_key_registration ... ok [INFO] [stdout] test ssh_tunnel::tests::test_session_creation ... ok [INFO] [stdout] test ssh_tunnel::tests::test_forward_binding_parse_4_parts ... ok [INFO] [stdout] test ssh_tunnel::tests::test_subdomain_reservation ... ok [INFO] [stdout] test ssh_tunnel::tests::test_session_limit ... ok [INFO] [stdout] test region::tests::test_region_distance ... ok [INFO] [stdout] test transform::tests::test_add_header ... ok [INFO] [stdout] test ssh_tunnel::tests::test_stats ... ok [INFO] [stdout] test transform::tests::test_config_lookup ... ok [INFO] [stdout] test transform::tests::test_cors_headers ... ok [INFO] [stdout] test policy::tests::test_compression_action ... ok [INFO] [stdout] test policy::tests::test_rate_limit ... ok [INFO] [stdout] test transform::tests::test_remove_header ... ok [INFO] [stdout] test transform::tests::test_query_transform ... ok [INFO] [stdout] test transform::tests::test_security_headers ... ok [INFO] [stdout] test udp::tests::test_packet_encode_decode_ipv4 ... ok [INFO] [stdout] test udp::tests::test_packet_encode_decode_ipv6 ... ok [INFO] [stdout] test udp::tests::test_session_expiry ... ok [INFO] [stdout] test url_rewrite::tests::test_header_matching ... ok [INFO] [stdout] test url_rewrite::tests::test_host_based_routing ... ok [INFO] [stdout] test url_rewrite::tests::test_method_match ... ok [INFO] [stdout] test url_rewrite::tests::test_no_match ... ok [INFO] [stdout] test url_rewrite::tests::test_prefix_match ... ok [INFO] [stdout] test transform::tests::test_strip_prefix ... ok [INFO] [stdout] test url_rewrite::tests::test_priority_ordering ... ok [INFO] [stdout] test url_rewrite::tests::test_query_param_manipulation ... ok [INFO] [stdout] test url_rewrite::tests::test_redirect_permanent ... ok [INFO] [stdout] test warning::tests::test_acknowledgment ... ok [INFO] [stdout] test warning::tests::test_request_classification ... ok [INFO] [stdout] test webhooks::tests::test_config_removal ... ok [INFO] [stdout] test webhooks::tests::test_disabled_verification ... ok [INFO] [stdout] test webhooks::tests::test_github_invalid_signature ... ok [INFO] [stdout] test webhooks::tests::test_github_webhook_verification ... ok [INFO] [stdout] test webhooks::tests::test_missing_header ... ok [INFO] [stdout] test webhooks::tests::test_no_config_passes ... ok [INFO] [stdout] test transform::tests::test_add_prefix ... ok [INFO] [stdout] test webhooks::tests::test_path_matching ... ok [INFO] [stdout] test webhooks::tests::test_provider_display ... ok [INFO] [stdout] test webhooks::tests::test_shopify_webhook_verification ... ok [INFO] [stdout] test url_rewrite::tests::test_set_headers ... ok [INFO] [stdout] test webhooks::tests::test_stripe_expired_timestamp ... ok [INFO] [stdout] test webhooks::tests::test_stripe_webhook_verification ... ok [INFO] [stdout] test webhooks::tests::test_slack_webhook_verification ... ok [INFO] [stdout] test transform::tests::test_path_rewrite ... ok [INFO] [stdout] test transform::tests::test_conditional_transform ... ok [INFO] [stdout] test url_rewrite::tests::test_regex_match_with_capture ... ok [INFO] [stdout] test wildcard::tests::test_caching ... ok [INFO] [stdout] test wildcard::tests::test_list_patterns ... ok [INFO] [stdout] test wildcard::tests::test_exact_domain_pattern ... ok [INFO] [stdout] test wildcard::tests::test_metadata ... ok [INFO] [stdout] test wildcard::tests::test_case_insensitive ... ok [INFO] [stdout] test wildcard::tests::test_no_match ... ok [INFO] [stdout] test wildcard::tests::test_multi_level_wildcard ... ok [INFO] [stdout] test wildcard::tests::test_remove_pattern ... ok [INFO] [stdout] test wildcard::tests::test_partial_wildcard ... ok [INFO] [stdout] test wildcard::tests::test_priority_ordering ... ok [INFO] [stdout] test wildcard::tests::test_single_wildcard ... ok [INFO] [stdout] test transform::tests::test_variable_interpolation ... ok [INFO] [stdout] test wildcard::tests::test_validate_domain ... ok [INFO] [stdout] test wildcard::tests::test_suffix_wildcard ... ok [INFO] [stdout] test wildcard::tests::test_multiple_patterns ... ok [INFO] [stdout] test basic_auth::tests::test_bcrypt_password ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 186 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 2.90s [INFO] [stdout] [INFO] [stderr] Doc-tests nlag_common [INFO] [stdout] [INFO] [stdout] running 0 tests [INFO] [stdout] [INFO] [stdout] test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s [INFO] [stdout] [INFO] running `Command { std: "docker" "inspect" "95511be2c6065592a350f1e8c9bc4dba5707f060dd6478a2a3080a84053a1572", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "95511be2c6065592a350f1e8c9bc4dba5707f060dd6478a2a3080a84053a1572", kill_on_drop: false }` [INFO] [stdout] 95511be2c6065592a350f1e8c9bc4dba5707f060dd6478a2a3080a84053a1572