summaryrefslogtreecommitdiff
path: root/Cargo.toml
blob: 19db42b2e874dc92dcd42dbf6ce1c221bb021c93 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
[package]
name = "vaultwarden"
version = "1.0.0"
authors = ["Daniel GarcĂ­a <dani-garcia@users.noreply.github.com>"]
edition = "2021"
rust-version = "1.60"
resolver = "2"

repository = "https://github.com/dani-garcia/vaultwarden"
readme = "README.md"
license = "GPL-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"]

# Enable unstable features, requires nightly
# Currently only used to enable rusts official ip support
unstable = []

[target."cfg(not(windows))".dependencies]
# Logging
syslog = "6.0.1" # Needs to be v4 until fern is updated

[dependencies]
# Logging
log = "0.4.17"
fern = { version = "0.6.1", features = ["syslog-6"] }
tracing = { version = "0.1.35", features = ["log"] } # Needed to have lettre and webauthn-rs trace logging to work

backtrace = "0.3.65" # Logging panics to logfile instead stderr only

# A `dotenv` implementation for Rust
dotenvy = { version = "0.15.1", default-features = false }

# Lazy initialization
once_cell = "1.12.0"

# Numerical libraries
num-traits = "0.2.15"
num-derive = "0.3.3"

# Web framework
rocket = { version = "0.5.0-rc.2", features = ["tls", "json"], default-features = false }

# WebSockets libraries
tokio-tungstenite = "0.17.1"
rmpv = "1.0.0" # MessagePack library
dashmap = "5.3.4" # Concurrent hashmap implementation

# Async futures
futures = "0.3.21"
tokio = { version = "1.19.2", features = ["rt-multi-thread", "fs", "io-util", "parking_lot", "time"] }

# A generic serialization/deserialization framework
serde = { version = "1.0.137", features = ["derive"] }
serde_json = "1.0.81"

# A safe, extensible ORM and Query builder
diesel = { version = "1.4.8", features = ["chrono", "r2d2"] }
diesel_migrations = "1.4.0"

# Bundled SQLite
libsqlite3-sys = { version = "0.22.2", features = ["bundled"], optional = true }

# Crypto-related libraries
rand = { version = "0.8.5", features = ["small_rng"] }
ring = "0.16.20"

# UUID generation
uuid = { version = "1.1.2", features = ["v4"] }

# Date and time libraries
chrono = { version = "0.4.19", features = ["clock", "serde"], default-features = false }
chrono-tz = "0.6.1"
time = "0.3.11"

# Job scheduler
job_scheduler_ng = "2.0.1"

# Data encoding library Hex/Base32/Base64
data-encoding = "2.3.2"

# JWT library
jsonwebtoken = "8.1.1"

# TOTP library
totp-lite = "2.0.0"

# 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
url = "2.2.2"

# Email librariese-Base, Update crates and small change.
lettre = { version = "0.10.0-rc.7", features = ["smtp-transport", "builder", "serde", "native-tls", "hostname", "tracing"], default-features = false }
percent-encoding = "2.1.0" # URL encoding library used for URL's in the emails

# Template library
handlebars = { version = "4.3.1", features = ["dir_source"] }

# HTTP client
reqwest = { version = "0.11.11", features = ["stream", "json", "gzip", "brotli", "socks", "cookies", "trust-dns"] }

# For favicon extraction from main website
html5gum = "0.5.2"
regex = { version = "1.5.6", features = ["std", "perf", "unicode-perl"], default-features = false }
data-url = "0.1.1"
bytes = "1.1.0"
cached = "0.34.1"

# Used for custom short lived cookie jar during favicon extraction
cookie = "0.16.0"
cookie_store = "0.16.1"

# Used by U2F, JWT and Postgres
openssl = "0.10.40"

# CLI argument parsing
pico-args = "0.5.0"

# Macro ident concatenation
paste = "1.0.7"
governor = "0.4.2"

# Capture CTRL+C
ctrlc = { version = "3.2.2", features = ["termination"] }

# Allow overriding the default memory allocator
# Mainly used for the musl builds, since the default musl malloc is very slow
mimalloc = { version = "0.1.29", features = ["secure"], default-features = false, optional = true }

# Strip debuginfo from the release builds
# Also enable thin LTO for some optimizations
[profile.release]
strip = "debuginfo"
lto = "thin"