diff --git a/Cargo.lock b/Cargo.lock new file mode 100644 index 000000000..be1ac4c23 --- /dev/null +++ b/Cargo.lock @@ -0,0 +1,4853 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "adler" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" + +[[package]] +name = "aead" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7fc95d1bdb8e6666b2b217308eeeb09f2d6728d104be3e31916cc74d15420331" +dependencies = [ + "generic-array 0.14.5", +] + +[[package]] +name = "aes" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "884391ef1066acaa41e766ba8f596341b96e93ce34f9a43e7d24bf0a0eaf0561" +dependencies = [ + "aes-soft", + "aesni", + "cipher", +] + +[[package]] +name = "aes-gcm" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5278b5fabbb9bd46e24aa69b2fdea62c99088e0a950a9be40e3e0101298f88da" +dependencies = [ + "aead", + "aes", + "cipher", + "ctr", + "ghash", + "subtle", +] + +[[package]] +name = "aes-soft" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be14c7498ea50828a38d0e24a765ed2effe92a705885b57d029cd67d45744072" +dependencies = [ + "cipher", + "opaque-debug 0.3.0", +] + +[[package]] +name = "aesni" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea2e11f5e94c2f7d386164cc2aa1f97823fed6f259e486940a71c174dd01b0ce" +dependencies = [ + "cipher", + "opaque-debug 0.3.0", +] + +[[package]] +name = "ahash" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fcb51a0695d8f838b1ee009b3fbf66bda078cd64590202a864a8f3e8c4315c47" +dependencies = [ + "getrandom 0.2.7", + "once_cell", + "version_check", +] + +[[package]] +name = "aho-corasick" +version = "0.7.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e37cfd5e7657ada45f742d6e99ca5788580b5c529dc78faf11ece6dc702656f" +dependencies = [ + "memchr", +] + +[[package]] +name = "ansi_term" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d52a9bb7ec0cf484c551830a7ce27bd20d67eac647e1befb56b0be4ee39a55d2" +dependencies = [ + "winapi", +] + +[[package]] +name = "anyhow" +version = "1.0.58" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb07d2053ccdbe10e2af2995a2f116c1330396493dc1269f6a91d0ae82e19704" + +[[package]] +name = "anymap2" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d301b3b94cb4b2f23d7917810addbbaff90738e0ca2be692bd027e70d7e0330c" + +[[package]] +name = "arrayref" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4c527152e37cf757a3f78aae5a06fbeefdb07ccc535c980a3208ee3060dd544" + +[[package]] +name = "arrayvec" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23b62fc65de8e4e7f52534fb52b0f3ed04746ae267519eef2a83941e8085068b" + +[[package]] +name = "asn1-rs" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "30ff05a702273012438132f449575dbc804e27b2f3cbe3069aa237d26c98fa33" +dependencies = [ + "asn1-rs-derive", + "asn1-rs-impl", + "displaydoc", + "nom 7.1.1", + "num-traits", + "rusticata-macros", + "thiserror", + "time 0.3.11", +] + +[[package]] +name = "asn1-rs-derive" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db8b7511298d5b7784b40b092d9e9dcd3a627a5707e4b5e507931ab0d44eeebf" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "synstructure", +] + +[[package]] +name = "asn1-rs-impl" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2777730b2039ac0f95f093556e61b6d26cebed5393ca6f152717777cec3a42ed" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "async-channel" +version = "1.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2114d64672151c0c5eaa5e131ec84a74f06e1e559830dabba01ca30605d66319" +dependencies = [ + "concurrent-queue", + "event-listener", + "futures-core", +] + +[[package]] +name = "async-compression" +version = "0.3.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "345fd392ab01f746c717b1357165b76f0b67a60192007b234058c9045fdcf695" +dependencies = [ + "flate2", + "futures-core", + "futures-io", + "memchr", + "pin-project-lite 0.2.9", +] + +[[package]] +name = "async-dup" +version = "1.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7427a12b8dc09291528cfb1da2447059adb4a257388c2acd6497a79d55cf6f7c" +dependencies = [ + "futures-io", + "simple-mutex", +] + +[[package]] +name = "async-executor" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "871f9bb5e0a22eeb7e8cf16641feb87c9dc67032ccf8ff49e772eb9941d3a965" +dependencies = [ + "async-task", + "concurrent-queue", + "fastrand", + "futures-lite", + "once_cell", + "slab", +] + +[[package]] +name = "async-global-executor" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5262ed948da60dd8956c6c5aca4d4163593dddb7b32d73267c93dab7b2e98940" +dependencies = [ + "async-channel", + "async-executor", + "async-io", + "async-lock", + "blocking", + "futures-lite", + "num_cpus", + "once_cell", + "tokio", +] + +[[package]] +name = "async-h1" +version = "2.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8101020758a4fc3a7c326cb42aa99e9fa77cbfb76987c128ad956406fe1f70a7" +dependencies = [ + "async-channel", + "async-dup", + "async-std", + "futures-core", + "http-types", + "httparse", + "log", + "pin-project", +] + +[[package]] +name = "async-io" +version = "1.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5e18f61464ae81cde0a23e713ae8fd299580c54d697a35820cfd0625b8b0e07" +dependencies = [ + "concurrent-queue", + "futures-lite", + "libc", + "log", + "once_cell", + "parking", + "polling", + "slab", + "socket2", + "waker-fn", + "winapi", +] + +[[package]] +name = "async-lock" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e97a171d191782fba31bb902b14ad94e24a68145032b7eedf871ab0bc0d077b6" +dependencies = [ + "event-listener", +] + +[[package]] +name = "async-process" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf2c06e30a24e8c78a3987d07f0930edf76ef35e027e7bdb063fccafdad1f60c" +dependencies = [ + "async-io", + "blocking", + "cfg-if 1.0.0", + "event-listener", + "futures-lite", + "libc", + "once_cell", + "signal-hook", + "winapi", +] + +[[package]] +name = "async-session" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "345022a2eed092cd105cc1b26fd61c341e100bd5fcbbd792df4baf31c2cc631f" +dependencies = [ + "anyhow", + "async-std", + "async-trait", + "base64 0.12.3", + "bincode", + "blake3", + "chrono", + "hmac 0.8.1", + "kv-log-macro", + "rand 0.7.3", + "serde", + "serde_json", + "sha2 0.9.9", +] + +[[package]] +name = "async-sse" +version = "4.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53bba003996b8fd22245cd0c59b869ba764188ed435392cf2796d03b805ade10" +dependencies = [ + "async-channel", + "async-std", + "http-types", + "log", + "memchr", + "pin-project-lite 0.1.12", +] + +[[package]] +name = "async-std" +version = "1.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62565bb4402e926b29953c785397c6dc0391b7b446e45008b0049eb43cec6f5d" +dependencies = [ + "async-channel", + "async-global-executor", + "async-io", + "async-lock", + "async-process", + "crossbeam-utils", + "futures-channel", + "futures-core", + "futures-io", + "futures-lite", + "gloo-timers", + "kv-log-macro", + "log", + "memchr", + "once_cell", + "pin-project-lite 0.2.9", + "pin-utils", + "slab", + "wasm-bindgen-futures", +] + +[[package]] +name = "async-std-openssl" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "408a76b00fc49b11fe78f1f7a90557a3c887af1d4570fb33e15a70eb7e6b95ee" +dependencies = [ + "async-dup", + "async-std", + "futures-util", + "openssl", + "openssl-sys", +] + +[[package]] +name = "async-task" +version = "4.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a40729d2133846d9ed0ea60a8b9541bccddab49cd30f0715a1da672fe9a2524" + +[[package]] +name = "async-trait" +version = "0.1.56" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96cf8829f67d2eab0b2dfa42c5d0ef737e0724e4a82b01b3e292456202b19716" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "atomic-waker" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "065374052e7df7ee4047b1160cca5e1467a12351a40b3da123c870ba0b8eda2a" + +[[package]] +name = "atty" +version = "0.2.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" +dependencies = [ + "hermit-abi", + "libc", + "winapi", +] + +[[package]] +name = "authenticator" +version = "0.3.1" +source = "git+https://github.com/Firstyear/authenticator-rs.git?branch=webauthn-authenticator-rs#8e2f599dadd2039cf6b1776cdc501bec02317054" +dependencies = [ + "base64 0.10.1", + "bitflags", + "cfg-if 1.0.0", + "core-foundation", + "devd-rs", + "libc", + "libudev", + "log", + "nom 5.1.2", + "openssl", + "openssl-sys", + "rand 0.7.3", + "runloop", + "serde", + "serde_bytes", + "serde_cbor", + "serde_json", + "sha2 0.8.2", + "winapi", +] + +[[package]] +name = "autocfg" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" + +[[package]] +name = "base-x" +version = "0.2.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4cbbc9d0964165b47557570cce6c952866c2678457aca742aafc9fb771d30270" + +[[package]] +name = "base32" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23ce669cd6c8588f79e15cf450314f9638f967fc5770ff1c7c1deb0925ea7cfa" + +[[package]] +name = "base64" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b25d992356d2eb0ed82172f5248873db5560c4721f564b13cb5193bda5e668e" +dependencies = [ + "byteorder", +] + +[[package]] +name = "base64" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3441f0f7b02788e948e47f457ca01f1d7e6d92c693bc132c22b087d3141c03ff" + +[[package]] +name = "base64" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "904dfeac50f3cdaba28fc6f57fdcddb75f49ed61346676a78c4ffe55877802fd" + +[[package]] +name = "base64urlsafedata" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d02340c3f25c8422ba85d481123406dd7506505485bac1c694b26eb538da8daf" +dependencies = [ + "base64 0.13.0", + "serde", + "serde_json", +] + +[[package]] +name = "base64urlsafedata" +version = "0.1.1" +source = "git+https://github.com/kanidm/webauthn-rs.git?rev=7a8e6c6b351ab7544f08cf8ba48424baacee1360#7a8e6c6b351ab7544f08cf8ba48424baacee1360" +dependencies = [ + "base64 0.13.0", + "serde", + "serde_json", +] + +[[package]] +name = "bincode" +version = "1.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad" +dependencies = [ + "serde", +] + +[[package]] +name = "bit-set" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0700ddab506f33b20a03b13996eccd309a48e5ff77d0d95926aa0210fb4e95f1" +dependencies = [ + "bit-vec", +] + +[[package]] +name = "bit-vec" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "349f9b6a179ed607305526ca489b34ad0a41aed5f7980fa90eb03160b69598fb" + +[[package]] +name = "bitflags" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + +[[package]] +name = "blake3" +version = "0.3.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b64485778c4f16a6a5a9d335e80d449ac6c70cdd6a06d2af18a6f6f775a125b3" +dependencies = [ + "arrayref", + "arrayvec", + "cc", + "cfg-if 0.1.10", + "constant_time_eq", + "crypto-mac 0.8.0", + "digest 0.9.0", +] + +[[package]] +name = "block-buffer" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0940dc441f31689269e10ac70eb1002a3a1d3ad1390e030043662eb7fe4688b" +dependencies = [ + "block-padding", + "byte-tools", + "byteorder", + "generic-array 0.12.4", +] + +[[package]] +name = "block-buffer" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4152116fd6e9dadb291ae18fc1ec3575ed6d84c29642d97890f4b4a3417297e4" +dependencies = [ + "generic-array 0.14.5", +] + +[[package]] +name = "block-buffer" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0bf7fe51849ea569fd452f37822f606a5cabb684dc918707a0193fd4664ff324" +dependencies = [ + "generic-array 0.14.5", +] + +[[package]] +name = "block-padding" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa79dedbb091f449f1f39e53edf88d5dbe95f895dae6135a8d7b881fb5af73f5" +dependencies = [ + "byte-tools", +] + +[[package]] +name = "blocking" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c6ccb65d468978a086b69884437ded69a90faab3bbe6e67f242173ea728acccc" +dependencies = [ + "async-channel", + "async-task", + "atomic-waker", + "fastrand", + "futures-lite", + "once_cell", +] + +[[package]] +name = "boolinator" +version = "2.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cfa8873f51c92e232f9bac4065cddef41b714152812bfc5f7672ba16d6ef8cd9" + +[[package]] +name = "bstr" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba3569f383e8f1598449f1a423e72e99569137b47740b1da11ef19af3d5c3223" +dependencies = [ + "lazy_static", + "memchr", + "regex-automata", + "serde", +] + +[[package]] +name = "bumpalo" +version = "3.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37ccbd214614c6783386c1af30caf03192f17891059cecc394b4fb119e363de3" + +[[package]] +name = "byte-tools" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3b5ca7a04898ad4bcd41c90c5285445ff5b791899bb1b0abdd2a2aa791211d7" + +[[package]] +name = "byteorder" +version = "1.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" + +[[package]] +name = "bytes" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec8a7b6a70fde80372154c65702f00a0f56f3e1c36abbc6c440484be248856db" + +[[package]] +name = "cache-padded" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1db59621ec70f09c5e9b597b220c7a2b43611f4710dc03ceb8748637775692c" + +[[package]] +name = "cast" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5" + +[[package]] +name = "cc" +version = "1.0.73" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2fff2a6927b3bb87f9595d67196a70493f627687a71d87a0d692242c33f58c11" + +[[package]] +name = "cfg-if" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822" + +[[package]] +name = "cfg-if" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" + +[[package]] +name = "checked_int_cast" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17cc5e6b5ab06331c33589842070416baa137e8b0eb912b008cfd4a78ada7919" + +[[package]] +name = "chrono" +version = "0.4.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "670ad68c9088c2a963aaa298cb369688cf3f9465ce5e2d4ca10e6e0098a1ce73" +dependencies = [ + "libc", + "num-integer", + "num-traits", + "serde", + "time 0.1.44", + "winapi", +] + +[[package]] +name = "cipher" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "12f8e7987cbd042a63249497f41aed09f8e65add917ea6566effbc56578d6801" +dependencies = [ + "generic-array 0.14.5", +] + +[[package]] +name = "clap" +version = "2.34.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a0610544180c38b88101fecf2dd634b174a62eef6946f84dfc6a7127512b381c" +dependencies = [ + "bitflags", + "textwrap 0.11.0", + "unicode-width", +] + +[[package]] +name = "clap" +version = "3.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a3dbbb6653e7c55cc8595ad3e1f7be8f32aba4eb7ff7f0fd1163d4f3d137c0a9" +dependencies = [ + "atty", + "bitflags", + "clap_derive", + "clap_lex", + "indexmap", + "once_cell", + "strsim", + "termcolor", + "textwrap 0.15.0", +] + +[[package]] +name = "clap_complete" +version = "3.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ead064480dfc4880a10764488415a97fdd36a4cf1bb022d372f02e8faf8386e1" +dependencies = [ + "clap 3.2.16", +] + +[[package]] +name = "clap_derive" +version = "3.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ba52acd3b0a5c33aeada5cdaa3267cdc7c594a98731d4268cdc1532f4264cb4" +dependencies = [ + "heck", + "proc-macro-error", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "clap_lex" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2850f2f5a82cbf437dd5af4d49848fbdfc27c157c3d010345776f952765261c5" +dependencies = [ + "os_str_bytes", +] + +[[package]] +name = "compact_jwt" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9417bb4f581b7a5e08fabb4398b910064363bbfd7b75a10d1da3bfff3ef9b36" +dependencies = [ + "base64 0.13.0", + "base64urlsafedata 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "openssl", + "serde", + "serde_json", + "tracing", + "url", + "uuid 1.1.2", +] + +[[package]] +name = "compiled-uuid" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "18c9f404cbbb38aeaaa6a0cfe4039df817377926183d278098cdfe96dd015610" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "thiserror", + "uuid 0.8.2", +] + +[[package]] +name = "concread" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91896ebca83fd5ac051ee12ab048a4bcfd8c887397127c8f883b77b05288e935" +dependencies = [ + "ahash", + "crossbeam", + "crossbeam-epoch", + "lru", + "smallvec", + "tokio", +] + +[[package]] +name = "concurrent-queue" +version = "1.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af4780a44ab5696ea9e28294517f1fffb421a83a25af521333c838635509db9c" +dependencies = [ + "cache-padded", +] + +[[package]] +name = "console" +version = "0.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89eab4d20ce20cea182308bca13088fecea9c05f6776cf287205d41a0ed3c847" +dependencies = [ + "encode_unicode", + "libc", + "once_cell", + "terminal_size", + "unicode-width", + "winapi", +] + +[[package]] +name = "console_error_panic_hook" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a06aeb73f470f66dcdbf7223caeebb85984942f22f1adb2a088cf9668146bbbc" +dependencies = [ + "cfg-if 1.0.0", + "wasm-bindgen", +] + +[[package]] +name = "const_fn" +version = "0.4.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fbdcdcb6d86f71c5e97409ad45898af11cbc995b4ee8112d59095a28d376c935" + +[[package]] +name = "constant_time_eq" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "245097e9a4535ee1e3e3931fcfcd55a796a44c643e8596ff6566d68f09b87bbc" + +[[package]] +name = "cookie" +version = "0.14.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03a5d7b21829bc7b4bf4754a978a241ae54ea55a40f92bb20216e54096f4b951" +dependencies = [ + "aes-gcm", + "base64 0.13.0", + "hkdf", + "hmac 0.10.1", + "percent-encoding", + "rand 0.8.5", + "sha2 0.9.9", + "time 0.2.27", + "version_check", +] + +[[package]] +name = "cookie" +version = "0.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94d4706de1b0fa5b132270cddffa8585166037822e260a944fe161acd137ca05" +dependencies = [ + "percent-encoding", + "time 0.3.11", + "version_check", +] + +[[package]] +name = "cookie_store" +version = "0.16.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2e4b6aa369f41f5faa04bb80c9b1f4216ea81646ed6124d76ba5c49a7aafd9cd" +dependencies = [ + "cookie 0.16.0", + "idna", + "log", + "publicsuffix", + "serde", + "serde_json", + "time 0.3.11", + "url", +] + +[[package]] +name = "core-foundation" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "194a7a9e6de53fa55116934067c844d9d749312f75c6f6d0980e8c252f8c2146" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "core-foundation-sys" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5827cebf4670468b8772dd191856768aedcb1b0278a04f989f7766351917b9dc" + +[[package]] +name = "cpufeatures" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59a6001667ab124aebae2a495118e11d30984c3a653e99d86d58971708cf5e4b" +dependencies = [ + "libc", +] + +[[package]] +name = "cpuid-bool" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dcb25d077389e53838a8158c8e99174c5a9d902dee4904320db714f3c653ffba" + +[[package]] +name = "crc32fast" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d" +dependencies = [ + "cfg-if 1.0.0", +] + +[[package]] +name = "criterion" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b01d6de93b2b6c65e17c634a26653a29d107b3c98c607c765bf38d041531cd8f" +dependencies = [ + "atty", + "cast", + "clap 2.34.0", + "criterion-plot", + "csv", + "itertools 0.10.3", + "lazy_static", + "num-traits", + "oorandom", + "plotters", + "rayon", + "regex", + "serde", + "serde_cbor", + "serde_derive", + "serde_json", + "tinytemplate", + "walkdir", +] + +[[package]] +name = "criterion-plot" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2673cc8207403546f45f5fd319a974b1e6983ad1a3ee7e6041650013be041876" +dependencies = [ + "cast", + "itertools 0.10.3", +] + +[[package]] +name = "crossbeam" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2801af0d36612ae591caa9568261fddce32ce6e08a7275ea334a06a4ad021a2c" +dependencies = [ + "cfg-if 1.0.0", + "crossbeam-channel", + "crossbeam-deque", + "crossbeam-epoch", + "crossbeam-queue", + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-channel" +version = "0.5.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2dd04ddaf88237dc3b8d8f9a3c1004b506b54b3313403944054d23c0870c521" +dependencies = [ + "cfg-if 1.0.0", + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-deque" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "715e8152b692bba2d374b53d4875445368fdf21a94751410af607a5ac677d1fc" +dependencies = [ + "cfg-if 1.0.0", + "crossbeam-epoch", + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-epoch" +version = "0.9.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "045ebe27666471bb549370b4b0b3e51b07f56325befa4284db65fc89c02511b1" +dependencies = [ + "autocfg", + "cfg-if 1.0.0", + "crossbeam-utils", + "memoffset", + "once_cell", + "scopeguard", +] + +[[package]] +name = "crossbeam-queue" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1cd42583b04998a5363558e5f9291ee5a5ff6b49944332103f251e7479a82aa7" +dependencies = [ + "cfg-if 1.0.0", + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-utils" +version = "0.8.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51887d4adc7b564537b15adcfb307936f8075dfcd5f00dde9a9f1d29383682bc" +dependencies = [ + "cfg-if 1.0.0", + "once_cell", +] + +[[package]] +name = "crypto-common" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" +dependencies = [ + "generic-array 0.14.5", + "typenum", +] + +[[package]] +name = "crypto-mac" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b584a330336237c1eecd3e94266efb216c56ed91225d634cb2991c5f3fd1aeab" +dependencies = [ + "generic-array 0.14.5", + "subtle", +] + +[[package]] +name = "crypto-mac" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bff07008ec701e8028e2ceb8f83f0e4274ee62bd2dbdc4fefff2e9a91824081a" +dependencies = [ + "generic-array 0.14.5", + "subtle", +] + +[[package]] +name = "csv" +version = "1.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22813a6dc45b335f9bade10bf7271dc477e81113e89eb251a0bc2a8a81c536e1" +dependencies = [ + "bstr", + "csv-core", + "itoa 0.4.8", + "ryu", + "serde", +] + +[[package]] +name = "csv-core" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b2466559f260f48ad25fe6317b3c8dac77b5bdb5763ac7d9d6103530663bc90" +dependencies = [ + "memchr", +] + +[[package]] +name = "ctor" +version = "0.1.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cdffe87e1d521a10f9696f833fe502293ea446d7f256c06128293a4119bdf4cb" +dependencies = [ + "quote", + "syn", +] + +[[package]] +name = "ctr" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fb4a30d54f7443bf3d6191dcd486aca19e67cb3c49fa7a06a319966346707e7f" +dependencies = [ + "cipher", +] + +[[package]] +name = "daemon" +version = "1.1.0-alpha.8" +dependencies = [ + "clap 3.2.16", + "clap_complete", + "kanidm", + "kanidm_proto", + "profiles", + "score", + "serde", + "tikv-jemallocator", + "tokio", + "toml", + "users", + "whoami", +] + +[[package]] +name = "darling" +version = "0.14.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4529658bdda7fd6769b8614be250cdcfc3aeb0ee72fe66f9e41e5e5eb73eac02" +dependencies = [ + "darling_core", + "darling_macro", +] + +[[package]] +name = "darling_core" +version = "0.14.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "649c91bc01e8b1eac09fb91e8dbc7d517684ca6be8ebc75bb9cafc894f9fdb6f" +dependencies = [ + "fnv", + "ident_case", + "proc-macro2", + "quote", + "strsim", + "syn", +] + +[[package]] +name = "darling_macro" +version = "0.14.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ddfc69c5bfcbd2fc09a0f38451d2daf0e372e367986a83906d1b0dbc88134fb5" +dependencies = [ + "darling_core", + "quote", + "syn", +] + +[[package]] +name = "data-encoding" +version = "2.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3ee2393c4a91429dffb4bedf19f4d6abf27d8a732c8ce4980305d782e5426d57" + +[[package]] +name = "der-parser" +version = "7.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fe398ac75057914d7d07307bf67dc7f3f574a26783b4fc7805a20ffa9f506e82" +dependencies = [ + "asn1-rs", + "displaydoc", + "nom 7.1.1", + "num-bigint", + "num-traits", + "rusticata-macros", +] + +[[package]] +name = "derive_builder" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d07adf7be193b71cc36b193d0f5fe60b918a3a9db4dad0449f57bcfd519704a3" +dependencies = [ + "derive_builder_macro", +] + +[[package]] +name = "derive_builder_core" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f91d4cfa921f1c05904dc3c57b4a32c38aed3340cce209f3a6fd1478babafc4" +dependencies = [ + "darling", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "derive_builder_macro" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f0314b72bed045f3a68671b3c86328386762c93f82d98c65c3cb5e5f573dd68" +dependencies = [ + "derive_builder_core", + "syn", +] + +[[package]] +name = "devd-rs" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9861a4115f5148d32f7bbbadcdc562d5754ed75c8d27316a587440dd2ac4df84" +dependencies = [ + "libc", + "nom 7.1.1", +] + +[[package]] +name = "dialoguer" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a92e7e37ecef6857fdc0c0c5d42fd5b0938e46590c2183cc92dd310a6d078eb1" +dependencies = [ + "console", + "tempfile", + "zeroize", +] + +[[package]] +name = "digest" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3d0c8c8752312f9713efd397ff63acb9f85585afbf179282e720e7704954dd5" +dependencies = [ + "generic-array 0.12.4", +] + +[[package]] +name = "digest" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066" +dependencies = [ + "generic-array 0.14.5", +] + +[[package]] +name = "digest" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2fb860ca6fafa5552fb6d0e816a69c8e49f0908bf524e30a90d97c85892d506" +dependencies = [ + "block-buffer 0.10.2", + "crypto-common", +] + +[[package]] +name = "dirs-next" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b98cf8ebf19c3d1b223e151f99a4f9f0690dca41414773390fc824184ac833e1" +dependencies = [ + "cfg-if 1.0.0", + "dirs-sys-next", +] + +[[package]] +name = "dirs-sys-next" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ebda144c4fe02d1f7ea1a7d9641b6fc6b580adcfa024ae48797ecdeb6825b4d" +dependencies = [ + "libc", + "redox_users", + "winapi", +] + +[[package]] +name = "discard" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "212d0f5754cb6769937f4501cc0e67f4f4483c8d2c3e1e922ee9edbe4ab4c7c0" + +[[package]] +name = "displaydoc" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3bf95dc3f046b9da4f2d51833c0d3547d8564ef6910f5c1ed130306a75b92886" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "dyn-clone" +version = "1.0.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d07a982d1fb29db01e5a59b1918e03da4df7297eaeee7686ac45542fd4e59c8" + +[[package]] +name = "either" +version = "1.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f107b87b6afc2a64fd13cac55fe06d6c8859f12d4b14cbcdd2c67d0976781be" + +[[package]] +name = "encode_unicode" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a357d28ed41a50f9c765dbfe56cbc04a64e53e5fc58ba79fbc34c10ef3df831f" + +[[package]] +name = "encoding_rs" +version = "0.8.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9852635589dc9f9ea1b6fe9f05b50ef208c85c834a562f0c6abb1c475736ec2b" +dependencies = [ + "cfg-if 1.0.0", +] + +[[package]] +name = "erased-serde" +version = "0.3.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81d013529d5574a60caeda29e179e695125448e5de52e3874f7b4c1d7360e18e" +dependencies = [ + "serde", +] + +[[package]] +name = "event-listener" +version = "2.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0" + +[[package]] +name = "fake-simd" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e88a8acf291dafb59c2d96e8f59828f3838bb1a70398823ade51a84de6a6deed" + +[[package]] +name = "fallible-iterator" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4443176a9f2c162692bd3d352d745ef9413eec5782a80d8fd6f8a1ac692a07f7" + +[[package]] +name = "fallible-streaming-iterator" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7360491ce676a36bf9bb3c56c1aa791658183a54d2744120f27285738d90465a" + +[[package]] +name = "fancy-regex" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d95b4efe5be9104a4a18a9916e86654319895138be727b229820c39257c30dda" +dependencies = [ + "bit-set", + "regex", +] + +[[package]] +name = "fastrand" +version = "1.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7a407cfaa3385c4ae6b23e84623d48c2798d06e3e6a1878f7f59f17b3f86499" +dependencies = [ + "instant", +] + +[[package]] +name = "femme" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc04871e5ae3aa2952d552dae6b291b3099723bf779a8054281c1366a54613ef" +dependencies = [ + "cfg-if 1.0.0", + "js-sys", + "log", + "serde", + "serde_derive", + "serde_json", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "fernet" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93804560e638370a8be6d59ce71ed803e55e230abdbf42598e666b41adda9b1f" +dependencies = [ + "base64 0.13.0", + "byteorder", + "getrandom 0.2.7", + "openssl", + "zeroize", +] + +[[package]] +name = "filetime" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e94a7bbaa59354bc20dd75b67f23e2797b4490e9d6928203fb105c79e448c86c" +dependencies = [ + "cfg-if 1.0.0", + "libc", + "redox_syscall", + "windows-sys", +] + +[[package]] +name = "flate2" +version = "1.0.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f82b0f4c27ad9f8bfd1f3208d882da2b09c301bc1c828fd3a00d0216d2fbbff6" +dependencies = [ + "crc32fast", + "miniz_oxide", +] + +[[package]] +name = "fnv" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" + +[[package]] +name = "foreign-types" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" +dependencies = [ + "foreign-types-shared", +] + +[[package]] +name = "foreign-types-shared" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" + +[[package]] +name = "form_urlencoded" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5fc25a87fa4fd2094bffb06925852034d90a17f0d1e05197d4956d3555752191" +dependencies = [ + "matches", + "percent-encoding", +] + +[[package]] +name = "fs_extra" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2022715d62ab30faffd124d40b76f4134a550a87792276512b18d63272333394" + +[[package]] +name = "futures" +version = "0.3.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f73fe65f54d1e12b726f517d3e2135ca3125a437b6d998caf1962961f7172d9e" +dependencies = [ + "futures-channel", + "futures-core", + "futures-executor", + "futures-io", + "futures-sink", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-channel" +version = "0.3.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3083ce4b914124575708913bca19bfe887522d6e2e6d0952943f5eac4a74010" +dependencies = [ + "futures-core", + "futures-sink", +] + +[[package]] +name = "futures-core" +version = "0.3.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c09fd04b7e4073ac7156a9539b57a484a8ea920f79c7c675d05d289ab6110d3" + +[[package]] +name = "futures-executor" +version = "0.3.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9420b90cfa29e327d0429f19be13e7ddb68fa1cccb09d65e5706b8c7a749b8a6" +dependencies = [ + "futures-core", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-io" +version = "0.3.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc4045962a5a5e935ee2fdedaa4e08284547402885ab326734432bed5d12966b" + +[[package]] +name = "futures-lite" +version = "1.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7694489acd39452c77daa48516b894c153f192c3578d5a839b62c58099fcbf48" +dependencies = [ + "fastrand", + "futures-core", + "futures-io", + "memchr", + "parking", + "pin-project-lite 0.2.9", + "waker-fn", +] + +[[package]] +name = "futures-macro" +version = "0.3.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33c1e13800337f4d4d7a316bf45a567dbcb6ffe087f16424852d97e97a91f512" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "futures-sink" +version = "0.3.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "21163e139fa306126e6eedaf49ecdb4588f939600f0b1e770f4205ee4b7fa868" + +[[package]] +name = "futures-task" +version = "0.3.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57c66a976bf5909d801bbef33416c41372779507e7a6b3a5e25e4749c58f776a" + +[[package]] +name = "futures-util" +version = "0.3.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8b7abd5d659d9b90c8cba917f6ec750a74e2dc23902ef9cd4cc8c8b22e6036a" +dependencies = [ + "futures-channel", + "futures-core", + "futures-io", + "futures-macro", + "futures-sink", + "futures-task", + "memchr", + "pin-project-lite 0.2.9", + "pin-utils", + "slab", +] + +[[package]] +name = "generic-array" +version = "0.12.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ffdf9f34f1447443d37393cc6c2b8313aebddcd96906caf34e54c68d8e57d7bd" +dependencies = [ + "typenum", +] + +[[package]] +name = "generic-array" +version = "0.14.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fd48d33ec7f05fbfa152300fdad764757cbded343c1aa1cff2fbaf4134851803" +dependencies = [ + "typenum", + "version_check", +] + +[[package]] +name = "getrandom" +version = "0.1.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce" +dependencies = [ + "cfg-if 1.0.0", + "libc", + "wasi 0.9.0+wasi-snapshot-preview1", +] + +[[package]] +name = "getrandom" +version = "0.2.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4eb1a864a501629691edf6c15a593b7a51eebaa1e8468e9ddc623de7c9b58ec6" +dependencies = [ + "cfg-if 1.0.0", + "js-sys", + "libc", + "wasi 0.11.0+wasi-snapshot-preview1", + "wasm-bindgen", +] + +[[package]] +name = "ghash" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97304e4cd182c3846f7575ced3890c53012ce534ad9114046b0a9e00bb30a375" +dependencies = [ + "opaque-debug 0.3.0", + "polyval", +] + +[[package]] +name = "gloo" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23947965eee55e3e97a5cd142dd4c10631cc349b48cecca0ed230fd296f568cd" +dependencies = [ + "gloo-console", + "gloo-dialogs", + "gloo-events", + "gloo-file", + "gloo-render", + "gloo-storage", + "gloo-timers", + "gloo-utils", +] + +[[package]] +name = "gloo" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a4bef6b277b3ab073253d4bca60761240cf8d6998f4bd142211957b69a61b20" +dependencies = [ + "gloo-console", + "gloo-dialogs", + "gloo-events", + "gloo-file", + "gloo-history", + "gloo-net", + "gloo-render", + "gloo-storage", + "gloo-timers", + "gloo-utils", + "gloo-worker", +] + +[[package]] +name = "gloo-console" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3907f786f65bbb4f419e918b0c5674175ef1c231ecda93b2dbd65fd1e8882637" +dependencies = [ + "js-sys", + "serde", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "gloo-dialogs" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67062364ac72d27f08445a46cab428188e2e224ec9e37efdba48ae8c289002e6" +dependencies = [ + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "gloo-events" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68b107f8abed8105e4182de63845afcc7b69c098b7852a813ea7462a320992fc" +dependencies = [ + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "gloo-file" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8d5564e570a38b43d78bdc063374a0c3098c4f0d64005b12f9bbe87e869b6d7" +dependencies = [ + "futures-channel", + "gloo-events", + "js-sys", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "gloo-history" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f81af52c0d31e86242eecefe1ed4d066deb79cfb80f9f7da0847fac417396bfe" +dependencies = [ + "gloo-events", + "gloo-utils", + "serde", + "serde-wasm-bindgen", + "serde_urlencoded", + "thiserror", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "gloo-net" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "351e6f94c76579cc9f9323a15f209086fc7bd428bff4288723d3a417851757b2" +dependencies = [ + "futures-channel", + "futures-core", + "futures-sink", + "gloo-utils", + "js-sys", + "pin-project", + "serde", + "serde_json", + "thiserror", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", +] + +[[package]] +name = "gloo-render" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2fd9306aef67cfd4449823aadcd14e3958e0800aa2183955a309112a84ec7764" +dependencies = [ + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "gloo-storage" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1caa4ba51c99de680dee3ad99c32ca45e9f13311be72079154d222c3f9a6b6f5" +dependencies = [ + "gloo-utils", + "js-sys", + "serde", + "serde_json", + "thiserror", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "gloo-timers" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5fb7d06c1c8cc2a29bee7ec961009a0b2caa0793ee4900c2ffb348734ba1c8f9" +dependencies = [ + "futures-channel", + "futures-core", + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "gloo-utils" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "929c53c913bb7a88d75d9dc3e9705f963d8c2b9001510b25ddaf671b9fb7049d" +dependencies = [ + "js-sys", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "gloo-worker" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9caac1b89bbe1e1454bb23e4d046a3fc92438ae2e95fb429c41685789e1fcbaa" +dependencies = [ + "anymap2", + "bincode", + "gloo-console", + "gloo-utils", + "js-sys", + "serde", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", +] + +[[package]] +name = "h2" +version = "0.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37a82c6d637fc9515a4694bbf1cb2457b79d81ce52b3108bdeea58b07dd34a57" +dependencies = [ + "bytes", + "fnv", + "futures-core", + "futures-sink", + "futures-util", + "http", + "indexmap", + "slab", + "tokio", + "tokio-util", + "tracing", +] + +[[package]] +name = "half" +version = "1.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eabb4a44450da02c90444cf74558da904edde8fb4e9035a9a6a4e15445af0bd7" + +[[package]] +name = "hashbrown" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab5ef0d4909ef3724cc8cce6ccc8572c5c817592e9285f5464f8e86f8bd3726e" + +[[package]] +name = "hashbrown" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" +dependencies = [ + "ahash", + "serde", +] + +[[package]] +name = "hashlink" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d452c155cb93fecdfb02a73dd57b5d8e442c2063bd7aac72f1bc5e4263a43086" +dependencies = [ + "hashbrown 0.12.3", +] + +[[package]] +name = "heck" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2540771e65fc8cb83cd6e8a237f70c319bd5c29f78ed1084ba5d50eeac86f7f9" + +[[package]] +name = "hermit-abi" +version = "0.1.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33" +dependencies = [ + "libc", +] + +[[package]] +name = "hkdf" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51ab2f639c231793c5f6114bdb9bbe50a7dbbfcd7c7c6bd8475dec2d991e964f" +dependencies = [ + "digest 0.9.0", + "hmac 0.10.1", +] + +[[package]] +name = "hmac" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "126888268dcc288495a26bf004b38c5fdbb31682f992c84ceb046a1f0fe38840" +dependencies = [ + "crypto-mac 0.8.0", + "digest 0.9.0", +] + +[[package]] +name = "hmac" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1441c6b1e930e2817404b5046f1f989899143a12bf92de603b69f4e0aee1e15" +dependencies = [ + "crypto-mac 0.10.1", + "digest 0.9.0", +] + +[[package]] +name = "http" +version = "0.2.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75f43d41e26995c17e71ee126451dd3941010b0514a81a9d11f3b341debc2399" +dependencies = [ + "bytes", + "fnv", + "itoa 1.0.2", +] + +[[package]] +name = "http-body" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d5f38f16d184e36f2408a55281cd658ecbd3ca05cce6d6510a176eca393e26d1" +dependencies = [ + "bytes", + "http", + "pin-project-lite 0.2.9", +] + +[[package]] +name = "http-client" +version = "6.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1947510dc91e2bf586ea5ffb412caad7673264e14bb39fb9078da114a94ce1a5" +dependencies = [ + "async-trait", + "cfg-if 1.0.0", + "http-types", + "log", +] + +[[package]] +name = "http-types" +version = "2.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e9b187a72d63adbfba487f48095306ac823049cb504ee195541e91c7775f5ad" +dependencies = [ + "anyhow", + "async-channel", + "async-std", + "base64 0.13.0", + "cookie 0.14.4", + "futures-lite", + "infer", + "pin-project-lite 0.2.9", + "rand 0.7.3", + "serde", + "serde_json", + "serde_qs", + "serde_urlencoded", + "url", +] + +[[package]] +name = "httparse" +version = "1.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "496ce29bb5a52785b44e0f7ca2847ae0bb839c9bd28f69acac9b99d461c0c04c" + +[[package]] +name = "httpdate" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c4a1e36c821dbe04574f602848a19f742f4fb3c98d40449f11bcad18d6b17421" + +[[package]] +name = "hyper" +version = "0.14.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02c929dc5c39e335a03c405292728118860721b10190d98c2a0f0efd5baafbac" +dependencies = [ + "bytes", + "futures-channel", + "futures-core", + "futures-util", + "h2", + "http", + "http-body", + "httparse", + "httpdate", + "itoa 1.0.2", + "pin-project-lite 0.2.9", + "socket2", + "tokio", + "tower-service", + "tracing", + "want", +] + +[[package]] +name = "hyper-tls" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d6183ddfa99b85da61a140bea0efc93fdf56ceaa041b37d553518030827f9905" +dependencies = [ + "bytes", + "hyper", + "native-tls", + "tokio", + "tokio-native-tls", +] + +[[package]] +name = "ident_case" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" + +[[package]] +name = "idlset" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "340756d15be4b22d5e501bad90a9f68fcdc6b9b7d2f6d6afe350645e9839dac6" +dependencies = [ + "serde", + "serde_derive", + "smallvec", +] + +[[package]] +name = "idna" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "418a0a6fab821475f634efe3ccc45c013f742efe03d853e8d3355d5cb850ecf8" +dependencies = [ + "matches", + "unicode-bidi", + "unicode-normalization", +] + +[[package]] +name = "if_chain" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cb56e1aa765b4b4f3aadfab769793b7087bb03a4ea4920644a6d238e2df5b9ed" + +[[package]] +name = "indexmap" +version = "1.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "10a35a97730320ffe8e2d410b5d3b69279b98d2c14bdb8b70ea89ecf7888d41e" +dependencies = [ + "autocfg", + "hashbrown 0.12.3", +] + +[[package]] +name = "infer" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "64e9829a50b42bb782c1df523f78d332fe371b10c661e78b7a3c34b0198e9fac" + +[[package]] +name = "instant" +version = "0.1.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c" +dependencies = [ + "cfg-if 1.0.0", +] + +[[package]] +name = "ipnet" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "879d54834c8c76457ef4293a689b2a8c59b076067ad77b15efafbb05f92a592b" + +[[package]] +name = "itertools" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "284f18f85651fe11e8a991b2adb42cb078325c996ed026d994719efcfca1d54b" +dependencies = [ + "either", +] + +[[package]] +name = "itertools" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9a9d19fa1e79b6215ff29b9d6880b706147f16e9b1dbb1e4e5947b5b02bc5e3" +dependencies = [ + "either", +] + +[[package]] +name = "itoa" +version = "0.4.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b71991ff56294aa922b450139ee08b3bfc70982c6b2c7562771375cf73542dd4" + +[[package]] +name = "itoa" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "112c678d4050afce233f4f2852bb2eb519230b3cf12f33585275537d7e41578d" + +[[package]] +name = "js-sys" +version = "0.3.59" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "258451ab10b34f8af53416d1fdab72c22e805f0c92a1136d59470ec0b11138b2" +dependencies = [ + "wasm-bindgen", +] + +[[package]] +name = "kanidm" +version = "1.1.0-alpha.8" +dependencies = [ + "async-std", + "async-trait", + "base64 0.13.0", + "base64urlsafedata 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "chrono", + "compact_jwt", + "compiled-uuid", + "concread", + "criterion", + "dyn-clone", + "fernet", + "filetime", + "futures", + "futures-util", + "hashbrown 0.12.3", + "idlset", + "kanidm_proto", + "lazy_static", + "ldap3_proto", + "libc", + "libsqlite3-sys", + "num_enum", + "openssl", + "profiles", + "r2d2", + "r2d2_sqlite", + "rand 0.8.5", + "regex", + "rusqlite", + "saffron", + "serde", + "serde_cbor", + "serde_json", + "smartstring", + "smolset", + "sshkeys", + "tide", + "time 0.2.27", + "tokio", + "tokio-util", + "toml", + "touch", + "tracing", + "tracing-serde", + "tracing-subscriber", + "url", + "urlencoding", + "users", + "uuid 1.1.2", + "validator", + "webauthn-authenticator-rs", + "webauthn-rs", + "webauthn-rs-core", + "whoami", + "zxcvbn", +] + +[[package]] +name = "kanidm_client" +version = "1.1.0-alpha.8" +dependencies = [ + "kanidm_proto", + "reqwest", + "serde", + "serde_json", + "tokio", + "toml", + "tracing", + "url", + "uuid 1.1.2", + "webauthn-rs-proto", +] + +[[package]] +name = "kanidm_proto" +version = "1.1.0-alpha.8" +dependencies = [ + "base32", + "base64urlsafedata 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "serde", + "serde_json", + "time 0.2.27", + "url", + "urlencoding", + "uuid 1.1.2", + "webauthn-rs-proto", +] + +[[package]] +name = "kanidm_tools" +version = "1.1.0-alpha.8" +dependencies = [ + "clap 3.2.16", + "clap_complete", + "compact_jwt", + "dialoguer", + "kanidm_client", + "kanidm_proto", + "libc", + "qrcode", + "rayon", + "rpassword 7.0.0", + "serde", + "serde_json", + "shellexpand", + "time 0.2.27", + "tokio", + "tracing", + "tracing-subscriber", + "url", + "uuid 1.1.2", + "webauthn-authenticator-rs", + "zxcvbn", +] + +[[package]] +name = "kanidm_unix_int" +version = "1.1.0-alpha.8" +dependencies = [ + "bytes", + "clap 3.2.16", + "clap_complete", + "futures", + "kanidm", + "kanidm_client", + "kanidm_proto", + "libc", + "libsqlite3-sys", + "lru", + "profiles", + "r2d2", + "r2d2_sqlite", + "reqwest", + "rpassword 7.0.0", + "rusqlite", + "score", + "serde", + "serde_json", + "tokio", + "tokio-util", + "toml", + "tracing", + "tracing-subscriber", + "users", +] + +[[package]] +name = "kanidmd_web_ui" +version = "1.1.0-alpha.8" +dependencies = [ + "compact_jwt", + "gloo 0.8.0", + "js-sys", + "kanidm_proto", + "qrcode", + "serde", + "serde_json", + "uuid 1.1.2", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "wee_alloc", + "yew", + "yew-agent", + "yew-router", +] + +[[package]] +name = "kv-log-macro" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0de8b303297635ad57c9f5059fd9cee7a47f8e8daa09df0fcd07dd39fb22977f" +dependencies = [ + "log", +] + +[[package]] +name = "lazy_static" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" + +[[package]] +name = "lber" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a99b520993b21a6faab32643cf4726573dc18ca4cf2d48cbeb24d248c86c930" +dependencies = [ + "byteorder", + "bytes", + "nom 2.2.1", +] + +[[package]] +name = "ldap3_proto" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62d7f04b6dc4d5401b817596e424ecb4a0931db1418f3987a27e0ab69320665e" +dependencies = [ + "bytes", + "lber", + "tokio-util", + "tracing", +] + +[[package]] +name = "lexical-core" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6607c62aa161d23d17a9072cc5da0be67cdfc89d3afb1e8d9c842bebc2525ffe" +dependencies = [ + "arrayvec", + "bitflags", + "cfg-if 1.0.0", + "ryu", + "static_assertions", +] + +[[package]] +name = "libc" +version = "0.2.126" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "349d5a591cd28b49e1d1037471617a32ddcda5731b99419008085f72d5a53836" + +[[package]] +name = "libnss" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "48b67ef5ebef2a035ac8106c9b71176b6246be2a580ff4ee94bb80919e55b34c" +dependencies = [ + "lazy_static", + "libc", + "paste 0.1.18", +] + +[[package]] +name = "libsqlite3-sys" +version = "0.25.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f0455f2c1bc9a7caa792907026e469c1d91761fb0ea37cbb16427c77280cf35" +dependencies = [ + "cc", + "pkg-config", + "vcpkg", +] + +[[package]] +name = "libudev" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea626d3bdf40a1c5aee3bcd4f40826970cae8d80a8fec934c82a63840094dcfe" +dependencies = [ + "libc", + "libudev-sys", +] + +[[package]] +name = "libudev-sys" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c8469b4a23b962c1396b9b451dda50ef5b283e8dd309d69033475fa9b334324" +dependencies = [ + "libc", + "pkg-config", +] + +[[package]] +name = "linked-hash-map" +version = "0.5.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0717cef1bc8b636c6e1c1bbdefc09e6322da8a9321966e8928ef80d20f7f770f" + +[[package]] +name = "lock_api" +version = "0.4.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "327fa5b6a6940e4699ec49a9beae1ea4845c6bab9314e4f84ac68742139d8c53" +dependencies = [ + "autocfg", + "scopeguard", +] + +[[package]] +name = "log" +version = "0.4.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e" +dependencies = [ + "cfg-if 1.0.0", + "serde", + "value-bag", +] + +[[package]] +name = "lru" +version = "0.7.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e999beba7b6e8345721bd280141ed958096a2e4abdf74f67ff4ce49b4b54e47a" +dependencies = [ + "hashbrown 0.12.3", +] + +[[package]] +name = "lru-cache" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "31e24f1ad8321ca0e8a1e0ac13f23cb668e6f5466c2c57319f6a5cf1cc8e3b1c" +dependencies = [ + "linked-hash-map", +] + +[[package]] +name = "matchers" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8263075bb86c5a1b1427b5ae862e8889656f126e9f77c484496e8b47cf5c5558" +dependencies = [ + "regex-automata", +] + +[[package]] +name = "matches" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a3e378b66a060d48947b590737b30a1be76706c8dd7b8ba0f2fe3989c68a853f" + +[[package]] +name = "mathru" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a42bf938e4c9a6ad581cf528d5606eb50c5458ac759ca23719291e2f6499bec" +dependencies = [ + "rand 0.8.5", +] + +[[package]] +name = "memchr" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d" + +[[package]] +name = "memoffset" +version = "0.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5aa361d4faea93603064a027415f07bd8e1d5c88c9fbf68bf56a285428fd79ce" +dependencies = [ + "autocfg", +] + +[[package]] +name = "memory_units" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8452105ba047068f40ff7093dd1d9da90898e63dd61736462e9cdda6a90ad3c3" + +[[package]] +name = "mime" +version = "0.3.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a60c7ce501c71e03a9c9c0d35b861413ae925bd979cc7a4e30d060069aaac8d" + +[[package]] +name = "minimal-lexical" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" + +[[package]] +name = "miniz_oxide" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f5c75688da582b8ffc1f1799e9db273f32133c49e048f614d22ec3256773ccc" +dependencies = [ + "adler", +] + +[[package]] +name = "mio" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57ee1c23c7c63b0c9250c339ffdc69255f110b298b901b9f6c82547b7b87caaf" +dependencies = [ + "libc", + "log", + "wasi 0.11.0+wasi-snapshot-preview1", + "windows-sys", +] + +[[package]] +name = "native-tls" +version = "0.2.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fd7e2f3618557f980e0b17e8856252eee3c97fa12c54dff0ca290fb6266ca4a9" +dependencies = [ + "lazy_static", + "libc", + "log", + "openssl", + "openssl-probe", + "openssl-sys", + "schannel", + "security-framework", + "security-framework-sys", + "tempfile", +] + +[[package]] +name = "nom" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf51a729ecf40266a2368ad335a5fdde43471f545a967109cd62146ecf8b66ff" + +[[package]] +name = "nom" +version = "5.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ffb4262d26ed83a1c0a33a38fe2bb15797329c85770da05e6b828ddb782627af" +dependencies = [ + "lexical-core", + "memchr", + "version_check", +] + +[[package]] +name = "nom" +version = "7.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8903e5a29a317527874d0402f867152a3d21c908bb0b933e416c65e301d4c36" +dependencies = [ + "memchr", + "minimal-lexical", +] + +[[package]] +name = "nss_kanidm" +version = "1.1.0-alpha.8" +dependencies = [ + "kanidm_unix_int", + "lazy_static", + "libc", + "libnss", + "paste 1.0.7", +] + +[[package]] +name = "num-bigint" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f93ab6289c7b344a8a9f60f88d80aa20032336fe78da341afc91c8a2341fc75f" +dependencies = [ + "autocfg", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-integer" +version = "0.1.45" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9" +dependencies = [ + "autocfg", + "num-traits", +] + +[[package]] +name = "num-traits" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd" +dependencies = [ + "autocfg", +] + +[[package]] +name = "num_cpus" +version = "1.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19e64526ebdee182341572e50e9ad03965aa510cd94427a4549448f285e957a1" +dependencies = [ + "hermit-abi", + "libc", +] + +[[package]] +name = "num_enum" +version = "0.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf5395665662ef45796a4ff5486c5d41d29e0c09640af4c5f17fd94ee2c119c9" +dependencies = [ + "num_enum_derive", +] + +[[package]] +name = "num_enum_derive" +version = "0.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b0498641e53dd6ac1a4f22547548caa6864cc4933784319cd1775271c5a46ce" +dependencies = [ + "proc-macro-crate", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "num_threads" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2819ce041d2ee131036f4fc9d6ae7ae125a3a40e97ba64d04fe799ad9dabbb44" +dependencies = [ + "libc", +] + +[[package]] +name = "oauth2" +version = "4.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d62c436394991641b970a92e23e8eeb4eb9bca74af4f5badc53bcd568daadbd" +dependencies = [ + "base64 0.13.0", + "chrono", + "getrandom 0.2.7", + "http", + "rand 0.8.5", + "serde", + "serde_json", + "serde_path_to_error", + "sha2 0.10.2", + "thiserror", + "url", +] + +[[package]] +name = "oid-registry" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38e20717fa0541f39bd146692035c37bedfa532b3e5071b35761082407546b2a" +dependencies = [ + "asn1-rs", +] + +[[package]] +name = "once_cell" +version = "1.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "18a6dbe30758c9f83eb00cbea4ac95966305f5a7772f3f42ebfc7fc7eddbd8e1" + +[[package]] +name = "oncemutex" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "44d11de466f4a3006fe8a5e7ec84e93b79c70cb992ae0aa0eb631ad2df8abfe2" + +[[package]] +name = "oorandom" +version = "11.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ab1bc2a289d34bd04a330323ac98a1b4bc82c9d9fcb1e66b63caa84da26b575" + +[[package]] +name = "opaque-debug" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2839e79665f131bdb5782e51f2c6c9599c133c6098982a54c794358bf432529c" + +[[package]] +name = "opaque-debug" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5" + +[[package]] +name = "openssl" +version = "0.10.41" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "618febf65336490dfcf20b73f885f5651a0c89c64c2d4a8c3662585a70bf5bd0" +dependencies = [ + "bitflags", + "cfg-if 1.0.0", + "foreign-types", + "libc", + "once_cell", + "openssl-macros", + "openssl-sys", +] + +[[package]] +name = "openssl-macros" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b501e44f11665960c7e7fcf062c7d96a14ade4aa98116c004b2e37b5be7d736c" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "openssl-probe" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" + +[[package]] +name = "openssl-sys" +version = "0.9.75" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5f9bd0c2710541a3cda73d6f9ac4f1b240de4ae261065d309dbe73d9dceb42f" +dependencies = [ + "autocfg", + "cc", + "libc", + "pkg-config", + "vcpkg", +] + +[[package]] +name = "orca" +version = "1.1.0-alpha.8" +dependencies = [ + "clap 3.2.16", + "crossbeam", + "csv", + "dialoguer", + "futures-util", + "kanidm_client", + "kanidm_proto", + "ldap3_proto", + "mathru", + "openssl", + "profiles", + "rand 0.8.5", + "serde", + "serde_json", + "tikv-jemallocator", + "tokio", + "tokio-openssl", + "tokio-util", + "toml", + "tracing", + "tracing-subscriber", + "uuid 1.1.2", +] + +[[package]] +name = "os_str_bytes" +version = "6.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "648001efe5d5c0102d8cea768e348da85d90af8ba91f0bea908f157951493cd4" + +[[package]] +name = "pam_kanidm" +version = "1.1.0-alpha.8" +dependencies = [ + "kanidm_unix_int", + "libc", + "pkg-config", +] + +[[package]] +name = "parking" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "427c3892f9e783d91cc128285287e70a59e206ca452770ece88a76f7a3eddd72" + +[[package]] +name = "parking_lot" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" +dependencies = [ + "lock_api", + "parking_lot_core", +] + +[[package]] +name = "parking_lot_core" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09a279cbf25cb0757810394fbc1e359949b59e348145c643a939a525692e6929" +dependencies = [ + "cfg-if 1.0.0", + "libc", + "redox_syscall", + "smallvec", + "windows-sys", +] + +[[package]] +name = "paste" +version = "0.1.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "45ca20c77d80be666aef2b45486da86238fabe33e38306bd3118fe4af33fa880" +dependencies = [ + "paste-impl", + "proc-macro-hack", +] + +[[package]] +name = "paste" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c520e05135d6e763148b6426a837e239041653ba7becd2e538c076c738025fc" + +[[package]] +name = "paste-impl" +version = "0.1.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d95a7db200b97ef370c8e6de0088252f7e0dfff7d047a28528e47456c0fc98b6" +dependencies = [ + "proc-macro-hack", +] + +[[package]] +name = "percent-encoding" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4fd5641d01c8f18a23da7b6fe29298ff4b55afcccdf78973b24cf3175fee32e" + +[[package]] +name = "phonenumber" +version = "0.3.1+8.12.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1261a014e5f5e048bf2c6f1a72fa5e4c223009dc5f296a385b95fe19b464608f" +dependencies = [ + "bincode", + "either", + "fnv", + "itertools 0.9.0", + "lazy_static", + "nom 5.1.2", + "quick-xml", + "regex", + "regex-cache", + "serde", + "serde_derive", + "thiserror", +] + +[[package]] +name = "pin-project" +version = "1.0.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78203e83c48cffbe01e4a2d35d566ca4de445d79a85372fc64e378bfc812a260" +dependencies = [ + "pin-project-internal", +] + +[[package]] +name = "pin-project-internal" +version = "1.0.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "710faf75e1b33345361201d36d04e98ac1ed8909151a017ed384700836104c74" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "pin-project-lite" +version = "0.1.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "257b64915a082f7811703966789728173279bdebb956b143dbcd23f6f970a777" + +[[package]] +name = "pin-project-lite" +version = "0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e0a7ae3ac2f1173085d398531c705756c94a4c56843785df85a60c1a0afac116" + +[[package]] +name = "pin-utils" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" + +[[package]] +name = "pkg-config" +version = "0.3.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1df8c4ec4b0627e53bdf214615ad287367e482558cf84b109250b37464dc03ae" + +[[package]] +name = "plotters" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9428003b84df1496fb9d6eeee9c5f8145cb41ca375eb0dad204328888832811f" +dependencies = [ + "num-traits", + "plotters-backend", + "plotters-svg", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "plotters-backend" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "193228616381fecdc1224c62e96946dfbc73ff4384fba576e052ff8c1bea8142" + +[[package]] +name = "plotters-svg" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e0918736323d1baff32ee0eade54984f6f201ad7e97d5cfb5d6ab4a358529615" +dependencies = [ + "plotters-backend", +] + +[[package]] +name = "polling" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "685404d509889fade3e86fe3a5803bca2ec09b0c0778d5ada6ec8bf7a8de5259" +dependencies = [ + "cfg-if 1.0.0", + "libc", + "log", + "wepoll-ffi", + "winapi", +] + +[[package]] +name = "polyval" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eebcc4aa140b9abd2bc40d9c3f7ccec842679cd79045ac3a7ac698c1a064b7cd" +dependencies = [ + "cpuid-bool", + "opaque-debug 0.3.0", + "universal-hash", +] + +[[package]] +name = "ppv-lite86" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eb9f9e6e233e5c4a35559a617bf40a4ec447db2e84c20b55a6f83167b7e57872" + +[[package]] +name = "proc-macro-crate" +version = "1.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e17d47ce914bf4de440332250b0edd23ce48c005f59fab39d3335866b114f11a" +dependencies = [ + "thiserror", + "toml", +] + +[[package]] +name = "proc-macro-error" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" +dependencies = [ + "proc-macro-error-attr", + "proc-macro2", + "quote", + "syn", + "version_check", +] + +[[package]] +name = "proc-macro-error-attr" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" +dependencies = [ + "proc-macro2", + "quote", + "version_check", +] + +[[package]] +name = "proc-macro-hack" +version = "0.5.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dbf0c48bc1d91375ae5c3cd81e3722dff1abcf81a30960240640d223f59fe0e5" + +[[package]] +name = "proc-macro2" +version = "1.0.42" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c278e965f1d8cf32d6e0e96de3d3e79712178ae67986d9cf9151f51e95aac89b" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "profiles" +version = "1.1.0-alpha.8" +dependencies = [ + "base64 0.13.0", + "serde", + "toml", +] + +[[package]] +name = "psl-types" +version = "2.0.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e8eda7c62d9ecaafdf8b62374c006de0adf61666ae96a96ba74a37134aa4e470" + +[[package]] +name = "publicsuffix" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "292972edad6bbecc137ab84c5e36421a4a6c979ea31d3cc73540dd04315b33e1" +dependencies = [ + "byteorder", + "hashbrown 0.11.2", + "idna", + "psl-types", +] + +[[package]] +name = "qrcode" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "16d2f1455f3630c6e5107b4f2b94e74d76dea80736de0981fd27644216cff57f" +dependencies = [ + "checked_int_cast", +] + +[[package]] +name = "quick-error" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a993555f31e5a609f617c12db6250dedcac1b0a85076912c436e6fc9b2c8e6a3" + +[[package]] +name = "quick-xml" +version = "0.18.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3cc440ee4802a86e357165021e3e255a9143724da31db1e2ea540214c96a0f82" +dependencies = [ + "memchr", +] + +[[package]] +name = "quote" +version = "1.0.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3bcdf212e9776fbcb2d23ab029360416bb1706b1aea2d1a5ba002727cbcab804" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "r2d2" +version = "0.8.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51de85fb3fb6524929c8a2eb85e6b6d363de4e8c48f9e2c2eac4944abc181c93" +dependencies = [ + "log", + "parking_lot", + "scheduled-thread-pool", +] + +[[package]] +name = "r2d2_sqlite" +version = "0.21.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4f5d0337e99cd5cacd91ffc326c6cc9d8078def459df560c4f9bf9ba4a51034" +dependencies = [ + "r2d2", + "rusqlite", +] + +[[package]] +name = "rand" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03" +dependencies = [ + "getrandom 0.1.16", + "libc", + "rand_chacha 0.2.2", + "rand_core 0.5.1", + "rand_hc", +] + +[[package]] +name = "rand" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +dependencies = [ + "libc", + "rand_chacha 0.3.1", + "rand_core 0.6.3", +] + +[[package]] +name = "rand_chacha" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402" +dependencies = [ + "ppv-lite86", + "rand_core 0.5.1", +] + +[[package]] +name = "rand_chacha" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" +dependencies = [ + "ppv-lite86", + "rand_core 0.6.3", +] + +[[package]] +name = "rand_core" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" +dependencies = [ + "getrandom 0.1.16", +] + +[[package]] +name = "rand_core" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d34f1408f55294453790c48b2f1ebbb1c5b4b7563eb1f418bcfcfdbb06ebb4e7" +dependencies = [ + "getrandom 0.2.7", +] + +[[package]] +name = "rand_hc" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c" +dependencies = [ + "rand_core 0.5.1", +] + +[[package]] +name = "rayon" +version = "1.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd99e5772ead8baa5215278c9b15bf92087709e9c1b2d1f97cdb5a183c933a7d" +dependencies = [ + "autocfg", + "crossbeam-deque", + "either", + "rayon-core", +] + +[[package]] +name = "rayon-core" +version = "1.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "258bcdb5ac6dad48491bb2992db6b7cf74878b0384908af124823d118c99683f" +dependencies = [ + "crossbeam-channel", + "crossbeam-deque", + "crossbeam-utils", + "num_cpus", +] + +[[package]] +name = "redox_syscall" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a" +dependencies = [ + "bitflags", +] + +[[package]] +name = "redox_users" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b033d837a7cf162d7993aded9304e30a83213c648b6e389db233191f891e5c2b" +dependencies = [ + "getrandom 0.2.7", + "redox_syscall", + "thiserror", +] + +[[package]] +name = "regex" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c4eb3267174b8c6c2f654116623910a0fef09c4753f8dd83db29c48a0df988b" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax", +] + +[[package]] +name = "regex-automata" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132" +dependencies = [ + "regex-syntax", +] + +[[package]] +name = "regex-cache" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2f7b62d69743b8b94f353b6b7c3deb4c5582828328bcb8d5fedf214373808793" +dependencies = [ + "lru-cache", + "oncemutex", + "regex", + "regex-syntax", +] + +[[package]] +name = "regex-syntax" +version = "0.6.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a3f87b73ce11b1619a3c6332f45341e0047173771e8b8b73f87bfeefb7b56244" + +[[package]] +name = "remove_dir_all" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3acd125665422973a33ac9d3dd2df85edad0f4ae9b00dafb1a05e43a9f5ef8e7" +dependencies = [ + "winapi", +] + +[[package]] +name = "reqwest" +version = "0.11.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b75aa69a3f06bbcc66ede33af2af253c6f7a86b1ca0033f60c580a27074fbf92" +dependencies = [ + "base64 0.13.0", + "bytes", + "cookie 0.16.0", + "cookie_store", + "encoding_rs", + "futures-core", + "futures-util", + "h2", + "http", + "http-body", + "hyper", + "hyper-tls", + "ipnet", + "js-sys", + "lazy_static", + "log", + "mime", + "native-tls", + "percent-encoding", + "pin-project-lite 0.2.9", + "proc-macro-hack", + "serde", + "serde_json", + "serde_urlencoded", + "tokio", + "tokio-native-tls", + "tower-service", + "url", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "winreg", +] + +[[package]] +name = "route-recognizer" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56770675ebc04927ded3e60633437841581c285dc6236109ea25fbf3beb7b59e" + +[[package]] +name = "route-recognizer" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "afab94fb28594581f62d981211a9a4d53cc8130bbcbbb89a0440d9b8e81a7746" + +[[package]] +name = "rpassword" +version = "5.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ffc936cf8a7ea60c58f030fd36a612a48f440610214dc54bc36431f9ea0c3efb" +dependencies = [ + "libc", + "winapi", +] + +[[package]] +name = "rpassword" +version = "7.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26b763cb66df1c928432cc35053f8bd4cec3335d8559fc16010017d16b3c1680" +dependencies = [ + "libc", + "winapi", +] + +[[package]] +name = "runloop" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d79b4b604167921892e84afbbaad9d5ad74e091bf6c511d9dbfb0593f09fabd" + +[[package]] +name = "rusqlite" +version = "0.28.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "01e213bc3ecb39ac32e81e51ebe31fd888a940515173e3a18a35f8c6e896422a" +dependencies = [ + "bitflags", + "fallible-iterator", + "fallible-streaming-iterator", + "hashlink", + "libsqlite3-sys", + "smallvec", +] + +[[package]] +name = "rustc_version" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a" +dependencies = [ + "semver", +] + +[[package]] +name = "rusticata-macros" +version = "4.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "faf0c4a6ece9950b9abdb62b1cfcf2a68b3b67a10ba445b3bb85be2a293d0632" +dependencies = [ + "nom 7.1.1", +] + +[[package]] +name = "ryu" +version = "1.0.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3f6f92acf49d1b98f7a81226834412ada05458b7364277387724a237f062695" + +[[package]] +name = "saffron" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03fb9a628596fc7590eb7edbf7b0613287be78df107f5f97b118aad59fb2eea9" +dependencies = [ + "chrono", + "nom 5.1.2", +] + +[[package]] +name = "same-file" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "schannel" +version = "0.1.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88d6731146462ea25d9244b2ed5fd1d716d25c52e4d54aa4fb0f3c4e9854dbe2" +dependencies = [ + "lazy_static", + "windows-sys", +] + +[[package]] +name = "scheduled-thread-pool" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "977a7519bff143a44f842fd07e80ad1329295bd71686457f18e496736f4bf9bf" +dependencies = [ + "parking_lot", +] + +[[package]] +name = "scoped-tls-hkt" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2e9d7eaddb227e8fbaaa71136ae0e1e913ca159b86c7da82f3e8f0044ad3a63" + +[[package]] +name = "scopeguard" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" + +[[package]] +name = "score" +version = "1.1.0-alpha.8" +dependencies = [ + "async-std", + "async-trait", + "base64 0.13.0", + "compact_jwt", + "futures", + "futures-util", + "http-types", + "kanidm", + "kanidm_client", + "kanidm_proto", + "ldap3_proto", + "libc", + "oauth2", + "openssl", + "profiles", + "regex", + "reqwest", + "serde", + "serde_json", + "tide", + "tide-compress", + "tide-openssl", + "tokio", + "tokio-openssl", + "tokio-util", + "tracing", + "tracing-subscriber", + "url", + "uuid 1.1.2", + "webauthn-authenticator-rs", +] + +[[package]] +name = "security-framework" +version = "2.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2dc14f172faf8a0194a3aded622712b0de276821addc574fa54fc0a1167e10dc" +dependencies = [ + "bitflags", + "core-foundation", + "core-foundation-sys", + "libc", + "security-framework-sys", +] + +[[package]] +name = "security-framework-sys" +version = "2.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0160a13a177a45bfb43ce71c01580998474f556ad854dcbca936dd2841a5c556" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "semver" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403" +dependencies = [ + "semver-parser", +] + +[[package]] +name = "semver-parser" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" + +[[package]] +name = "serde" +version = "1.0.140" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc855a42c7967b7c369eb5860f7164ef1f6f81c20c7cc1141f2a604e18723b03" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde-wasm-bindgen" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "618365e8e586c22123d692b72a7d791d5ee697817b65a218cdf12a98870af0f7" +dependencies = [ + "fnv", + "js-sys", + "serde", + "wasm-bindgen", +] + +[[package]] +name = "serde_bytes" +version = "0.11.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "212e73464ebcde48d723aa02eb270ba62eff38a9b732df31f33f1b4e145f3a54" +dependencies = [ + "serde", +] + +[[package]] +name = "serde_cbor" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2bef2ebfde456fb76bbcf9f59315333decc4fda0b2b44b420243c11e0f5ec1f5" +dependencies = [ + "half", + "serde", +] + +[[package]] +name = "serde_derive" +version = "1.0.140" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f2122636b9fe3b81f1cb25099fcf2d3f542cdb1d45940d56c713158884a05da" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "serde_fmt" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2963a69a2b3918c1dc75a45a18bd3fcd1120e31d3f59deb1b2f9b5d5ffb8baa4" +dependencies = [ + "serde", +] + +[[package]] +name = "serde_json" +version = "1.0.82" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "82c2c1fdcd807d1098552c5b9a36e425e42e9fbd7c6a37a8425f390f781f7fa7" +dependencies = [ + "itoa 1.0.2", + "ryu", + "serde", +] + +[[package]] +name = "serde_path_to_error" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d7868ad3b8196a8a0aea99a8220b124278ee5320a55e4fde97794b6f85b1a377" +dependencies = [ + "serde", +] + +[[package]] +name = "serde_qs" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7715380eec75f029a4ef7de39a9200e0a63823176b759d055b613f5a87df6a6" +dependencies = [ + "percent-encoding", + "serde", + "thiserror", +] + +[[package]] +name = "serde_urlencoded" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" +dependencies = [ + "form_urlencoded", + "itoa 1.0.2", + "ryu", + "serde", +] + +[[package]] +name = "sha1" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1da05c97445caa12d05e848c4a4fcbbea29e748ac28f7e80e9b010392063770" +dependencies = [ + "sha1_smol", +] + +[[package]] +name = "sha1_smol" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae1a47186c03a32177042e55dbc5fd5aee900b8e0069a8d70fba96a9375cd012" + +[[package]] +name = "sha2" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a256f46ea78a0c0d9ff00077504903ac881a1dafdc20da66545699e7776b3e69" +dependencies = [ + "block-buffer 0.7.3", + "digest 0.8.1", + "fake-simd", + "opaque-debug 0.2.3", +] + +[[package]] +name = "sha2" +version = "0.9.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4d58a1e1bf39749807d89cf2d98ac2dfa0ff1cb3faa38fbb64dd88ac8013d800" +dependencies = [ + "block-buffer 0.9.0", + "cfg-if 1.0.0", + "cpufeatures", + "digest 0.9.0", + "opaque-debug 0.3.0", +] + +[[package]] +name = "sha2" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55deaec60f81eefe3cce0dc50bda92d6d8e88f2a27df7c5033b42afeb1ed2676" +dependencies = [ + "cfg-if 1.0.0", + "cpufeatures", + "digest 0.10.3", +] + +[[package]] +name = "sharded-slab" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "900fba806f70c630b0a382d0d825e17a0f19fcd059a2ade1ff237bcddf446b31" +dependencies = [ + "lazy_static", +] + +[[package]] +name = "shellexpand" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83bdb7831b2d85ddf4a7b148aa19d0587eddbe8671a436b7bd1182eaad0f2829" +dependencies = [ + "dirs-next", +] + +[[package]] +name = "signal-hook" +version = "0.3.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a253b5e89e2698464fc26b545c9edceb338e18a89effeeecfea192c3025be29d" +dependencies = [ + "libc", + "signal-hook-registry", +] + +[[package]] +name = "signal-hook-registry" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e51e73328dc4ac0c7ccbda3a494dfa03df1de2f46018127f60c693f2648455b0" +dependencies = [ + "libc", +] + +[[package]] +name = "simple-mutex" +version = "1.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38aabbeafa6f6dead8cebf246fe9fae1f9215c8d29b3a69f93bd62a9e4a3dcd6" +dependencies = [ + "event-listener", +] + +[[package]] +name = "slab" +version = "0.4.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4614a76b2a8be0058caa9dbbaf66d988527d86d003c11a94fbd335d7661edcef" +dependencies = [ + "autocfg", +] + +[[package]] +name = "smallvec" +version = "1.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2fd0db749597d91ff862fd1d55ea87f7855a744a8425a64695b6fca237d1dad1" +dependencies = [ + "serde", +] + +[[package]] +name = "smartstring" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3fb72c633efbaa2dd666986505016c32c3044395ceaf881518399d2f4127ee29" +dependencies = [ + "autocfg", + "serde", + "static_assertions", + "version_check", +] + +[[package]] +name = "smolset" +version = "1.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8d372e8fe15dc5229e7d6c65f5810849385e79e24f9d9d64263e132879c7be0" +dependencies = [ + "smallvec", +] + +[[package]] +name = "socket2" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "66d72b759436ae32898a2af0a14218dbf55efde3feeb170eb623637db85ee1e0" +dependencies = [ + "libc", + "winapi", +] + +[[package]] +name = "sshkeys" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c926cb006a77964474a13a86aa0135ea82c9fd43e6793a1151cc54143db6637c" +dependencies = [ + "base64 0.12.3", + "byteorder", + "sha2 0.8.2", +] + +[[package]] +name = "standback" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e113fb6f3de07a243d434a56ec6f186dfd51cb08448239fe7bcae73f87ff28ff" +dependencies = [ + "version_check", +] + +[[package]] +name = "static_assertions" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" + +[[package]] +name = "stdweb" +version = "0.4.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d022496b16281348b52d0e30ae99e01a73d737b2f45d38fed4edf79f9325a1d5" +dependencies = [ + "discard", + "rustc_version", + "stdweb-derive", + "stdweb-internal-macros", + "stdweb-internal-runtime", + "wasm-bindgen", +] + +[[package]] +name = "stdweb-derive" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c87a60a40fccc84bef0652345bbbbbe20a605bf5d0ce81719fc476f5c03b50ef" +dependencies = [ + "proc-macro2", + "quote", + "serde", + "serde_derive", + "syn", +] + +[[package]] +name = "stdweb-internal-macros" +version = "0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "58fa5ff6ad0d98d1ffa8cb115892b6e69d67799f6763e162a1c9db421dc22e11" +dependencies = [ + "base-x", + "proc-macro2", + "quote", + "serde", + "serde_derive", + "serde_json", + "sha1", + "syn", +] + +[[package]] +name = "stdweb-internal-runtime" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "213701ba3370744dcd1a12960caa4843b3d68b4d1c0a5d575e0d65b2ee9d16c0" + +[[package]] +name = "strsim" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" + +[[package]] +name = "subtle" +version = "2.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6bdef32e8150c2a081110b42772ffe7d7c9032b606bc226c8260fd97e0976601" + +[[package]] +name = "sval" +version = "1.0.0-alpha.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "45f6ee7c7b87caf59549e9fe45d6a69c75c8019e79e212a835c5da0e92f0ba08" +dependencies = [ + "serde", +] + +[[package]] +name = "syn" +version = "1.0.98" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c50aef8a904de4c23c788f104b7dddc7d6f79c647c7c8ce4cc8f73eb0ca773dd" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "synstructure" +version = "0.12.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f36bdaa60a83aca3921b5259d5400cbf5e90fc51931376a9bd4a0eb79aa7210f" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "unicode-xid", +] + +[[package]] +name = "tempfile" +version = "3.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5cdb1ef4eaeeaddc8fbd371e5017057064af0911902ef36b39801f67cc6d79e4" +dependencies = [ + "cfg-if 1.0.0", + "fastrand", + "libc", + "redox_syscall", + "remove_dir_all", + "winapi", +] + +[[package]] +name = "termcolor" +version = "1.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bab24d30b911b2376f3a13cc2cd443142f0c81dda04c118693e35b3835757755" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "terminal_size" +version = "0.1.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "633c1a546cee861a1a6d0dc69ebeca693bf4296661ba7852b9d21d159e0506df" +dependencies = [ + "libc", + "winapi", +] + +[[package]] +name = "textwrap" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d326610f408c7a4eb6f51c37c330e496b08506c9457c9d34287ecc38809fb060" +dependencies = [ + "unicode-width", +] + +[[package]] +name = "textwrap" +version = "0.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1141d4d61095b28419e22cb0bbf02755f5e54e0526f97f1e3d1d160e60885fb" + +[[package]] +name = "thiserror" +version = "1.0.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd829fe32373d27f76265620b5309d0340cb8550f523c1dda251d6298069069a" +dependencies = [ + "thiserror-impl", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0396bc89e626244658bef819e22d0cc459e795a5ebe878e6ec336d1674a8d79a" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "thread_local" +version = "1.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5516c27b78311c50bf42c071425c560ac799b11c30b31f87e3081965fe5e0180" +dependencies = [ + "once_cell", +] + +[[package]] +name = "tide" +version = "0.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c459573f0dd2cc734b539047f57489ea875af8ee950860ded20cf93a79a1dee0" +dependencies = [ + "async-h1", + "async-session", + "async-sse", + "async-std", + "async-trait", + "femme", + "futures-util", + "http-client", + "http-types", + "kv-log-macro", + "log", + "pin-project-lite 0.2.9", + "route-recognizer 0.2.0", + "serde", + "serde_json", +] + +[[package]] +name = "tide-compress" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "539b6fa23e01ed692b7947601b2b2e98a26bbed6ccd4ea439b19953a76718ce8" +dependencies = [ + "async-compression", + "cfg-if 1.0.0", + "futures-lite", + "http-types", + "regex", + "tide", +] + +[[package]] +name = "tide-openssl" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5ca37203863763d3faf05b22d32a0c2da7a2d429b8fb22345e19e45ec2ad1071" +dependencies = [ + "async-dup", + "async-h1", + "async-std", + "async-std-openssl", + "futures-util", + "openssl", + "openssl-sys", + "tide", +] + +[[package]] +name = "tikv-jemalloc-sys" +version = "0.5.1+5.3.0-patched" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "931e876f91fed0827f863a2d153897790da0b24d882c721a79cb3beb0b903261" +dependencies = [ + "cc", + "fs_extra", + "libc", +] + +[[package]] +name = "tikv-jemallocator" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "20612db8a13a6c06d57ec83953694185a367e16945f66565e8028d2c0bd76979" +dependencies = [ + "libc", + "tikv-jemalloc-sys", +] + +[[package]] +name = "time" +version = "0.1.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6db9e6914ab8b1ae1c260a4ae7a49b6c5611b40328a735b21862567685e73255" +dependencies = [ + "libc", + "wasi 0.10.0+wasi-snapshot-preview1", + "winapi", +] + +[[package]] +name = "time" +version = "0.2.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4752a97f8eebd6854ff91f1c1824cd6160626ac4bd44287f7f4ea2035a02a242" +dependencies = [ + "const_fn", + "libc", + "serde", + "standback", + "stdweb", + "time-macros 0.1.1", + "version_check", + "winapi", +] + +[[package]] +name = "time" +version = "0.3.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72c91f41dcb2f096c05f0873d667dceec1087ce5bcf984ec8ffb19acddbb3217" +dependencies = [ + "itoa 1.0.2", + "libc", + "num_threads", + "time-macros 0.2.4", +] + +[[package]] +name = "time-macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "957e9c6e26f12cb6d0dd7fc776bb67a706312e7299aed74c8dd5b17ebb27e2f1" +dependencies = [ + "proc-macro-hack", + "time-macros-impl", +] + +[[package]] +name = "time-macros" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42657b1a6f4d817cda8e7a0ace261fe0cc946cf3a80314390b22cc61ae080792" + +[[package]] +name = "time-macros-impl" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fd3c141a1b43194f3f56a1411225df8646c55781d5f26db825b3d98507eb482f" +dependencies = [ + "proc-macro-hack", + "proc-macro2", + "quote", + "standback", + "syn", +] + +[[package]] +name = "tinytemplate" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be4d6b5f19ff7664e8c98d03e2139cb510db9b0a60b55f8e8709b689d939b6bc" +dependencies = [ + "serde", + "serde_json", +] + +[[package]] +name = "tinyvec" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50" +dependencies = [ + "tinyvec_macros", +] + +[[package]] +name = "tinyvec_macros" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cda74da7e1a664f795bb1f8a87ec406fb89a02522cf6e50620d016add6dbbf5c" + +[[package]] +name = "tokio" +version = "1.20.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a8325f63a7d4774dd041e363b2409ed1c5cbbd0f867795e661df066b2b0a581" +dependencies = [ + "autocfg", + "bytes", + "libc", + "memchr", + "mio", + "num_cpus", + "once_cell", + "pin-project-lite 0.2.9", + "signal-hook-registry", + "socket2", + "tokio-macros", + "winapi", +] + +[[package]] +name = "tokio-macros" +version = "1.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9724f9a975fb987ef7a3cd9be0350edcbe130698af5b8f7a631e23d42d052484" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "tokio-native-tls" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7d995660bd2b7f8c1568414c1126076c13fbb725c40112dc0120b78eb9b717b" +dependencies = [ + "native-tls", + "tokio", +] + +[[package]] +name = "tokio-openssl" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c08f9ffb7809f1b20c1b398d92acf4cc719874b3b2b2d9ea2f09b4a80350878a" +dependencies = [ + "futures-util", + "openssl", + "openssl-sys", + "tokio", +] + +[[package]] +name = "tokio-util" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc463cd8deddc3770d20f9852143d50bf6094e640b485cb2e189a2099085ff45" +dependencies = [ + "bytes", + "futures-core", + "futures-sink", + "pin-project-lite 0.2.9", + "tokio", + "tracing", +] + +[[package]] +name = "toml" +version = "0.5.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8d82e1a7758622a465f8cee077614c73484dac5b836c02ff6a40d5d1010324d7" +dependencies = [ + "serde", +] + +[[package]] +name = "touch" +version = "0.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0ff985ccaedc537018a1b6c7f377d25e16d08aa1fcc5f8f4fba984c7e69cf09" +dependencies = [ + "log", +] + +[[package]] +name = "tower-service" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52" + +[[package]] +name = "tracing" +version = "0.1.36" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2fce9567bd60a67d08a16488756721ba392f24f29006402881e43b19aac64307" +dependencies = [ + "cfg-if 1.0.0", + "pin-project-lite 0.2.9", + "tracing-attributes", + "tracing-core", +] + +[[package]] +name = "tracing-attributes" +version = "0.1.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11c75893af559bc8e10716548bdef5cb2b983f8e637db9d0e15126b61b484ee2" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "tracing-core" +version = "0.1.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5aeea4303076558a00714b823f9ad67d58a3bbda1df83d8827d21193156e22f7" +dependencies = [ + "once_cell", + "valuable", +] + +[[package]] +name = "tracing-log" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78ddad33d2d10b1ed7eb9d1f518a5674713876e97e5bb9b7345a7984fbb4f922" +dependencies = [ + "lazy_static", + "log", + "tracing-core", +] + +[[package]] +name = "tracing-serde" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc6b213177105856957181934e4920de57730fc69bf42c37ee5bb664d406d9e1" +dependencies = [ + "serde", + "tracing-core", +] + +[[package]] +name = "tracing-subscriber" +version = "0.3.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "60db860322da191b40952ad9affe65ea23e7dd6a5c442c2c42865810c6ab8e6b" +dependencies = [ + "ansi_term", + "matchers", + "once_cell", + "regex", + "sharded-slab", + "smallvec", + "thread_local", + "tracing", + "tracing-core", + "tracing-log", +] + +[[package]] +name = "try-lock" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59547bce71d9c38b83d9c0e92b6066c4253371f15005def0c30d9657f50c7642" + +[[package]] +name = "typenum" +version = "1.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dcf81ac59edc17cc8697ff311e8f5ef2d99fcbd9817b34cec66f90b6c3dfd987" + +[[package]] +name = "unicode-bidi" +version = "0.3.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "099b7128301d285f79ddd55b9a83d5e6b9e97c92e0ea0daebee7263e932de992" + +[[package]] +name = "unicode-ident" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "15c61ba63f9235225a22310255a29b806b907c9b8c964bcbd0a2c70f3f2deea7" + +[[package]] +name = "unicode-normalization" +version = "0.1.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "854cbdc4f7bc6ae19c820d44abdc3277ac3e1b2b93db20a636825d9322fb60e6" +dependencies = [ + "tinyvec", +] + +[[package]] +name = "unicode-width" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3ed742d4ea2bd1176e236172c8429aaf54486e7ac098db29ffe6529e0ce50973" + +[[package]] +name = "unicode-xid" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "957e51f3646910546462e67d5f7599b9e4fb8acdd304b087a6494730f9eebf04" + +[[package]] +name = "universal-hash" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f214e8f697e925001e66ec2c6e37a4ef93f0f78c2eed7814394e10c62025b05" +dependencies = [ + "generic-array 0.14.5", + "subtle", +] + +[[package]] +name = "url" +version = "2.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a507c383b2d33b5fc35d1861e77e6b383d158b2da5e14fe51b83dfedf6fd578c" +dependencies = [ + "form_urlencoded", + "idna", + "matches", + "percent-encoding", + "serde", +] + +[[package]] +name = "urlencoding" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68b90931029ab9b034b300b797048cf23723400aa757e8a2bfb9d748102f9821" + +[[package]] +name = "users" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24cc0f6d6f267b73e5a2cadf007ba8f9bc39c6a6f9666f8cf25ea809a153b032" +dependencies = [ + "libc", + "log", +] + +[[package]] +name = "uuid" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc5cf98d8186244414c848017f0e2676b3fcb46807f6668a97dfe67359a3c4b7" + +[[package]] +name = "uuid" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd6469f4314d5f1ffec476e05f17cc9a78bc7a27a6a857842170bdf8d6f98d2f" +dependencies = [ + "getrandom 0.2.7", + "serde", +] + +[[package]] +name = "validator" +version = "0.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f07b0a1390e01c0fc35ebb26b28ced33c9a3808f7f9fbe94d3cc01e233bfeed5" +dependencies = [ + "idna", + "lazy_static", + "phonenumber", + "regex", + "serde", + "serde_derive", + "serde_json", + "url", + "validator_derive", +] + +[[package]] +name = "validator_derive" +version = "0.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea7ed5e8cf2b6bdd64a6c4ce851da25388a89327b17b88424ceced6bd5017923" +dependencies = [ + "if_chain", + "lazy_static", + "proc-macro-error", + "proc-macro2", + "quote", + "regex", + "syn", + "validator_types", +] + +[[package]] +name = "validator_types" +version = "0.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2ddf34293296847abfc1493b15c6e2f5d3cd19f57ad7d22673bf4c6278da329" +dependencies = [ + "proc-macro2", + "syn", +] + +[[package]] +name = "valuable" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" + +[[package]] +name = "value-bag" +version = "1.0.0-alpha.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2209b78d1249f7e6f3293657c9779fe31ced465df091bbd433a1cf88e916ec55" +dependencies = [ + "ctor", + "erased-serde", + "serde", + "serde_fmt", + "sval", + "version_check", +] + +[[package]] +name = "vcpkg" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" + +[[package]] +name = "version_check" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" + +[[package]] +name = "waker-fn" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d5b2c62b4012a3e1eca5a7e077d13b3bf498c4073e33ccd58626607748ceeca" + +[[package]] +name = "walkdir" +version = "2.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "808cf2735cd4b6866113f648b791c6adc5714537bc222d9347bb203386ffda56" +dependencies = [ + "same-file", + "winapi", + "winapi-util", +] + +[[package]] +name = "want" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ce8a968cb1cd110d136ff8b819a556d6fb6d919363c61534f6860c7eb172ba0" +dependencies = [ + "log", + "try-lock", +] + +[[package]] +name = "wasi" +version = "0.9.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519" + +[[package]] +name = "wasi" +version = "0.10.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a143597ca7c7793eff794def352d41792a93c481eb1042423ff7ff72ba2c31f" + +[[package]] +name = "wasi" +version = "0.11.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" + +[[package]] +name = "wasm-bindgen" +version = "0.2.82" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc7652e3f6c4706c8d9cd54832c4a4ccb9b5336e2c3bd154d5cccfbf1c1f5f7d" +dependencies = [ + "cfg-if 1.0.0", + "serde", + "serde_json", + "wasm-bindgen-macro", +] + +[[package]] +name = "wasm-bindgen-backend" +version = "0.2.82" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "662cd44805586bd52971b9586b1df85cdbbd9112e4ef4d8f41559c334dc6ac3f" +dependencies = [ + "bumpalo", + "log", + "once_cell", + "proc-macro2", + "quote", + "syn", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-futures" +version = "0.4.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa76fb221a1f8acddf5b54ace85912606980ad661ac7a503b4570ffd3a624dad" +dependencies = [ + "cfg-if 1.0.0", + "js-sys", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.82" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b260f13d3012071dfb1512849c033b1925038373aea48ced3012c09df952c602" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.82" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5be8e654bdd9b79216c2929ab90721aa82faf65c48cdf08bdc4e7f51357b80da" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "wasm-bindgen-backend", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.82" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6598dd0bd3c7d51095ff6531a5b23e02acdc81804e30d8f07afb77b7215a140a" + +[[package]] +name = "web-sys" +version = "0.3.59" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed055ab27f941423197eb86b2035720b1a3ce40504df082cac2ecc6ed73335a1" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "webauthn-authenticator-rs" +version = "0.4.2-beta.3" +source = "git+https://github.com/kanidm/webauthn-rs.git?rev=7a8e6c6b351ab7544f08cf8ba48424baacee1360#7a8e6c6b351ab7544f08cf8ba48424baacee1360" +dependencies = [ + "authenticator", + "base64urlsafedata 0.1.1 (git+https://github.com/kanidm/webauthn-rs.git?rev=7a8e6c6b351ab7544f08cf8ba48424baacee1360)", + "nom 7.1.1", + "openssl", + "rpassword 5.0.1", + "serde_cbor", + "serde_json", + "tracing", + "url", + "webauthn-rs-proto", +] + +[[package]] +name = "webauthn-rs" +version = "0.4.2-beta.3" +source = "git+https://github.com/kanidm/webauthn-rs.git?rev=7a8e6c6b351ab7544f08cf8ba48424baacee1360#7a8e6c6b351ab7544f08cf8ba48424baacee1360" +dependencies = [ + "base64urlsafedata 0.1.1 (git+https://github.com/kanidm/webauthn-rs.git?rev=7a8e6c6b351ab7544f08cf8ba48424baacee1360)", + "serde", + "tracing", + "url", + "uuid 1.1.2", + "webauthn-rs-core", +] + +[[package]] +name = "webauthn-rs-core" +version = "0.4.2-beta.3" +source = "git+https://github.com/kanidm/webauthn-rs.git?rev=7a8e6c6b351ab7544f08cf8ba48424baacee1360#7a8e6c6b351ab7544f08cf8ba48424baacee1360" +dependencies = [ + "base64 0.13.0", + "base64urlsafedata 0.1.1 (git+https://github.com/kanidm/webauthn-rs.git?rev=7a8e6c6b351ab7544f08cf8ba48424baacee1360)", + "compact_jwt", + "der-parser", + "nom 7.1.1", + "openssl", + "rand 0.8.5", + "serde", + "serde_cbor", + "serde_json", + "thiserror", + "tracing", + "url", + "uuid 1.1.2", + "webauthn-rs-proto", + "x509-parser", +] + +[[package]] +name = "webauthn-rs-proto" +version = "0.4.2-beta.3" +source = "git+https://github.com/kanidm/webauthn-rs.git?rev=7a8e6c6b351ab7544f08cf8ba48424baacee1360#7a8e6c6b351ab7544f08cf8ba48424baacee1360" +dependencies = [ + "base64urlsafedata 0.1.1 (git+https://github.com/kanidm/webauthn-rs.git?rev=7a8e6c6b351ab7544f08cf8ba48424baacee1360)", + "js-sys", + "serde", + "serde_json", + "url", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "wee_alloc" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dbb3b5a6b2bb17cb6ad44a2e68a43e8d2722c997da10e928665c72ec6c0a0b8e" +dependencies = [ + "cfg-if 0.1.10", + "libc", + "memory_units", + "winapi", +] + +[[package]] +name = "wepoll-ffi" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d743fdedc5c64377b5fc2bc036b01c7fd642205a0d96356034ae3404d49eb7fb" +dependencies = [ + "cc", +] + +[[package]] +name = "whoami" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "524b58fa5a20a2fb3014dd6358b70e6579692a56ef6fce928834e488f42f65e8" +dependencies = [ + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "winapi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" +dependencies = [ + "winapi-i686-pc-windows-gnu", + "winapi-x86_64-pc-windows-gnu", +] + +[[package]] +name = "winapi-i686-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" + +[[package]] +name = "winapi-util" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178" +dependencies = [ + "winapi", +] + +[[package]] +name = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" + +[[package]] +name = "windows-sys" +version = "0.36.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea04155a16a59f9eab786fe12a4a450e75cdb175f9e0d80da1e17db09f55b8d2" +dependencies = [ + "windows_aarch64_msvc", + "windows_i686_gnu", + "windows_i686_msvc", + "windows_x86_64_gnu", + "windows_x86_64_msvc", +] + +[[package]] +name = "windows_aarch64_msvc" +version = "0.36.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9bb8c3fd39ade2d67e9874ac4f3db21f0d710bee00fe7cab16949ec184eeaa47" + +[[package]] +name = "windows_i686_gnu" +version = "0.36.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "180e6ccf01daf4c426b846dfc66db1fc518f074baa793aa7d9b9aaeffad6a3b6" + +[[package]] +name = "windows_i686_msvc" +version = "0.36.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2e7917148b2812d1eeafaeb22a97e4813dfa60a3f8f78ebe204bcc88f12f024" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.36.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4dcd171b8776c41b97521e5da127a2d86ad280114807d0b2ab1e462bc764d9e1" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.36.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c811ca4a8c853ef420abd8592ba53ddbbac90410fab6903b3e79972a631f7680" + +[[package]] +name = "winreg" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "80d0f4e272c85def139476380b12f9ac60926689dd2e01d4923222f40580869d" +dependencies = [ + "winapi", +] + +[[package]] +name = "x509-parser" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fb9bace5b5589ffead1afb76e43e34cff39cd0f3ce7e170ae0c29e53b88eb1c" +dependencies = [ + "asn1-rs", + "base64 0.13.0", + "data-encoding", + "der-parser", + "lazy_static", + "nom 7.1.1", + "oid-registry", + "rusticata-macros", + "thiserror", + "time 0.3.11", +] + +[[package]] +name = "yew" +version = "0.19.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a1ccb53e57d3f7d847338cf5758befa811cabe207df07f543c06f502f9998cd" +dependencies = [ + "console_error_panic_hook", + "gloo 0.4.2", + "gloo-utils", + "indexmap", + "js-sys", + "scoped-tls-hkt", + "slab", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "yew-macro", +] + +[[package]] +name = "yew-agent" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "616700dc3851945658c44ba4477ede6b77c795462fbbb9b0ad9a8b6273a3ca77" +dependencies = [ + "anymap2", + "bincode", + "gloo-console", + "gloo-utils", + "js-sys", + "serde", + "slab", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "yew", +] + +[[package]] +name = "yew-macro" +version = "0.19.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5fab79082b556d768d6e21811869c761893f0450e1d550a67892b9bce303b7bb" +dependencies = [ + "boolinator", + "lazy_static", + "proc-macro-error", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "yew-router" +version = "0.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "155804f6f3aa309f596d5c3fa14486a94e7756f1edd7634569949e401d5099f2" +dependencies = [ + "gloo 0.4.2", + "gloo-utils", + "js-sys", + "route-recognizer 0.3.1", + "serde", + "serde-wasm-bindgen", + "serde_urlencoded", + "thiserror", + "wasm-bindgen", + "web-sys", + "yew", + "yew-router-macro", +] + +[[package]] +name = "yew-router-macro" +version = "0.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "39049d193b52eaad4ffc80916bf08806d142c90b5edcebd527644de438a7e19a" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "zeroize" +version = "1.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c394b5bd0c6f669e7275d9c20aa90ae064cb22e75a1cad54e1b34088034b149f" +dependencies = [ + "zeroize_derive", +] + +[[package]] +name = "zeroize_derive" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f8f187641dad4f680d25c4bfc4225b418165984179f26ca76ec4fb6441d3a17" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "synstructure", +] + +[[package]] +name = "zxcvbn" +version = "2.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "568becce91e872373a4b33f24ddc67e5280ae2536ccb8c9d22a25d398b72c8b0" +dependencies = [ + "derive_builder", + "fancy-regex", + "itertools 0.10.3", + "js-sys", + "lazy_static", + "quick-error", + "regex", + "time 0.3.11", +] diff --git a/Cargo.toml b/Cargo.toml index 9481bf808..7d69b9b24 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -44,3 +44,14 @@ webauthn-authenticator-rs = { git = "https://github.com/kanidm/webauthn-rs.git", # compact_jwt = { path = "../compact_jwt" } # compact_jwt = { git = "https://github.com/kanidm/compact-jwt.git" } + +# enshrinken the WASMs +[profile.release.package.kanidmd_web_ui] +# optimization over all codebase ( better optimization, slower build ) +codegen-units = 1 +# optimization for size ( more aggressive ) +opt-level = 'z' +# optimization for size +# opt-level = 's' +# link time optimization using using whole-program analysis +# lto = true diff --git a/examples/apache_oauth/Dockerfile b/examples/apache_oauth/Dockerfile new file mode 100644 index 000000000..b8e931e3b --- /dev/null +++ b/examples/apache_oauth/Dockerfile @@ -0,0 +1,12 @@ +FROM ubuntu/apache2:latest + +RUN apt-get update +RUN apt-get install -y \ + libapache2-mod-auth-openidc \ + apache2-utils + +RUN a2enmod auth_openidc +RUN a2enmod ssl +RUN rm /etc/apache2/sites-enabled/000-default.conf +COPY index.html /var/www/html/index.html +COPY oauth2.conf /etc/apache2/sites-enabled/oauth2.conf diff --git a/examples/apache_oauth/Makefile b/examples/apache_oauth/Makefile new file mode 100644 index 000000000..c3c479b1e --- /dev/null +++ b/examples/apache_oauth/Makefile @@ -0,0 +1,32 @@ +# set the following environment variables +# OAUTH_HOSTNAME - the hostname you'll be exposing this as +# OAUTH_PORT - the external port this'll be running on (sets it in --publish) +# this is 8553, but ... things get weird if the stack doesn't end up being accessed +# through 443, eg via a tunneled proxy +# KANIDM_HOSTNAME - the hostname of the Kanidm instance +# KANIDM_PORT - if you're running it on a different port +# KANIDM_CLIENT_SECRET - the client secret for the RP in Kanidm's OAuth config +KANIDM_PORT ?= 443 +OAUTH_PORT ?= 8553 + +.DEFAULT: build_and_run + +.PHONY: build_and_run +build_and_run: build run + +.PHONY: build +build: + docker build -t kanidm_oauth_test:latest . + +.PHONY: run +run: + docker rm -f kanidm_oauth_test + docker run --rm -it \ + --env OAUTH_HOSTNAME=$(OAUTH_HOSTNAME) \ + --env KANIDM_HOSTNAME=$(KANIDM_HOSTNAME) \ + --env KANIDM_PORT=$(KANIDM_PORT) \ + --env KANIDM_CLIENT_SECRET=$(KANIDM_CLIENT_SECRET) \ + --volume /tmp/kanidm/:/certs/ \ + --publish "$(OAUTH_PORT):443" \ + --name kanidm_oauth_test \ + kanidm_oauth_test:latest diff --git a/examples/apache_oauth/README.md b/examples/apache_oauth/README.md new file mode 100644 index 000000000..467a952b8 --- /dev/null +++ b/examples/apache_oauth/README.md @@ -0,0 +1,16 @@ +# Apache OAuth config example + +This example is here mainly for devs to come up with super complicated ways to test the changes they're +making which affect OAuth things. + +## Example of how to run it + +```shell +OAUTH_HOSTNAME=test-oauth2.example.com \ +KANIDM_HOSTNAME=test-kanidm.example.com \ +KANIDM_CLIENT_SECRET=1234Hq5d1J5GG9VNae3bRMFGDVFR3bUyyXg3RPRSefJLNhee \ +KANIDM_PORT=443 \ +make +``` + +This'll build and run the docker container. diff --git a/examples/apache_oauth/index.html b/examples/apache_oauth/index.html new file mode 100644 index 000000000..f8b29973e --- /dev/null +++ b/examples/apache_oauth/index.html @@ -0,0 +1,15 @@ + + + + + Kanidm OAuth Test Page + + + +

Hi there!

+

+ Looks like you've successfully authenticated to the page, welcome! +

+ + + \ No newline at end of file diff --git a/examples/apache_oauth/oauth2.conf b/examples/apache_oauth/oauth2.conf new file mode 100644 index 000000000..4b3d15377 --- /dev/null +++ b/examples/apache_oauth/oauth2.conf @@ -0,0 +1,46 @@ +# this is a template file to set up an oauth2 RP for testing +# LoadModule auth_openidc_module /usr/lib/apache2/modules/mod_auth_openidc.so +LogLevel debug +ErrorLog /dev/stderr +TransferLog /dev/stdout + + + ServerName localhost + + SSLEngine on + # use the results from insecure_generate_certs.sh - super handy + SSLCertificateFile /certs/cert.pem + SSLCertificateKeyFile /certs/key.pem + +# since we're using a self-signed cert we have to disable this +OIDCSSLValidateServer Off +OIDCProviderMetadataURL https://${KANIDM_HOSTNAME}:${KANIDM_PORT}/oauth2/openid/test_rp/.well-known/openid-configuration +OIDCClientID test_rp +OIDCClientSecret ${KANIDM_CLIENT_SECRET} +OIDCUserInfoTokenMethod authz_header +OIDCPKCEMethod S256 +OIDCCookieSameSite On + +# Define the OpenID Connect scope that is requested from the OP (eg. "openid email profile"). +# When not defined, the bare minimal scope "openid" is used. +# OIDCScope "openid" +# OIDCRedirectURI is a vanity URL that must point to a path protected by this module but must NOT point to any content +OIDCRedirectURI https://${OAUTH_HOSTNAME}/redirect_url +OIDCCryptoPassphrase Th1sIsA5uperS3cretP4ssphraseD0ntT3llTh3Cr4bz + +OIDCUserInfoRefreshInterval 300 +OIDCJWKSRefreshInterval 300 + +OIDCSessionInactivityTimeout 300 +OIDCSessionType client-cookie:persistent + +# preferred_username +OIDCRemoteUserClaim preferred_username + + + AuthType openid-connect + Require valid-user + + + + diff --git a/kanidm_tools/src/cli/account.rs b/kanidm_tools/src/cli/account.rs index 2d0cfca98..121c6e975 100644 --- a/kanidm_tools/src/cli/account.rs +++ b/kanidm_tools/src/cli/account.rs @@ -1110,23 +1110,23 @@ async fn credential_update_exec( CUAction::PasskeyRemove => { // TODO: make this a scrollable selector with a "cancel" option as the default match client - .idm_account_credential_update_status(&session_token) - .await - { - Ok(status) => { - if status.passkeys.is_empty() { - println!("No passkeys are configured for this user"); - return - } - println!("Current passkeys:"); - for pk in status.passkeys { - println!(" {} ({})", pk.tag, pk.uuid); - } - }, - Err(e) => { - eprintln!("An error occured pulling existing credentials -> {:?}", e); + .idm_account_credential_update_status(&session_token) + .await + { + Ok(status) => { + if status.passkeys.is_empty() { + println!("No passkeys are configured for this user"); + return; + } + println!("Current passkeys:"); + for pk in status.passkeys { + println!(" {} ({})", pk.tag, pk.uuid); } } + Err(e) => { + eprintln!("An error occured pulling existing credentials -> {:?}", e); + } + } let uuid_s: String = Input::new() .with_prompt("\nEnter the UUID of the Passkey to remove (blank to stop) # ") .validate_with(|input: &String| -> Result<(), &str> { diff --git a/kanidmd/Dockerfile b/kanidmd/Dockerfile index 463d4f128..c11fe01cd 100644 --- a/kanidmd/Dockerfile +++ b/kanidmd/Dockerfile @@ -18,7 +18,8 @@ RUN zypper install -y \ sqlite3-devel \ sccache \ gcc \ - rsync + rsync \ + which RUN zypper clean -a COPY . /usr/src/kanidm @@ -45,7 +46,7 @@ RUN if [ "${SCCACHE_REDIS}" != "" ]; \ export RUSTC_WRAPPER=sccache && \ sccache --start-server; \ fi && \ - ./build_wasm_dev.sh + ./build_wasm.sh WORKDIR /usr/src/kanidm/kanidmd/daemon diff --git a/kanidmd/idm/src/idm/oauth2.rs b/kanidmd/idm/src/idm/oauth2.rs index 4ba778291..ae45cf859 100644 --- a/kanidmd/idm/src/idm/oauth2.rs +++ b/kanidmd/idm/src/idm/oauth2.rs @@ -470,7 +470,7 @@ impl Oauth2ResourceServersReadTransaction { if auth_req.redirect_uri.origin() != o2rs.origin { admin_warn!( origin = ?o2rs.origin, - "Invalid oauth2 redirect_uri (must be related to origin of)" + "Invalid oauth2 redirect_uri (must be related to origin of) - got {:?}", auth_req.redirect_uri.origin() ); return Err(Oauth2Error::InvalidOrigin); } diff --git a/kanidmd/idm/src/idm/server.rs b/kanidmd/idm/src/idm/server.rs index 4d0571fb0..c14cc8a6f 100644 --- a/kanidmd/idm/src/idm/server.rs +++ b/kanidmd/idm/src/idm/server.rs @@ -1897,7 +1897,7 @@ impl<'a> IdmServerProxyWriteTransaction<'a> { .ok_or(OperationError::InvalidRequestState) .and_then(|session| session.totp_accept_sha1(&origin, &aste.target)) .map_err(|e| { - admin_error!("Failed to accept sha1 totp {:?}", e); + admin_error!("Failed to accept SHA1 TOTP {:?}", e); e })?; @@ -1913,7 +1913,7 @@ impl<'a> IdmServerProxyWriteTransaction<'a> { })?; // reg the token let modlist = session.account.gen_totp_mod(token).map_err(|e| { - admin_error!("Failed to gen totp mod {:?}", e); + admin_error!("Failed to gen TOTP mod {:?}", e); e })?; // Perform the mod diff --git a/kanidmd/score/src/lib.rs b/kanidmd/score/src/lib.rs index dfef17c11..4335a122a 100644 --- a/kanidmd/score/src/lib.rs +++ b/kanidmd/score/src/lib.rs @@ -441,7 +441,9 @@ pub fn domain_rename_core(config: &Configuration) { } let qs_write = task::block_on(qs.write_async(duration_from_epoch_now())); - let r = qs_write.domain_rename(new_domain_name).and_then(|_| qs_write.commit()); + let r = qs_write + .domain_rename(new_domain_name) + .and_then(|_| qs_write.commit()); match r { Ok(_) => info!("Domain Rename Success!"), diff --git a/kanidmd_web_ui/Cargo.toml b/kanidmd_web_ui/Cargo.toml index cd62a3056..2afac28aa 100644 --- a/kanidmd_web_ui/Cargo.toml +++ b/kanidmd_web_ui/Cargo.toml @@ -13,42 +13,29 @@ documentation = "https://docs.rs/kanidm/latest/kanidm/" homepage = "https://github.com/kanidm/kanidm/" repository = "https://github.com/kanidm/kanidm/" -[profile.release] +# These are ignored because the crate is in a workspace +#[profile.release] # less code to include into binary -panic = 'abort' -# optimization over all codebase ( better optimization, slower build ) -codegen-units = 1 -# optimization for size ( more aggressive ) -opt-level = 'z' -# optimization for size -# opt-level = 's' -# link time optimization using using whole-program analysis -lto = true + [lib] crate-type = ["cdylib", "rlib"] [dependencies] -serde = { version = "^1.0.139", features = ["derive"] } -serde_json = "^1.0.82" - -wasm-bindgen = { version = "^0.2.81", features = ["serde-serialize"] } -wasm-bindgen-futures = { version = "^0.4.30" } -kanidm_proto = { path = "../kanidm_proto", features = ["wasm"] } - -qrcode = { version = "^0.12.0", default-features = false, features = ["svg"] } - -yew-router = "^0.16.0" -yew = "^0.19.3" -yew-agent = "^0.1.0" -gloo = "^0.8.0" -js-sys = "^0.3.58" - -uuid = "^1.1.2" - compact_jwt = { version = "^0.2.3", default-features = false, features = ["unsafe_release_without_verify"] } # compact_jwt = { path = "../../compact_jwt" , default-features = false, features = ["unsafe_release_without_verify"] } - +gloo = "^0.8.0" +js-sys = "^0.3.58" +kanidm_proto = { path = "../kanidm_proto", features = ["wasm"] } +qrcode = { version = "^0.12.0", default-features = false, features = ["svg"] } +serde = { version = "^1.0.139", features = ["derive"] } +serde_json = "^1.0.82" +uuid = "^1.1.2" +wasm-bindgen = { version = "^0.2.81", features = ["serde-serialize"] } +wasm-bindgen-futures = { version = "^0.4.30" } +yew = "^0.19.3" +yew-agent = "^0.1.0" +yew-router = "^0.16.0" wee_alloc = "^0.4.5" [dependencies.web-sys] diff --git a/kanidmd_web_ui/build_wasm.sh b/kanidmd_web_ui/build_wasm.sh deleted file mode 120000 index d2affe884..000000000 --- a/kanidmd_web_ui/build_wasm.sh +++ /dev/null @@ -1 +0,0 @@ -build_wasm_release.sh \ No newline at end of file diff --git a/kanidmd_web_ui/build_wasm.sh b/kanidmd_web_ui/build_wasm.sh new file mode 100755 index 000000000..57a9be473 --- /dev/null +++ b/kanidmd_web_ui/build_wasm.sh @@ -0,0 +1,33 @@ +#!/bin/sh + +# This builds the assets for the Web UI, defaulting to a release build. + +if [ ! -f build_wasm.sh ]; then + echo "Please run from the crate directory. (kanidmd_web_ui)" + exit 1 +fi + +if [ -z "${BUILD_FLAGS}" ]; then + BUILD_FLAGS="--release --no-typescript" +fi + +if [ -z "$(which rsync)" ]; then + echo "Cannot find rsync which is needed to move things around, quitting!" + exit 1 +fi + +if [ "$(find ./pkg/ -name 'kanidmd*' | wc -l)" -gt 0 ]; then + echo "Cleaning up" + rm pkg/kanidmd* +fi + +# we can disable this since we want it to expand +# shellcheck disable=SC2086 +wasm-pack build ${BUILD_FLAGS} --target web || exit 1 + +touch ./pkg/ANYTHING_HERE_WILL_BE_DELETED_ADD_TO_SRC && \ + rsync --delete-after -r --copy-links -v ./src/img/ ./pkg/img/ && \ + rsync --delete-after -r --copy-links -v ./src/external/ ./pkg/external/ && \ + cp ./src/style.css ./pkg/style.css && \ + cp ./src/wasmloader.js ./pkg/wasmloader.js && \ + rm ./pkg/.gitignore diff --git a/kanidmd_web_ui/build_wasm_release.sh b/kanidmd_web_ui/build_wasm_release.sh deleted file mode 100755 index c2f24e400..000000000 --- a/kanidmd_web_ui/build_wasm_release.sh +++ /dev/null @@ -1,14 +0,0 @@ -#!/bin/sh - -if [ -z "${BUILD_FLAGS}" ]; then - BUILD_FLAGS="--release" -fi - -wasm-pack build ${BUILD_FLAGS} --target web || exit 1 - -touch ./pkg/ANYTHING_HERE_WILL_BE_DELETED_ADD_TO_SRC && \ - rsync --delete-after -r --copy-links -v ./src/img/ ./pkg/img/ && \ - rsync --delete-after -r --copy-links -v ./src/external/ ./pkg/external/ && \ - cp ./src/style.css ./pkg/style.css && \ - cp ./src/wasmloader.js ./pkg/wasmloader.js && \ - rm ./pkg/.gitignore diff --git a/kanidmd_web_ui/build_wasm_release.sh b/kanidmd_web_ui/build_wasm_release.sh new file mode 120000 index 000000000..44d02181d --- /dev/null +++ b/kanidmd_web_ui/build_wasm_release.sh @@ -0,0 +1 @@ +build_wasm.sh \ No newline at end of file diff --git a/kanidmd_web_ui/pkg/kanidmd_web_ui.d.ts b/kanidmd_web_ui/pkg/kanidmd_web_ui.d.ts deleted file mode 100644 index 6dd716def..000000000 --- a/kanidmd_web_ui/pkg/kanidmd_web_ui.d.ts +++ /dev/null @@ -1,40 +0,0 @@ -/* tslint:disable */ -/* eslint-disable */ -/** -*/ -export function run_app(): void; - -export type InitInput = RequestInfo | URL | Response | BufferSource | WebAssembly.Module; - -export interface InitOutput { - readonly memory: WebAssembly.Memory; - readonly run_app: (a: number) => void; - readonly __wbindgen_malloc: (a: number) => number; - readonly __wbindgen_realloc: (a: number, b: number, c: number) => number; - readonly __wbindgen_export_2: WebAssembly.Table; - readonly _dyn_core__ops__function__FnMut___A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__hc22c8c82b073edeb: (a: number, b: number, c: number) => void; - readonly _dyn_core__ops__function__Fn__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h88db5b93ed6c64b4: (a: number, b: number, c: number) => void; - readonly _dyn_core__ops__function__FnMut__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__ha0cda2043cde760e: (a: number, b: number, c: number) => void; - readonly __wbindgen_add_to_stack_pointer: (a: number) => number; - readonly __wbindgen_free: (a: number, b: number) => void; - readonly __wbindgen_exn_store: (a: number) => void; -} - -/** -* Synchronously compiles the given `bytes` and instantiates the WebAssembly module. -* -* @param {BufferSource} bytes -* -* @returns {InitOutput} -*/ -export function initSync(bytes: BufferSource): InitOutput; - -/** -* If `module_or_path` is {RequestInfo} or {URL}, makes a request and -* for everything else, calls `WebAssembly.instantiate` directly. -* -* @param {InitInput | Promise} module_or_path -* -* @returns {Promise} -*/ -export default function init (module_or_path?: InitInput | Promise): Promise; diff --git a/kanidmd_web_ui/pkg/kanidmd_web_ui.js b/kanidmd_web_ui/pkg/kanidmd_web_ui.js index 51ca58591..85a511224 100644 --- a/kanidmd_web_ui/pkg/kanidmd_web_ui.js +++ b/kanidmd_web_ui/pkg/kanidmd_web_ui.js @@ -8,20 +8,6 @@ heap.push(undefined, null, true, false); function getObject(idx) { return heap[idx]; } -let heap_next = heap.length; - -function dropObject(idx) { - if (idx < 36) return; - heap[idx] = heap_next; - heap_next = idx; -} - -function takeObject(idx) { - const ret = getObject(idx); - dropObject(idx); - return ret; -} - let WASM_VECTOR_LEN = 0; let cachedUint8Memory0 = new Uint8Array(); @@ -95,14 +81,12 @@ function getInt32Memory0() { return cachedInt32Memory0; } -const cachedTextDecoder = new TextDecoder('utf-8', { ignoreBOM: true, fatal: true }); - -cachedTextDecoder.decode(); - -function getStringFromWasm0(ptr, len) { - return cachedTextDecoder.decode(getUint8Memory0().subarray(ptr, ptr + len)); +function isLikeNone(x) { + return x === undefined || x === null; } +let heap_next = heap.length; + function addHeapObject(obj) { if (heap_next === heap.length) heap.push(heap.length + 1); const idx = heap_next; @@ -112,8 +96,24 @@ function addHeapObject(obj) { return idx; } -function isLikeNone(x) { - return x === undefined || x === null; +const cachedTextDecoder = new TextDecoder('utf-8', { ignoreBOM: true, fatal: true }); + +cachedTextDecoder.decode(); + +function getStringFromWasm0(ptr, len) { + return cachedTextDecoder.decode(getUint8Memory0().subarray(ptr, ptr + len)); +} + +function dropObject(idx) { + if (idx < 36) return; + heap[idx] = heap_next; + heap_next = idx; +} + +function takeObject(idx) { + const ret = getObject(idx); + dropObject(idx); + return ret; } let cachedFloat64Memory0 = new Float64Array(); @@ -224,7 +224,7 @@ function addBorrowedObject(obj) { } function __wbg_adapter_30(arg0, arg1, arg2) { try { - wasm._dyn_core__ops__function__FnMut___A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__hc22c8c82b073edeb(arg0, arg1, addBorrowedObject(arg2)); + wasm._dyn_core__ops__function__FnMut___A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h0f7357f2a774775d(arg0, arg1, addBorrowedObject(arg2)); } finally { heap[stack_pointer++] = undefined; } @@ -252,11 +252,11 @@ function makeClosure(arg0, arg1, dtor, f) { return real; } function __wbg_adapter_33(arg0, arg1, arg2) { - wasm._dyn_core__ops__function__Fn__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h88db5b93ed6c64b4(arg0, arg1, addHeapObject(arg2)); + wasm._dyn_core__ops__function__Fn__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h207c5c753184291b(arg0, arg1, addHeapObject(arg2)); } function __wbg_adapter_36(arg0, arg1, arg2) { - wasm._dyn_core__ops__function__FnMut__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__ha0cda2043cde760e(arg0, arg1, addHeapObject(arg2)); + wasm._dyn_core__ops__function__FnMut__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__hae7ad8c3f91d439a(arg0, arg1, addHeapObject(arg2)); } /** @@ -336,9 +336,6 @@ async function load(module, imports) { function getImports() { const imports = {}; imports.wbg = {}; - imports.wbg.__wbindgen_object_drop_ref = function(arg0) { - takeObject(arg0); - }; imports.wbg.__wbindgen_json_serialize = function(arg0, arg1) { const obj = getObject(arg1); const ret = JSON.stringify(obj === undefined ? null : obj); @@ -347,22 +344,6 @@ function getImports() { getInt32Memory0()[arg0 / 4 + 1] = len0; getInt32Memory0()[arg0 / 4 + 0] = ptr0; }; - imports.wbg.__wbindgen_cb_drop = function(arg0) { - const obj = takeObject(arg0).original; - if (obj.cnt-- == 1) { - obj.a = 0; - return true; - } - const ret = false; - return ret; - }; - imports.wbg.__wbindgen_string_new = function(arg0, arg1) { - const ret = getStringFromWasm0(arg0, arg1); - return addHeapObject(ret); - }; - imports.wbg.__wbg_modalhidebyid_b9efcd5f48cb1c79 = function(arg0, arg1) { - modal_hide_by_id(getStringFromWasm0(arg0, arg1)); - }; imports.wbg.__wbindgen_string_get = function(arg0, arg1) { const obj = getObject(arg1); const ret = typeof(obj) === 'string' ? obj : undefined; @@ -375,6 +356,25 @@ function getImports() { const ret = getObject(arg0); return addHeapObject(ret); }; + imports.wbg.__wbindgen_string_new = function(arg0, arg1) { + const ret = getStringFromWasm0(arg0, arg1); + return addHeapObject(ret); + }; + imports.wbg.__wbindgen_object_drop_ref = function(arg0) { + takeObject(arg0); + }; + imports.wbg.__wbindgen_cb_drop = function(arg0) { + const obj = takeObject(arg0).original; + if (obj.cnt-- == 1) { + obj.a = 0; + return true; + } + const ret = false; + return ret; + }; + imports.wbg.__wbg_modalhidebyid_b9efcd5f48cb1c79 = function(arg0, arg1) { + modal_hide_by_id(getStringFromWasm0(arg0, arg1)); + }; imports.wbg.__wbindgen_boolean_get = function(arg0) { const v = getObject(arg0); const ret = typeof(v) === 'boolean' ? (v ? 1 : 0) : 2; @@ -421,10 +421,10 @@ function getImports() { wasm.__wbindgen_free(arg0, arg1 * 4); console.debug(...v0); }; - imports.wbg.__wbg_log_06b7ffc63a0f8bee = function(arg0, arg1) { + imports.wbg.__wbg_error_1a35d3879f286b52 = function(arg0, arg1) { var v0 = getArrayJsValueFromWasm0(arg0, arg1).slice(); wasm.__wbindgen_free(arg0, arg1 * 4); - console.log(...v0); + console.error(...v0); }; imports.wbg.__wbg_warn_2aa0e7178e1d35f6 = function(arg0, arg1) { var v0 = getArrayJsValueFromWasm0(arg0, arg1).slice(); @@ -631,17 +631,6 @@ function getImports() { const ret = getObject(arg0).getClientExtensionResults(); return addHeapObject(ret); }; - imports.wbg.__wbg_instanceof_HtmlDocument_508cdf1699f6d222 = function(arg0) { - const ret = getObject(arg0) instanceof HTMLDocument; - return ret; - }; - imports.wbg.__wbg_cookie_d9164dc637b7b2fd = function() { return handleError(function (arg0, arg1) { - const ret = getObject(arg1).cookie; - const ptr0 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); - const len0 = WASM_VECTOR_LEN; - getInt32Memory0()[arg0 / 4 + 1] = len0; - getInt32Memory0()[arg0 / 4 + 0] = ptr0; - }, arguments) }; imports.wbg.__wbg_addEventListener_ec92ea1297eefdfc = function() { return handleError(function (arg0, arg1, arg2, arg3, arg4) { getObject(arg0).addEventListener(getStringFromWasm0(arg1, arg2), getObject(arg3), getObject(arg4)); }, arguments) }; @@ -824,16 +813,16 @@ function getImports() { const ret = wasm.memory; return addHeapObject(ret); }; - imports.wbg.__wbindgen_closure_wrapper2488 = function(arg0, arg1, arg2) { - const ret = makeMutClosure(arg0, arg1, 1041, __wbg_adapter_30); + imports.wbg.__wbindgen_closure_wrapper4809 = function(arg0, arg1, arg2) { + const ret = makeMutClosure(arg0, arg1, 1273, __wbg_adapter_30); return addHeapObject(ret); }; - imports.wbg.__wbindgen_closure_wrapper2593 = function(arg0, arg1, arg2) { - const ret = makeClosure(arg0, arg1, 1074, __wbg_adapter_33); + imports.wbg.__wbindgen_closure_wrapper4914 = function(arg0, arg1, arg2) { + const ret = makeClosure(arg0, arg1, 1306, __wbg_adapter_33); return addHeapObject(ret); }; - imports.wbg.__wbindgen_closure_wrapper2859 = function(arg0, arg1, arg2) { - const ret = makeMutClosure(arg0, arg1, 1127, __wbg_adapter_36); + imports.wbg.__wbindgen_closure_wrapper5180 = function(arg0, arg1, arg2) { + const ret = makeMutClosure(arg0, arg1, 1359, __wbg_adapter_36); return addHeapObject(ret); }; diff --git a/kanidmd_web_ui/pkg/kanidmd_web_ui_bg.wasm b/kanidmd_web_ui/pkg/kanidmd_web_ui_bg.wasm index a2b50af1f..e965567df 100644 Binary files a/kanidmd_web_ui/pkg/kanidmd_web_ui_bg.wasm and b/kanidmd_web_ui/pkg/kanidmd_web_ui_bg.wasm differ diff --git a/kanidmd_web_ui/pkg/kanidmd_web_ui_bg.wasm.d.ts b/kanidmd_web_ui/pkg/kanidmd_web_ui_bg.wasm.d.ts deleted file mode 100644 index 5f94fa579..000000000 --- a/kanidmd_web_ui/pkg/kanidmd_web_ui_bg.wasm.d.ts +++ /dev/null @@ -1,13 +0,0 @@ -/* tslint:disable */ -/* eslint-disable */ -export const memory: WebAssembly.Memory; -export function run_app(a: number): void; -export function __wbindgen_malloc(a: number): number; -export function __wbindgen_realloc(a: number, b: number, c: number): number; -export const __wbindgen_export_2: WebAssembly.Table; -export function _dyn_core__ops__function__FnMut___A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__hc22c8c82b073edeb(a: number, b: number, c: number): void; -export function _dyn_core__ops__function__Fn__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h88db5b93ed6c64b4(a: number, b: number, c: number): void; -export function _dyn_core__ops__function__FnMut__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__ha0cda2043cde760e(a: number, b: number, c: number): void; -export function __wbindgen_add_to_stack_pointer(a: number): number; -export function __wbindgen_free(a: number, b: number): void; -export function __wbindgen_exn_store(a: number): void; diff --git a/kanidmd_web_ui/pkg/package.json b/kanidmd_web_ui/pkg/package.json index 013da19cf..a5f8ffa22 100644 --- a/kanidmd_web_ui/pkg/package.json +++ b/kanidmd_web_ui/pkg/package.json @@ -14,11 +14,9 @@ "files": [ "kanidmd_web_ui_bg.wasm", "kanidmd_web_ui.js", - "kanidmd_web_ui.d.ts", "LICENSE.md" ], "module": "kanidmd_web_ui.js", "homepage": "https://github.com/kanidm/kanidm/", - "types": "kanidmd_web_ui.d.ts", "sideEffects": false } \ No newline at end of file diff --git a/kanidmd_web_ui/pkg/wasmloader.js b/kanidmd_web_ui/pkg/wasmloader.js index 45b57524e..38452d814 100644 --- a/kanidmd_web_ui/pkg/wasmloader.js +++ b/kanidmd_web_ui/pkg/wasmloader.js @@ -6,10 +6,9 @@ async function main() { } main() -// this is used in +// this is used in modals export function modal_hide_by_id(m) { var elem = document.getElementById(m); var modal = bootstrap.Modal.getInstance(elem); modal.hide(); }; - diff --git a/kanidmd_web_ui/src/credential/delete.rs b/kanidmd_web_ui/src/credential/delete.rs index 18d8d4b97..c1a5694af 100644 --- a/kanidmd_web_ui/src/credential/delete.rs +++ b/kanidmd_web_ui/src/credential/delete.rs @@ -4,6 +4,7 @@ use crate::utils; use super::eventbus::{EventBus, EventBusMsg}; use super::reset::ModalProps; +#[cfg(debug)] use gloo::console; use yew::prelude::*; use yew_agent::Dispatched; @@ -90,18 +91,21 @@ impl Component for DeleteApp { type Properties = ModalProps; fn create(_ctx: &Context) -> Self { - console::log!("delete modal create"); + #[cfg(debug)] + console::debug!("delete modal create"); DeleteApp { state: State::Init } } fn changed(&mut self, _ctx: &Context) -> bool { - console::log!("delete modal::change"); + #[cfg(debug)] + console::debug!("delete modal::change"); false } fn update(&mut self, ctx: &Context, msg: Self::Message) -> bool { - console::log!("delete modal::update"); + #[cfg(debug)] + console::debug!("delete modal::update"); let token_c = ctx.props().token.clone(); match msg { Msg::Cancel => { @@ -130,15 +134,18 @@ impl Component for DeleteApp { } fn rendered(&mut self, _ctx: &Context, _first_render: bool) { - console::log!("delete modal::rendered"); + #[cfg(debug)] + console::debug!("delete modal::rendered"); } fn destroy(&mut self, _ctx: &Context) { - console::log!("delete modal::destroy"); + #[cfg(debug)] + console::debug!("delete modal::destroy"); } fn view(&self, ctx: &Context) -> Html { - console::log!("delete modal::view"); + #[cfg(debug)] + console::debug!("delete modal::view"); let submit_enabled = matches!(&self.state, State::Init); @@ -160,6 +167,7 @@ impl Component for DeleteApp { - } } @@ -126,7 +126,7 @@ impl Component for PasskeyRemoveModalApp { type Properties = PasskeyRemoveModalProps; fn create(ctx: &Context) -> Self { - console::log!("passkey remove modal create"); + console::debug!("passkey remove modal create"); let tag = ctx.props().tag.clone(); let uuid = ctx.props().uuid.clone(); @@ -141,12 +141,12 @@ impl Component for PasskeyRemoveModalApp { } fn changed(&mut self, _ctx: &Context) -> bool { - console::log!("passkey remove modal::change"); + console::debug!("passkey remove modal::change"); false } fn update(&mut self, ctx: &Context, msg: Self::Message) -> bool { - console::log!("passkey remove modal::update"); + console::debug!("passkey remove modal::update"); match msg { Msg::Submit => { self.reset_and_hide(); @@ -178,15 +178,15 @@ impl Component for PasskeyRemoveModalApp { } fn rendered(&mut self, _ctx: &Context, _first_render: bool) { - console::log!("passkey remove modal::rendered"); + console::debug!("passkey remove modal::rendered"); } fn destroy(&mut self, _ctx: &Context) { - console::log!("passkey remove modal::destroy"); + console::debug!("passkey remove modal::destroy"); } fn view(&self, ctx: &Context) -> Html { - console::log!("passkey remove modal::view"); + console::debug!("passkey remove modal::view"); let remove_tgt = self.target.clone(); let remove_id = format!("staticPasskeyRemove-{}", self.uuid); diff --git a/kanidmd_web_ui/src/credential/pwmodal.rs b/kanidmd_web_ui/src/credential/pwmodal.rs index 4988dc98d..8fe72311a 100644 --- a/kanidmd_web_ui/src/credential/pwmodal.rs +++ b/kanidmd_web_ui/src/credential/pwmodal.rs @@ -114,7 +114,8 @@ impl Component for PwModalApp { type Properties = ModalProps; fn create(_ctx: &Context) -> Self { - console::log!("pw modal create"); + #[cfg(debug)] + console::debug!("pw modal create"); PwModalApp { state: PwState::Init, @@ -125,12 +126,14 @@ impl Component for PwModalApp { } fn changed(&mut self, _ctx: &Context) -> bool { - console::log!("pw modal::change"); + #[cfg(debug)] + console::debug!("pw modal::change"); false } fn update(&mut self, ctx: &Context, msg: Self::Message) -> bool { - console::log!("pw modal::update"); + #[cfg(debug)] + console::debug!("pw modal::update"); match msg { Msg::PasswordCheck => { let pw = @@ -181,15 +184,18 @@ impl Component for PwModalApp { } fn rendered(&mut self, _ctx: &Context, _first_render: bool) { - console::log!("pw modal::rendered"); + #[cfg(debug)] + console::debug!("pw modal::rendered"); } fn destroy(&mut self, _ctx: &Context) { - console::log!("pw modal::destroy"); + #[cfg(debug)] + console::debug!("pw modal::destroy"); } fn view(&self, ctx: &Context) -> Html { - console::log!("pw modal::view"); + #[cfg(debug)] + console::debug!("pw modal::view"); let (pw_class, pw_feedback) = match &self.state { PwState::Feedback(feedback) => { @@ -250,7 +256,7 @@ impl Component for PwModalApp { + } + } + fn render_auth_allowed(&self, ctx: &Context, idx: usize, allow: &AuthAllowed) -> Html { html! {
  • @@ -184,10 +194,10 @@ impl LoginApp { fn render_mech_select(&self, ctx: &Context, idx: usize, allow: &AuthMech) -> Html { html! { -
  • +
  • @@ -201,22 +211,25 @@ impl LoginApp { html! { <>
    - +
    Init - prevent_default()".to_string()); + console::debug!("login::view_state -> Init - prevent_default()".to_string()); e.prevent_default(); LoginAppMsg::Begin } ) } action="javascript:void(0);" >
    -
    @@ -271,34 +284,29 @@ impl LoginApp { LoginState::Password(enable) => { html! { <> -
    -

    - {" Password: "} -

    -
    Password - prevent_default()".to_string()); + console::debug!("login::view_state -> Password - prevent_default()".to_string()); e.prevent_default(); LoginAppMsg::PasswordSubmit } ) } - action="javascript:void(0);" > -
    +
    -
    -
    - -
    +
    +
    @@ -308,29 +316,30 @@ impl LoginApp { LoginState::BackupCode(enable) => { html! { <> -
    -

    - {" Backup Code: "} -

    -
    +
    BackupCode - prevent_default()".to_string()); + console::debug!("login::view_state -> BackupCode - prevent_default()".to_string()); e.prevent_default(); LoginAppMsg::BackupCodeSubmit } ) } action="javascript:void(0);" > + - +
    @@ -339,25 +348,25 @@ impl LoginApp { LoginState::Totp(state) => { html! { <> -
    -

    - {" TOTP: "} - { if state==&TotpState::Invalid { "can only contain numeric digits" } else { "" } } -

    -
    Totp - prevent_default()".to_string()); + console::debug!("login::view_state -> Totp - prevent_default()".to_string()); e.prevent_default(); LoginAppMsg::TotpSubmit } ) } action="javascript:void(0);" > + +

    - {" Passkey "} + {"Prompting for Passkey authentication..."}

    } @@ -455,7 +464,8 @@ impl LoginApp { LoginState::Authenticated => { let loc = models::pop_return_location(); // redirect - console::log!(format!("authenticated, try going to -> {:?}", loc)); + #[cfg(debug)] + console::debug!(format!("authenticated, try going to -> {:?}", loc)); loc.goto(&ctx.link().history().expect_throw("failed to read history")); html! {
    @@ -473,9 +483,7 @@ impl LoginApp {

    { "Authentication Denied" }

    { msg.as_str() }

    -
    - -
    + { self.button_start_again(ctx) }
    } @@ -487,23 +495,16 @@ impl LoginApp { -
    - -
    + { self.button_start_again(ctx) }
    } } LoginState::Error { emsg, kopid } => { html! { -
    -

    - { "An error has occured 😔 " } -

    + <> + + + { self.button_start_again(ctx) } + } } } @@ -528,22 +533,27 @@ impl Component for LoginApp { type Properties = (); fn create(_ctx: &Context) -> Self { - console::log!("create".to_string()); + #[cfg(debug)] + console::debug!("create".to_string()); // Assume we are here for a good reason. models::clear_bearer_token(); // Do we have a login hint? let inputvalue = models::pop_login_hint().unwrap_or_else(|| "".to_string()); - // Clean any cookies. - let document = utils::document(); - let html_document = document - .dyn_into::() - .expect_throw("failed to dyn cast to htmldocument"); - let cookie = html_document - .cookie() - .expect_throw("failed to access page cookies"); - console::log!("cookies".to_string()); - console::log!(cookie); + #[cfg(debug)] + { + let document = utils::document(); + let html_document = document + .dyn_into::() + .expect_throw("failed to dyn cast to htmldocument"); + let cookie = html_document + .cookie() + .expect_throw("failed to access page cookies"); + console::debug!("cookies".to_string()); + console::debug!(cookie); + } + // Clean any cookies. + // TODO: actually check that it's cleaning the cookies. let state = LoginState::Init(true); @@ -574,7 +584,8 @@ impl Component for LoginApp { true } LoginAppMsg::Begin => { - console::log!(format!("begin -> {:?}", self.inputvalue)); + #[cfg(debug)] + console::debug!(format!("begin -> {:?}", self.inputvalue)); // Disable the button? let username = self.inputvalue.clone(); ctx.link().send_future(async { @@ -587,7 +598,8 @@ impl Component for LoginApp { true } LoginAppMsg::PasswordSubmit => { - console::log!("At password step".to_string()); + #[cfg(debug)] + console::debug!("At password step".to_string()); // Disable the button? self.state = LoginState::Password(false); let authreq = AuthRequest { @@ -605,7 +617,8 @@ impl Component for LoginApp { true } LoginAppMsg::BackupCodeSubmit => { - console::log!("backupcode".to_string()); + #[cfg(debug)] + console::debug!("backupcode".to_string()); // Disable the button? self.state = LoginState::BackupCode(false); let authreq = AuthRequest { @@ -623,7 +636,8 @@ impl Component for LoginApp { true } LoginAppMsg::TotpSubmit => { - console::log!("totp".to_string()); + #[cfg(debug)] + console::debug!("totp".to_string()); // Disable the button? match self.inputvalue.parse::() { Ok(totp) => { @@ -650,7 +664,8 @@ impl Component for LoginApp { true } LoginAppMsg::SecurityKeySubmit(resp) => { - console::log!("At securitykey step".to_string()); + #[cfg(debug)] + console::debug!("At securitykey step".to_string()); let authreq = AuthRequest { step: AuthStep::Cred(AuthCredential::SecurityKey(resp)), }; @@ -665,7 +680,8 @@ impl Component for LoginApp { false } LoginAppMsg::PasskeySubmit(resp) => { - console::log!("At passkey step".to_string()); + #[cfg(debug)] + console::debug!("At passkey step".to_string()); let authreq = AuthRequest { step: AuthStep::Cred(AuthCredential::Passkey(resp)), }; @@ -682,7 +698,8 @@ impl Component for LoginApp { LoginAppMsg::Start(session_id, resp) => { // Clear any leftover input self.inputvalue = "".to_string(); - console::log!(format!("start -> {:?} : {:?}", resp, session_id)); + #[cfg(debug)] + console::debug!(format!("start -> {:?} : {:?}", resp, session_id)); match resp.state { AuthState::Choose(mut mechs) => { self.session_id = session_id; @@ -702,18 +719,20 @@ impl Component for LoginApp { // We do NOT need to change state or redraw false } else { - console::log!("multiple mechs exist".to_string()); + #[cfg(debug)] + console::debug!("multiple mechs exist".to_string()); self.state = LoginState::Select(mechs); true } } AuthState::Denied(reason) => { - console::log!(format!("denied -> {:?}", reason)); + #[cfg(debug)] + console::debug!(format!("denied -> {:?}", reason)); self.state = LoginState::Denied(reason); true } _ => { - console::log!("invalid state transition".to_string()); + console::error!("invalid state transition".to_string()); self.state = LoginState::Error { emsg: "Invalid UI State Transition".to_string(), kopid: None, @@ -723,33 +742,32 @@ impl Component for LoginApp { } } LoginAppMsg::Select(idx) => { - console::log!(format!("chose -> {:?}", idx)); + #[cfg(debug)] + console::debug!(format!("chose -> {:?}", idx)); match &self.state { - LoginState::Select(allowed) => { - match allowed.get(idx) { - Some(mech) => { - let authreq = AuthRequest { - step: AuthStep::Begin(mech.clone()), - }; - let session_id = self.session_id.clone(); - ctx.link().send_future(async { - match Self::auth_step(authreq, session_id).await { - Ok(v) => v, - Err(v) => v.into(), - } - }); - } - None => { - console::log!("invalid allowed mech idx".to_string()); - self.state = LoginState::Error { - emsg: "Invalid Continue Index".to_string(), - kopid: None, - }; - } + LoginState::Select(allowed) => match allowed.get(idx) { + Some(mech) => { + let authreq = AuthRequest { + step: AuthStep::Begin(mech.clone()), + }; + let session_id = self.session_id.clone(); + ctx.link().send_future(async { + match Self::auth_step(authreq, session_id).await { + Ok(v) => v, + Err(v) => v.into(), + } + }); } - } + None => { + console::error!("invalid allowed mech idx".to_string()); + self.state = LoginState::Error { + emsg: "Invalid Continue Index".to_string(), + kopid: None, + }; + } + }, _ => { - console::log!("invalid state transition".to_string()); + console::error!("invalid state transition".to_string()); self.state = LoginState::Error { emsg: "Invalid UI State Transition".to_string(), kopid: None, @@ -761,12 +779,13 @@ impl Component for LoginApp { LoginAppMsg::Next(resp) => { // Clear any leftover input self.inputvalue = "".to_string(); - console::log!(format!("next -> {:?}", resp)); + #[cfg(debug)] + console::debug!(format!("next -> {:?}", resp)); // Based on the state we have, we need to chose our steps. match resp.state { AuthState::Choose(_mechs) => { - console::log!("invalid state transition".to_string()); + console::error!("invalid state transition".to_string()); self.state = LoginState::Error { emsg: "Invalid UI State Transition".to_string(), kopid: None, @@ -799,13 +818,14 @@ impl Component for LoginApp { } } else { // Else, present the options in a choice. - console::log!("multiple choices exist".to_string()); + #[cfg(debug)] + console::debug!("multiple choices exist".to_string()); self.state = LoginState::Continue(allowed); } true } AuthState::Denied(reason) => { - console::log!(format!("denied -> {:?}", reason)); + console::error!(format!("denied -> {:?}", reason)); self.state = LoginState::Denied(reason); true } @@ -819,7 +839,8 @@ impl Component for LoginApp { } LoginAppMsg::Continue(idx) => { // Are we in the correct internal state? - console::log!(format!("chose -> {:?}", idx)); + #[cfg(debug)] + console::debug!(format!("chose -> {:?}", idx)); match &self.state { LoginState::Continue(allowed) => { match allowed.get(idx) { @@ -843,7 +864,7 @@ impl Component for LoginApp { self.state = LoginState::Passkey(challenge.clone().into()) } None => { - console::log!("invalid allowed mech idx".to_string()); + console::error!("invalid allowed mech idx".to_string()); self.state = LoginState::Error { emsg: "Invalid Continue Index".to_string(), kopid: None, @@ -852,7 +873,7 @@ impl Component for LoginApp { } } _ => { - console::log!("invalid state transition".to_string()); + console::error!("invalid state transition".to_string()); self.state = LoginState::Error { emsg: "Invalid UI State Transition".to_string(), kopid: None, @@ -864,14 +885,14 @@ impl Component for LoginApp { LoginAppMsg::UnknownUser => { // Clear any leftover input self.inputvalue = "".to_string(); - console::log!("Unknown user".to_string()); + console::warn!("Unknown user".to_string()); self.state = LoginState::UnknownUser; true } LoginAppMsg::Error { emsg, kopid } => { // Clear any leftover input self.inputvalue = "".to_string(); - console::log!(format!("error -> {:?}, {:?}", emsg, kopid)); + console::error!(format!("error -> {:?}, {:?}", emsg, kopid)); self.state = LoginState::Error { emsg, kopid }; true } @@ -879,7 +900,8 @@ impl Component for LoginApp { } fn view(&self, ctx: &Context) -> Html { - console::log!("login::view".to_string()); + #[cfg(debug)] + console::debug!("login::view".to_string()); // How do we add a top level theme? /* let (width, height): (u32, u32) = if let Some(win) = web_sys::window() { @@ -911,22 +933,19 @@ impl Component for LoginApp { { self.view_state(ctx) } - + { crate::utils::do_footer() } - } + } } fn destroy(&mut self, _ctx: &Context) { - console::log!("login::destroy".to_string()); + #[cfg(debug)] + console::debug!("login::destroy".to_string()); remove_body_form_classes!(); } fn rendered(&mut self, _ctx: &Context, _first_render: bool) { - crate::utils::autofocus(); - console::log!("login::rendered".to_string()); + #[cfg(debug)] + console::debug!("login::rendered".to_string()); } } diff --git a/kanidmd_web_ui/src/macros.rs b/kanidmd_web_ui/src/macros.rs index 42cd0f705..3f2d962e2 100644 --- a/kanidmd_web_ui/src/macros.rs +++ b/kanidmd_web_ui/src/macros.rs @@ -6,7 +6,7 @@ macro_rules! add_body_form_classes { () => { for x in $crate::constants::CSS_CLASSES_BODY_FORM { if let Err(e) = $crate::utils::body().class_list().add_1(x) { - console::log!(format!("class_list add error -> {:?}", e)); + console::error!(format!("class_list add error -> {:?}", e)); }; } }; @@ -18,7 +18,7 @@ macro_rules! remove_body_form_classes { () => { for x in $crate::constants::CSS_CLASSES_BODY_FORM { if let Err(e) = $crate::utils::body().class_list().remove_1(x) { - console::log!(format!("class_list removal error -> {:?}", e)); + console::error!(format!("class_list removal error -> {:?}", e)); }; } }; diff --git a/kanidmd_web_ui/src/manager.rs b/kanidmd_web_ui/src/manager.rs index 2bb4c6798..6a9706cb8 100644 --- a/kanidmd_web_ui/src/manager.rs +++ b/kanidmd_web_ui/src/manager.rs @@ -4,6 +4,7 @@ //! not atuhenticated, this will determine that and send you to authentication first, then //! will allow you to proceed with the oauth flow. +#[cfg(debug)] use gloo::console; use wasm_bindgen::UnwrapThrowExt; use yew::functional::*; @@ -49,7 +50,8 @@ fn landing() -> Html { } fn switch(route: &Route) -> Html { - console::log!("manager::switch"); + #[cfg(debug)] + console::debug!("manager::switch"); match route { Route::Landing => html! { }, Route::Login => html! { }, @@ -76,24 +78,28 @@ impl Component for ManagerApp { type Properties = (); fn create(_ctx: &Context) -> Self { - console::log!("manager::create"); + #[cfg(debug)] + console::debug!("manager::create"); ManagerApp {} } fn changed(&mut self, _ctx: &Context) -> bool { - console::log!("manager::change"); + #[cfg(debug)] + console::debug!("manager::change"); false } fn update(&mut self, _ctx: &Context, _msg: Self::Message) -> bool { - console::log!("manager::update"); + #[cfg(debug)] + console::debug!("manager::update"); true } fn rendered(&mut self, _ctx: &Context, _first_render: bool) { - console::log!("manager::rendered"); + #[cfg(debug)] + console::debug!("manager::rendered"); // Can only access the current_route AFTER it renders. - // console::log!(format!("{:?}", yew_router::current_route::()).as_str()) + // console::debug!(format!("{:?}", yew_router::current_route::()).as_str()) } fn view(&self, _ctx: &Context) -> Html { diff --git a/kanidmd_web_ui/src/models/mod.rs b/kanidmd_web_ui/src/models/mod.rs index e851b67ce..466dd4012 100644 --- a/kanidmd_web_ui/src/models/mod.rs +++ b/kanidmd_web_ui/src/models/mod.rs @@ -15,7 +15,8 @@ use kanidm_proto::v1::{CUSessionToken, CUStatus}; pub fn get_bearer_token() -> Option { let prev_session: Result = PersistentStorage::get("kanidm_bearer_token"); - console::log!(format!("kanidm_bearer_token -> {:?}", prev_session).as_str()); + #[cfg(debug)] + console::debug!(format!("kanidm_bearer_token -> {:?}", prev_session).as_str()); prev_session.ok() } @@ -45,34 +46,36 @@ impl Location { } pub fn push_return_location(l: Location) { - TemporaryStorage::set("return_location", l).expect_throw("failed to set header"); + TemporaryStorage::set("return_location", l) + .expect_throw("failed to set return_location in temporary storage"); } pub fn pop_return_location() -> Location { let l: Result = TemporaryStorage::get("return_location"); - console::log!(format!("return_location -> {:?}", l).as_str()); + console::debug!(format!("return_location -> {:?}", l).as_str()); TemporaryStorage::delete("return_location"); l.unwrap_or(Location::Manager(Route::Landing)) } pub fn push_oauth2_authorisation_request(r: AuthorisationRequest) { - TemporaryStorage::set("oauth2_authorisation_request", r).expect_throw("failed to set header"); + TemporaryStorage::set("oauth2_authorisation_request", r) + .expect_throw("failed to set oauth2_authorisation_request in temporary storage"); } pub fn pop_oauth2_authorisation_request() -> Option { let l: Result = TemporaryStorage::get("oauth2_authorisation_request"); - console::log!(format!("oauth2_authorisation_request -> {:?}", l).as_str()); + console::debug!(format!("oauth2_authorisation_request -> {:?}", l).as_str()); TemporaryStorage::delete("oauth2_authorisation_request"); l.ok() } pub fn push_login_hint(r: String) { - TemporaryStorage::set("login_hint", r).expect_throw("failed to set header"); + TemporaryStorage::set("login_hint", r).expect_throw("failed to set login hint"); } pub fn pop_login_hint() -> Option { let l: Result = TemporaryStorage::get("login_hint"); - console::log!(format!("login_hint -> {:?}", l).as_str()); + console::debug!(format!("login_hint::pop_login_hint -> {:?}", l).as_str()); TemporaryStorage::delete("login_hint"); l.ok() } diff --git a/kanidmd_web_ui/src/oauth2.rs b/kanidmd_web_ui/src/oauth2.rs index 6d15d13b3..d32fe17d9 100644 --- a/kanidmd_web_ui/src/oauth2.rs +++ b/kanidmd_web_ui/src/oauth2.rs @@ -33,7 +33,7 @@ enum State { pii_scopes: Vec, consent_token: String, }, - ConsentGranted, + ConsentGranted(String), ErrInvalidRequest, } @@ -43,7 +43,7 @@ pub struct Oauth2App { pub enum Oauth2Msg { LoginProceed, - ConsentGranted, + ConsentGranted(String), TokenValid, Consent { client_name: String, @@ -139,7 +139,7 @@ impl Oauth2App { .into_serde() .map_err(|e| { let e_msg = format!("serde error -> {:?}", e); - console::log!(e_msg.as_str()); + console::error!(e_msg.as_str()); }) .expect_throw("Invalid response type"); match state { @@ -226,7 +226,8 @@ impl Component for Oauth2App { type Properties = (); fn create(ctx: &Context) -> Self { - console::log!("oauth2::create"); + #[cfg(debug)] + console::debug!("oauth2::create"); // Do we have a query here? // Did we get sent a valid Oauth2 request? @@ -239,11 +240,11 @@ impl Component for Oauth2App { .query() .map_err(|e| { let e_msg = format!("lstorage error -> {:?}", e); - console::log!(e_msg.as_str()); + console::error!(e_msg.as_str()); }) .ok() .or_else(|| { - console::log!("pop_oauth2_authorisation_request"); + console::error!("pop_oauth2_authorisation_request"); models::pop_oauth2_authorisation_request() }); @@ -260,7 +261,7 @@ impl Component for Oauth2App { }; let e_msg = format!("{:?}", query); - console::log!(e_msg.as_str()); + console::error!(e_msg.as_str()); // In the query, if this is openid there MAY be a hint // as to the users name. @@ -295,12 +296,14 @@ impl Component for Oauth2App { } fn changed(&mut self, _ctx: &Context) -> bool { - console::log!("oauth2::change"); + #[cfg(debug)] + console::debug!("oauth2::change"); false } fn update(&mut self, ctx: &Context, msg: Self::Message) -> bool { - console::log!("oauth2::update"); + #[cfg(debug)] + console::debug!("oauth2::update"); match msg { Oauth2Msg::LoginProceed => { @@ -329,7 +332,7 @@ impl Component for Oauth2App { State::SubmitAuthReq(token.clone()) } _ => { - console::log!("Invalid state transition"); + console::error!("Invalid state transition"); State::ErrInvalidRequest } }; @@ -350,17 +353,18 @@ impl Component for Oauth2App { consent_token, }, _ => { - console::log!("Invalid state transition"); + console::error!("Invalid state transition"); State::ErrInvalidRequest } }; true } - Oauth2Msg::ConsentGranted => { + Oauth2Msg::ConsentGranted(_) => { self.state = match &self.state { State::Consent { token, consent_token, + client_name, .. } => { let token_c = token.clone(); @@ -371,10 +375,10 @@ impl Component for Oauth2App { Err(v) => v.into(), } }); - State::ConsentGranted + State::ConsentGranted(client_name.to_string()) } _ => { - console::log!("Invalid state transition"); + console::error!("Invalid state transition"); State::ErrInvalidRequest } }; @@ -383,12 +387,13 @@ impl Component for Oauth2App { } Oauth2Msg::Error { emsg, kopid } => { self.state = State::ErrInvalidRequest; - console::log!(format!("{:?}", kopid).as_str()); - console::log!(emsg.as_str()); + console::error!(format!("{:?}", kopid).as_str()); + console::error!(emsg.as_str()); true } Oauth2Msg::Redirect(loc) => { - console::log!(format!("Redirecting to {}", loc).as_str()); + #[cfg(debug)] + console::debug!(format!("Redirecting to {}", loc).as_str()); // Send the location here, and then update will trigger the redir via // https://docs.rs/web-sys/0.3.51/web_sys/struct.Location.html#method.replace // see https://developer.mozilla.org/en-US/docs/Web/API/Location/replace @@ -400,7 +405,7 @@ impl Component for Oauth2App { Ok(_) => false, Err(e) => { // Something went bang, opps. - console::log!(format!("{:?}", e).as_str()); + console::error!(format!("{:?}", e).as_str()); self.state = State::ErrInvalidRequest; true } @@ -410,30 +415,35 @@ impl Component for Oauth2App { } fn rendered(&mut self, _ctx: &Context, _first_render: bool) { - crate::utils::autofocus(); - console::log!("oauth2::rendered"); + #[cfg(debug)] + console::debug!("oauth2::rendered"); } fn view(&self, ctx: &Context) -> Html { - console::log!("oauth2::view"); - match &self.state { + #[cfg(debug)] + console::debug!("oauth2::view"); + + let body_content = match &self.state { State::LoginRequired => { // html! { -
    LoginRequired - prevent_default()"); + console::debug!("oauth2::view -> LoginRequired - prevent_default()"); e.prevent_default(); Oauth2Msg::LoginProceed } ) } action="javascript:void(0);" > -

    {" Sign in to proceed" }

    - +

    + // TODO: include the domain display name here + {"Sign in to proceed" } +

    + -
    } } State::Consent { @@ -448,54 +458,86 @@ impl Component for Oauth2App { let pii_req = if pii_scopes.is_empty() { html! {
    -

    { "This site will not have access to your personal information" }

    -

    { "If this site requests personal information in the future we will check with you" }

    +

    { "This site will not have access to your personal information." }

    +

    { "If this site requests personal information in the future we will check with you." }

    } } else { html! {
    -

    { "This site has requested to see the following personal information" }

    +

    { "This site has requested to see the following personal information." }

      { pii_scopes.iter().map(|s| html! {
    • { s }
    • } ).collect::() }
    -

    { "If this site requests different personal information in the future we will check with you again" }

    +

    { "If this site requests different personal information in the future we will check with you again." }

    } }; // + let app_name = client_name.clone(); html! { -
    Consent - prevent_default()"); + onsubmit={ ctx.link().callback(move |e: FocusEvent| { + console::debug!("oauth2::view -> Consent - prevent_default()"); e.prevent_default(); - Oauth2Msg::ConsentGranted + Oauth2Msg::ConsentGranted(format!("{}", client_name)) } ) } action="javascript:void(0);" > -

    {"Consent to Proceed to " }{ client_name }

    +

    {"Consent to Proceed to " }{ app_name }

    { pii_req } - +
    + +
    -
    } } - State::ConsentGranted | State::SubmitAuthReq(_) | State::TokenCheck(_) => { - html! {

    { " ... " }

    } + State::ConsentGranted(app_name) => { + html! { + + } + } + State::SubmitAuthReq(_) | State::TokenCheck(_) => { + html! { + + } } State::ErrInvalidRequest => { - html! {

    { " ❌ " }

    } + html! { + + } } + }; + html! { + <> +
    +
    + +
    +
    + { body_content } +
    +
    + { crate::utils::do_footer() } + } } fn destroy(&mut self, _ctx: &Context) { - console::log!("oauth2::destroy"); + console::debug!("oauth2::destroy"); remove_body_form_classes!(); } } diff --git a/kanidmd_web_ui/src/utils.rs b/kanidmd_web_ui/src/utils.rs index 52d75f3b1..60200b1be 100644 --- a/kanidmd_web_ui/src/utils.rs +++ b/kanidmd_web_ui/src/utils.rs @@ -3,6 +3,8 @@ use wasm_bindgen::prelude::*; use wasm_bindgen::{JsCast, UnwrapThrowExt}; pub use web_sys::InputEvent; use web_sys::{Document, Event, /*HtmlButtonElement,*/ HtmlElement, HtmlInputElement, Window}; +use yew::html; +use yew::virtual_dom::VNode; pub fn window() -> Window { web_sys::window().expect_throw("Unable to retrieve window") @@ -18,13 +20,16 @@ pub fn body() -> HtmlElement { document().body().expect_throw("Unable to retrieve body") } -pub fn autofocus() { - // Once rendered if an element with id autofocus exists, focus it. +pub fn autofocus(target: &str) { + // If an element with an id attribute matching 'target' exists, focus it. let doc = document(); - if let Some(element) = doc.get_element_by_id("autofocus") { + if let Some(element) = doc.get_element_by_id(target) { if let Ok(htmlelement) = element.dyn_into::() { if htmlelement.focus().is_err() { - console::log!("unable to autofocus."); + console::warn!( + "unable to autofocus element, couldn't find target with id '{}'", + target + ); } } } @@ -66,3 +71,14 @@ pub fn get_value_from_element_id(id: &str) -> Option { extern "C" { pub fn modal_hide_by_id(m: &str); } + +/// Returns the footer node for the UI +pub fn do_footer() -> VNode { + html! { + + } +} diff --git a/kanidmd_web_ui/src/views/apps.rs b/kanidmd_web_ui/src/views/apps.rs index ec341c8f7..b3226798b 100644 --- a/kanidmd_web_ui/src/views/apps.rs +++ b/kanidmd_web_ui/src/views/apps.rs @@ -1,3 +1,4 @@ +#[cfg(debug)] use gloo::console; use yew::prelude::*; @@ -12,17 +13,20 @@ impl Component for AppsApp { type Properties = (); fn create(_ctx: &Context) -> Self { - console::log!("views::apps::create"); + #[cfg(debug)] + console::debug!("views::apps::create"); AppsApp {} } fn changed(&mut self, _ctx: &Context) -> bool { - console::log!("views::apps::changed"); + #[cfg(debug)] + console::debug!("views::apps::changed"); false } fn update(&mut self, _ctx: &Context, _msg: Self::Message) -> bool { - console::log!("views::apps::update"); + #[cfg(debug)] + console::debug!("views::apps::update"); /* match msg { ViewsMsg::Logout => { @@ -33,7 +37,8 @@ impl Component for AppsApp { } fn rendered(&mut self, _ctx: &Context, _first_render: bool) { - console::log!("views::apps::rendered"); + #[cfg(debug)] + console::debug!("views::apps::rendered"); } fn view(&self, _ctx: &Context) -> Html { diff --git a/kanidmd_web_ui/src/views/mod.rs b/kanidmd_web_ui/src/views/mod.rs index fc1d48416..f1e62cb23 100644 --- a/kanidmd_web_ui/src/views/mod.rs +++ b/kanidmd_web_ui/src/views/mod.rs @@ -1,6 +1,7 @@ use crate::error::*; use crate::models; use crate::utils; +#[cfg(debug)] use gloo::console; use yew::prelude::*; @@ -70,7 +71,8 @@ impl From for ViewsMsg { } fn switch(route: &ViewRoute) -> Html { - console::log!("views::switch"); + #[cfg(debug)] + console::debug!("views::switch"); // safety - can't panic because to get to this location we MUST be authenticated! let token = @@ -91,7 +93,8 @@ impl Component for ViewsApp { type Properties = (); fn create(ctx: &Context) -> Self { - console::log!("views::create"); + #[cfg(debug)] + console::debug!("views::create"); // Ensure the token is valid before we proceed. Could be // due to a session expiry or something else, but we want to make @@ -115,12 +118,14 @@ impl Component for ViewsApp { } fn changed(&mut self, _ctx: &Context) -> bool { - console::log!("views::changed"); + #[cfg(debug)] + console::debug!("views::changed"); false } fn update(&mut self, _ctx: &Context, msg: Self::Message) -> bool { - console::log!("views::update"); + #[cfg(debug)] + console::debug!("views::update"); match msg { ViewsMsg::Verified(token) => { self.state = State::Authenticated(token); @@ -139,7 +144,8 @@ impl Component for ViewsApp { } fn rendered(&mut self, _ctx: &Context, _first_render: bool) { - console::log!("views::rendered"); + #[cfg(debug)] + console::debug!("views::rendered"); } fn view(&self, ctx: &Context) -> Html { @@ -177,19 +183,20 @@ impl Component for ViewsApp { State::Error { emsg, kopid } => { html! {
    -
    +

    { emsg.to_string() }

    { if let Some(opid) = kopid.as_ref() { format!("Operation ID: {}", opid) } else { - "Local Error".to_string() + "Error occurred client-side.".to_string() } }

    +
    +
    } } @@ -209,8 +216,6 @@ impl ViewsApp { - -