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.
		
		
		
		
		
			
		
			
				
					
					
						
							246 lines
						
					
					
						
							7.0 KiB
						
					
					
				
			
		
		
		
			
			
			
		
		
	
	
							246 lines
						
					
					
						
							7.0 KiB
						
					
					
				| [package] | |
| name = "vaultwarden" | |
| version = "1.0.0" | |
| authors = ["Daniel García <dani-garcia@users.noreply.github.com>"] | |
| edition = "2021" | |
| rust-version = "1.78.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", "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 = ["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 = ["diesel_logger"] | |
| 
 | |
| # Enable unstable features, requires nightly | |
| # Currently only used to enable rusts official ip support | |
| unstable = [] | |
| 
 | |
| [target."cfg(not(windows))".dependencies] | |
| # Logging | |
| syslog = "6.1.1" | |
| 
 | |
| [dependencies] | |
| # Logging | |
| log = "0.4.22" | |
| fern = { version = "0.6.2", features = ["syslog-6", "reopen-1"] } | |
| tracing = { version = "0.1.40", 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.19.0" | |
| 
 | |
| # Numerical libraries | |
| num-traits = "0.2.19" | |
| num-derive = "0.4.2" | |
| bigdecimal = "0.4.5" | |
| 
 | |
| # 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.0.1" | |
| 
 | |
| # Async futures | |
| futures = "0.3.30" | |
| tokio = { version = "1.38.0", features = ["rt-multi-thread", "fs", "io-util", "parking_lot", "time", "signal", "net"] } | |
| 
 | |
| # A generic serialization/deserialization framework | |
| serde = { version = "1.0.204", features = ["derive"] } | |
| serde_json = "1.0.120" | |
| 
 | |
| # A safe, extensible ORM and Query builder | |
| diesel = { version = "2.2.1", features = ["chrono", "r2d2", "numeric"] } | |
| diesel_migrations = "2.2.0" | |
| diesel_logger = { version = "0.3.0", optional = true } | |
| 
 | |
| # Bundled/Static SQLite | |
| libsqlite3-sys = { version = "0.28.0", features = ["bundled"], optional = true } | |
| 
 | |
| # Crypto-related libraries | |
| rand = { version = "0.8.5", features = ["small_rng"] } | |
| ring = "0.17.8" | |
| 
 | |
| # UUID generation | |
| uuid = { version = "1.9.1", features = ["v4"] } | |
| 
 | |
| # Date and time libraries | |
| chrono = { version = "0.4.38", features = ["clock", "serde"], default-features = false } | |
| chrono-tz = "0.9.0" | |
| time = "0.3.36" | |
| 
 | |
| # Job scheduler | |
| job_scheduler_ng = "2.0.5" | |
| 
 | |
| # Data encoding library Hex/Base32/Base64 | |
| data-encoding = "2.6.0" | |
| 
 | |
| # JWT library | |
| jsonwebtoken = "9.3.0" | |
| 
 | |
| # TOTP library | |
| totp-lite = "2.0.1" | |
| 
 | |
| # Yubico Library | |
| yubico = { version = "0.11.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.2" | |
| 
 | |
| # Email libraries | |
| lettre = { version = "0.11.7", 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.5" | |
| 
 | |
| # HTML Template library | |
| handlebars = { version = "5.1.2", features = ["dir_source"] } | |
| 
 | |
| # HTTP client (Used for favicons, version check, DUO and HIBP API) | |
| reqwest = { version = "0.12.5", features = ["native-tls-alpn", "stream", "json", "gzip", "brotli", "socks", "cookies"] } | |
| hickory-resolver = "0.24.1" | |
| 
 | |
| # Favicon extraction libraries | |
| html5gum = "0.5.7" | |
| regex = { version = "1.10.5", features = ["std", "perf", "unicode-perl"], default-features = false } | |
| data-url = "0.3.1" | |
| bytes = "1.6.0" | |
| 
 | |
| # Cache function results (Used for version check and favicon fetching) | |
| cached = { version = "0.52.0", features = ["async"] } | |
| 
 | |
| # Used for custom short lived cookie jar during favicon extraction | |
| cookie = "0.18.1" | |
| cookie_store = "0.21.0" | |
| 
 | |
| # Used by U2F, JWT and PostgreSQL | |
| openssl = "0.10.64" | |
| 
 | |
| # CLI argument parsing | |
| pico-args = "0.5.0" | |
| 
 | |
| # Macro ident concatenation | |
| paste = "1.0.15" | |
| governor = "0.6.3" | |
| 
 | |
| # Check client versions for specific features. | |
| semver = "1.0.23" | |
| 
 | |
| # Allow overriding the default memory allocator | |
| # Mainly used for the musl builds, since the default musl malloc is very slow | |
| mimalloc = { version = "0.1.43", features = ["secure"], default-features = false, optional = true } | |
| which = "6.0.1" | |
| 
 | |
| # 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.3.1" | |
| 
 | |
| # Strip debuginfo from the release builds | |
| # The symbols are the 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 | |
| [lints.rust] | |
| # Forbid | |
| unsafe_code = "forbid" | |
| non_ascii_idents = "forbid" | |
| 
 | |
| # Deny | |
| future_incompatible = { level = "deny", priority = -1 } | |
| noop_method_call = "deny" | |
| rust_2018_idioms = { level = "deny", priority = -1 } | |
| rust_2021_compatibility = { level = "deny", priority = -1 } | |
| trivial_casts = "deny" | |
| trivial_numeric_casts = "deny" | |
| unused = { level = "deny", priority = -1 } | |
| unused_import_braces = "deny" | |
| unused_lifetimes = "deny" | |
| deprecated_in_future = "deny" | |
| 
 | |
| [lints.clippy] | |
| # Allow | |
| # We need this since Rust v1.76+, since it has some bugs | |
| # https://github.com/rust-lang/rust-clippy/issues/12016 | |
| blocks_in_conditions = "allow" | |
| 
 | |
| # Deny | |
| cast_lossless = "deny" | |
| clone_on_ref_ptr = "deny" | |
| equatable_if_let = "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_wildcard_for_single_variants = "deny" | |
| mem_forget = "deny" | |
| needless_lifetimes = "deny" | |
| string_add_assign = "deny" | |
| string_to_string = "deny" | |
| unnecessary_join = "deny" | |
| unnecessary_self_imports = "deny" | |
| unused_async = "deny" | |
| verbose_file_reads = "deny" | |
| zero_sized_map_values = "deny"
 | |
| 
 |