2018-02-10 01:00:55 +01:00
|
|
|
[package]
|
2021-04-27 23:18:32 +02:00
|
|
|
name = "vaultwarden"
|
2018-08-21 22:21:54 +02:00
|
|
|
version = "1.0.0"
|
2018-02-10 01:00:55 +01:00
|
|
|
authors = ["Daniel García <dani-garcia@users.noreply.github.com>"]
|
2021-11-05 19:18:54 +01:00
|
|
|
edition = "2021"
|
2024-12-05 22:10:59 +01:00
|
|
|
rust-version = "1.82.0"
|
2021-09-22 20:26:48 +02:00
|
|
|
resolver = "2"
|
2018-02-10 01:00:55 +01:00
|
|
|
|
2021-04-27 23:18:32 +02:00
|
|
|
repository = "https://github.com/dani-garcia/vaultwarden"
|
2018-12-30 00:04:22 +01:00
|
|
|
readme = "README.md"
|
2022-06-16 15:13:10 +02:00
|
|
|
license = "AGPL-3.0-only"
|
2018-12-30 00:04:22 +01:00
|
|
|
publish = false
|
|
|
|
build = "build.rs"
|
|
|
|
|
2018-12-06 20:35:25 +01:00
|
|
|
[features]
|
2021-11-07 18:53:39 +01:00
|
|
|
# default = ["sqlite"]
|
2019-03-29 20:27:20 +01:00
|
|
|
# Empty to keep compatibility, prefer to set USE_SYSLOG=true
|
|
|
|
enable_syslog = []
|
2019-05-27 22:58:52 +02:00
|
|
|
mysql = ["diesel/mysql", "diesel_migrations/mysql"]
|
2020-01-18 20:09:52 +01:00
|
|
|
postgresql = ["diesel/postgres", "diesel_migrations/postgres"]
|
2024-08-23 22:06:11 +02:00
|
|
|
sqlite = ["diesel/sqlite", "diesel_migrations/sqlite", "dep:libsqlite3-sys"]
|
2020-09-25 23:23:13 +02:00
|
|
|
# Enable to use a vendored and statically linked openssl
|
|
|
|
vendored_openssl = ["openssl/vendored"]
|
2022-03-20 18:51:24 +01:00
|
|
|
# Enable MiMalloc memory allocator to replace the default malloc
|
|
|
|
# This can improve performance for Alpine builds
|
2024-08-23 22:06:11 +02:00
|
|
|
enable_mimalloc = ["dep:mimalloc"]
|
2022-12-03 18:25:59 +01:00
|
|
|
# This is a development dependency, and should only be used during development!
|
|
|
|
# It enables the usage of the diesel_logger crate, which is able to output the generated queries.
|
|
|
|
# You also need to set an env variable `QUERY_LOGGER=1` to fully activate this so you do not have to re-compile
|
|
|
|
# if you want to turn off the logging for a specific run.
|
2024-08-23 22:06:11 +02:00
|
|
|
query_logger = ["dep:diesel_logger"]
|
2018-12-06 20:35:25 +01:00
|
|
|
|
2020-07-14 23:44:01 +02:00
|
|
|
# Enable unstable features, requires nightly
|
2020-09-11 23:52:20 +02:00
|
|
|
# Currently only used to enable rusts official ip support
|
2020-07-14 23:44:01 +02:00
|
|
|
unstable = []
|
|
|
|
|
2024-10-06 13:49:00 +02:00
|
|
|
[target."cfg(unix)".dependencies]
|
2022-02-07 22:26:22 +01:00
|
|
|
# Logging
|
2024-12-05 22:10:59 +01:00
|
|
|
syslog = "7.0.0"
|
2019-04-02 22:35:22 +02:00
|
|
|
|
2018-02-10 01:00:55 +01:00
|
|
|
[dependencies]
|
2022-02-07 22:26:22 +01:00
|
|
|
# Logging
|
2024-07-08 23:27:48 +02:00
|
|
|
log = "0.4.22"
|
2024-12-15 23:13:29 +01:00
|
|
|
fern = { version = "0.7.1", features = ["syslog-7", "reopen-1"] }
|
2024-12-05 22:10:59 +01:00
|
|
|
tracing = { version = "0.1.41", features = ["log"] } # Needed to have lettre and webauthn-rs trace logging to work
|
2022-05-04 21:13:05 +02:00
|
|
|
|
2022-02-07 22:26:22 +01:00
|
|
|
# A `dotenv` implementation for Rust
|
2023-03-22 21:30:07 +01:00
|
|
|
dotenvy = { version = "0.15.7", default-features = false }
|
2021-05-16 15:29:13 +02:00
|
|
|
|
2022-02-07 22:26:22 +01:00
|
|
|
# Lazy initialization
|
2024-10-11 18:42:40 +02:00
|
|
|
once_cell = "1.20.2"
|
2018-02-10 01:00:55 +01:00
|
|
|
|
2022-02-07 22:26:22 +01:00
|
|
|
# Numerical libraries
|
2024-05-19 20:30:34 +02:00
|
|
|
num-traits = "0.2.19"
|
2024-02-08 22:16:29 +01:00
|
|
|
num-derive = "0.4.2"
|
2024-12-10 17:59:28 +01:00
|
|
|
bigdecimal = "0.4.7"
|
2022-02-07 22:26:22 +01:00
|
|
|
|
|
|
|
# Web framework
|
2024-05-25 15:14:19 +02:00
|
|
|
rocket = { version = "0.5.1", features = ["tls", "json"], default-features = false }
|
|
|
|
rocket_ws = { version ="0.1.1" }
|
2018-08-30 17:43:46 +02:00
|
|
|
|
2022-02-07 22:26:22 +01:00
|
|
|
# WebSockets libraries
|
2024-05-19 20:30:34 +02:00
|
|
|
rmpv = "1.3.0" # MessagePack library
|
2023-02-08 17:13:14 +01:00
|
|
|
|
|
|
|
# Concurrent HashMap used for WebSocket messaging and favicons
|
2024-09-07 10:39:29 +02:00
|
|
|
dashmap = "6.1.0"
|
2018-08-30 17:43:46 +02:00
|
|
|
|
2022-02-07 22:26:22 +01:00
|
|
|
# Async futures
|
2024-10-11 18:42:40 +02:00
|
|
|
futures = "0.3.31"
|
2024-12-05 22:10:59 +01:00
|
|
|
tokio = { version = "1.42.0", features = ["rt-multi-thread", "fs", "io-util", "parking_lot", "time", "signal", "net"] }
|
2018-08-30 17:43:46 +02:00
|
|
|
|
2018-02-10 01:00:55 +01:00
|
|
|
# A generic serialization/deserialization framework
|
2024-12-15 23:13:29 +01:00
|
|
|
serde = { version = "1.0.216", features = ["derive"] }
|
2024-12-05 22:10:59 +01:00
|
|
|
serde_json = "1.0.133"
|
2018-12-06 20:35:25 +01:00
|
|
|
|
2018-02-10 01:00:55 +01:00
|
|
|
# A safe, extensible ORM and Query builder
|
2024-12-05 22:10:59 +01:00
|
|
|
diesel = { version = "2.2.6", features = ["chrono", "r2d2", "numeric"] }
|
2024-06-19 13:06:58 +02:00
|
|
|
diesel_migrations = "2.2.0"
|
2024-12-05 22:10:59 +01:00
|
|
|
diesel_logger = { version = "0.4.0", optional = true }
|
2019-05-26 23:02:41 +02:00
|
|
|
|
2023-02-08 17:13:14 +01:00
|
|
|
# Bundled/Static SQLite
|
2024-08-23 22:06:11 +02:00
|
|
|
libsqlite3-sys = { version = "0.30.1", features = ["bundled"], optional = true }
|
2018-05-07 21:33:54 +02:00
|
|
|
|
2020-08-23 01:07:53 +02:00
|
|
|
# Crypto-related libraries
|
2022-06-04 15:13:10 +02:00
|
|
|
rand = { version = "0.8.5", features = ["small_rng"] }
|
2024-02-25 23:26:46 +01:00
|
|
|
ring = "0.17.8"
|
2018-02-10 01:00:55 +01:00
|
|
|
|
|
|
|
# UUID generation
|
2024-10-18 20:34:31 +02:00
|
|
|
uuid = { version = "1.11.0", features = ["v4"] }
|
2018-02-10 01:00:55 +01:00
|
|
|
|
2020-07-08 06:30:18 +02:00
|
|
|
# Date and time libraries
|
2024-12-10 17:59:28 +01:00
|
|
|
chrono = { version = "0.4.39", features = ["clock", "serde"], default-features = false }
|
2024-09-20 12:06:06 +02:00
|
|
|
chrono-tz = "0.10.0"
|
2024-12-05 22:10:59 +01:00
|
|
|
time = "0.3.37"
|
2018-02-10 01:00:55 +01:00
|
|
|
|
2021-04-03 05:16:49 +02:00
|
|
|
# Job scheduler
|
2024-04-27 00:53:42 +02:00
|
|
|
job_scheduler_ng = "2.0.5"
|
2021-04-03 05:16:49 +02:00
|
|
|
|
2022-02-07 22:26:22 +01:00
|
|
|
# Data encoding library Hex/Base32/Base64
|
2024-05-19 20:30:34 +02:00
|
|
|
data-encoding = "2.6.0"
|
2018-02-10 01:00:55 +01:00
|
|
|
|
|
|
|
# JWT library
|
2024-03-23 15:40:34 +01:00
|
|
|
jsonwebtoken = "9.3.0"
|
2018-02-10 01:00:55 +01:00
|
|
|
|
2022-02-07 22:26:22 +01:00
|
|
|
# TOTP library
|
2023-11-15 10:41:14 +01:00
|
|
|
totp-lite = "2.0.1"
|
2018-07-12 21:46:50 +02:00
|
|
|
|
2018-11-16 02:34:17 +01:00
|
|
|
# Yubico Library
|
2024-12-05 22:10:59 +01:00
|
|
|
yubico = { version = "0.12.0", features = ["online-tokio"], default-features = false }
|
2018-11-16 02:34:17 +01:00
|
|
|
|
2022-03-27 17:25:04 +02:00
|
|
|
# WebAuthn libraries
|
2022-02-07 22:26:22 +01:00
|
|
|
webauthn-rs = "0.3.2"
|
2018-02-10 01:00:55 +01:00
|
|
|
|
2023-02-08 17:13:14 +01:00
|
|
|
# Handling of URL's for WebAuthn and favicons
|
2024-12-05 22:10:59 +01:00
|
|
|
url = "2.5.4"
|
2018-07-12 21:46:50 +02:00
|
|
|
|
2023-02-08 17:13:14 +01:00
|
|
|
# Email libraries
|
2024-12-10 17:59:28 +01:00
|
|
|
lettre = { version = "0.11.11", features = ["smtp-transport", "sendmail-transport", "builder", "serde", "tokio1-native-tls", "hostname", "tracing", "tokio1"], default-features = false }
|
2023-12-04 20:26:11 +01:00
|
|
|
percent-encoding = "2.3.1" # URL encoding library used for URL's in the emails
|
2024-08-07 22:46:03 +02:00
|
|
|
email_address = "0.2.9"
|
2018-08-15 08:32:19 +02:00
|
|
|
|
2023-02-08 17:13:14 +01:00
|
|
|
# HTML Template library
|
2024-11-09 19:58:10 +01:00
|
|
|
handlebars = { version = "6.2.0", features = ["dir_source"] }
|
2019-01-13 01:39:29 +01:00
|
|
|
|
2023-02-08 17:13:14 +01:00
|
|
|
# HTTP client (Used for favicons, version check, DUO and HIBP API)
|
2024-11-09 19:58:10 +01:00
|
|
|
reqwest = { version = "0.12.9", features = ["native-tls-alpn", "stream", "json", "gzip", "brotli", "socks", "cookies"] }
|
2024-12-10 17:59:28 +01:00
|
|
|
hickory-resolver = "0.24.2"
|
2022-02-07 22:26:22 +01:00
|
|
|
|
2023-02-08 17:13:14 +01:00
|
|
|
# Favicon extraction libraries
|
2024-12-05 22:10:59 +01:00
|
|
|
html5gum = "0.7.0"
|
2024-11-09 19:58:10 +01:00
|
|
|
regex = { version = "1.11.1", features = ["std", "perf", "unicode-perl"], default-features = false }
|
2023-12-04 20:26:11 +01:00
|
|
|
data-url = "0.3.1"
|
2024-12-05 22:10:59 +01:00
|
|
|
bytes = "1.9.0"
|
2023-02-08 17:13:14 +01:00
|
|
|
|
|
|
|
# Cache function results (Used for version check and favicon fetching)
|
2024-11-09 19:58:10 +01:00
|
|
|
cached = { version = "0.54.0", features = ["async"] }
|
2022-02-07 22:26:22 +01:00
|
|
|
|
|
|
|
# Used for custom short lived cookie jar during favicon extraction
|
2024-04-06 13:55:10 +02:00
|
|
|
cookie = "0.18.1"
|
2024-11-09 19:58:10 +01:00
|
|
|
cookie_store = "0.21.1"
|
2019-01-27 15:39:19 +01:00
|
|
|
|
2023-02-08 17:13:14 +01:00
|
|
|
# Used by U2F, JWT and PostgreSQL
|
2024-10-18 20:34:31 +02:00
|
|
|
openssl = "0.10.68"
|
2019-09-12 22:12:22 +02:00
|
|
|
|
2020-03-02 20:57:06 +01:00
|
|
|
# CLI argument parsing
|
2022-06-04 19:16:36 +02:00
|
|
|
pico-args = "0.5.0"
|
2020-03-02 20:57:06 +01:00
|
|
|
|
2020-08-18 17:15:44 +02:00
|
|
|
# Macro ident concatenation
|
2024-05-19 20:30:34 +02:00
|
|
|
paste = "1.0.15"
|
2024-12-15 23:13:29 +01:00
|
|
|
governor = "0.8.0"
|
2020-08-18 17:15:44 +02:00
|
|
|
|
2022-11-07 17:13:34 +01:00
|
|
|
# Check client versions for specific features.
|
2024-12-15 23:13:29 +01:00
|
|
|
semver = "1.0.24"
|
2022-11-07 17:13:34 +01:00
|
|
|
|
2022-03-20 18:51:24 +01:00
|
|
|
# Allow overriding the default memory allocator
|
|
|
|
# Mainly used for the musl builds, since the default musl malloc is very slow
|
2024-07-08 23:27:48 +02:00
|
|
|
mimalloc = { version = "0.1.43", features = ["secure"], default-features = false, optional = true }
|
2024-11-09 19:58:10 +01:00
|
|
|
which = "7.0.0"
|
2022-03-20 18:51:24 +01:00
|
|
|
|
2023-02-28 23:09:51 +01:00
|
|
|
# Argon2 library with support for the PHC format
|
2024-01-26 20:19:53 +01:00
|
|
|
argon2 = "0.5.3"
|
2023-02-28 23:09:51 +01:00
|
|
|
|
|
|
|
# Reading a password from the cli for generating the Argon2id ADMIN_TOKEN
|
2023-11-15 10:41:14 +01:00
|
|
|
rpassword = "7.3.1"
|
2023-03-30 17:18:59 +02:00
|
|
|
|
2024-11-11 20:14:04 +01:00
|
|
|
# Loading a dynamic CSS Stylesheet
|
|
|
|
grass_compiler = { version = "0.13.4", default-features = false }
|
|
|
|
|
2024-12-05 22:10:59 +01:00
|
|
|
[patch.crates-io]
|
|
|
|
# Patch yubico to remove duplicate crates of older versions
|
|
|
|
yubico = { git = "https://github.com/BlackDex/yubico-rs", rev = "00df14811f58155c0f02e3ab10f1570ed3e115c6" }
|
|
|
|
|
2022-02-22 20:48:00 +01:00
|
|
|
# Strip debuginfo from the release builds
|
2023-12-04 20:26:11 +01:00
|
|
|
# The symbols are the provide better panic traces
|
|
|
|
# Also enable fat LTO and use 1 codegen unit for optimizations
|
2022-02-22 20:48:00 +01:00
|
|
|
[profile.release]
|
|
|
|
strip = "debuginfo"
|
2023-12-04 20:26:11 +01:00
|
|
|
lto = "fat"
|
|
|
|
codegen-units = 1
|
2023-02-28 23:09:51 +01:00
|
|
|
|
2023-03-04 19:18:38 +01:00
|
|
|
# A little bit of a speedup
|
|
|
|
[profile.dev]
|
|
|
|
split-debuginfo = "unpacked"
|
2023-10-23 00:18:38 +02:00
|
|
|
|
|
|
|
# Always build argon2 using opt-level 3
|
|
|
|
# This is a huge speed improvement during testing
|
|
|
|
[profile.dev.package.argon2]
|
|
|
|
opt-level = 3
|
2023-12-18 21:46:53 +01:00
|
|
|
|
|
|
|
# Optimize for size
|
|
|
|
[profile.release-micro]
|
|
|
|
inherits = "release"
|
|
|
|
opt-level = "z"
|
|
|
|
strip = "symbols"
|
|
|
|
lto = "fat"
|
|
|
|
codegen-units = 1
|
|
|
|
panic = "abort"
|
2024-02-08 22:16:29 +01:00
|
|
|
|
|
|
|
# Profile for systems with low resources
|
|
|
|
# It will use less resources during build
|
|
|
|
[profile.release-low]
|
|
|
|
inherits = "release"
|
|
|
|
strip = "symbols"
|
|
|
|
lto = "thin"
|
2024-02-10 13:04:08 +01:00
|
|
|
codegen-units = 16
|
2024-02-08 22:16:29 +01:00
|
|
|
|
|
|
|
# Linting config
|
2024-09-23 20:25:32 +02:00
|
|
|
# https://doc.rust-lang.org/rustc/lints/groups.html
|
2024-02-08 22:16:29 +01:00
|
|
|
[lints.rust]
|
|
|
|
# Forbid
|
|
|
|
unsafe_code = "forbid"
|
|
|
|
non_ascii_idents = "forbid"
|
|
|
|
|
|
|
|
# Deny
|
2024-09-23 20:25:32 +02:00
|
|
|
deprecated_in_future = "deny"
|
2024-04-06 13:55:10 +02:00
|
|
|
future_incompatible = { level = "deny", priority = -1 }
|
2024-09-23 20:25:32 +02:00
|
|
|
keyword_idents = { level = "deny", priority = -1 }
|
|
|
|
let_underscore = { level = "deny", priority = -1 }
|
2024-02-08 22:16:29 +01:00
|
|
|
noop_method_call = "deny"
|
2024-09-23 20:25:32 +02:00
|
|
|
refining_impl_trait = { level = "deny", priority = -1 }
|
2024-04-06 13:55:10 +02:00
|
|
|
rust_2018_idioms = { level = "deny", priority = -1 }
|
|
|
|
rust_2021_compatibility = { level = "deny", priority = -1 }
|
2024-12-05 22:10:59 +01:00
|
|
|
rust_2024_compatibility = { level = "deny", priority = -1 }
|
|
|
|
edition_2024_expr_fragment_specifier = "allow" # Once changed to Rust 2024 this should be removed and macro's should be validated again
|
2024-09-23 20:25:32 +02:00
|
|
|
single_use_lifetimes = "deny"
|
2024-02-08 22:16:29 +01:00
|
|
|
trivial_casts = "deny"
|
|
|
|
trivial_numeric_casts = "deny"
|
2024-04-06 13:55:10 +02:00
|
|
|
unused = { level = "deny", priority = -1 }
|
2024-02-08 22:16:29 +01:00
|
|
|
unused_import_braces = "deny"
|
|
|
|
unused_lifetimes = "deny"
|
2024-09-23 20:25:32 +02:00
|
|
|
unused_qualifications = "deny"
|
|
|
|
variant_size_differences = "deny"
|
2024-02-08 22:16:29 +01:00
|
|
|
|
2024-09-23 20:25:32 +02:00
|
|
|
# https://rust-lang.github.io/rust-clippy/stable/index.html
|
2024-02-08 22:16:29 +01:00
|
|
|
[lints.clippy]
|
2024-09-23 20:25:32 +02:00
|
|
|
# Warn
|
|
|
|
dbg_macro = "warn"
|
|
|
|
todo = "warn"
|
2024-02-08 22:16:29 +01:00
|
|
|
|
|
|
|
# Deny
|
2024-09-23 20:25:32 +02:00
|
|
|
case_sensitive_file_extension_comparisons = "deny"
|
2024-02-08 22:16:29 +01:00
|
|
|
cast_lossless = "deny"
|
|
|
|
clone_on_ref_ptr = "deny"
|
|
|
|
equatable_if_let = "deny"
|
2024-09-23 20:25:32 +02:00
|
|
|
filter_map_next = "deny"
|
2024-02-08 22:16:29 +01:00
|
|
|
float_cmp_const = "deny"
|
|
|
|
inefficient_to_string = "deny"
|
|
|
|
iter_on_empty_collections = "deny"
|
|
|
|
iter_on_single_items = "deny"
|
|
|
|
linkedlist = "deny"
|
|
|
|
macro_use_imports = "deny"
|
|
|
|
manual_assert = "deny"
|
|
|
|
manual_instant_elapsed = "deny"
|
|
|
|
manual_string_new = "deny"
|
2024-09-23 20:25:32 +02:00
|
|
|
match_on_vec_items = "deny"
|
2024-02-08 22:16:29 +01:00
|
|
|
match_wildcard_for_single_variants = "deny"
|
|
|
|
mem_forget = "deny"
|
2024-09-23 20:25:32 +02:00
|
|
|
needless_continue = "deny"
|
2024-02-08 22:16:29 +01:00
|
|
|
needless_lifetimes = "deny"
|
2024-09-23 20:25:32 +02:00
|
|
|
option_option = "deny"
|
2024-02-08 22:16:29 +01:00
|
|
|
string_add_assign = "deny"
|
|
|
|
string_to_string = "deny"
|
|
|
|
unnecessary_join = "deny"
|
|
|
|
unnecessary_self_imports = "deny"
|
2024-09-23 20:25:32 +02:00
|
|
|
unnested_or_patterns = "deny"
|
2024-02-08 22:16:29 +01:00
|
|
|
unused_async = "deny"
|
2024-09-23 20:25:32 +02:00
|
|
|
unused_self = "deny"
|
2024-02-08 22:16:29 +01:00
|
|
|
verbose_file_reads = "deny"
|
|
|
|
zero_sized_map_values = "deny"
|