[INFO] cloning repository https://github.com/Nikolaikolya/init_server
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/Nikolaikolya/init_server" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FNikolaikolya%2Finit_server", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FNikolaikolya%2Finit_server'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 541a759209c3fc3916973986655a14614c012b31
[INFO] checking Nikolaikolya/init_server against eca445e5ae4a6679cc27d3a09106ce245e13a5a6 for pr-162478
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2FNikolaikolya%2Finit_server" "/workspace/builds/worker-2-tc1/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-2-tc1/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/Nikolaikolya/init_server
[INFO] finished tweaking git repo https://github.com/Nikolaikolya/init_server
[INFO] tweaked toml for git repo https://github.com/Nikolaikolya/init_server written to /workspace/builds/worker-2-tc1/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/Nikolaikolya/init_server on toolchain eca445e5ae4a6679cc27d3a09106ce245e13a5a6
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+eca445e5ae4a6679cc27d3a09106ce245e13a5a6" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/Nikolaikolya/init_server 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" "+eca445e5ae4a6679cc27d3a09106ce245e13a5a6" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr] warning: binary `init_server` should have a kebab-case name
[INFO] [stderr]   |
[INFO] [stderr] 1 | /workspace/builds/worker-2-tc1/source/target/.../init_server
[INFO] [stderr]   |                                                  ^^^^^^^^^^^
[INFO] [stderr]   |
[INFO] [stderr]   = note: `cargo::non_kebab_case_bins` is set to `warn` by default
[INFO] [stderr] help: to change the binary name to `init-server`, convert `bin.name`
[INFO] [stderr]  --> Cargo.toml:2:8
[INFO] [stderr]   |
[INFO] [stderr] 2 - name = "init_server"
[INFO] [stderr] 2 + name = "init-server"
[INFO] [stderr]   |
[INFO] [stderr] warning: `init_server` (manifest) generated 1 warning
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded hermit-abi v0.5.0
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:8683fc1fc2eb5c9ac98e0d076ab094b2ffac7f99da555d2b6a2e27f346de2ec7" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] 7260aef902c43e56d99a36b603402a05be2cedae3f5b7279a278d926e9bd88b9
[INFO] running `Command { std: "docker" "start" "7260aef902c43e56d99a36b603402a05be2cedae3f5b7279a278d926e9bd88b9", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "7260aef902c43e56d99a36b603402a05be2cedae3f5b7279a278d926e9bd88b9", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-w" "/opt/rustwide/workdir" "--user" "0:0" "7260aef902c43e56d99a36b603402a05be2cedae3f5b7279a278d926e9bd88b9" "/opt/rustwide/cargo-home/bin/cargo" "+eca445e5ae4a6679cc27d3a09106ce245e13a5a6" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "7260aef902c43e56d99a36b603402a05be2cedae3f5b7279a278d926e9bd88b9", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-w" "/opt/rustwide/workdir" "--user" "0:0" "7260aef902c43e56d99a36b603402a05be2cedae3f5b7279a278d926e9bd88b9" "/opt/rustwide/cargo-home/bin/cargo" "+eca445e5ae4a6679cc27d3a09106ce245e13a5a6" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stderr] warning: binary `init_server` should have a kebab-case name
[INFO] [stderr]   |
[INFO] [stderr] 1 | /opt/rustwide/target/.../init_server
[INFO] [stderr]   |                          ^^^^^^^^^^^
[INFO] [stderr]   |
[INFO] [stderr]   = note: `cargo::non_kebab_case_bins` is set to `warn` by default
[INFO] [stderr] help: to change the binary name to `init-server`, convert `bin.name`
[INFO] [stderr]  --> Cargo.toml:2:8
[INFO] [stderr]   |
[INFO] [stderr] 2 - name = "init_server"
[INFO] [stderr] 2 + name = "init-server"
[INFO] [stderr]   |
[INFO] [stderr] warning: `init_server` (manifest) generated 1 warning
[INFO] [stderr]     Checking bitflags v2.9.0
[INFO] [stderr]    Compiling cc v1.2.17
[INFO] [stderr]    Compiling getrandom v0.3.2
[INFO] [stderr]     Checking smallvec v1.14.0
[INFO] [stderr]    Compiling rustix v1.0.5
[INFO] [stderr]    Compiling nix v0.29.0
[INFO] [stderr]    Compiling memoffset v0.7.1
[INFO] [stderr]    Compiling portable-atomic v1.11.0
[INFO] [stderr]     Checking crypto-common v0.1.6
[INFO] [stderr]     Checking linux-raw-sys v0.9.3
[INFO] [stderr]     Checking regex-automata v0.4.9
[INFO] [stderr]     Checking console v0.15.11
[INFO] [stderr]     Checking indexmap v2.8.0
[INFO] [stderr]     Checking serde_spanned v0.6.8
[INFO] [stderr]     Checking toml_datetime v0.6.8
[INFO] [stderr]    Compiling anyhow v1.0.97
[INFO] [stderr]     Checking cipher v0.4.4
[INFO] [stderr]     Checking universal-hash v0.5.1
[INFO] [stderr]     Checking digest v0.10.7
[INFO] [stderr]     Checking polyval v0.6.2
[INFO] [stderr]    Compiling openssl v0.10.71
[INFO] [stderr]     Checking winnow v0.5.40
[INFO] [stderr]     Checking ctr v0.9.2
[INFO] [stderr]     Checking ghash v0.5.1
[INFO] [stderr]     Checking aes v0.8.4
[INFO] [stderr]     Checking clap_builder v4.5.35
[INFO] [stderr]     Checking parking_lot_core v0.9.10
[INFO] [stderr]    Compiling clap_derive v4.5.32
[INFO] [stderr]     Checking password-hash v0.5.0
[INFO] [stderr]     Checking aead v0.5.2
[INFO] [stderr]    Compiling openssl-macros v0.1.1
[INFO] [stderr]     Checking blake2 v0.10.6
[INFO] [stderr]     Checking socket2 v0.5.9
[INFO] [stderr]     Checking parking_lot v0.12.3
[INFO] [stderr]     Checking is-terminal v0.4.16
[INFO] [stderr]    Compiling init_server v0.1.0 (/opt/rustwide/workdir)
[INFO] [stderr]     Checking serde_json v1.0.140
[INFO] [stderr]     Checking argon2 v0.5.3
[INFO] [stderr]     Checking nix v0.26.4
[INFO] [stderr]     Checking chrono v0.4.40
[INFO] [stderr]     Checking sha2 v0.10.8
[INFO] [stderr]     Checking tokio v1.44.1
[INFO] [stderr]     Checking rand v0.8.5
[INFO] [stderr]     Checking uuid v1.16.0
[INFO] [stderr]     Checking aes-gcm v0.10.3
[INFO] [stderr]     Checking indicatif v0.17.11
[INFO] [stderr]     Checking ctrlc v3.4.5
[INFO] [stderr]    Compiling openssl-sys v0.9.106
[INFO] [stderr]    Compiling libz-sys v1.1.22
[INFO] [stderr]    Compiling libssh2-sys v0.3.1
[INFO] [stderr]     Checking regex v1.11.1
[INFO] [stderr]     Checking tempfile v3.19.1
[INFO] [stderr]     Checking env_logger v0.10.2
[INFO] [stderr]     Checking dialoguer v0.10.4
[INFO] [stderr]     Checking toml_edit v0.19.15
[INFO] [stderr]     Checking clap v4.5.35
[INFO] [stderr]     Checking toml v0.7.8
[INFO] [stderr]     Checking ssh2 v0.9.5
[INFO] [stdout] warning: unused import: `debug`
[INFO] [stdout]  --> src/nginx.rs:2:11
[INFO] [stdout]   |
[INFO] [stdout] 2 | use log::{debug, error, 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: `File`
[INFO] [stdout]  --> src/server.rs:2:16
[INFO] [stdout]   |
[INFO] [stdout] 2 |     fs::{self, File},
[INFO] [stdout]   |                ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `debug`
[INFO] [stdout]   --> src/server.rs:10:11
[INFO] [stdout]    |
[INFO] [stdout] 10 | use log::{debug, error, info, warn};
[INFO] [stdout]    |           ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `warn`
[INFO] [stdout]  --> src/utils.rs:2:31
[INFO] [stdout]   |
[INFO] [stdout] 2 | use log::{debug, error, info, warn};
[INFO] [stdout]   |                               ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `debug`
[INFO] [stdout]  --> src/nginx.rs:2:11
[INFO] [stdout]   |
[INFO] [stdout] 2 | use log::{debug, error, 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: `File`
[INFO] [stdout]  --> src/server.rs:2:16
[INFO] [stdout]   |
[INFO] [stdout] 2 |     fs::{self, File},
[INFO] [stdout]   |                ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `debug`
[INFO] [stdout]   --> src/server.rs:10:11
[INFO] [stdout]    |
[INFO] [stdout] 10 | use log::{debug, error, info, warn};
[INFO] [stdout]    |           ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `warn`
[INFO] [stdout]  --> src/utils.rs:2:31
[INFO] [stdout]   |
[INFO] [stdout] 2 | use log::{debug, error, info, warn};
[INFO] [stdout]   |                               ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `base64::decode`: Use Engine::decode
[INFO] [stdout]  --> src/config.rs:9:14
[INFO] [stdout]   |
[INFO] [stdout] 9 | use base64::{decode, encode};
[INFO] [stdout]   |              ^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `base64::encode`: Use Engine::encode
[INFO] [stdout]  --> src/config.rs:9:22
[INFO] [stdout]   |
[INFO] [stdout] 9 | use base64::{decode, encode};
[INFO] [stdout]   |                      ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `base64::encode`: Use Engine::encode
[INFO] [stdout]    --> src/config.rs:343:13
[INFO] [stdout]     |
[INFO] [stdout] 343 |     Ok(Some(encode(key)))
[INFO] [stdout]     |             ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `base64::decode`: Use Engine::decode
[INFO] [stdout]    --> src/config.rs:149:25
[INFO] [stdout]     |
[INFO] [stdout] 149 |         let key_bytes = decode(&key_string)
[INFO] [stdout]     |                         ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `base64::encode`: Use Engine::encode
[INFO] [stdout]    --> src/config.rs:172:12
[INFO] [stdout]     |
[INFO] [stdout] 172 |         Ok(encode(result))
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `base64::decode`: Use Engine::decode
[INFO] [stdout]    --> src/config.rs:187:25
[INFO] [stdout]     |
[INFO] [stdout] 187 |         let key_bytes = decode(&key_string)
[INFO] [stdout]     |                         ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `base64::decode`: Use Engine::decode
[INFO] [stdout]    --> src/config.rs:190:13
[INFO] [stdout]     |
[INFO] [stdout] 190 |             decode(encrypted).with_context(|| "Не удалось декодировать Base64 данные")?;
[INFO] [stdout]     |             ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `base64::decode`: Use Engine::decode
[INFO] [stdout]  --> src/config.rs:9:14
[INFO] [stdout]   |
[INFO] [stdout] 9 | use base64::{decode, encode};
[INFO] [stdout]   |              ^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `base64::encode`: Use Engine::encode
[INFO] [stdout]  --> src/config.rs:9:22
[INFO] [stdout]   |
[INFO] [stdout] 9 | use base64::{decode, encode};
[INFO] [stdout]   |                      ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `base64::encode`: Use Engine::encode
[INFO] [stdout]    --> src/config.rs:343:13
[INFO] [stdout]     |
[INFO] [stdout] 343 |     Ok(Some(encode(key)))
[INFO] [stdout]     |             ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `base64::decode`: Use Engine::decode
[INFO] [stdout]    --> src/config.rs:149:25
[INFO] [stdout]     |
[INFO] [stdout] 149 |         let key_bytes = decode(&key_string)
[INFO] [stdout]     |                         ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `base64::encode`: Use Engine::encode
[INFO] [stdout]    --> src/config.rs:172:12
[INFO] [stdout]     |
[INFO] [stdout] 172 |         Ok(encode(result))
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `base64::decode`: Use Engine::decode
[INFO] [stdout]    --> src/config.rs:187:25
[INFO] [stdout]     |
[INFO] [stdout] 187 |         let key_bytes = decode(&key_string)
[INFO] [stdout]     |                         ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `base64::decode`: Use Engine::decode
[INFO] [stdout]    --> src/config.rs:190:13
[INFO] [stdout]     |
[INFO] [stdout] 190 |             decode(encrypted).with_context(|| "Не удалось декодировать Base64 данные")?;
[INFO] [stdout]     |             ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/backup.rs:79:9
[INFO] [stdout]    |
[INFO] [stdout] 79 |     let mut entries = fs::read_dir(&backup_dir)
[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: variable does not need to be mutable
[INFO] [stdout]   --> src/backup.rs:79:9
[INFO] [stdout]    |
[INFO] [stdout] 79 |     let mut entries = fs::read_dir(&backup_dir)
[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 import: `Write`
[INFO] [stdout]  --> src/config.rs:4:16
[INFO] [stdout]   |
[INFO] [stdout] 4 |     io::{Read, Write},
[INFO] [stdout]   |                ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `name`
[INFO] [stdout]    --> src/backup.rs:101:10
[INFO] [stdout]     |
[INFO] [stdout] 101 |     for (name, mut files) in files_by_name {
[INFO] [stdout]     |          ^^^^ help: if this is intentional, prefix it with an underscore: `_name`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Write`
[INFO] [stdout]  --> src/config.rs:4:16
[INFO] [stdout]   |
[INFO] [stdout] 4 |     io::{Read, Write},
[INFO] [stdout]   |                ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `name`
[INFO] [stdout]    --> src/backup.rs:101:10
[INFO] [stdout]     |
[INFO] [stdout] 101 |     for (name, mut files) in files_by_name {
[INFO] [stdout]     |          ^^^^ help: if this is intentional, prefix it with an underscore: `_name`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `user`
[INFO] [stdout]    --> src/nginx.rs:250:67
[INFO] [stdout]     |
[INFO] [stdout] 250 | pub async fn configure_domain_proxy(domain_config: &DomainConfig, user: &str) -> Result<()> {
[INFO] [stdout]     |                                                                   ^^^^ help: if this is intentional, prefix it with an underscore: `_user`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `user`
[INFO] [stdout]    --> src/nginx.rs:325:68
[INFO] [stdout]     |
[INFO] [stdout] 325 | pub async fn configure_domain_static(domain_config: &DomainConfig, user: &str) -> Result<()> {
[INFO] [stdout]     |                                                                    ^^^^ help: if this is intentional, prefix it with an underscore: `_user`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ssh_key`
[INFO] [stdout]    --> src/security.rs:265:47
[INFO] [stdout]     |
[INFO] [stdout] 265 | pub async fn setup_ssh_access(username: &str, ssh_key: Option<&str>, user: &str) -> Result<()> {
[INFO] [stdout]     |                                               ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_ssh_key`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `user`
[INFO] [stdout]    --> src/security.rs:265:70
[INFO] [stdout]     |
[INFO] [stdout] 265 | pub async fn setup_ssh_access(username: &str, ssh_key: Option<&str>, user: &str) -> Result<()> {
[INFO] [stdout]     |                                                                      ^^^^ help: if this is intentional, prefix it with an underscore: `_user`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `password` is never read
[INFO] [stdout]    --> src/server.rs:309:28
[INFO] [stdout]     |
[INFO] [stdout] 309 |         let mut password = String::new();
[INFO] [stdout]     |                            ^^^^^^^^^^^^^ this value is reassigned later and never used
[INFO] [stdout] ...
[INFO] [stdout] 317 |                 password = ServerConfig::generate_strong_password(12)?;
[INFO] [stdout]     |                 -------- `password` is overwritten here before the previous value is read
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `config`
[INFO] [stdout]    --> src/server.rs:735:13
[INFO] [stdout]     |
[INFO] [stdout] 735 |         let config = ServerConfig::default();
[INFO] [stdout]     |             ^^^^^^ help: if this is intentional, prefix it with an underscore: `_config`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `change_root_password` is never used
[INFO] [stdout]    --> src/server.rs:278:10
[INFO] [stdout]     |
[INFO] [stdout] 278 | async fn change_root_password(user: &str) -> Result<()> {
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `user`
[INFO] [stdout]    --> src/nginx.rs:250:67
[INFO] [stdout]     |
[INFO] [stdout] 250 | pub async fn configure_domain_proxy(domain_config: &DomainConfig, user: &str) -> Result<()> {
[INFO] [stdout]     |                                                                   ^^^^ help: if this is intentional, prefix it with an underscore: `_user`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `user`
[INFO] [stdout]    --> src/nginx.rs:325:68
[INFO] [stdout]     |
[INFO] [stdout] 325 | pub async fn configure_domain_static(domain_config: &DomainConfig, user: &str) -> Result<()> {
[INFO] [stdout]     |                                                                    ^^^^ help: if this is intentional, prefix it with an underscore: `_user`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ssh_key`
[INFO] [stdout]    --> src/security.rs:265:47
[INFO] [stdout]     |
[INFO] [stdout] 265 | pub async fn setup_ssh_access(username: &str, ssh_key: Option<&str>, user: &str) -> Result<()> {
[INFO] [stdout]     |                                               ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_ssh_key`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `user`
[INFO] [stdout]    --> src/security.rs:265:70
[INFO] [stdout]     |
[INFO] [stdout] 265 | pub async fn setup_ssh_access(username: &str, ssh_key: Option<&str>, user: &str) -> Result<()> {
[INFO] [stdout]     |                                                                      ^^^^ help: if this is intentional, prefix it with an underscore: `_user`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `password` is never read
[INFO] [stdout]    --> src/server.rs:309:28
[INFO] [stdout]     |
[INFO] [stdout] 309 |         let mut password = String::new();
[INFO] [stdout]     |                            ^^^^^^^^^^^^^ this value is reassigned later and never used
[INFO] [stdout] ...
[INFO] [stdout] 317 |                 password = ServerConfig::generate_strong_password(12)?;
[INFO] [stdout]     |                 -------- `password` is overwritten here before the previous value is read
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `config`
[INFO] [stdout]    --> src/server.rs:735:13
[INFO] [stdout]     |
[INFO] [stdout] 735 |         let config = ServerConfig::default();
[INFO] [stdout]     |             ^^^^^^ help: if this is intentional, prefix it with an underscore: `_config`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `change_root_password` is never used
[INFO] [stdout]    --> src/server.rs:278:10
[INFO] [stdout]     |
[INFO] [stdout] 278 | async fn change_root_password(user: &str) -> Result<()> {
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `debug`
[INFO] [stdout]  --> src/nginx.rs:2:11
[INFO] [stdout]   |
[INFO] [stdout] 2 | use log::{debug, error, 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: `File`
[INFO] [stdout]  --> src/server.rs:2:16
[INFO] [stdout]   |
[INFO] [stdout] 2 |     fs::{self, File},
[INFO] [stdout]   |                ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `debug`
[INFO] [stdout]   --> src/server.rs:10:11
[INFO] [stdout]    |
[INFO] [stdout] 10 | use log::{debug, error, info, warn};
[INFO] [stdout]    |           ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `warn`
[INFO] [stdout]  --> src/utils.rs:2:31
[INFO] [stdout]   |
[INFO] [stdout] 2 | use log::{debug, error, info, warn};
[INFO] [stdout]   |                               ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `base64::decode`: Use Engine::decode
[INFO] [stdout]  --> src/config.rs:9:14
[INFO] [stdout]   |
[INFO] [stdout] 9 | use base64::{decode, encode};
[INFO] [stdout]   |              ^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `base64::encode`: Use Engine::encode
[INFO] [stdout]  --> src/config.rs:9:22
[INFO] [stdout]   |
[INFO] [stdout] 9 | use base64::{decode, encode};
[INFO] [stdout]   |                      ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `base64::encode`: Use Engine::encode
[INFO] [stdout]    --> src/config.rs:343:13
[INFO] [stdout]     |
[INFO] [stdout] 343 |     Ok(Some(encode(key)))
[INFO] [stdout]     |             ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `base64::decode`: Use Engine::decode
[INFO] [stdout]    --> src/config.rs:149:25
[INFO] [stdout]     |
[INFO] [stdout] 149 |         let key_bytes = decode(&key_string)
[INFO] [stdout]     |                         ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `base64::encode`: Use Engine::encode
[INFO] [stdout]    --> src/config.rs:172:12
[INFO] [stdout]     |
[INFO] [stdout] 172 |         Ok(encode(result))
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `base64::decode`: Use Engine::decode
[INFO] [stdout]    --> src/config.rs:187:25
[INFO] [stdout]     |
[INFO] [stdout] 187 |         let key_bytes = decode(&key_string)
[INFO] [stdout]     |                         ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `base64::decode`: Use Engine::decode
[INFO] [stdout]    --> src/config.rs:190:13
[INFO] [stdout]     |
[INFO] [stdout] 190 |             decode(encrypted).with_context(|| "Не удалось декодировать Base64 данные")?;
[INFO] [stdout]     |             ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `debug`
[INFO] [stdout]  --> src/nginx.rs:2:11
[INFO] [stdout]   |
[INFO] [stdout] 2 | use log::{debug, error, 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: `File`
[INFO] [stdout]  --> src/server.rs:2:16
[INFO] [stdout]   |
[INFO] [stdout] 2 |     fs::{self, File},
[INFO] [stdout]   |                ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `debug`
[INFO] [stdout]   --> src/server.rs:10:11
[INFO] [stdout]    |
[INFO] [stdout] 10 | use log::{debug, error, info, warn};
[INFO] [stdout]    |           ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `warn`
[INFO] [stdout]  --> src/utils.rs:2:31
[INFO] [stdout]   |
[INFO] [stdout] 2 | use log::{debug, error, info, warn};
[INFO] [stdout]   |                               ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `base64::decode`: Use Engine::decode
[INFO] [stdout]  --> src/config.rs:9:14
[INFO] [stdout]   |
[INFO] [stdout] 9 | use base64::{decode, encode};
[INFO] [stdout]   |              ^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(deprecated)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `base64::encode`: Use Engine::encode
[INFO] [stdout]  --> src/config.rs:9:22
[INFO] [stdout]   |
[INFO] [stdout] 9 | use base64::{decode, encode};
[INFO] [stdout]   |                      ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `base64::encode`: Use Engine::encode
[INFO] [stdout]    --> src/config.rs:343:13
[INFO] [stdout]     |
[INFO] [stdout] 343 |     Ok(Some(encode(key)))
[INFO] [stdout]     |             ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `base64::decode`: Use Engine::decode
[INFO] [stdout]    --> src/config.rs:149:25
[INFO] [stdout]     |
[INFO] [stdout] 149 |         let key_bytes = decode(&key_string)
[INFO] [stdout]     |                         ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `base64::encode`: Use Engine::encode
[INFO] [stdout]    --> src/config.rs:172:12
[INFO] [stdout]     |
[INFO] [stdout] 172 |         Ok(encode(result))
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `base64::decode`: Use Engine::decode
[INFO] [stdout]    --> src/config.rs:187:25
[INFO] [stdout]     |
[INFO] [stdout] 187 |         let key_bytes = decode(&key_string)
[INFO] [stdout]     |                         ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: use of deprecated function `base64::decode`: Use Engine::decode
[INFO] [stdout]    --> src/config.rs:190:13
[INFO] [stdout]     |
[INFO] [stdout] 190 |             decode(encrypted).with_context(|| "Не удалось декодировать Base64 данные")?;
[INFO] [stdout]     |             ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/backup.rs:79:9
[INFO] [stdout]    |
[INFO] [stdout] 79 |     let mut entries = fs::read_dir(&backup_dir)
[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: variable does not need to be mutable
[INFO] [stdout]   --> src/backup.rs:79:9
[INFO] [stdout]    |
[INFO] [stdout] 79 |     let mut entries = fs::read_dir(&backup_dir)
[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 import: `Write`
[INFO] [stdout]  --> src/config.rs:4:16
[INFO] [stdout]   |
[INFO] [stdout] 4 |     io::{Read, Write},
[INFO] [stdout]   |                ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `name`
[INFO] [stdout]    --> src/backup.rs:101:10
[INFO] [stdout]     |
[INFO] [stdout] 101 |     for (name, mut files) in files_by_name {
[INFO] [stdout]     |          ^^^^ help: if this is intentional, prefix it with an underscore: `_name`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `user`
[INFO] [stdout]    --> src/nginx.rs:250:67
[INFO] [stdout]     |
[INFO] [stdout] 250 | pub async fn configure_domain_proxy(domain_config: &DomainConfig, user: &str) -> Result<()> {
[INFO] [stdout]     |                                                                   ^^^^ help: if this is intentional, prefix it with an underscore: `_user`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `user`
[INFO] [stdout]    --> src/nginx.rs:325:68
[INFO] [stdout]     |
[INFO] [stdout] 325 | pub async fn configure_domain_static(domain_config: &DomainConfig, user: &str) -> Result<()> {
[INFO] [stdout]     |                                                                    ^^^^ help: if this is intentional, prefix it with an underscore: `_user`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ssh_key`
[INFO] [stdout]    --> src/security.rs:265:47
[INFO] [stdout]     |
[INFO] [stdout] 265 | pub async fn setup_ssh_access(username: &str, ssh_key: Option<&str>, user: &str) -> Result<()> {
[INFO] [stdout]     |                                               ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_ssh_key`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `user`
[INFO] [stdout]    --> src/security.rs:265:70
[INFO] [stdout]     |
[INFO] [stdout] 265 | pub async fn setup_ssh_access(username: &str, ssh_key: Option<&str>, user: &str) -> Result<()> {
[INFO] [stdout]     |                                                                      ^^^^ help: if this is intentional, prefix it with an underscore: `_user`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `password` is never read
[INFO] [stdout]    --> src/server.rs:309:28
[INFO] [stdout]     |
[INFO] [stdout] 309 |         let mut password = String::new();
[INFO] [stdout]     |                            ^^^^^^^^^^^^^ this value is reassigned later and never used
[INFO] [stdout] ...
[INFO] [stdout] 317 |                 password = ServerConfig::generate_strong_password(12)?;
[INFO] [stdout]     |                 -------- `password` is overwritten here before the previous value is read
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `config`
[INFO] [stdout]    --> src/server.rs:735:13
[INFO] [stdout]     |
[INFO] [stdout] 735 |         let config = ServerConfig::default();
[INFO] [stdout]     |             ^^^^^^ help: if this is intentional, prefix it with an underscore: `_config`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Write`
[INFO] [stdout]  --> src/config.rs:4:16
[INFO] [stdout]   |
[INFO] [stdout] 4 |     io::{Read, Write},
[INFO] [stdout]   |                ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `restore_from_backup` is never used
[INFO] [stdout]   --> src/backup.rs:43:14
[INFO] [stdout]    |
[INFO] [stdout] 43 | pub async fn restore_from_backup<P: AsRef<Path>>(backup_path: P, original_path: P) -> Result<()> {
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `clean_old_backups` is never used
[INFO] [stdout]   --> src/backup.rs:70:14
[INFO] [stdout]    |
[INFO] [stdout] 70 | pub async fn clean_old_backups(keep_last: usize) -> Result<()> {
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `CONFIG_FILE` is never used
[INFO] [stdout]   --> src/config.rs:33:11
[INFO] [stdout]    |
[INFO] [stdout] 33 | pub const CONFIG_FILE: &str = "config.json";
[INFO] [stdout]    |           ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `ConfigError` is never used
[INFO] [stdout]   --> src/config.rs:46:10
[INFO] [stdout]    |
[INFO] [stdout] 46 | pub enum ConfigError {
[INFO] [stdout]    |          ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `encrypt_string`, `decrypt_string`, and `update` are never used
[INFO] [stdout]    --> src/config.rs:138:12
[INFO] [stdout]     |
[INFO] [stdout]  96 | impl ServerConfig {
[INFO] [stdout]     | ----------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 138 |     pub fn encrypt_string(&self, plaintext: &str) -> Result<String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 176 |     pub fn decrypt_string(&self, encrypted: &str) -> Result<String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 321 |     pub fn update(
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `cleanup_containers` is never used
[INFO] [stdout]    --> src/docker.rs:125:14
[INFO] [stdout]     |
[INFO] [stdout] 125 | pub async fn cleanup_containers(user: &str) -> Result<()> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `success` is never used
[INFO] [stdout]   --> src/logger.rs:55:8
[INFO] [stdout]    |
[INFO] [stdout] 55 | pub fn success(message: &str) {
[INFO] [stdout]    |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `configure_firewall` is never used
[INFO] [stdout]    --> src/security.rs:138:14
[INFO] [stdout]     |
[INFO] [stdout] 138 | pub async fn configure_firewall(ports: &[u16], user: &str) -> Result<()> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `hash_password` is never used
[INFO] [stdout]    --> src/security.rs:209:8
[INFO] [stdout]     |
[INFO] [stdout] 209 | pub fn hash_password(password: &str) -> Result<String> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `setup_ssh_access` is never used
[INFO] [stdout]    --> src/security.rs:265:14
[INFO] [stdout]     |
[INFO] [stdout] 265 | pub async fn setup_ssh_access(username: &str, ssh_key: Option<&str>, user: &str) -> Result<()> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `change_root_password` is never used
[INFO] [stdout]    --> src/server.rs:278:10
[INFO] [stdout]     |
[INFO] [stdout] 278 | async fn change_root_password(user: &str) -> Result<()> {
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_server_ip` is never used
[INFO] [stdout]    --> src/utils.rs:136:14
[INFO] [stdout]     |
[INFO] [stdout] 136 | pub async fn get_server_ip() -> Result<String> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `name`
[INFO] [stdout]    --> src/backup.rs:101:10
[INFO] [stdout]     |
[INFO] [stdout] 101 |     for (name, mut files) in files_by_name {
[INFO] [stdout]     |          ^^^^ help: if this is intentional, prefix it with an underscore: `_name`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `user`
[INFO] [stdout]    --> src/nginx.rs:250:67
[INFO] [stdout]     |
[INFO] [stdout] 250 | pub async fn configure_domain_proxy(domain_config: &DomainConfig, user: &str) -> Result<()> {
[INFO] [stdout]     |                                                                   ^^^^ help: if this is intentional, prefix it with an underscore: `_user`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `user`
[INFO] [stdout]    --> src/nginx.rs:325:68
[INFO] [stdout]     |
[INFO] [stdout] 325 | pub async fn configure_domain_static(domain_config: &DomainConfig, user: &str) -> Result<()> {
[INFO] [stdout]     |                                                                    ^^^^ help: if this is intentional, prefix it with an underscore: `_user`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ssh_key`
[INFO] [stdout]    --> src/security.rs:265:47
[INFO] [stdout]     |
[INFO] [stdout] 265 | pub async fn setup_ssh_access(username: &str, ssh_key: Option<&str>, user: &str) -> Result<()> {
[INFO] [stdout]     |                                               ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_ssh_key`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `user`
[INFO] [stdout]    --> src/security.rs:265:70
[INFO] [stdout]     |
[INFO] [stdout] 265 | pub async fn setup_ssh_access(username: &str, ssh_key: Option<&str>, user: &str) -> Result<()> {
[INFO] [stdout]     |                                                                      ^^^^ help: if this is intentional, prefix it with an underscore: `_user`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: value assigned to `password` is never read
[INFO] [stdout]    --> src/server.rs:309:28
[INFO] [stdout]     |
[INFO] [stdout] 309 |         let mut password = String::new();
[INFO] [stdout]     |                            ^^^^^^^^^^^^^ this value is reassigned later and never used
[INFO] [stdout] ...
[INFO] [stdout] 317 |                 password = ServerConfig::generate_strong_password(12)?;
[INFO] [stdout]     |                 -------- `password` is overwritten here before the previous value is read
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `config`
[INFO] [stdout]    --> src/server.rs:735:13
[INFO] [stdout]     |
[INFO] [stdout] 735 |         let config = ServerConfig::default();
[INFO] [stdout]     |             ^^^^^^ help: if this is intentional, prefix it with an underscore: `_config`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `restore_from_backup` is never used
[INFO] [stdout]   --> src/backup.rs:43:14
[INFO] [stdout]    |
[INFO] [stdout] 43 | pub async fn restore_from_backup<P: AsRef<Path>>(backup_path: P, original_path: P) -> Result<()> {
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `clean_old_backups` is never used
[INFO] [stdout]   --> src/backup.rs:70:14
[INFO] [stdout]    |
[INFO] [stdout] 70 | pub async fn clean_old_backups(keep_last: usize) -> Result<()> {
[INFO] [stdout]    |              ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `CONFIG_FILE` is never used
[INFO] [stdout]   --> src/config.rs:33:11
[INFO] [stdout]    |
[INFO] [stdout] 33 | pub const CONFIG_FILE: &str = "config.json";
[INFO] [stdout]    |           ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `ConfigError` is never used
[INFO] [stdout]   --> src/config.rs:46:10
[INFO] [stdout]    |
[INFO] [stdout] 46 | pub enum ConfigError {
[INFO] [stdout]    |          ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `encrypt_string`, `decrypt_string`, and `update` are never used
[INFO] [stdout]    --> src/config.rs:138:12
[INFO] [stdout]     |
[INFO] [stdout]  96 | impl ServerConfig {
[INFO] [stdout]     | ----------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 138 |     pub fn encrypt_string(&self, plaintext: &str) -> Result<String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 176 |     pub fn decrypt_string(&self, encrypted: &str) -> Result<String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 321 |     pub fn update(
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `cleanup_containers` is never used
[INFO] [stdout]    --> src/docker.rs:125:14
[INFO] [stdout]     |
[INFO] [stdout] 125 | pub async fn cleanup_containers(user: &str) -> Result<()> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `success` is never used
[INFO] [stdout]   --> src/logger.rs:55:8
[INFO] [stdout]    |
[INFO] [stdout] 55 | pub fn success(message: &str) {
[INFO] [stdout]    |        ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `configure_firewall` is never used
[INFO] [stdout]    --> src/security.rs:138:14
[INFO] [stdout]     |
[INFO] [stdout] 138 | pub async fn configure_firewall(ports: &[u16], user: &str) -> Result<()> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `hash_password` is never used
[INFO] [stdout]    --> src/security.rs:209:8
[INFO] [stdout]     |
[INFO] [stdout] 209 | pub fn hash_password(password: &str) -> Result<String> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `setup_ssh_access` is never used
[INFO] [stdout]    --> src/security.rs:265:14
[INFO] [stdout]     |
[INFO] [stdout] 265 | pub async fn setup_ssh_access(username: &str, ssh_key: Option<&str>, user: &str) -> Result<()> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `change_root_password` is never used
[INFO] [stdout]    --> src/server.rs:278:10
[INFO] [stdout]     |
[INFO] [stdout] 278 | async fn change_root_password(user: &str) -> Result<()> {
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_server_ip` is never used
[INFO] [stdout]    --> src/utils.rs:136:14
[INFO] [stdout]     |
[INFO] [stdout] 136 | pub async fn get_server_ip() -> Result<String> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] warning: unused dependency `ctrlc`
[INFO] [stderr]   --> Cargo.toml:10:1
[INFO] [stderr]    |
[INFO] [stderr] 10 | ctrlc = "3.4"
[INFO] [stderr]    | ^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `cargo::unused_dependencies` is set to `warn` by default
[INFO] [stderr] help: consider removing the dependency on `ctrlc`
[INFO] [stderr] warning: unused dependency `dotenv`
[INFO] [stderr]   --> Cargo.toml:12:1
[INFO] [stderr]    |
[INFO] [stderr] 12 | dotenv = "0.15"
[INFO] [stderr]    | ^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr] help: consider removing the dependency on `dotenv`
[INFO] [stderr] warning: unused dependency `indicatif`
[INFO] [stderr]   --> Cargo.toml:14:1
[INFO] [stderr]    |
[INFO] [stderr] 14 | indicatif = "0.17"
[INFO] [stderr]    | ^^^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr] help: consider removing the dependency on `indicatif`
[INFO] [stderr] warning: unused dependency `nix`
[INFO] [stderr]   --> Cargo.toml:16:1
[INFO] [stderr]    |
[INFO] [stderr] 16 | nix = "0.26"
[INFO] [stderr]    | ^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr] help: consider removing the dependency on `nix`
[INFO] [stderr] warning: unused dependency `openssl`
[INFO] [stderr]   --> Cargo.toml:58:1
[INFO] [stderr]    |
[INFO] [stderr] 58 | openssl = "0.10"
[INFO] [stderr]    | ^^^^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr] help: consider removing the dependency on `openssl`
[INFO] [stderr] warning: unused dependency `sha2`
[INFO] [stderr]   --> Cargo.toml:20:1
[INFO] [stderr]    |
[INFO] [stderr] 20 | sha2 = "0.10"
[INFO] [stderr]    | ^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr] help: consider removing the dependency on `sha2`
[INFO] [stderr] warning: unused dependency `ssh2`
[INFO] [stderr]   --> Cargo.toml:21:1
[INFO] [stderr]    |
[INFO] [stderr] 21 | ssh2 = "0.9"
[INFO] [stderr]    | ^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr] help: consider removing the dependency on `ssh2`
[INFO] [stderr] warning: unused dependency `toml`
[INFO] [stderr]   --> Cargo.toml:23:1
[INFO] [stderr]    |
[INFO] [stderr] 23 | toml = "0.7"
[INFO] [stderr]    | ^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr] help: consider removing the dependency on `toml`
[INFO] [stderr] warning: `init_server` (manifest) generated 8 warnings
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 23.98s
[INFO] [stderr] warning: the following packages contain code that will be rejected by a future version of Rust: nix v0.29.0
[INFO] [stderr] note: to see what the problems were, use the option `--future-incompat-report`, or run `cargo report future-incompatibilities --id 10`
[INFO] running `Command { std: "docker" "inspect" "7260aef902c43e56d99a36b603402a05be2cedae3f5b7279a278d926e9bd88b9", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "7260aef902c43e56d99a36b603402a05be2cedae3f5b7279a278d926e9bd88b9", kill_on_drop: false }`
[INFO] [stdout] 7260aef902c43e56d99a36b603402a05be2cedae3f5b7279a278d926e9bd88b9
