You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							285 lines
						
					
					
						
							8.2 KiB
						
					
					
				
			
		
		
		
			
			
			
		
		
	
	
							285 lines
						
					
					
						
							8.2 KiB
						
					
					
				| [workspace] | |
| members = ["macros"] | |
| 
 | |
| [package] | |
| name = "vaultwarden" | |
| version = "1.0.0" | |
| authors = ["Daniel García <dani-garcia@users.noreply.github.com>"] | |
| edition = "2021" | |
| rust-version = "1.85.0" | |
| resolver = "2" | |
| 
 | |
| repository = "https://github.com/dani-garcia/vaultwarden" | |
| readme = "README.md" | |
| license = "AGPL-3.0-only" | |
| publish = false | |
| build = "build.rs" | |
| 
 | |
| [features] | |
| # default = ["sqlite"] | |
| # Empty to keep compatibility, prefer to set USE_SYSLOG=true | |
| enable_syslog = [] | |
| mysql = ["diesel/mysql", "diesel_migrations/mysql"] | |
| postgresql = ["diesel/postgres", "diesel_migrations/postgres"] | |
| sqlite = ["diesel/sqlite", "diesel_migrations/sqlite", "dep:libsqlite3-sys"] | |
| # Enable to use a vendored and statically linked openssl | |
| vendored_openssl = ["openssl/vendored"] | |
| # Enable MiMalloc memory allocator to replace the default malloc | |
| # This can improve performance for Alpine builds | |
| enable_mimalloc = ["dep:mimalloc"] | |
| # 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. | |
| query_logger = ["dep:diesel_logger"] | |
| 
 | |
| # Enable unstable features, requires nightly | |
| # Currently only used to enable rusts official ip support | |
| unstable = [] | |
| 
 | |
| [target."cfg(unix)".dependencies] | |
| # Logging | |
| syslog = "7.0.0" | |
| 
 | |
| [dependencies] | |
| macros = { path = "./macros" } | |
| 
 | |
| # Logging | |
| log = "0.4.27" | |
| fern = { version = "0.7.1", features = ["syslog-7", "reopen-1"] } | |
| tracing = { version = "0.1.41", features = ["log"] } # Needed to have lettre and webauthn-rs trace logging to work | |
| 
 | |
| # A `dotenv` implementation for Rust | |
| dotenvy = { version = "0.15.7", default-features = false } | |
| 
 | |
| # Lazy initialization | |
| once_cell = "1.21.3" | |
| 
 | |
| # Numerical libraries | |
| num-traits = "0.2.19" | |
| num-derive = "0.4.2" | |
| bigdecimal = "0.4.8" | |
| 
 | |
| # Web framework | |
| rocket = { version = "0.5.1", features = ["tls", "json"], default-features = false } | |
| rocket_ws = { version ="0.1.1" } | |
| 
 | |
| # WebSockets libraries | |
| rmpv = "1.3.0" # MessagePack library | |
| 
 | |
| # Concurrent HashMap used for WebSocket messaging and favicons | |
| dashmap = "6.1.0" | |
| 
 | |
| # Async futures | |
| futures = "0.3.31" | |
| tokio = { version = "1.45.1", features = ["rt-multi-thread", "fs", "io-util", "parking_lot", "time", "signal", "net"] } | |
| 
 | |
| # A generic serialization/deserialization framework | |
| serde = { version = "1.0.219", features = ["derive"] } | |
| serde_json = "1.0.140" | |
| 
 | |
| # A safe, extensible ORM and Query builder | |
| diesel = { version = "2.2.10", features = ["chrono", "r2d2", "numeric"] } | |
| diesel_migrations = "2.2.0" | |
| diesel_logger = { version = "0.4.0", optional = true } | |
| 
 | |
| derive_more = { version = "2.0.1", features = ["from", "into", "as_ref", "deref", "display"] } | |
| diesel-derive-newtype = "2.1.2" | |
| 
 | |
| # Bundled/Static SQLite | |
| libsqlite3-sys = { version = "0.33.0", features = ["bundled"], optional = true } | |
| 
 | |
| # Crypto-related libraries | |
| rand = "0.9.1" | |
| ring = "0.17.14" | |
| subtle = "2.6.1" | |
| 
 | |
| # UUID generation | |
| uuid = { version = "1.17.0", features = ["v4"] } | |
| 
 | |
| # Date and time libraries | |
| chrono = { version = "0.4.41", features = ["clock", "serde"], default-features = false } | |
| chrono-tz = "0.10.3" | |
| time = "0.3.41" | |
| 
 | |
| # Job scheduler | |
| job_scheduler_ng = "2.2.0" | |
| 
 | |
| # Data encoding library Hex/Base32/Base64 | |
| data-encoding = "2.9.0" | |
| 
 | |
| # JWT library | |
| jsonwebtoken = "9.3.1" | |
| 
 | |
| # TOTP library | |
| totp-lite = "2.0.1" | |
| 
 | |
| # Yubico Library | |
| yubico = { package = "yubico_ng", version = "0.13.0", features = ["online-tokio"], default-features = false } | |
| 
 | |
| # WebAuthn libraries | |
| webauthn-rs = "0.3.2" | |
| 
 | |
| # Handling of URL's for WebAuthn and favicons | |
| url = "2.5.4" | |
| 
 | |
| # Email libraries | |
| lettre = { version = "0.11.16", features = ["smtp-transport", "sendmail-transport", "builder", "serde", "tokio1-native-tls", "hostname", "tracing", "tokio1"], default-features = false } | |
| percent-encoding = "2.3.1" # URL encoding library used for URL's in the emails | |
| email_address = "0.2.9" | |
| 
 | |
| # HTML Template library | |
| handlebars = { version = "6.3.2", features = ["dir_source"] } | |
| 
 | |
| # HTTP client (Used for favicons, version check, DUO and HIBP API) | |
| reqwest = { version = "0.12.15", features = ["native-tls-alpn", "stream", "json", "gzip", "brotli", "socks", "cookies"] } | |
| hickory-resolver = "0.25.2" | |
| 
 | |
| # Favicon extraction libraries | |
| html5gum = "0.7.0" | |
| regex = { version = "1.11.1", features = ["std", "perf", "unicode-perl"], default-features = false } | |
| data-url = "0.3.1" | |
| bytes = "1.10.1" | |
| 
 | |
| # Cache function results (Used for version check and favicon fetching) | |
| cached = { version = "0.55.1", features = ["async"] } | |
| 
 | |
| # Used for custom short lived cookie jar during favicon extraction | |
| cookie = "0.18.1" | |
| cookie_store = "0.21.1" | |
| 
 | |
| # Used by U2F, JWT and PostgreSQL | |
| openssl = "0.10.72" | |
| 
 | |
| # CLI argument parsing | |
| pico-args = "0.5.0" | |
| 
 | |
| # Macro ident concatenation | |
| pastey = "0.1.0" | |
| governor = "0.10.0" | |
| 
 | |
| # Check client versions for specific features. | |
| semver = "1.0.26" | |
| 
 | |
| # Allow overriding the default memory allocator | |
| # Mainly used for the musl builds, since the default musl malloc is very slow | |
| mimalloc = { version = "0.1.46", features = ["secure"], default-features = false, optional = true } | |
| 
 | |
| which = "7.0.3" | |
| 
 | |
| # Argon2 library with support for the PHC format | |
| argon2 = "0.5.3" | |
| 
 | |
| # Reading a password from the cli for generating the Argon2id ADMIN_TOKEN | |
| rpassword = "7.4.0" | |
| 
 | |
| # Loading a dynamic CSS Stylesheet | |
| grass_compiler = { version = "0.13.4", default-features = false } | |
| 
 | |
| # Strip debuginfo from the release builds | |
| # The debug symbols are to provide better panic traces | |
| # Also enable fat LTO and use 1 codegen unit for optimizations | |
| [profile.release] | |
| strip = "debuginfo" | |
| lto = "fat" | |
| codegen-units = 1 | |
| 
 | |
| # A little bit of a speedup | |
| [profile.dev] | |
| split-debuginfo = "unpacked" | |
| 
 | |
| # Always build argon2 using opt-level 3 | |
| # This is a huge speed improvement during testing | |
| [profile.dev.package.argon2] | |
| opt-level = 3 | |
| 
 | |
| # Optimize for size | |
| [profile.release-micro] | |
| inherits = "release" | |
| opt-level = "z" | |
| strip = "symbols" | |
| lto = "fat" | |
| codegen-units = 1 | |
| panic = "abort" | |
| 
 | |
| # Profile for systems with low resources | |
| # It will use less resources during build | |
| [profile.release-low] | |
| inherits = "release" | |
| strip = "symbols" | |
| lto = "thin" | |
| codegen-units = 16 | |
| 
 | |
| # Linting config | |
| # https://doc.rust-lang.org/rustc/lints/groups.html | |
| [workspace.lints.rust] | |
| # Forbid | |
| unsafe_code = "forbid" | |
| non_ascii_idents = "forbid" | |
| 
 | |
| # Deny | |
| deprecated_in_future = "deny" | |
| future_incompatible = { level = "deny", priority = -1 } | |
| keyword_idents = { level = "deny", priority = -1 } | |
| let_underscore = { level = "deny", priority = -1 } | |
| noop_method_call = "deny" | |
| refining_impl_trait = { level = "deny", priority = -1 } | |
| rust_2018_idioms = { level = "deny", priority = -1 } | |
| rust_2021_compatibility = { level = "deny", priority = -1 } | |
| 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 | |
| single_use_lifetimes = "deny" | |
| trivial_casts = "deny" | |
| trivial_numeric_casts = "deny" | |
| unused = { level = "deny", priority = -1 } | |
| unused_import_braces = "deny" | |
| unused_lifetimes = "deny" | |
| unused_qualifications = "deny" | |
| variant_size_differences = "deny" | |
| # Allow the following lints since these cause issues with Rust v1.84.0 or newer | |
| # Building Vaultwarden with Rust v1.85.0 and edition 2024 also works without issues | |
| if_let_rescope = "allow" | |
| tail_expr_drop_order = "allow" | |
| 
 | |
| # https://rust-lang.github.io/rust-clippy/stable/index.html | |
| [workspace.lints.clippy] | |
| # Warn | |
| dbg_macro = "warn" | |
| todo = "warn" | |
| 
 | |
| # Ignore/Allow | |
| result_large_err = "allow" | |
| 
 | |
| # Deny | |
| case_sensitive_file_extension_comparisons = "deny" | |
| cast_lossless = "deny" | |
| clone_on_ref_ptr = "deny" | |
| equatable_if_let = "deny" | |
| filter_map_next = "deny" | |
| 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" | |
| match_on_vec_items = "deny" | |
| match_wildcard_for_single_variants = "deny" | |
| mem_forget = "deny" | |
| needless_continue = "deny" | |
| needless_lifetimes = "deny" | |
| option_option = "deny" | |
| string_add_assign = "deny" | |
| string_to_string = "deny" | |
| unnecessary_join = "deny" | |
| unnecessary_self_imports = "deny" | |
| unnested_or_patterns = "deny" | |
| unused_async = "deny" | |
| unused_self = "deny" | |
| verbose_file_reads = "deny" | |
| zero_sized_map_values = "deny" | |
| 
 | |
| [lints] | |
| workspace = true
 | |
| 
 |