From f252d91e13a6c358f1495c5965f0028bcbd85c15 Mon Sep 17 00:00:00 2001 From: Firstyear Date: Sun, 20 Feb 2022 12:43:38 +1000 Subject: [PATCH] 20220219 webui updates + source refactor + clippy go clip clip (#642) --- Cargo.lock | 182 +++++++-- Cargo.toml | 3 + Makefile | 9 - RUST_MSRV | 1 - kanidm_client/Cargo.toml | 3 +- kanidm_client/src/lib.rs | 2 + kanidm_client/tests/common.rs | 5 +- kanidm_proto/Cargo.toml | 2 +- kanidm_tools/Cargo.toml | 2 +- kanidm_tools/src/cli/account.rs | 2 +- kanidm_tools/src/cli/lib.rs | 2 + kanidm_tools/src/cli/main.rs | 2 + kanidm_unix_int/Cargo.toml | 7 +- kanidm_unix_int/build.rs | 38 +- kanidm_unix_int/nss_kanidm/Cargo.toml | 2 +- kanidm_unix_int/nss_kanidm/src/lib.rs | 2 + kanidm_unix_int/pam_kanidm/Cargo.toml | 2 +- kanidm_unix_int/pam_kanidm/src/lib.rs | 2 + kanidm_unix_int/pam_tester/Cargo.toml | 2 +- kanidm_unix_int/src/cache_clear.rs | 2 + kanidm_unix_int/src/cache_invalidate.rs | 2 + kanidm_unix_int/src/daemon.rs | 2 + kanidm_unix_int/src/daemon_status.rs | 2 + kanidm_unix_int/src/lib.rs | 2 + kanidm_unix_int/src/ssh_authorizedkeys.rs | 2 + kanidm_unix_int/src/tasks_daemon.rs | 2 + kanidm_unix_int/tests/cache_layer_test.rs | 5 +- kanidmd/Cargo.toml | 16 +- kanidmd/Dockerfile | 2 +- kanidmd/build.rs | 94 +---- kanidmd/daemon/Cargo.toml | 30 ++ kanidmd/daemon/build.rs | 36 ++ kanidmd/{src/server => daemon/src}/main.rs | 8 +- kanidmd/{src/server => daemon/src}/opt.rs | 0 kanidmd/score/Cargo.toml | 39 ++ kanidmd/score/build.rs | 3 + .../{src/lib/core => score/src}/https/mod.rs | 14 +- .../lib/core => score/src}/https/oauth2.rs | 4 +- .../{src/lib/core => score/src}/https/v1.rs | 10 +- kanidmd/{src/lib/core => score/src}/ldaps.rs | 40 +- .../{src/lib/core/mod.rs => score/src/lib.rs} | 41 +- kanidmd/src/lib/be/idl_arc_sqlite.rs | 15 +- kanidmd/src/lib/be/idxkey.rs | 2 +- kanidmd/src/lib/be/mod.rs | 7 +- kanidmd/src/lib/credential/mod.rs | 10 +- kanidmd/src/lib/idm/mod.rs | 2 +- kanidmd/src/lib/idm/oauth2.rs | 5 +- kanidmd/src/lib/idm/server.rs | 2 +- kanidmd/src/lib/ldap.rs | 1 - kanidmd/src/lib/lib.rs | 23 +- kanidmd/src/lib/macros.rs | 45 +-- kanidmd/src/lib/modify.rs | 4 + kanidmd/src/lib/plugins/attrunique.rs | 1 - kanidmd/src/lib/plugins/base.rs | 1 - kanidmd/src/lib/plugins/memberof.rs | 1 - kanidmd/src/lib/plugins/oauth2.rs | 1 - kanidmd/src/lib/plugins/password_import.rs | 1 - kanidmd/src/lib/plugins/refint.rs | 1 - kanidmd/src/lib/schema.rs | 2 +- kanidmd/src/lib/server.rs | 19 +- kanidmd/src/lib/tracing_tree/macros.rs | 34 +- kanidmd/src/lib/tracing_tree/middleware.rs | 2 +- kanidmd_web_ui/Cargo.toml | 2 +- kanidmd_web_ui/pkg/kanidmd_web_ui.js | 378 +++++++++--------- kanidmd_web_ui/pkg/kanidmd_web_ui_bg.wasm | Bin 1039640 -> 1087175 bytes kanidmd_web_ui/src/lib.rs | 12 +- kanidmd_web_ui/src/login.rs | 30 +- kanidmd_web_ui/src/manager.rs | 24 +- kanidmd_web_ui/src/models/mod.rs | 18 +- kanidmd_web_ui/src/oauth2.rs | 20 +- kanidmd_web_ui/src/utils.rs | 8 +- kanidmd_web_ui/src/views/apps.rs | 77 ++++ kanidmd_web_ui/src/views/components.rs | 1 + kanidmd_web_ui/src/views/mod.rs | 93 +++-- kanidmd_web_ui/src/views/security.rs | 46 +++ orca/Cargo.toml | 4 +- orca/build.rs | 3 + platform/opensuse/kanidm-unixd-tasks.service | 1 + platform/opensuse/kanidm-unixd.service | 1 + platform/opensuse/kanidmd.service | 1 + profiles/Cargo.toml | 23 ++ profiles/RUST_MSRV | 1 + profiles/build.rs | 27 ++ profiles/developer.toml | 2 +- profiles/src/lib.rs | 74 ++++ profiles/syntax.rs | 26 -- 86 files changed, 1022 insertions(+), 655 deletions(-) delete mode 100644 RUST_MSRV create mode 100644 kanidmd/daemon/Cargo.toml create mode 100644 kanidmd/daemon/build.rs rename kanidmd/{src/server => daemon/src}/main.rs (99%) rename kanidmd/{src/server => daemon/src}/opt.rs (100%) create mode 100644 kanidmd/score/Cargo.toml create mode 100644 kanidmd/score/build.rs rename kanidmd/{src/lib/core => score/src}/https/mod.rs (98%) rename kanidmd/{src/lib/core => score/src}/https/oauth2.rs (99%) rename kanidmd/{src/lib/core => score/src}/https/v1.rs (99%) rename kanidmd/{src/lib/core => score/src}/ldaps.rs (84%) rename kanidmd/{src/lib/core/mod.rs => score/src/lib.rs} (95%) create mode 100644 kanidmd_web_ui/src/views/apps.rs create mode 100644 kanidmd_web_ui/src/views/components.rs create mode 100644 kanidmd_web_ui/src/views/security.rs create mode 100644 orca/build.rs create mode 100644 profiles/Cargo.toml create mode 100644 profiles/RUST_MSRV create mode 100644 profiles/build.rs create mode 100644 profiles/src/lib.rs delete mode 100644 profiles/syntax.rs diff --git a/Cargo.lock b/Cargo.lock index efd092191..641166a12 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -87,9 +87,9 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.53" +version = "1.0.54" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94a45b455c14666b85fc40a019e8ab9eb75e3a124e05494f5397122bc9eb06e0" +checksum = "7a99269dff3bc004caa411f38845c20303f1e393ca2bd6581576fa3a7f59577d" [[package]] name = "arrayref" @@ -198,9 +198,9 @@ dependencies = [ [[package]] name = "async-lock" -version = "2.4.0" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6a8ea61bf9947a1007c5cada31e647dbc77b103c679858150003ba697ea798b" +checksum = "e97a171d191782fba31bb902b14ad94e24a68145032b7eedf871ab0bc0d077b6" dependencies = [ "event-listener", ] @@ -559,9 +559,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.0.72" +version = "1.0.73" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22a9137b95ea06864e018375b72adfb7db6e6f68cfc8df5a04d00288050485ee" +checksum = "2fff2a6927b3bb87f9595d67196a70493f627687a71d87a0d692242c33f58c11" [[package]] name = "cfg-if" @@ -646,14 +646,14 @@ dependencies = [ [[package]] name = "concread" version = "0.3.0" -source = "git+https://github.com/kanidm/concread.git#4c137983f99e0ffe93d27dca12a2054abc86edaf" +source = "git+https://github.com/kanidm/concread.git#7ab828262e05aada2330ae325d95e75f97b8dc4e" dependencies = [ "ahash", "crossbeam", "crossbeam-epoch", "crossbeam-utils", "lru", - "parking_lot", + "parking_lot 0.11.2", "rand 0.8.5", "smallvec", "tokio", @@ -945,6 +945,20 @@ dependencies = [ "cipher", ] +[[package]] +name = "daemon" +version = "0.1.0" +dependencies = [ + "kanidm", + "profiles", + "score", + "serde", + "structopt", + "tokio", + "toml", + "users", +] + [[package]] name = "darling" version = "0.12.4" @@ -1895,26 +1909,22 @@ dependencies = [ "num_cpus", "num_enum", "openssl", + "profiles", "r2d2", "r2d2_sqlite", "rand 0.8.5", "regex", "rusqlite", - "rustc_version 0.4.0", "saffron", "serde", "serde_cbor", - "serde_derive", "serde_json", "smartstring", "smolset", "sshkeys", - "structopt", "tide", - "tide-openssl", "time 0.2.27", "tokio", - "tokio-openssl", "tokio-util", "toml", "touch", @@ -1942,6 +1952,7 @@ dependencies = [ "kanidm_proto", "oauth2", "reqwest", + "score", "serde", "serde_json", "tokio", @@ -2003,14 +2014,15 @@ dependencies = [ "libc", "libsqlite3-sys", "lru", + "profiles", "r2d2", "r2d2_sqlite", "reqwest", "rpassword", "rusqlite", + "score", "serde", "serde_cbor", - "serde_derive", "structopt", "tokio", "tokio-util", @@ -2089,9 +2101,9 @@ dependencies = [ [[package]] name = "libc" -version = "0.2.117" +version = "0.2.118" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e74d72e0f9b65b5b4ca49a346af3976df0f9c61d550727f349ecd559f251a26c" +checksum = "06e509672465a0504304aa87f9f176f2b2b716ed8fb105ebe5c02dc6dce96a94" [[package]] name = "libnss" @@ -2230,9 +2242,9 @@ checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" [[package]] name = "mio" -version = "0.7.14" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8067b404fe97c70829f082dec8bcf4f71225d7eaea1d8645349cb76fa06205cc" +checksum = "ba272f85fa0b41fc91872be579b3bbe0f56b792aa361a380eb669469f68dafb2" dependencies = [ "libc", "log", @@ -2475,6 +2487,7 @@ dependencies = [ "ldap3_server", "mathru", "openssl", + "profiles", "rand 0.8.5", "serde", "serde_json", @@ -2510,7 +2523,17 @@ checksum = "7d17b78036a60663b797adeaee46f5c9dfebb86948d1255007a1d6be0271ff99" dependencies = [ "instant", "lock_api", - "parking_lot_core", + "parking_lot_core 0.8.5", +] + +[[package]] +name = "parking_lot" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87f5ec2493a61ac0506c0f4199f99070cbe83857b0337006a30f3e6719b8ef58" +dependencies = [ + "lock_api", + "parking_lot_core 0.9.1", ] [[package]] @@ -2527,6 +2550,19 @@ dependencies = [ "winapi", ] +[[package]] +name = "parking_lot_core" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28141e0cc4143da2443301914478dc976a61ffdb3f043058310c70df2fed8954" +dependencies = [ + "cfg-if 1.0.0", + "libc", + "redox_syscall", + "smallvec", + "windows-sys", +] + [[package]] name = "paste" version = "0.1.18" @@ -2682,9 +2718,9 @@ checksum = "eb9f9e6e233e5c4a35559a617bf40a4ec447db2e84c20b55a6f83167b7e57872" [[package]] name = "proc-macro-crate" -version = "1.1.0" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ebace6889caf889b4d3f76becee12e90353f2b8c7d875534a71e5742f8f6f83" +checksum = "9dada8c9981fcf32929c3c0f0cd796a9284aca335565227ed88c83babb1d43dc" dependencies = [ "thiserror", "toml", @@ -2729,6 +2765,16 @@ dependencies = [ "unicode-xid", ] +[[package]] +name = "profiles" +version = "1.1.0" +dependencies = [ + "base64 0.13.0", + "rustc_version 0.4.0", + "serde", + "toml", +] + [[package]] name = "psl-types" version = "2.0.10" @@ -2787,7 +2833,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "545c5bc2b880973c9c10e4067418407a0ccaa3091781d1671d46eb35107cb26f" dependencies = [ "log", - "parking_lot", + "parking_lot 0.11.2", "scheduled-thread-pool", ] @@ -3104,7 +3150,7 @@ version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dc6f74fd1204073fa02d5d5d68bec8021be4c38690b61264b2fdb48083d0e7d7" dependencies = [ - "parking_lot", + "parking_lot 0.11.2", ] [[package]] @@ -3119,6 +3165,30 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" +[[package]] +name = "score" +version = "0.1.0" +dependencies = [ + "async-std", + "async-trait", + "bundy", + "futures-util", + "kanidm", + "kanidm_proto", + "ldap3_server", + "libc", + "openssl", + "profiles", + "serde", + "tide", + "tide-openssl", + "tokio", + "tokio-openssl", + "tokio-util", + "tracing", + "uuid", +] + [[package]] name = "security-framework" version = "2.6.1" @@ -3380,9 +3450,9 @@ dependencies = [ [[package]] name = "sshkeys" -version = "0.3.1" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c69bf9da628c9a435416cc06f64445c8fa467efe52100bec0912c820ac80fc8" +checksum = "c926cb006a77964474a13a86aa0135ea82c9fd43e6793a1151cc54143db6637c" dependencies = [ "base64 0.12.3", "byteorder", @@ -3695,9 +3765,9 @@ checksum = "cda74da7e1a664f795bb1f8a87ec406fb89a02522cf6e50620d016add6dbbf5c" [[package]] name = "tokio" -version = "1.16.1" +version = "1.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c27a64b625de6d309e8c57716ba93021dccf1b3b5c97edd6d3dd2d2135afc0a" +checksum = "2af73ac49756f3f7c01172e34a23e5d0216f6c32333757c2c61feb2bbff5a5ee" dependencies = [ "bytes", "libc", @@ -3705,9 +3775,10 @@ dependencies = [ "mio", "num_cpus", "once_cell", - "parking_lot", + "parking_lot 0.12.0", "pin-project-lite 0.2.8", "signal-hook-registry", + "socket2", "tokio-macros", "winapi", ] @@ -3785,9 +3856,9 @@ checksum = "360dfd1d6d30e05fda32ace2c8c70e9c0a9da713275777f5a4dbb8a1893930c6" [[package]] name = "tracing" -version = "0.1.30" +version = "0.1.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d8d93354fe2a8e50d5953f5ae2e47a3fc2ef03292e7ea46e3cc38f549525fb9" +checksum = "f6c650a8ef0cd2dd93736f033d21cbd1224c5a967aa0c258d00fcf7dafef9b9f" dependencies = [ "cfg-if 1.0.0", "pin-project-lite 0.2.8", @@ -3839,9 +3910,9 @@ dependencies = [ [[package]] name = "tracing-subscriber" -version = "0.3.8" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74786ce43333fcf51efe947aed9718fbe46d5c7328ec3f1029e818083966d9aa" +checksum = "9e0ab7bdc962035a87fba73f3acca9b8a8d0034c2e6f60b84aeaaddddc155dce" dependencies = [ "ansi_term", "lazy_static", @@ -4211,6 +4282,49 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" +[[package]] +name = "windows-sys" +version = "0.32.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3df6e476185f92a12c072be4a189a0210dcdcf512a1891d6dff9edb874deadc6" +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.32.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8e92753b1c443191654ec532f14c199742964a061be25d77d7a96f09db20bf5" + +[[package]] +name = "windows_i686_gnu" +version = "0.32.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a711c68811799e017b6038e0922cb27a5e2f43a2ddb609fe0b6f3eeda9de615" + +[[package]] +name = "windows_i686_msvc" +version = "0.32.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "146c11bb1a02615db74680b32a68e2d61f553cc24c4eb5b4ca10311740e44172" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.32.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c912b12f7454c6620635bbff3450962753834be2a594819bd5e945af18ec64bc" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.32.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "504a2476202769977a040c6364301a3f65d0cc9e3fb08600b2bda150a0488316" + [[package]] name = "winreg" version = "0.7.0" @@ -4295,9 +4409,9 @@ dependencies = [ [[package]] name = "zeroize_derive" -version = "1.3.1" +version = "1.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81e8f13fef10b63c06356d65d416b070798ddabcadc10d3ece0c5be9b3c7eddb" +checksum = "3f8f187641dad4f680d25c4bfc4225b418165984179f26ca76ec4fb6441d3a17" dependencies = [ "proc-macro2", "quote", diff --git a/Cargo.toml b/Cargo.toml index 167676ebd..fa1e7c16a 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -7,6 +7,8 @@ lto = "thin" members = [ "kanidm_proto", "kanidmd", + "kanidmd/score", + "kanidmd/daemon", "kanidmd_web_ui", "kanidm_client", "kanidm_tools", @@ -14,6 +16,7 @@ members = [ "kanidm_unix_int/nss_kanidm", "kanidm_unix_int/pam_kanidm", "orca", + "profiles", ] exclude = [ diff --git a/Makefile b/Makefile index 64db42080..c2b1a10fc 100644 --- a/Makefile +++ b/Makefile @@ -10,15 +10,6 @@ ARGS ?= --build-arg "SCCACHE_REDIS=redis://172.24.20.4:6379" help: @fgrep -h "##" $(MAKEFILE_LIST) | fgrep -v fgrep | sed -e 's/\\$$//' | sed -e 's/##/\n\t/' -buildx/kanidmd/simd: ## build multiarch server images -buildx/kanidmd/simd: - @docker buildx build $(EXT_OPTS) --pull --push --platform "linux/amd64" \ - -f kanidmd/Dockerfile -t $(IMAGE_BASE)/server:x86_64_$(IMAGE_VERSION) \ - --build-arg "KANIDM_BUILD_PROFILE=container_x86_64_v3" \ - --build-arg "KANIDM_FEATURES=simd_support" \ - $(ARGS) . - @docker buildx imagetools $(EXT_OPTS) inspect $(IMAGE_BASE)/server:$(IMAGE_VERSION) - buildx/kanidmd/x86_64_v3: ## build multiarch server images buildx/kanidmd/x86_64_v3: @docker buildx build $(EXT_OPTS) --pull --push --platform "linux/amd64" \ diff --git a/RUST_MSRV b/RUST_MSRV deleted file mode 100644 index a63cb35e6..000000000 --- a/RUST_MSRV +++ /dev/null @@ -1 +0,0 @@ -1.52.0 diff --git a/kanidm_client/Cargo.toml b/kanidm_client/Cargo.toml index ad90e2c0a..be2d93ffd 100644 --- a/kanidm_client/Cargo.toml +++ b/kanidm_client/Cargo.toml @@ -2,7 +2,7 @@ name = "kanidm_client" version = "1.1.0-alpha.7" authors = ["William Brown "] -edition = "2018" +edition = "2021" license = "MPL-2.0" description = "Kanidm Client Library" documentation = "https://docs.rs/kanidm_client/latest/kanidm_client/" @@ -25,6 +25,7 @@ tokio = { version = "1", features = ["rt", "net", "time", "macros", "sync", "sig tracing-subscriber = "0.3" tokio = { version = "1", features = ["rt", "net", "time", "macros", "sync", "signal"] } kanidm = { path = "../kanidmd" } +score = { path = "../kanidmd/score" } futures = "0.3" async-std = { version = "1.6", features = ["tokio1"] } diff --git a/kanidm_client/src/lib.rs b/kanidm_client/src/lib.rs index 9c57a5701..f1b302f51 100644 --- a/kanidm_client/src/lib.rs +++ b/kanidm_client/src/lib.rs @@ -1,5 +1,7 @@ #![deny(warnings)] #![warn(unused_extern_crates)] +#![deny(clippy::todo)] +#![deny(clippy::unimplemented)] #![deny(clippy::unwrap_used)] #![deny(clippy::expect_used)] #![deny(clippy::panic)] diff --git a/kanidm_client/tests/common.rs b/kanidm_client/tests/common.rs index 1ea602264..72c07646b 100644 --- a/kanidm_client/tests/common.rs +++ b/kanidm_client/tests/common.rs @@ -3,10 +3,10 @@ use std::sync::atomic::{AtomicU16, Ordering}; use std::thread; use kanidm::audit::LogLevel; -use kanidm::config::{Configuration, IntegrationTestConfig}; -use kanidm::core::create_server_core; +use kanidm::config::{Configuration, IntegrationTestConfig, ServerRole}; use kanidm::tracing_tree; use kanidm_client::{KanidmClient, KanidmClientBuilder}; +use score::create_server_core; use async_std::task; use tokio::sync::mpsc; @@ -55,6 +55,7 @@ pub fn run_test(test_fn: fn(KanidmClient) -> ()) { config.secure_cookies = false; config.integration_test_config = Some(int_config); config.log_level = Some(LogLevel::Quiet as u32); + config.role = ServerRole::WriteReplicaNoUI; // config.log_level = Some(LogLevel::Verbose as u32); // config.log_level = Some(LogLevel::FullTrace as u32); config.threads = 1; diff --git a/kanidm_proto/Cargo.toml b/kanidm_proto/Cargo.toml index 3330f6a4e..153070be5 100644 --- a/kanidm_proto/Cargo.toml +++ b/kanidm_proto/Cargo.toml @@ -2,7 +2,7 @@ name = "kanidm_proto" version = "1.1.0-alpha.7" authors = ["William Brown "] -edition = "2018" +edition = "2021" license = "MPL-2.0" description = "Kanidm Protocol Bindings for serde" documentation = "https://docs.rs/kanidm_proto/latest/kanidm_proto/" diff --git a/kanidm_tools/Cargo.toml b/kanidm_tools/Cargo.toml index 7234ab217..b4483ec70 100644 --- a/kanidm_tools/Cargo.toml +++ b/kanidm_tools/Cargo.toml @@ -2,7 +2,7 @@ name = "kanidm_tools" version = "1.1.0-alpha.7" authors = ["William Brown "] -edition = "2018" +edition = "2021" default-run = "kanidm" license = "MPL-2.0" description = "Kanidm Client Tools" diff --git a/kanidm_tools/src/cli/account.rs b/kanidm_tools/src/cli/account.rs index 7cba4e51b..4482b5140 100644 --- a/kanidm_tools/src/cli/account.rs +++ b/kanidm_tools/src/cli/account.rs @@ -190,7 +190,7 @@ impl AccountOpt { eprintln!("Alternatively, you can manually enter the following OTP details:"); println!("Account Name: {}", tok.accountname); println!("Issuer: {}", tok.issuer); - println!("Algorithm: {}", tok.algo.to_string()); + println!("Algorithm: {}", tok.algo); println!("Period/Step: {}", tok.step); println!("Secret: {}", tok.get_secret()); diff --git a/kanidm_tools/src/cli/lib.rs b/kanidm_tools/src/cli/lib.rs index da69b6cc2..fe646ded5 100644 --- a/kanidm_tools/src/cli/lib.rs +++ b/kanidm_tools/src/cli/lib.rs @@ -1,5 +1,7 @@ #![deny(warnings)] #![warn(unused_extern_crates)] +#![deny(clippy::todo)] +#![deny(clippy::unimplemented)] #![deny(clippy::unwrap_used)] #![deny(clippy::expect_used)] #![deny(clippy::panic)] diff --git a/kanidm_tools/src/cli/main.rs b/kanidm_tools/src/cli/main.rs index 846da3fa6..5a004a464 100644 --- a/kanidm_tools/src/cli/main.rs +++ b/kanidm_tools/src/cli/main.rs @@ -1,5 +1,7 @@ #![deny(warnings)] #![warn(unused_extern_crates)] +#![deny(clippy::todo)] +#![deny(clippy::unimplemented)] #![deny(clippy::unwrap_used)] #![deny(clippy::expect_used)] #![deny(clippy::panic)] diff --git a/kanidm_unix_int/Cargo.toml b/kanidm_unix_int/Cargo.toml index 21cdbc6bf..0c8fe8015 100644 --- a/kanidm_unix_int/Cargo.toml +++ b/kanidm_unix_int/Cargo.toml @@ -2,7 +2,7 @@ name = "kanidm_unix_int" version = "1.1.0-alpha.7" authors = ["William Brown "] -edition = "2018" +edition = "2021" license = "MPL-2.0" description = "Kanidm Unix Integration Clients" documentation = "https://docs.rs/kanidm/latest/kanidm/" @@ -80,10 +80,9 @@ lru = "0.7" [dev-dependencies] kanidm = { path = "../kanidmd" } +score = { path = "../kanidmd/score" } [build-dependencies] structopt = { version = "0.3", default-features = false } -toml = "0.5" -serde = "1.0" -serde_derive = "1.0" +profiles = { path = "../profiles" } diff --git a/kanidm_unix_int/build.rs b/kanidm_unix_int/build.rs index 05e951d12..054a5a740 100644 --- a/kanidm_unix_int/build.rs +++ b/kanidm_unix_int/build.rs @@ -1,15 +1,9 @@ #![allow(dead_code)] - -#[macro_use] -extern crate serde_derive; - use std::env; use structopt::clap::Shell; use structopt::StructOpt; -use std::fs::File; -use std::io::Read; use std::path::PathBuf; include!("src/opt/ssh_authorizedkeys.rs"); @@ -17,9 +11,9 @@ include!("src/opt/cache_invalidate.rs"); include!("src/opt/cache_clear.rs"); include!("src/opt/unixd_status.rs"); -include!("../profiles/syntax.rs"); - fn main() { + profiles::apply_profile(); + let outdir = match env::var_os("OUT_DIR") { None => return, Some(outdir) => outdir, @@ -62,32 +56,4 @@ fn main() { UnixdStatusOpt::clap().gen_completions("kanidm_unixd_status", Shell::Bash, comp_dir.clone()); UnixdStatusOpt::clap().gen_completions("kanidm_unixd_status", Shell::Zsh, comp_dir); - - println!("cargo:rerun-if-env-changed=KANIDM_BUILD_PROFILE"); - let profile = env::var("KANIDM_BUILD_PROFILE").unwrap_or_else(|_| "developer".to_string()); - - let profile_path: PathBuf = ["../profiles", format!("{}.toml", profile).as_str()] - .iter() - .collect(); - - println!("cargo:rerun-if-changed={}", profile_path.to_str().unwrap()); - - let mut f = File::open(&profile_path) - .unwrap_or_else(|_| panic!("Failed to open build profile {:?}", profile_path)); - - let mut contents = String::new(); - f.read_to_string(&mut contents) - .unwrap_or_else(|_| panic!("Failed to read build profile {:?}", profile_path)); - - let profile_cfg: ProfileConfig = toml::from_str(contents.as_str()) - .unwrap_or_else(|_| panic!("Failed to parse build profile {:?}", profile_path)); - - match profile_cfg.cpu_flags { - CpuOptLevel::none => {} - CpuOptLevel::native => println!("cargo:rustc-env=RUSTFLAGS=-Ctarget-cpu=native"), - CpuOptLevel::x86_64_v1 => println!("cargo:rustc-env=RUSTFLAGS=-Ctarget-feature=+cmov,+cx8,+fxsr,+mmx,+sse,+sse2"), - CpuOptLevel::x86_64_v3 => println!("cargo:rustc-env=RUSTFLAGS=-Ctarget-feature=+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+cx16,+sahf,+popcnt,+sse3,+sse4.1,+sse4.2,+avx,+avx2,+bmi,+bmi2,+f16c,+fma,+lzcnt,+movbe,+xsave"), - } - println!("cargo:rustc-env=KANIDM_PROFILE_NAME={}", profile); - println!("cargo:rustc-env=KANIDM_CPU_FLAGS={}", profile_cfg.cpu_flags); } diff --git a/kanidm_unix_int/nss_kanidm/Cargo.toml b/kanidm_unix_int/nss_kanidm/Cargo.toml index 9ac3d3d2a..d6524af8e 100644 --- a/kanidm_unix_int/nss_kanidm/Cargo.toml +++ b/kanidm_unix_int/nss_kanidm/Cargo.toml @@ -2,7 +2,7 @@ name = "nss_kanidm" version = "1.1.0-alpha.7" authors = ["William Brown "] -edition = "2018" +edition = "2021" [lib] name = "nss_kanidm" diff --git a/kanidm_unix_int/nss_kanidm/src/lib.rs b/kanidm_unix_int/nss_kanidm/src/lib.rs index aeeb68f83..26f747336 100644 --- a/kanidm_unix_int/nss_kanidm/src/lib.rs +++ b/kanidm_unix_int/nss_kanidm/src/lib.rs @@ -1,5 +1,7 @@ #![deny(warnings)] #![warn(unused_extern_crates)] +#![deny(clippy::todo)] +#![deny(clippy::unimplemented)] #![deny(clippy::unwrap_used)] #![deny(clippy::expect_used)] #![deny(clippy::panic)] diff --git a/kanidm_unix_int/pam_kanidm/Cargo.toml b/kanidm_unix_int/pam_kanidm/Cargo.toml index 715b9b08f..b90b6d163 100644 --- a/kanidm_unix_int/pam_kanidm/Cargo.toml +++ b/kanidm_unix_int/pam_kanidm/Cargo.toml @@ -2,7 +2,7 @@ name = "pam_kanidm" version = "1.1.0-alpha.7" authors = ["William Brown "] -edition = "2018" +edition = "2021" [lib] name = "pam_kanidm" diff --git a/kanidm_unix_int/pam_kanidm/src/lib.rs b/kanidm_unix_int/pam_kanidm/src/lib.rs index f386366f4..402475725 100644 --- a/kanidm_unix_int/pam_kanidm/src/lib.rs +++ b/kanidm_unix_int/pam_kanidm/src/lib.rs @@ -1,5 +1,7 @@ #![deny(warnings)] #![warn(unused_extern_crates)] +#![deny(clippy::todo)] +#![deny(clippy::unimplemented)] // In this file, we do want to panic on these faults. // #![deny(clippy::unwrap_used)] // #![deny(clippy::expect_used)] diff --git a/kanidm_unix_int/pam_tester/Cargo.toml b/kanidm_unix_int/pam_tester/Cargo.toml index 46c3620d9..a2fd1ddc0 100644 --- a/kanidm_unix_int/pam_tester/Cargo.toml +++ b/kanidm_unix_int/pam_tester/Cargo.toml @@ -2,7 +2,7 @@ name = "pam_tester" version = "0.1.2" authors = ["William Brown "] -edition = "2018" +edition = "2021" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html diff --git a/kanidm_unix_int/src/cache_clear.rs b/kanidm_unix_int/src/cache_clear.rs index af29d3845..cbb96909e 100644 --- a/kanidm_unix_int/src/cache_clear.rs +++ b/kanidm_unix_int/src/cache_clear.rs @@ -1,5 +1,7 @@ #![deny(warnings)] #![warn(unused_extern_crates)] +#![deny(clippy::todo)] +#![deny(clippy::unimplemented)] #![deny(clippy::unwrap_used)] #![deny(clippy::expect_used)] #![deny(clippy::panic)] diff --git a/kanidm_unix_int/src/cache_invalidate.rs b/kanidm_unix_int/src/cache_invalidate.rs index 343b8d311..b68a7b176 100644 --- a/kanidm_unix_int/src/cache_invalidate.rs +++ b/kanidm_unix_int/src/cache_invalidate.rs @@ -1,5 +1,7 @@ #![deny(warnings)] #![warn(unused_extern_crates)] +#![deny(clippy::todo)] +#![deny(clippy::unimplemented)] #![deny(clippy::unwrap_used)] #![deny(clippy::expect_used)] #![deny(clippy::panic)] diff --git a/kanidm_unix_int/src/daemon.rs b/kanidm_unix_int/src/daemon.rs index 746dbb1b5..8e0bc7230 100644 --- a/kanidm_unix_int/src/daemon.rs +++ b/kanidm_unix_int/src/daemon.rs @@ -1,5 +1,7 @@ #![deny(warnings)] #![warn(unused_extern_crates)] +#![deny(clippy::todo)] +#![deny(clippy::unimplemented)] #![deny(clippy::unwrap_used)] #![deny(clippy::expect_used)] #![deny(clippy::panic)] diff --git a/kanidm_unix_int/src/daemon_status.rs b/kanidm_unix_int/src/daemon_status.rs index a6bf5647f..ed8e82baa 100644 --- a/kanidm_unix_int/src/daemon_status.rs +++ b/kanidm_unix_int/src/daemon_status.rs @@ -1,5 +1,7 @@ #![deny(warnings)] #![warn(unused_extern_crates)] +#![deny(clippy::todo)] +#![deny(clippy::unimplemented)] #![deny(clippy::unwrap_used)] #![deny(clippy::expect_used)] #![deny(clippy::panic)] diff --git a/kanidm_unix_int/src/lib.rs b/kanidm_unix_int/src/lib.rs index 4c4af886a..ae9ff2cf7 100644 --- a/kanidm_unix_int/src/lib.rs +++ b/kanidm_unix_int/src/lib.rs @@ -1,5 +1,7 @@ #![deny(warnings)] #![warn(unused_extern_crates)] +#![deny(clippy::todo)] +#![deny(clippy::unimplemented)] #![deny(clippy::unwrap_used)] #![deny(clippy::expect_used)] #![deny(clippy::panic)] diff --git a/kanidm_unix_int/src/ssh_authorizedkeys.rs b/kanidm_unix_int/src/ssh_authorizedkeys.rs index 72d09ae83..64309bce1 100644 --- a/kanidm_unix_int/src/ssh_authorizedkeys.rs +++ b/kanidm_unix_int/src/ssh_authorizedkeys.rs @@ -1,5 +1,7 @@ #![deny(warnings)] #![warn(unused_extern_crates)] +#![deny(clippy::todo)] +#![deny(clippy::unimplemented)] #![deny(clippy::unwrap_used)] #![deny(clippy::expect_used)] #![deny(clippy::panic)] diff --git a/kanidm_unix_int/src/tasks_daemon.rs b/kanidm_unix_int/src/tasks_daemon.rs index 4855b22da..68a003ce8 100644 --- a/kanidm_unix_int/src/tasks_daemon.rs +++ b/kanidm_unix_int/src/tasks_daemon.rs @@ -1,5 +1,7 @@ #![deny(warnings)] #![warn(unused_extern_crates)] +#![deny(clippy::todo)] +#![deny(clippy::unimplemented)] #![deny(clippy::unwrap_used)] #![deny(clippy::expect_used)] #![deny(clippy::panic)] diff --git a/kanidm_unix_int/tests/cache_layer_test.rs b/kanidm_unix_int/tests/cache_layer_test.rs index 4e9c2e1c4..a1bdb2bcd 100644 --- a/kanidm_unix_int/tests/cache_layer_test.rs +++ b/kanidm_unix_int/tests/cache_layer_test.rs @@ -4,8 +4,8 @@ use std::thread; use std::time::Duration; use kanidm::audit::LogLevel; -use kanidm::config::{Configuration, IntegrationTestConfig}; -use kanidm::core::create_server_core; +use kanidm::config::{Configuration, IntegrationTestConfig, ServerRole}; +use score::create_server_core; use kanidm::tracing_tree; use kanidm_unix_common::cache::{CacheLayer, Id}; @@ -66,6 +66,7 @@ fn run_test(fix_fn: fn(&KanidmClient) -> (), test_fn: fn(CacheLayer, KanidmAsync config.secure_cookies = false; config.integration_test_config = Some(int_config); config.log_level = Some(LogLevel::Quiet as u32); + config.role = ServerRole::WriteReplicaNoUI; // config.log_level = Some(LogLevel::Verbose as u32); config.threads = 1; diff --git a/kanidmd/Cargo.toml b/kanidmd/Cargo.toml index bfd87275d..a70bf4dc2 100644 --- a/kanidmd/Cargo.toml +++ b/kanidmd/Cargo.toml @@ -2,7 +2,7 @@ name = "kanidm" version = "1.1.0-alpha.7" authors = ["William Brown "] -edition = "2018" +edition = "2021" license = "MPL-2.0" description = "Kanidm Server Library and Binary" documentation = "https://docs.rs/kanidm/latest/kanidm/" @@ -13,10 +13,6 @@ repository = "https://github.com/kanidm/kanidm/" name = "kanidm" path = "src/lib/lib.rs" -[[bin]] -name = "kanidmd" -path = "src/server/main.rs" - [dependencies] kanidm_proto = { path = "../kanidm_proto", version = "1.1.0-alpha" } tracing = { version = "0.1", features = ["attributes"] } @@ -28,7 +24,6 @@ either = "1.6" url = { version = "2", features = ["serde"] } tide = "0.16" -tide-openssl = "^0.1.1" async-trait = "0.1" async-h1 = "2.0" fernet = { version = "^0.1.4", features = ["fernet_danger_timestamps"] } @@ -49,7 +44,6 @@ futures = "0.3" futures-util = "0.3" tokio = { version = "1", features = ["full"] } tokio-util = { version = "0.6", features = ["codec"] } -tokio-openssl = "0.6" openssl = "0.10" uuid = { version = "0.8", features = ["serde", "v4" ] } @@ -63,7 +57,6 @@ rusqlite = { version = "0.26", features = ["backup"] } r2d2 = "0.8" r2d2_sqlite = "0.19" -structopt = { version = "0.3", default-features = false } time = { version = "0.2", features = ["serde", "std"] } hashbrown = { version = "0.11", features = ["serde", "inline-more", "ahash"] } @@ -107,12 +100,7 @@ criterion = { version = "0.3", features = ["html_reports"] } webauthn-authenticator-rs = "0.3.0-alpha.12" [build-dependencies] -structopt = { version = "0.3", default-features = false } -serde = "1.0" -serde_derive = "1.0" -toml = "0.5" - -rustc_version = "0.4.0" +profiles = { path = "../profiles" } [[bench]] name = "scaling_10k" diff --git a/kanidmd/Dockerfile b/kanidmd/Dockerfile index 110b34438..88da0154d 100644 --- a/kanidmd/Dockerfile +++ b/kanidmd/Dockerfile @@ -18,7 +18,7 @@ RUN zypper ar obs://devel:languages:rust devel:languages:rust && \ zypper clean -a COPY . /usr/src/kanidm -WORKDIR /usr/src/kanidm/kanidmd +WORKDIR /usr/src/kanidm/kanidmd/daemon ARG SCCACHE_REDIS ARG KANIDM_FEATURES diff --git a/kanidmd/build.rs b/kanidmd/build.rs index 4c34d6dd6..0726b99d5 100644 --- a/kanidmd/build.rs +++ b/kanidmd/build.rs @@ -1,95 +1,5 @@ -#![allow(dead_code)] - -#[macro_use] -extern crate serde_derive; - -use std::env; - -use std::fs::{read_to_string, File}; -use std::io::Read; - -use std::path::PathBuf; -use structopt::clap::Shell; -use structopt::StructOpt; - -use rustc_version::{version, Version}; - -include!("src/lib/audit_loglevel.rs"); -include!("src/server/opt.rs"); - -include!("../profiles/syntax.rs"); +// include!("src/lib/audit_loglevel.rs"); fn main() { - // check to see if the rust version matches the rust minimum version we require for this build - let rust_minver = match read_to_string("../RUST_MSRV") { - Ok(value) => value, - Err(error) => panic!("Couldn't load RUST_MSRV: {:?}", error), - }; - let required_rust_ver = Version::parse(&rust_minver.replace("\n", "")).unwrap(); - println!("Rust version: {}", version().unwrap()); - println!("Required version: {}", required_rust_ver); - if version().unwrap() <= required_rust_ver { - panic!("This crate requires rustc >= {}, quitting.", rust_minver); - } - - let outdir = match env::var_os("OUT_DIR") { - None => return, - Some(outdir) => outdir, - }; - - // Will be the form /Volumes/ramdisk/rs/debug/build/kanidm-8aadc4b0821e9fe7/out - // We want to get to /Volumes/ramdisk/rs/debug/completions - let comp_dir = PathBuf::from(outdir) - .ancestors() - .nth(2) - .map(|p| p.join("completions")) - .expect("Unable to process completions path"); - - if !comp_dir.exists() { - std::fs::create_dir(&comp_dir).expect("Unable to create completions dir"); - } - - KanidmdOpt::clap().gen_completions("kanidmd", Shell::Bash, comp_dir.clone()); - KanidmdOpt::clap().gen_completions("kanidmd", Shell::Zsh, comp_dir); - - // transform any requested paths for our server. We do this by reading - // our profile that we have been provided. - - println!("cargo:rerun-if-env-changed=KANIDM_BUILD_PROFILE"); - let profile = env::var("KANIDM_BUILD_PROFILE").unwrap_or_else(|_| "developer".to_string()); - - let profile_path: PathBuf = ["../profiles", format!("{}.toml", profile).as_str()] - .iter() - .collect(); - - println!("cargo:rerun-if-changed={}", profile_path.to_str().unwrap()); - - let mut f = - File::open(&profile_path).unwrap_or_else(|_| panic!("Failed to open {:?}", profile_path)); - - let mut contents = String::new(); - f.read_to_string(&mut contents) - .unwrap_or_else(|_| panic!("Failed to read {:?}", profile_path)); - - let profile_cfg: ProfileConfig = toml::from_str(contents.as_str()) - .unwrap_or_else(|_| panic!("Failed to parse {:?}", profile_path)); - - /* - * x86-64: CMOV, CMPXCHG8B, FPU, FXSR, MMX, FXSR, SCE, SSE, SSE2 - * x86-64-v2: (close to Nehalem) CMPXCHG16B, LAHF-SAHF, POPCNT, SSE3, SSE4.1, SSE4.2, SSSE3 - * x86-64-v3: (close to Haswell) AVX, AVX2, BMI1, BMI2, F16C, FMA, LZCNT, MOVBE, XSAVE - */ - - match profile_cfg.cpu_flags { - CpuOptLevel::none => {} - CpuOptLevel::native => println!("cargo:rustc-env=RUSTFLAGS=-Ctarget-cpu=native"), - CpuOptLevel::x86_64_v1 => println!("cargo:rustc-env=RUSTFLAGS=-Ctarget-feature=+cmov,+cx8,+fxsr,+mmx,+sse,+sse2"), - CpuOptLevel::x86_64_v3 => println!("cargo:rustc-env=RUSTFLAGS=-Ctarget-feature=+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+cx16,+sahf,+popcnt,+sse3,+sse4.1,+sse4.2,+avx,+avx2,+bmi,+bmi2,+f16c,+fma,+lzcnt,+movbe,+xsave"), - } - println!("cargo:rustc-env=KANIDM_PROFILE_NAME={}", profile); - println!("cargo:rustc-env=KANIDM_CPU_FLAGS={}", profile_cfg.cpu_flags); - println!( - "cargo:rustc-env=KANIDM_WEB_UI_PKG_PATH={}", - profile_cfg.web_ui_pkg_path - ); + profiles::apply_profile(); } diff --git a/kanidmd/daemon/Cargo.toml b/kanidmd/daemon/Cargo.toml new file mode 100644 index 000000000..e8edc28a8 --- /dev/null +++ b/kanidmd/daemon/Cargo.toml @@ -0,0 +1,30 @@ +[package] +name = "daemon" +version = "0.1.0" +authors = ["William Brown "] +edition = "2021" +license = "MPL-2.0" +description = "Kanidm Server Daemon" +documentation = "https://docs.rs/kanidm/latest/kanidm/" +homepage = "https://github.com/kanidm/kanidm/" +repository = "https://github.com/kanidm/kanidm/" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[[bin]] +name = "kanidmd" +path = "src/main.rs" + +[dependencies] +kanidm = { path = "../" } +score = { path = "../score" } +structopt = { version = "0.3", default-features = false } +users = "0.11" +serde = { version = "1", features = ["derive"] } +tokio = { version = "1", features = ["full"] } +toml = "0.5" + +[build-dependencies] +serde = { version = "1", features = ["derive"] } +structopt = { version = "0.3", default-features = false } +profiles = { path = "../../profiles" } diff --git a/kanidmd/daemon/build.rs b/kanidmd/daemon/build.rs new file mode 100644 index 000000000..7662cdb68 --- /dev/null +++ b/kanidmd/daemon/build.rs @@ -0,0 +1,36 @@ +#![allow(dead_code)] + +use std::env; + +use std::path::PathBuf; +use structopt::clap::Shell; +use structopt::StructOpt; + +use serde::{Deserialize, Serialize}; + +include!("../src/lib/audit_loglevel.rs"); +include!("src/opt.rs"); + +fn main() { + profiles::apply_profile(); + + let outdir = match env::var_os("OUT_DIR") { + None => return, + Some(outdir) => outdir, + }; + + // Will be the form /Volumes/ramdisk/rs/debug/build/kanidm-8aadc4b0821e9fe7/out + // We want to get to /Volumes/ramdisk/rs/debug/completions + let comp_dir = PathBuf::from(outdir) + .ancestors() + .nth(2) + .map(|p| p.join("completions")) + .expect("Unable to process completions path"); + + if !comp_dir.exists() { + std::fs::create_dir(&comp_dir).expect("Unable to create completions dir"); + } + + KanidmdOpt::clap().gen_completions("kanidmd", Shell::Bash, comp_dir.clone()); + KanidmdOpt::clap().gen_completions("kanidmd", Shell::Zsh, comp_dir); +} diff --git a/kanidmd/src/server/main.rs b/kanidmd/daemon/src/main.rs similarity index 99% rename from kanidmd/src/server/main.rs rename to kanidmd/daemon/src/main.rs index 3bd8c2d38..eb1dd4135 100644 --- a/kanidmd/src/server/main.rs +++ b/kanidmd/daemon/src/main.rs @@ -1,5 +1,7 @@ #![deny(warnings)] #![warn(unused_extern_crates)] +#![deny(clippy::todo)] +#![deny(clippy::unimplemented)] #![deny(clippy::unwrap_used)] #![deny(clippy::expect_used)] #![deny(clippy::panic)] @@ -27,14 +29,14 @@ use std::str::FromStr; use kanidm::audit::LogLevel; use kanidm::config::{Configuration, OnlineBackup, ServerRole}; -use kanidm::core::{ +use kanidm::tracing_tree; +use kanidm::utils::file_permissions_readonly; +use score::{ backup_server_core, create_server_core, dbscan_get_id2entry_core, dbscan_list_id2entry_core, dbscan_list_index_analysis_core, dbscan_list_index_core, dbscan_list_indexes_core, domain_rename_core, recover_account_core, reindex_server_core, restore_server_core, vacuum_server_core, verify_server_core, }; -use kanidm::tracing_tree; -use kanidm::utils::file_permissions_readonly; use structopt::StructOpt; diff --git a/kanidmd/src/server/opt.rs b/kanidmd/daemon/src/opt.rs similarity index 100% rename from kanidmd/src/server/opt.rs rename to kanidmd/daemon/src/opt.rs diff --git a/kanidmd/score/Cargo.toml b/kanidmd/score/Cargo.toml new file mode 100644 index 000000000..718508fd6 --- /dev/null +++ b/kanidmd/score/Cargo.toml @@ -0,0 +1,39 @@ +[package] +name = "score" +version = "0.1.0" +authors = ["William Brown "] +edition = "2021" +license = "MPL-2.0" +description = "Kanidm Server Library and Binary" +documentation = "https://docs.rs/kanidm/latest/kanidm/" +homepage = "https://github.com/kanidm/kanidm/" +repository = "https://github.com/kanidm/kanidm/" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] +kanidm = { path = "../" } +kanidm_proto = { path = "../../kanidm_proto" } +libc = "0.2" + +uuid = { version = "0.8", features = ["serde", "v4" ] } + +tide = "0.16" +tide-openssl = "^0.1.1" + +futures-util = "0.3" +tokio = { version = "1", features = ["full"] } +tokio-util = { version = "0.6", features = ["codec"] } +tokio-openssl = "0.6" +openssl = "0.10" +ldap3_server = "0.1" + +bundy = "^0.1.1" + +tracing = { version = "0.1", features = ["attributes"] } +serde = { version = "1", features = ["derive"] } +async-trait = "0.1" +async-std = { version = "1.6", features = ["tokio1"] } + +[build-dependencies] +profiles = { path = "../../profiles" } diff --git a/kanidmd/score/build.rs b/kanidmd/score/build.rs new file mode 100644 index 000000000..5a19158c1 --- /dev/null +++ b/kanidmd/score/build.rs @@ -0,0 +1,3 @@ +fn main() { + profiles::apply_profile(); +} diff --git a/kanidmd/src/lib/core/https/mod.rs b/kanidmd/score/src/https/mod.rs similarity index 98% rename from kanidmd/src/lib/core/https/mod.rs rename to kanidmd/score/src/https/mod.rs index 0d94fbf82..82f42f377 100644 --- a/kanidmd/src/lib/core/https/mod.rs +++ b/kanidmd/score/src/https/mod.rs @@ -4,11 +4,11 @@ mod v1; use self::oauth2::*; use self::v1::*; -use crate::actors::v1_read::QueryServerReadV1; -use crate::actors::v1_write::QueryServerWriteV1; -use crate::config::{ServerRole, TlsConfiguration}; -use crate::prelude::*; -use crate::status::StatusActor; +use kanidm::actors::v1_read::QueryServerReadV1; +use kanidm::actors::v1_write::QueryServerWriteV1; +use kanidm::config::{ServerRole, TlsConfiguration}; +use kanidm::prelude::*; +use kanidm::status::StatusActor; use serde::Serialize; use std::path::PathBuf; @@ -17,7 +17,7 @@ use uuid::Uuid; use tide_openssl::TlsListener; -use crate::tracing_tree::TreeMiddleware; +use kanidm::tracing_tree::TreeMiddleware; use tracing::{error, info}; #[derive(Clone)] @@ -92,7 +92,7 @@ impl RequestExtensions for tide::Request { } fn new_eventid(&self) -> (Uuid, String) { - let eventid = Uuid::new_v4(); + let eventid = kanidm::tracing_tree::operation_id().unwrap(); let hv = eventid.to_hyphenated().to_string(); (eventid, hv) } diff --git a/kanidmd/src/lib/core/https/oauth2.rs b/kanidmd/score/src/https/oauth2.rs similarity index 99% rename from kanidmd/src/lib/core/https/oauth2.rs rename to kanidmd/score/src/https/oauth2.rs index c08b6cc58..32e8035ca 100644 --- a/kanidmd/src/lib/core/https/oauth2.rs +++ b/kanidmd/score/src/https/oauth2.rs @@ -1,10 +1,10 @@ use super::v1::{json_rest_event_get, json_rest_event_post}; use super::{to_tide_response, AppState, RequestExtensions}; -use crate::idm::oauth2::{ +use kanidm::idm::oauth2::{ AccessTokenIntrospectRequest, AccessTokenRequest, AuthorisationRequest, AuthorisePermitSuccess, ErrorResponse, Oauth2Error, }; -use crate::prelude::*; +use kanidm::prelude::*; use kanidm_proto::v1::Entry as ProtoEntry; use serde::{Deserialize, Serialize}; diff --git a/kanidmd/src/lib/core/https/v1.rs b/kanidmd/score/src/https/v1.rs similarity index 99% rename from kanidmd/src/lib/core/https/v1.rs rename to kanidmd/score/src/https/v1.rs index 7834ec8c9..a70c6d636 100644 --- a/kanidmd/src/lib/core/https/v1.rs +++ b/kanidmd/score/src/https/v1.rs @@ -1,8 +1,8 @@ -use crate::event::AuthResult; -use crate::filter::{Filter, FilterInvalid}; -use crate::idm::AuthState; -use crate::prelude::*; -use crate::status::StatusRequestEvent; +use kanidm::event::AuthResult; +use kanidm::filter::{Filter, FilterInvalid}; +use kanidm::idm::AuthState; +use kanidm::prelude::*; +use kanidm::status::StatusRequestEvent; use kanidm_proto::v1::Entry as ProtoEntry; use kanidm_proto::v1::{ diff --git a/kanidmd/src/lib/core/ldaps.rs b/kanidmd/score/src/ldaps.rs similarity index 84% rename from kanidmd/src/lib/core/ldaps.rs rename to kanidmd/score/src/ldaps.rs index ee1121a23..127deb929 100644 --- a/kanidmd/src/lib/core/ldaps.rs +++ b/kanidmd/score/src/ldaps.rs @@ -1,20 +1,19 @@ -use crate::actors::v1_read::QueryServerReadV1; -use crate::ldap::{LdapBoundToken, LdapResponseState}; -use crate::prelude::*; -use core::pin::Pin; +use kanidm::actors::v1_read::QueryServerReadV1; +use kanidm::ldap::{LdapBoundToken, LdapResponseState}; +use kanidm::prelude::*; use openssl::ssl::{Ssl, SslAcceptor, SslAcceptorBuilder}; +use std::pin::Pin; use tokio_openssl::SslStream; use futures_util::sink::SinkExt; use futures_util::stream::StreamExt; -use ldap3_server::LdapCodec; +use ldap3_server::{proto::LdapMsg, LdapCodec}; use std::marker::Unpin; use std::net; use std::str::FromStr; use tokio::io::{AsyncRead, AsyncWrite}; use tokio::net::TcpListener; use tokio_util::codec::{FramedRead, FramedWrite}; -use uuid::Uuid; struct LdapSession { uat: Option, @@ -29,6 +28,22 @@ impl LdapSession { } } +#[instrument(name = "ldap-request", skip(client_address, qe_r_ref))] +async fn client_process_msg( + uat: Option, + client_address: net::SocketAddr, + protomsg: LdapMsg, + qe_r_ref: &'static QueryServerReadV1, +) -> Option { + let eventid = kanidm::tracing_tree::operation_id().unwrap(); + security_info!( + client_ip = %client_address.ip(), + client_port = %client_address.port(), + "LDAP client" + ); + qe_r_ref.handle_ldaprequest(eventid, protomsg, uat).await +} + async fn client_process( mut r: FramedRead, mut w: FramedWrite, @@ -40,17 +55,12 @@ async fn client_process( // Now that we have the session we begin an event loop to process input OR we return. while let Some(Ok(protomsg)) = r.next().await { // Start the event - let eventid = Uuid::new_v4(); let uat = session.uat.clone(); - // I'd really have liked to have put this near the [LdapResponseState::Bind] but due to the handing of `audit` it isn't possible due to borrows, etc. - security_info!( - client_ip = %client_address.ip(), - client_port = %client_address.port(), - "LDAP client" - ); - let qs_result = qe_r_ref.handle_ldaprequest(eventid, protomsg, uat).await; + let caddr = client_address.clone(); - match qs_result { + match client_process_msg(uat, caddr, protomsg, qe_r_ref).await { + // I'd really have liked to have put this near the [LdapResponseState::Bind] but due + // to the handing of `audit` it isn't possible due to borrows, etc. Some(LdapResponseState::Unbind) => return, Some(LdapResponseState::Disconnect(rmsg)) => { if w.send(rmsg).await.is_err() { diff --git a/kanidmd/src/lib/core/mod.rs b/kanidmd/score/src/lib.rs similarity index 95% rename from kanidmd/src/lib/core/mod.rs rename to kanidmd/score/src/lib.rs index ec2ab9b3e..3a34b83ad 100644 --- a/kanidmd/src/lib/core/mod.rs +++ b/kanidmd/score/src/lib.rs @@ -8,28 +8,45 @@ //! the entry point for all client traffic which is then directed to the //! various `actors`. +#![deny(warnings)] +#![warn(unused_extern_crates)] +#![deny(clippy::todo)] +#![deny(clippy::unimplemented)] +#![deny(clippy::unwrap_used)] +#![deny(clippy::expect_used)] +#![deny(clippy::panic)] +#![deny(clippy::unreachable)] +#![deny(clippy::await_holding_lock)] +#![deny(clippy::needless_pass_by_value)] +#![deny(clippy::trivially_copy_pass_by_ref)] + +#[macro_use] +extern crate tracing; +#[macro_use] +extern crate kanidm; + mod https; mod ldaps; use libc::umask; // use crossbeam::channel::unbounded; -use crate::prelude::*; +use kanidm::prelude::*; use std::sync::Arc; -use crate::config::Configuration; +use kanidm::config::Configuration; // SearchResult // use self::ctx::ServerCtx; -use crate::actors::v1_read::QueryServerReadV1; -use crate::actors::v1_write::QueryServerWriteV1; -use crate::be::{Backend, BackendConfig, BackendTransaction, FsType}; -use crate::crypto::setup_tls; -use crate::idm::server::{IdmServer, IdmServerDelayed}; -use crate::interval::IntervalActor; -use crate::ldap::LdapServer; -use crate::schema::Schema; -use crate::status::StatusActor; -use crate::utils::{duration_from_epoch_now, touch_file_or_quit}; +use kanidm::actors::v1_read::QueryServerReadV1; +use kanidm::actors::v1_write::QueryServerWriteV1; +use kanidm::be::{Backend, BackendConfig, BackendTransaction, FsType}; +use kanidm::crypto::setup_tls; +use kanidm::idm::server::{IdmServer, IdmServerDelayed}; +use kanidm::interval::IntervalActor; +use kanidm::ldap::LdapServer; +use kanidm::schema::Schema; +use kanidm::status::StatusActor; +use kanidm::utils::{duration_from_epoch_now, touch_file_or_quit}; use kanidm_proto::v1::OperationError; diff --git a/kanidmd/src/lib/be/idl_arc_sqlite.rs b/kanidmd/src/lib/be/idl_arc_sqlite.rs index 0c1115aa4..83ce4ef7e 100644 --- a/kanidmd/src/lib/be/idl_arc_sqlite.rs +++ b/kanidmd/src/lib/be/idl_arc_sqlite.rs @@ -31,8 +31,8 @@ use tracing::trace; const DEFAULT_CACHE_TARGET: usize = 2048; const DEFAULT_IDL_CACHE_RATIO: usize = 32; const DEFAULT_NAME_CACHE_RATIO: usize = 8; -const DEFAULT_CACHE_RMISS: usize = 8; -const DEFAULT_CACHE_WMISS: usize = 8; +const DEFAULT_CACHE_RMISS: usize = 0; +const DEFAULT_CACHE_WMISS: usize = 4; #[derive(Debug, Clone, Ord, PartialOrd, Eq, PartialEq, Hash)] enum NameCacheKey { @@ -219,8 +219,9 @@ macro_rules! name2uuid { let cache_key = NameCacheKey::Name2Uuid($name.to_string()); let cache_r = $self.name_cache.get(&cache_key); if let Some(NameCacheValue::U(uuid)) = cache_r { - trace!("Got cached uuid for name2uuid"); return Ok(Some(uuid.clone())); + } else { + trace!("Cache miss uuid for name2uuid"); } let db_r = $self.db.name2uuid($name)?; @@ -243,8 +244,9 @@ macro_rules! uuid2spn { let cache_key = NameCacheKey::Uuid2Spn(*$uuid); let cache_r = $self.name_cache.get(&cache_key); if let Some(NameCacheValue::S(ref spn)) = cache_r { - trace!("Got cached spn for uuid2spn"); return Ok(Some(spn.as_ref().clone())); + } else { + trace!("Cache miss spn for uuid2spn"); } let db_r = $self.db.uuid2spn($uuid)?; @@ -267,8 +269,9 @@ macro_rules! uuid2rdn { let cache_key = NameCacheKey::Uuid2Rdn(*$uuid); let cache_r = $self.name_cache.get(&cache_key); if let Some(NameCacheValue::R(ref rdn)) = cache_r { - trace!("Got cached rdn for uuid2rdn"); return Ok(Some(rdn.clone())); + } else { + trace!("Cache miss rdn for uuid2rdn"); } let db_r = $self.db.uuid2rdn($uuid)?; @@ -763,7 +766,7 @@ impl<'a> IdlArcSqliteWriteTransaction<'a> { if let Some(lens) = data.get_mut(&kref as &dyn IdxKeyToRef) { lens.push(idl_len) } else { - data.insert(kref.to_key(), vec![idl_len]); + data.insert(kref.as_key(), vec![idl_len]); } } } diff --git a/kanidmd/src/lib/be/idxkey.rs b/kanidmd/src/lib/be/idxkey.rs index e76c5de4e..59b03a8d1 100644 --- a/kanidmd/src/lib/be/idxkey.rs +++ b/kanidmd/src/lib/be/idxkey.rs @@ -34,7 +34,7 @@ impl<'a> IdxKeyRef<'a> { IdxKeyRef { attr, itype } } - pub fn to_key(&self) -> IdxKey { + pub fn as_key(&self) -> IdxKey { IdxKey { attr: self.attr.into(), itype: self.itype.clone(), diff --git a/kanidmd/src/lib/be/mod.rs b/kanidmd/src/lib/be/mod.rs index 96d299c29..780005225 100644 --- a/kanidmd/src/lib/be/mod.rs +++ b/kanidmd/src/lib/be/mod.rs @@ -1575,8 +1575,8 @@ mod tests { }; use super::{DbEntry, IdxKey}; use crate::identity::Limits; + use crate::prelude::*; use crate::value::{IndexType, PartialValue, Value}; - use smartstring::alias::String as AttrString; macro_rules! run_test { ($test_fn:expr) => {{ @@ -2348,10 +2348,9 @@ mod tests { } // Test that a fully indexed search works - let f_eq = - unsafe { filter_resolved!(f_eq("name", PartialValue::new_utf8s("william"))) }; + let feq = unsafe { filter_resolved!(f_eq("name", PartialValue::new_utf8s("william"))) }; - let (r, _plan) = be.filter2idl(f_eq.to_inner(), 0).unwrap(); + let (r, _plan) = be.filter2idl(feq.to_inner(), 0).unwrap(); match r { IdList::Indexed(idl) => { assert!(idl == IDLBitRange::from_iter(vec![1])); diff --git a/kanidmd/src/lib/credential/mod.rs b/kanidmd/src/lib/credential/mod.rs index 020190462..d07606407 100644 --- a/kanidmd/src/lib/credential/mod.rs +++ b/kanidmd/src/lib/credential/mod.rs @@ -289,12 +289,12 @@ pub enum CredentialType { // PasswordWebauthnVerified(Password, Map), } -impl Into for &Credential { - fn into(self) -> CredentialDetail { +impl From<&Credential> for CredentialDetail { + fn from(value: &Credential) -> Self { CredentialDetail { - uuid: self.uuid, - claims: self.claims.clone(), - type_: match &self.type_ { + uuid: value.uuid, + claims: value.claims.clone(), + type_: match &value.type_ { CredentialType::Password(_) => CredentialDetailType::Password, CredentialType::GeneratedPassword(_) => CredentialDetailType::GeneratedPassword, CredentialType::Webauthn(wan) => { diff --git a/kanidmd/src/lib/idm/mod.rs b/kanidmd/src/lib/idm/mod.rs index a5ec365a5..955d958b6 100644 --- a/kanidmd/src/lib/idm/mod.rs +++ b/kanidmd/src/lib/idm/mod.rs @@ -9,7 +9,7 @@ pub(crate) mod delayed; pub(crate) mod event; pub(crate) mod group; pub(crate) mod mfareg; -pub(crate) mod oauth2; +pub mod oauth2; pub(crate) mod radius; pub mod server; pub(crate) mod unix; diff --git a/kanidmd/src/lib/idm/oauth2.rs b/kanidmd/src/lib/idm/oauth2.rs index c17583a68..ef364d11a 100644 --- a/kanidmd/src/lib/idm/oauth2.rs +++ b/kanidmd/src/lib/idm/oauth2.rs @@ -827,7 +827,7 @@ impl Oauth2ResourceServersReadTransaction { let (email, email_verified) = if scope_set.contains("email") { if let Some(mp) = code_xchg.uat.mail_primary { - (Some(mp.to_string()), Some(true)) + (Some(mp), Some(true)) } else { (None, None) } @@ -1057,7 +1057,7 @@ impl Oauth2ResourceServersReadTransaction { let (email, email_verified) = if at.scopes.contains(&"email".to_string()) { if let Some(mp) = account.mail_primary { - (Some(mp.to_string()), Some(true)) + (Some(mp), Some(true)) } else { (None, None) } @@ -1238,7 +1238,6 @@ mod tests { use crate::prelude::*; use crate::event::ModifyEvent; - use crate::modify::{Modify, ModifyList}; use kanidm_proto::oauth2::*; use kanidm_proto::v1::{AuthType, UserAuthToken}; diff --git a/kanidmd/src/lib/idm/server.rs b/kanidmd/src/lib/idm/server.rs index b58606f96..722bce8b4 100644 --- a/kanidmd/src/lib/idm/server.rs +++ b/kanidmd/src/lib/idm/server.rs @@ -334,7 +334,7 @@ impl IdmServerDelayed { } } - pub(crate) async fn process_all(&mut self, server: &'static QueryServerWriteV1) { + pub async fn process_all(&mut self, server: &'static QueryServerWriteV1) { loop { match self.async_rx.recv().await { // process it. diff --git a/kanidmd/src/lib/ldap.rs b/kanidmd/src/lib/ldap.rs index 1d7106d6a..f4c3cc0fe 100644 --- a/kanidmd/src/lib/ldap.rs +++ b/kanidmd/src/lib/ldap.rs @@ -529,7 +529,6 @@ mod tests { use crate::event::{CreateEvent, ModifyEvent}; use crate::idm::event::UnixPasswordChangeEvent; use crate::ldap::LdapServer; - use crate::modify::{Modify, ModifyList}; use async_std::task; use hashbrown::HashSet; use ldap3_server::proto::{LdapFilter, LdapOp, LdapSearchScope}; diff --git a/kanidmd/src/lib/lib.rs b/kanidmd/src/lib/lib.rs index 87c78e29a..6e1351c46 100644 --- a/kanidmd/src/lib/lib.rs +++ b/kanidmd/src/lib/lib.rs @@ -29,7 +29,7 @@ extern crate lazy_static; #[macro_use] pub mod macros; -mod crypto; +pub mod crypto; pub mod utils; #[macro_use] pub mod audit; @@ -40,23 +40,22 @@ pub mod entry; pub mod event; pub mod filter; pub mod identity; -mod interval; -pub(crate) mod ldap; +pub mod interval; +pub mod ldap; mod modify; pub(crate) mod value; pub(crate) mod valueset; #[macro_use] mod plugins; mod access; -mod actors; +pub mod actors; pub mod idm; mod repl; -mod schema; +pub mod schema; pub mod server; -mod status; +pub mod status; pub mod config; -pub mod core; /// A prelude of imports that should be imported by all other Kanidm modules to /// help make imports cleaner. @@ -67,8 +66,16 @@ pub mod prelude { pub use url::Url; pub use uuid::Uuid; + pub use crate::tagged_event; + pub use crate::tracing_tree::EventTag; + pub use crate::constants::*; - pub use crate::filter::{Filter, FilterInvalid}; + pub use crate::filter::{ + f_and, f_andnot, f_eq, f_id, f_inc, f_lt, f_or, f_pres, f_self, f_spn_name, f_sub, + }; + pub use crate::filter::{Filter, FilterInvalid, FC}; + pub use crate::modify::{m_pres, m_purge, m_remove}; + pub use crate::modify::{Modify, ModifyList}; pub use crate::entry::{ Entry, EntryCommitted, EntryInit, EntryInvalid, EntryInvalidCommitted, EntryNew, diff --git a/kanidmd/src/lib/macros.rs b/kanidmd/src/lib/macros.rs index 3914e0880..5d6aee46f 100644 --- a/kanidmd/src/lib/macros.rs +++ b/kanidmd/src/lib/macros.rs @@ -1,7 +1,5 @@ macro_rules! setup_test { () => {{ - use crate::utils::duration_from_epoch_now; - /* use env_logger; ::std::env::set_var("RUST_LOG", "actix_web=debug,kanidm=debug"); @@ -219,8 +217,8 @@ where } // Test helpers for all plugins. +// #[macro_export] #[cfg(test)] -#[macro_export] macro_rules! run_create_test { ( $expect:expr, @@ -269,8 +267,8 @@ macro_rules! run_create_test { }}; } +// #[macro_export] #[cfg(test)] -#[macro_export] macro_rules! run_modify_test { ( $expect:expr, @@ -323,8 +321,8 @@ macro_rules! run_modify_test { }}; } +// #[macro_export] #[cfg(test)] -#[macro_export] macro_rules! run_delete_test { ( $expect:expr, @@ -379,9 +377,6 @@ macro_rules! modlist { ( $vs:expr ) => {{ - #[allow(unused_imports)] - use crate::modify::{m_pres, m_purge, m_remove}; - use crate::modify::{Modify, ModifyList}; let s: Box<[Modify]> = Box::new($vs); ModifyList::new_list(s.into_vec()) }}; @@ -393,7 +388,6 @@ macro_rules! f_and { ( $vs:expr ) => {{ - use crate::filter::FC; let s: Box<[FC]> = Box::new($vs); f_and(s.into_vec()) }}; @@ -405,7 +399,6 @@ macro_rules! f_inc { ( $vs:expr ) => {{ - use crate::filter::FC; let s: Box<[FC]> = Box::new($vs); f_inc(s.into_vec()) }}; @@ -417,7 +410,6 @@ macro_rules! f_or { ( $vs:expr ) => {{ - use crate::filter::FC; let s: Box<[FC]> = Box::new($vs); f_or(s.into_vec()) }}; @@ -429,13 +421,6 @@ macro_rules! filter { ( $fc:expr ) => {{ - use crate::filter::Filter; - #[allow(unused_imports)] - use crate::filter::FC; - #[allow(unused_imports)] - use crate::filter::{ - f_and, f_andnot, f_eq, f_id, f_inc, f_lt, f_or, f_pres, f_self, f_spn_name, f_sub, - }; Filter::new_ignore_hidden($fc) }}; } @@ -446,13 +431,6 @@ macro_rules! filter_rec { ( $fc:expr ) => {{ - use crate::filter::Filter; - #[allow(unused_imports)] - use crate::filter::FC; - #[allow(unused_imports)] - use crate::filter::{ - f_and, f_andnot, f_eq, f_id, f_inc, f_lt, f_or, f_pres, f_self, f_sub, - }; Filter::new_recycled($fc) }}; } @@ -463,13 +441,6 @@ macro_rules! filter_all { ( $fc:expr ) => {{ - use crate::filter::Filter; - #[allow(unused_imports)] - use crate::filter::FC; - #[allow(unused_imports)] - use crate::filter::{ - f_and, f_andnot, f_eq, f_id, f_inc, f_lt, f_or, f_pres, f_self, f_sub, - }; Filter::new($fc) }}; } @@ -481,9 +452,6 @@ macro_rules! filter_valid { ( $fc:expr ) => {{ - #[allow(unused_imports)] - use crate::filter::{f_and, f_andnot, f_eq, f_inc, f_lt, f_or, f_pres, f_sub}; - use crate::filter::{Filter, FilterInvalid}; let f: Filter = Filter::new($fc); // Create a resolved filter, via the most unsafe means possible! f.into_valid() @@ -497,9 +465,6 @@ macro_rules! filter_resolved { ( $fc:expr ) => {{ - #[allow(unused_imports)] - use crate::filter::{f_and, f_andnot, f_eq, f_inc, f_lt, f_or, f_pres, f_sub}; - use crate::filter::{Filter, FilterInvalid}; let f: Filter = Filter::new($fc); // Create a resolved filter, via the most unsafe means possible! f.into_valid_resolved() @@ -513,7 +478,6 @@ macro_rules! pvalue_utf8 { ( $v:expr ) => {{ - use crate::value::PartialValue; PartialValue::new_utf8(v.to_string()) }}; } @@ -525,7 +489,6 @@ macro_rules! pvalue_iutf8 { ( $v:expr ) => {{ - use crate::value::PartialValue; PartialValue::new_iutf8(v.to_string()) }}; } @@ -614,14 +577,12 @@ macro_rules! valueset { compile_error!("ValueSet needs at least 1 element") ); ($e:expr) => ({ - use crate::valueset::ValueSet; ValueSet::new($e) }); ($e:expr,) => ({ valueset!($e) }); ($e:expr, $($item:expr),*) => ({ - use crate::valueset::ValueSet; let mut x: ValueSet = ValueSet::new($e); $(assert!(x.insert($item));)* x diff --git a/kanidmd/src/lib/modify.rs b/kanidmd/src/lib/modify.rs index 8963f00c8..6a410e7f0 100644 --- a/kanidmd/src/lib/modify.rs +++ b/kanidmd/src/lib/modify.rs @@ -234,4 +234,8 @@ impl ModifyList { pub fn len(&self) -> usize { self.mods.len() } + + pub fn is_empty(&self) -> bool { + self.len() == 0 + } } diff --git a/kanidmd/src/lib/plugins/attrunique.rs b/kanidmd/src/lib/plugins/attrunique.rs index 255153afe..9f4364b12 100644 --- a/kanidmd/src/lib/plugins/attrunique.rs +++ b/kanidmd/src/lib/plugins/attrunique.rs @@ -188,7 +188,6 @@ impl Plugin for AttrUnique { #[cfg(test)] mod tests { - use crate::modify::{Modify, ModifyList}; use crate::prelude::*; use kanidm_proto::v1::PluginError; diff --git a/kanidmd/src/lib/plugins/base.rs b/kanidmd/src/lib/plugins/base.rs index b1aff9c2b..031570cd3 100644 --- a/kanidmd/src/lib/plugins/base.rs +++ b/kanidmd/src/lib/plugins/base.rs @@ -225,7 +225,6 @@ impl Plugin for Base { #[cfg(test)] mod tests { - use crate::modify::{Modify, ModifyList}; use crate::prelude::*; use kanidm_proto::v1::PluginError; diff --git a/kanidmd/src/lib/plugins/memberof.rs b/kanidmd/src/lib/plugins/memberof.rs index ae7d4b617..1219b4535 100644 --- a/kanidmd/src/lib/plugins/memberof.rs +++ b/kanidmd/src/lib/plugins/memberof.rs @@ -395,7 +395,6 @@ impl Plugin for MemberOf { #[cfg(test)] mod tests { - use crate::modify::{Modify, ModifyList}; use crate::prelude::*; const UUID_A: &'static str = "aaaaaaaa-f82e-4484-a407-181aa03bda5c"; diff --git a/kanidmd/src/lib/plugins/oauth2.rs b/kanidmd/src/lib/plugins/oauth2.rs index 94b5c0447..135aa8dc5 100644 --- a/kanidmd/src/lib/plugins/oauth2.rs +++ b/kanidmd/src/lib/plugins/oauth2.rs @@ -80,7 +80,6 @@ impl Plugin for Oauth2Secrets { #[cfg(test)] mod tests { - use crate::modify::{Modify, ModifyList}; use crate::prelude::*; #[test] diff --git a/kanidmd/src/lib/plugins/password_import.rs b/kanidmd/src/lib/plugins/password_import.rs index a225c6e92..4d69c2f87 100644 --- a/kanidmd/src/lib/plugins/password_import.rs +++ b/kanidmd/src/lib/plugins/password_import.rs @@ -118,7 +118,6 @@ mod tests { use crate::credential::policy::CryptoPolicy; use crate::credential::totp::{Totp, TOTP_DEFAULT_STEP}; use crate::credential::{Credential, CredentialType}; - use crate::modify::{Modify, ModifyList}; use crate::prelude::*; const IMPORT_HASH: &'static str = diff --git a/kanidmd/src/lib/plugins/refint.rs b/kanidmd/src/lib/plugins/refint.rs index c4b0c1838..097d7e84f 100644 --- a/kanidmd/src/lib/plugins/refint.rs +++ b/kanidmd/src/lib/plugins/refint.rs @@ -261,7 +261,6 @@ impl Plugin for ReferentialIntegrity { #[cfg(test)] mod tests { - use crate::modify::{Modify, ModifyList}; use crate::prelude::*; use kanidm_proto::v1::PluginError; diff --git a/kanidmd/src/lib/schema.rs b/kanidmd/src/lib/schema.rs index 533bae2c9..f1fc0b51d 100644 --- a/kanidmd/src/lib/schema.rs +++ b/kanidmd/src/lib/schema.rs @@ -541,7 +541,7 @@ impl<'a> SchemaWriteTransaction<'a> { r } - pub(crate) fn reload_idxmeta(&self) -> Vec { + pub fn reload_idxmeta(&self) -> Vec { self.get_attributes() .values() .flat_map(|a| { diff --git a/kanidmd/src/lib/server.rs b/kanidmd/src/lib/server.rs index 451b50c4a..da226f26b 100644 --- a/kanidmd/src/lib/server.rs +++ b/kanidmd/src/lib/server.rs @@ -1000,7 +1000,7 @@ impl QueryServer { } } - pub(crate) fn initialise_helper(&self, ts: Duration) -> Result<(), OperationError> { + pub fn initialise_helper(&self, ts: Duration) -> Result<(), OperationError> { // First, check our database version - attempt to do an initial indexing // based on the in memory configuration // @@ -2306,13 +2306,7 @@ impl<'a> QueryServerWriteTransaction<'a> { admin_error!("initialise_idm p1 -> result {:?}", res); } debug_assert!(res.is_ok()); - if res.is_err() { - return res; - } - - // Is the configured domain name matching what's in the domain_info? - - // + let _ = res?; // The domain info now exists, we should be able to do these migrations as they will // cause SPN regenerations to occur @@ -2334,9 +2328,7 @@ impl<'a> QueryServerWriteTransaction<'a> { admin_error!("initialise_idm p2 -> result {:?}", res); } debug_assert!(res.is_ok()); - if res.is_err() { - return res; - } + let _ = res?; // Create any system default schema entries. @@ -2424,9 +2416,7 @@ impl<'a> QueryServerWriteTransaction<'a> { admin_error!(?res, "initialise_idm p3 -> result"); } debug_assert!(res.is_ok()); - if res.is_err() { - return res; - } + let _ = res?; self.changed_schema.set(true); self.changed_acp.set(true); @@ -2755,7 +2745,6 @@ mod tests { use crate::credential::policy::CryptoPolicy; use crate::credential::Credential; use crate::event::{CreateEvent, DeleteEvent, ModifyEvent, ReviveRecycledEvent, SearchEvent}; - use crate::modify::{Modify, ModifyList}; use crate::prelude::*; use kanidm_proto::v1::SchemaError; use std::sync::Arc; diff --git a/kanidmd/src/lib/tracing_tree/macros.rs b/kanidmd/src/lib/tracing_tree/macros.rs index fade182d4..ec4c3076e 100644 --- a/kanidmd/src/lib/tracing_tree/macros.rs +++ b/kanidmd/src/lib/tracing_tree/macros.rs @@ -18,7 +18,7 @@ macro_rules! spanned { macro_rules! tagged_event { ($level:ident, $event_tag:path, $($arg:tt)*) => {{ use tracing; - fn assert_eventtag(_: &crate::tracing_tree::EventTag) {} + fn assert_eventtag(_: &EventTag) {} assert_eventtag(&$event_tag); let event_tag_id: u64 = $event_tag.into(); tracing::event!(tracing::Level::$level, event_tag_id, $($arg)*) @@ -27,80 +27,80 @@ macro_rules! tagged_event { #[macro_export] macro_rules! admin_error { - ($($arg:tt)*) => { crate::tagged_event!(ERROR, crate::tracing_tree::EventTag::AdminError, $($arg)*) } + ($($arg:tt)*) => { tagged_event!(ERROR, EventTag::AdminError, $($arg)*) } } #[macro_export] macro_rules! admin_warn { - ($($arg:tt)*) => { crate::tagged_event!(WARN, crate::tracing_tree::EventTag::AdminWarn, $($arg)*) } + ($($arg:tt)*) => { tagged_event!(WARN, EventTag::AdminWarn, $($arg)*) } } #[macro_export] macro_rules! admin_info { - ($($arg:tt)*) => { crate::tagged_event!(INFO, crate::tracing_tree::EventTag::AdminInfo, $($arg)*) } + ($($arg:tt)*) => { tagged_event!(INFO, EventTag::AdminInfo, $($arg)*) } } #[macro_export] macro_rules! request_error { - ($($arg:tt)*) => { crate::tagged_event!(ERROR, crate::tracing_tree::EventTag::RequestError, $($arg)*) } + ($($arg:tt)*) => { tagged_event!(ERROR, EventTag::RequestError, $($arg)*) } } #[macro_export] macro_rules! request_warn { - ($($arg:tt)*) => { crate::tagged_event!(WARN, crate::tracing_tree::EventTag::RequestWarn, $($arg)*) } + ($($arg:tt)*) => { tagged_event!(WARN, EventTag::RequestWarn, $($arg)*) } } #[macro_export] macro_rules! request_info { - ($($arg:tt)*) => { crate::tagged_event!(INFO, crate::tracing_tree::EventTag::RequestInfo, $($arg)*) } + ($($arg:tt)*) => { tagged_event!(INFO, EventTag::RequestInfo, $($arg)*) } } #[macro_export] macro_rules! request_trace { - ($($arg:tt)*) => { crate::tagged_event!(TRACE, crate::tracing_tree::EventTag::RequestTrace, $($arg)*) } + ($($arg:tt)*) => { tagged_event!(TRACE, EventTag::RequestTrace, $($arg)*) } } #[macro_export] macro_rules! security_critical { - ($($arg:tt)*) => { crate::tagged_event!(INFO, crate::tracing_tree::EventTag::SecurityCritical, $($arg)*) } + ($($arg:tt)*) => { tagged_event!(INFO, EventTag::SecurityCritical, $($arg)*) } } #[macro_export] macro_rules! security_error { - ($($arg:tt)*) => { crate::tagged_event!(ERROR, crate::tracing_tree::EventTag::SecurityError, $($arg)*) } + ($($arg:tt)*) => { tagged_event!(ERROR, EventTag::SecurityError, $($arg)*) } } #[macro_export] macro_rules! security_info { - ($($arg:tt)*) => { crate::tagged_event!(INFO, crate::tracing_tree::EventTag::SecurityInfo, $($arg)*) } + ($($arg:tt)*) => { tagged_event!(INFO, EventTag::SecurityInfo, $($arg)*) } } #[macro_export] macro_rules! security_access { - ($($arg:tt)*) => { crate::tagged_event!(INFO, crate::tracing_tree::EventTag::SecurityAccess, $($arg)*) } + ($($arg:tt)*) => { tagged_event!(INFO, EventTag::SecurityAccess, $($arg)*) } } #[macro_export] macro_rules! filter_error { - ($($arg:tt)*) => { crate::tagged_event!(ERROR, crate::tracing_tree::EventTag::FilterError, $($arg)*) } + ($($arg:tt)*) => { tagged_event!(ERROR, EventTag::FilterError, $($arg)*) } } #[macro_export] macro_rules! filter_warn { - ($($arg:tt)*) => { crate::tagged_event!(WARN, crate::tracing_tree::EventTag::FilterWarn, $($arg)*) } + ($($arg:tt)*) => { tagged_event!(WARN, EventTag::FilterWarn, $($arg)*) } } #[macro_export] macro_rules! filter_info { - ($($arg:tt)*) => { crate::tagged_event!(INFO, crate::tracing_tree::EventTag::FilterInfo, $($arg)*) } + ($($arg:tt)*) => { tagged_event!(INFO, EventTag::FilterInfo, $($arg)*) } } #[macro_export] macro_rules! filter_trace { - ($($arg:tt)*) => { crate::tagged_event!(TRACE, crate::tracing_tree::EventTag::FilterTrace, $($arg)*) } + ($($arg:tt)*) => { tagged_event!(TRACE, EventTag::FilterTrace, $($arg)*) } } #[macro_export] macro_rules! perf_trace { - ($($arg:tt)*) => { crate::tagged_event!(TRACE, crate::tracing_tree::EventTag::PerfTrace, $($arg)*) } + ($($arg:tt)*) => { tagged_event!(TRACE, EventTag::PerfTrace, $($arg)*) } } diff --git a/kanidmd/src/lib/tracing_tree/middleware.rs b/kanidmd/src/lib/tracing_tree/middleware.rs index 8e926d2fb..b6ba59a43 100644 --- a/kanidmd/src/lib/tracing_tree/middleware.rs +++ b/kanidmd/src/lib/tracing_tree/middleware.rs @@ -58,7 +58,7 @@ impl TreeMiddleware { let method = method.as_ref(); let path = path.as_str(); - request_info!( + security_info!( src = remote_address, http.host = host, http.method = method, diff --git a/kanidmd_web_ui/Cargo.toml b/kanidmd_web_ui/Cargo.toml index c61bb89a7..eec6336e4 100644 --- a/kanidmd_web_ui/Cargo.toml +++ b/kanidmd_web_ui/Cargo.toml @@ -2,7 +2,7 @@ name = "kanidmd_web_ui" version = "1.1.0-alpha.7" authors = ["William Brown "] -edition = "2018" +edition = "2021" license = "MPL-2.0" description = "Kanidm Server Web User Interface" documentation = "https://docs.rs/kanidm/latest/kanidm/" diff --git a/kanidmd_web_ui/pkg/kanidmd_web_ui.js b/kanidmd_web_ui/pkg/kanidmd_web_ui.js index 109995371..c0477bd78 100644 --- a/kanidmd_web_ui/pkg/kanidmd_web_ui.js +++ b/kanidmd_web_ui/pkg/kanidmd_web_ui.js @@ -1,6 +1,35 @@ let wasm; +const heap = new Array(32).fill(undefined); + +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; +} + +function addHeapObject(obj) { + if (heap_next === heap.length) heap.push(heap.length + 1); + const idx = heap_next; + heap_next = heap[idx]; + + heap[idx] = obj; + return idx; +} + let cachedTextDecoder = new TextDecoder('utf-8', { ignoreBOM: true, fatal: true }); cachedTextDecoder.decode(); @@ -17,35 +46,6 @@ function getStringFromWasm0(ptr, len) { return cachedTextDecoder.decode(getUint8Memory0().subarray(ptr, ptr + len)); } -const heap = new Array(32).fill(undefined); - -heap.push(undefined, null, true, false); - -let heap_next = heap.length; - -function addHeapObject(obj) { - if (heap_next === heap.length) heap.push(heap.length + 1); - const idx = heap_next; - heap_next = heap[idx]; - - heap[idx] = obj; - return idx; -} - -function getObject(idx) { return heap[idx]; } - -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 cachedTextEncoder = new TextEncoder('utf-8'); @@ -220,7 +220,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__hce11f961552fa4de(arg0, arg1, addBorrowedObject(arg2)); + wasm._dyn_core__ops__function__FnMut___A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h3b4ba9e1909dbf65(arg0, arg1, addBorrowedObject(arg2)); } finally { heap[stack_pointer++] = undefined; } @@ -248,17 +248,27 @@ 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__h46eb76f8f067dd38(arg0, arg1, addHeapObject(arg2)); + wasm._dyn_core__ops__function__Fn__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h693f07e57b7269a6(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__h0e88b99267006220(arg0, arg1, addHeapObject(arg2)); + wasm._dyn_core__ops__function__FnMut__A____Output___R_as_wasm_bindgen__closure__WasmClosure___describe__invoke__h334d01558ab9ee3a(arg0, arg1, addHeapObject(arg2)); } /** */ export function run_app() { - wasm.run_app(); + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + wasm.run_app(retptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + if (r1) { + throw takeObject(r0); + } + } finally { + wasm.__wbindgen_add_to_stack_pointer(16); + } } let cachegetUint32Memory0 = null; @@ -324,10 +334,6 @@ async function init(input) { } const imports = {}; imports.wbg = {}; - imports.wbg.__wbindgen_string_new = function(arg0, arg1) { - var ret = getStringFromWasm0(arg0, arg1); - return addHeapObject(ret); - }; imports.wbg.__wbindgen_object_drop_ref = function(arg0) { takeObject(arg0); }; @@ -335,6 +341,10 @@ async function init(input) { var ret = getObject(arg0); return addHeapObject(ret); }; + imports.wbg.__wbindgen_string_new = function(arg0, arg1) { + var ret = getStringFromWasm0(arg0, arg1); + return addHeapObject(ret); + }; imports.wbg.__wbindgen_string_get = function(arg0, arg1) { const obj = getObject(arg1); var ret = typeof(obj) === 'string' ? obj : undefined; @@ -411,375 +421,375 @@ async function init(input) { wasm.__wbindgen_free(arg0, arg1 * 4); console.warn(...v0); }; - imports.wbg.__wbg_instanceof_Window_c4b70662a0d2c5ec = function(arg0) { + imports.wbg.__wbg_instanceof_Window_434ce1849eb4e0fc = function(arg0) { var ret = getObject(arg0) instanceof Window; return ret; }; - imports.wbg.__wbg_document_1c64944725c0d81d = function(arg0) { + imports.wbg.__wbg_document_5edd43643d1060d9 = function(arg0) { var ret = getObject(arg0).document; return isLikeNone(ret) ? 0 : addHeapObject(ret); }; - imports.wbg.__wbg_location_f98ad02632f88c43 = function(arg0) { + imports.wbg.__wbg_location_11472bb76bf5bbca = function(arg0) { var ret = getObject(arg0).location; return addHeapObject(ret); }; - imports.wbg.__wbg_history_3ac8f1466e0c0528 = function() { return handleError(function (arg0) { + imports.wbg.__wbg_history_52cfc93c824e772b = function() { return handleError(function (arg0) { var ret = getObject(arg0).history; return addHeapObject(ret); }, arguments) }; - imports.wbg.__wbg_navigator_480e592af6ad365b = function(arg0) { + imports.wbg.__wbg_navigator_0e0588c949560476 = function(arg0) { var ret = getObject(arg0).navigator; return addHeapObject(ret); }; - imports.wbg.__wbg_localStorage_6775414303ab5085 = function() { return handleError(function (arg0) { + imports.wbg.__wbg_localStorage_2b7091e6919605e2 = function() { return handleError(function (arg0) { var ret = getObject(arg0).localStorage; return isLikeNone(ret) ? 0 : addHeapObject(ret); }, arguments) }; - imports.wbg.__wbg_sessionStorage_91431bb083105afe = function() { return handleError(function (arg0) { + imports.wbg.__wbg_sessionStorage_fdaffb6b65d0b064 = function() { return handleError(function (arg0) { var ret = getObject(arg0).sessionStorage; return isLikeNone(ret) ? 0 : addHeapObject(ret); }, arguments) }; - imports.wbg.__wbg_fetch_cfe0d1dd786e9cd4 = function(arg0, arg1) { + imports.wbg.__wbg_fetch_427498e0ccea81f4 = function(arg0, arg1) { var ret = getObject(arg0).fetch(getObject(arg1)); return addHeapObject(ret); }; - imports.wbg.__wbg_body_78ae4fd43b446013 = function(arg0) { + imports.wbg.__wbg_body_7538539844356c1c = function(arg0) { var ret = getObject(arg0).body; return isLikeNone(ret) ? 0 : addHeapObject(ret); }; - imports.wbg.__wbg_createElement_86c152812a141a62 = function() { return handleError(function (arg0, arg1, arg2) { + imports.wbg.__wbg_createElement_d017b8d2af99bab9 = function() { return handleError(function (arg0, arg1, arg2) { var ret = getObject(arg0).createElement(getStringFromWasm0(arg1, arg2)); return addHeapObject(ret); }, arguments) }; - imports.wbg.__wbg_createElementNS_ae12b8681c3957a3 = function() { return handleError(function (arg0, arg1, arg2, arg3, arg4) { + imports.wbg.__wbg_createElementNS_fd4a7e49f74039e1 = function() { return handleError(function (arg0, arg1, arg2, arg3, arg4) { var ret = getObject(arg0).createElementNS(arg1 === 0 ? undefined : getStringFromWasm0(arg1, arg2), getStringFromWasm0(arg3, arg4)); return addHeapObject(ret); }, arguments) }; - imports.wbg.__wbg_createTextNode_365db3bc3d0523ab = function(arg0, arg1, arg2) { + imports.wbg.__wbg_createTextNode_39a0de25d14bcde5 = function(arg0, arg1, arg2) { var ret = getObject(arg0).createTextNode(getStringFromWasm0(arg1, arg2)); return addHeapObject(ret); }; - imports.wbg.__wbg_getElementById_f3e94458ce77f0d0 = function(arg0, arg1, arg2) { + imports.wbg.__wbg_getElementById_b30e88aff96f66a1 = function(arg0, arg1, arg2) { var ret = getObject(arg0).getElementById(getStringFromWasm0(arg1, arg2)); return isLikeNone(ret) ? 0 : addHeapObject(ret); }; - imports.wbg.__wbg_querySelector_b92a6c73bcfe671b = function() { return handleError(function (arg0, arg1, arg2) { + imports.wbg.__wbg_querySelector_cc714d0aa0b868ed = function() { return handleError(function (arg0, arg1, arg2) { var ret = getObject(arg0).querySelector(getStringFromWasm0(arg1, arg2)); return isLikeNone(ret) ? 0 : addHeapObject(ret); }, arguments) }; - imports.wbg.__wbg_get_398540d826c14d7c = function() { return handleError(function (arg0, arg1, arg2, arg3) { - var ret = getObject(arg1).get(getStringFromWasm0(arg2, arg3)); - var ptr0 = isLikeNone(ret) ? 0 : passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); - var len0 = WASM_VECTOR_LEN; - getInt32Memory0()[arg0 / 4 + 1] = len0; - getInt32Memory0()[arg0 / 4 + 0] = ptr0; - }, arguments) }; - imports.wbg.__wbg_set_5357fedb30848723 = function() { return handleError(function (arg0, arg1, arg2, arg3, arg4) { - getObject(arg0).set(getStringFromWasm0(arg1, arg2), getStringFromWasm0(arg3, arg4)); - }, arguments) }; - imports.wbg.__wbg_pathname_3570d699aa5b91aa = function(arg0, arg1) { - var ret = getObject(arg1).pathname; - var ptr0 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); - var len0 = WASM_VECTOR_LEN; - getInt32Memory0()[arg0 / 4 + 1] = len0; - getInt32Memory0()[arg0 / 4 + 0] = ptr0; - }; - imports.wbg.__wbg_new_3f48783ae4f87f8f = function() { return handleError(function (arg0, arg1) { - var ret = new URL(getStringFromWasm0(arg0, arg1)); - return addHeapObject(ret); - }, arguments) }; - imports.wbg.__wbg_value_686b2a68422cb88d = function(arg0, arg1) { - var ret = getObject(arg1).value; - var ptr0 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); - var len0 = WASM_VECTOR_LEN; - getInt32Memory0()[arg0 / 4 + 1] = len0; - getInt32Memory0()[arg0 / 4 + 0] = ptr0; - }; - imports.wbg.__wbg_setvalue_0a07023245efa3cc = function(arg0, arg1, arg2) { - getObject(arg0).value = getStringFromWasm0(arg1, arg2); - }; - imports.wbg.__wbg_instanceof_Response_e1b11afbefa5b563 = function(arg0) { - var ret = getObject(arg0) instanceof Response; - return ret; - }; - imports.wbg.__wbg_status_6d8bb444ddc5a7b2 = function(arg0) { - var ret = getObject(arg0).status; - return ret; - }; - imports.wbg.__wbg_headers_5ffa990806e04cfc = function(arg0) { - var ret = getObject(arg0).headers; - return addHeapObject(ret); - }; - imports.wbg.__wbg_json_88cc6d5cf8f61121 = function() { return handleError(function (arg0) { - var ret = getObject(arg0).json(); - return addHeapObject(ret); - }, arguments) }; - imports.wbg.__wbg_text_8279d34d73e43c68 = function() { return handleError(function (arg0) { - var ret = getObject(arg0).text(); - return addHeapObject(ret); - }, arguments) }; - imports.wbg.__wbg_add_f36d97e1d70d27b0 = function() { return handleError(function (arg0, arg1, arg2) { + imports.wbg.__wbg_add_c1e566b20be6badb = function() { return handleError(function (arg0, arg1, arg2) { getObject(arg0).add(getStringFromWasm0(arg1, arg2)); }, arguments) }; - imports.wbg.__wbg_remove_89670e56a41482a8 = function() { return handleError(function (arg0, arg1, arg2) { + imports.wbg.__wbg_remove_b4d29ca5eb7db54e = function() { return handleError(function (arg0, arg1, arg2) { getObject(arg0).remove(getStringFromWasm0(arg1, arg2)); }, arguments) }; - imports.wbg.__wbg_get_49ddec76fecb886f = function() { return handleError(function (arg0, arg1) { - var ret = getObject(arg0).get(getObject(arg1)); - return addHeapObject(ret); - }, arguments) }; - imports.wbg.__wbg_href_1194e84dd750563a = function(arg0, arg1) { + imports.wbg.__wbg_href_cad8f02caf39f2fb = function(arg0, arg1) { var ret = getObject(arg1).href; var ptr0 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); var len0 = WASM_VECTOR_LEN; getInt32Memory0()[arg0 / 4 + 1] = len0; getInt32Memory0()[arg0 / 4 + 0] = ptr0; }; - imports.wbg.__wbg_headers_4764f5445b6a6c89 = function(arg0) { + imports.wbg.__wbg_getClientExtensionResults_37549795564cd9d3 = function(arg0) { + var ret = getObject(arg0).getClientExtensionResults(); + return addHeapObject(ret); + }; + imports.wbg.__wbg_headers_1a60dec7fbd28a3b = function(arg0) { var ret = getObject(arg0).headers; return addHeapObject(ret); }; - imports.wbg.__wbg_newwithstrandinit_9b0fa00478c37287 = function() { return handleError(function (arg0, arg1, arg2) { + imports.wbg.__wbg_newwithstrandinit_c07f0662ece15bc6 = function() { return handleError(function (arg0, arg1, arg2) { var ret = new Request(getStringFromWasm0(arg0, arg1), getObject(arg2)); return addHeapObject(ret); }, arguments) }; - imports.wbg.__wbg_instanceof_HtmlInputElement_8cafe5f30dfdb6bc = function(arg0) { + imports.wbg.__wbg_instanceof_HtmlInputElement_8969541a2a0bded0 = function(arg0) { var ret = getObject(arg0) instanceof HTMLInputElement; return ret; }; - imports.wbg.__wbg_setchecked_206243371da58f6a = function(arg0, arg1) { + imports.wbg.__wbg_setchecked_f6ead3490df88a7f = function(arg0, arg1) { getObject(arg0).checked = arg1 !== 0; }; - imports.wbg.__wbg_value_0627d4b1c27534e6 = function(arg0, arg1) { + imports.wbg.__wbg_value_fc1c354d1a0e9714 = function(arg0, arg1) { var ret = getObject(arg1).value; var ptr0 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); var len0 = WASM_VECTOR_LEN; getInt32Memory0()[arg0 / 4 + 1] = len0; getInt32Memory0()[arg0 / 4 + 0] = ptr0; }; - imports.wbg.__wbg_setvalue_2459f62386b6967f = function(arg0, arg1, arg2) { + imports.wbg.__wbg_setvalue_ce4a23f487065c07 = function(arg0, arg1, arg2) { getObject(arg0).value = getStringFromWasm0(arg1, arg2); }; - imports.wbg.__wbg_instanceof_Event_480a3ec3d45b75a6 = function(arg0) { + imports.wbg.__wbg_get_5835a17331a9d8f2 = function() { return handleError(function (arg0, arg1) { + var ret = getObject(arg0).get(getObject(arg1)); + return addHeapObject(ret); + }, arguments) }; + imports.wbg.__wbg_instanceof_Event_39e54e1fe6593f4c = function(arg0) { var ret = getObject(arg0) instanceof Event; return ret; }; - imports.wbg.__wbg_target_cc69dde6c2d9ec90 = function(arg0) { + imports.wbg.__wbg_target_e560052e31e4567c = function(arg0) { var ret = getObject(arg0).target; return isLikeNone(ret) ? 0 : addHeapObject(ret); }; - imports.wbg.__wbg_cancelBubble_f67c419013823f11 = function(arg0) { + imports.wbg.__wbg_cancelBubble_17d7988ab2fbe4c9 = function(arg0) { var ret = getObject(arg0).cancelBubble; return ret; }; - imports.wbg.__wbg_preventDefault_9866c9fd51eecfb6 = function(arg0) { + imports.wbg.__wbg_preventDefault_fa00541ff125b78c = function(arg0) { getObject(arg0).preventDefault(); }; - imports.wbg.__wbg_instanceof_HtmlDocument_1faa18f5a2da6fb3 = function(arg0) { + imports.wbg.__wbg_instanceof_HtmlDocument_395ec6365cabde6c = function(arg0) { var ret = getObject(arg0) instanceof HTMLDocument; return ret; }; - imports.wbg.__wbg_cookie_becfe81fc969a9ff = function() { return handleError(function (arg0, arg1) { + imports.wbg.__wbg_cookie_66f4449cc764fcb2 = function() { return handleError(function (arg0, arg1) { var ret = getObject(arg1).cookie; var ptr0 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); var len0 = WASM_VECTOR_LEN; getInt32Memory0()[arg0 / 4 + 1] = len0; getInt32Memory0()[arg0 / 4 + 0] = ptr0; }, arguments) }; - imports.wbg.__wbg_getClientExtensionResults_73fef7f1197950fb = function(arg0) { - var ret = getObject(arg0).getClientExtensionResults(); + imports.wbg.__wbg_addEventListener_55682f77717d7665 = function() { return handleError(function (arg0, arg1, arg2, arg3, arg4) { + getObject(arg0).addEventListener(getStringFromWasm0(arg1, arg2), getObject(arg3), getObject(arg4)); + }, arguments) }; + imports.wbg.__wbg_removeEventListener_9cd36e5806463d5d = function() { return handleError(function (arg0, arg1, arg2, arg3, arg4) { + getObject(arg0).removeEventListener(getStringFromWasm0(arg1, arg2), getObject(arg3), arg4 !== 0); + }, arguments) }; + imports.wbg.__wbg_credentials_403bf2de10e8f1c3 = function(arg0) { + var ret = getObject(arg0).credentials; return addHeapObject(ret); }; - imports.wbg.__wbg_instanceof_Element_97d85e53f1805b82 = function(arg0) { + imports.wbg.__wbg_instanceof_Element_c9423704dd5d9b1d = function(arg0) { var ret = getObject(arg0) instanceof Element; return ret; }; - imports.wbg.__wbg_namespaceURI_f4cd665d07463337 = function(arg0, arg1) { + imports.wbg.__wbg_namespaceURI_e9a971e6c1ce68db = function(arg0, arg1) { var ret = getObject(arg1).namespaceURI; var ptr0 = isLikeNone(ret) ? 0 : passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); var len0 = WASM_VECTOR_LEN; getInt32Memory0()[arg0 / 4 + 1] = len0; getInt32Memory0()[arg0 / 4 + 0] = ptr0; }; - imports.wbg.__wbg_classList_b666640fdfbcc8ab = function(arg0) { + imports.wbg.__wbg_classList_5086913f676eb3f3 = function(arg0) { var ret = getObject(arg0).classList; return addHeapObject(ret); }; - imports.wbg.__wbg_removeAttribute_eea03ed128669b8f = function() { return handleError(function (arg0, arg1, arg2) { + imports.wbg.__wbg_removeAttribute_1adaecf6b4d35a09 = function() { return handleError(function (arg0, arg1, arg2) { getObject(arg0).removeAttribute(getStringFromWasm0(arg1, arg2)); }, arguments) }; - imports.wbg.__wbg_setAttribute_1b533bf07966de55 = function() { return handleError(function (arg0, arg1, arg2, arg3, arg4) { + imports.wbg.__wbg_setAttribute_1776fcc9b98d464e = function() { return handleError(function (arg0, arg1, arg2, arg3, arg4) { getObject(arg0).setAttribute(getStringFromWasm0(arg1, arg2), getStringFromWasm0(arg3, arg4)); }, arguments) }; - imports.wbg.__wbg_instanceof_HtmlElement_df66c8b4a687aa43 = function(arg0) { + imports.wbg.__wbg_instanceof_HtmlElement_d3e8f1c1d6788b24 = function(arg0) { var ret = getObject(arg0) instanceof HTMLElement; return ret; }; - imports.wbg.__wbg_focus_00530e359f44fc6e = function() { return handleError(function (arg0) { + imports.wbg.__wbg_focus_4434360545ac99cf = function() { return handleError(function (arg0) { getObject(arg0).focus(); }, arguments) }; - imports.wbg.__wbg_addEventListener_09e11fbf8b4b719b = function() { return handleError(function (arg0, arg1, arg2, arg3, arg4) { - getObject(arg0).addEventListener(getStringFromWasm0(arg1, arg2), getObject(arg3), getObject(arg4)); - }, arguments) }; - imports.wbg.__wbg_removeEventListener_24d5a7c12c3f3c39 = function() { return handleError(function (arg0, arg1, arg2, arg3, arg4) { - getObject(arg0).removeEventListener(getStringFromWasm0(arg1, arg2), getObject(arg3), arg4 !== 0); - }, arguments) }; - imports.wbg.__wbg_credentials_5339e35d156d6605 = function(arg0) { - var ret = getObject(arg0).credentials; - return addHeapObject(ret); - }; - imports.wbg.__wbg_pushState_f772e11155235e9c = function() { return handleError(function (arg0, arg1, arg2, arg3, arg4, arg5) { + imports.wbg.__wbg_pushState_89ce908020e1d6aa = function() { return handleError(function (arg0, arg1, arg2, arg3, arg4, arg5) { getObject(arg0).pushState(getObject(arg1), getStringFromWasm0(arg2, arg3), arg4 === 0 ? undefined : getStringFromWasm0(arg4, arg5)); }, arguments) }; - imports.wbg.__wbg_parentElement_0253a5d6c3ff0ba5 = function(arg0) { + imports.wbg.__wbg_parentElement_96e1e07348340043 = function(arg0) { var ret = getObject(arg0).parentElement; return isLikeNone(ret) ? 0 : addHeapObject(ret); }; - imports.wbg.__wbg_lastChild_ca5bac177ef353f6 = function(arg0) { + imports.wbg.__wbg_lastChild_e2b014abab089e08 = function(arg0) { var ret = getObject(arg0).lastChild; return isLikeNone(ret) ? 0 : addHeapObject(ret); }; - imports.wbg.__wbg_setnodeValue_702374ad3d0ec3df = function(arg0, arg1, arg2) { + imports.wbg.__wbg_setnodeValue_f175b74a390f8fda = function(arg0, arg1, arg2) { getObject(arg0).nodeValue = arg1 === 0 ? undefined : getStringFromWasm0(arg1, arg2); }; - imports.wbg.__wbg_appendChild_d318db34c4559916 = function() { return handleError(function (arg0, arg1) { + imports.wbg.__wbg_appendChild_3fe5090c665d3bb4 = function() { return handleError(function (arg0, arg1) { var ret = getObject(arg0).appendChild(getObject(arg1)); return addHeapObject(ret); }, arguments) }; - imports.wbg.__wbg_insertBefore_5b314357408fbec1 = function() { return handleError(function (arg0, arg1, arg2) { + imports.wbg.__wbg_insertBefore_4f09909023feac91 = function() { return handleError(function (arg0, arg1, arg2) { var ret = getObject(arg0).insertBefore(getObject(arg1), getObject(arg2)); return addHeapObject(ret); }, arguments) }; - imports.wbg.__wbg_removeChild_d3ca7b53e537867e = function() { return handleError(function (arg0, arg1) { + imports.wbg.__wbg_removeChild_f4a83c9698136bbb = function() { return handleError(function (arg0, arg1) { var ret = getObject(arg0).removeChild(getObject(arg1)); return addHeapObject(ret); }, arguments) }; - imports.wbg.__wbg_pathname_32da720074d17e34 = function() { return handleError(function (arg0, arg1) { + imports.wbg.__wbg_pathname_d0014089875ea691 = function() { return handleError(function (arg0, arg1) { var ret = getObject(arg1).pathname; var ptr0 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); var len0 = WASM_VECTOR_LEN; getInt32Memory0()[arg0 / 4 + 1] = len0; getInt32Memory0()[arg0 / 4 + 0] = ptr0; }, arguments) }; - imports.wbg.__wbg_search_f44353b4fdbdd216 = function() { return handleError(function (arg0, arg1) { + imports.wbg.__wbg_search_7e1c9ba7f3985c36 = function() { return handleError(function (arg0, arg1) { var ret = getObject(arg1).search; var ptr0 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); var len0 = WASM_VECTOR_LEN; getInt32Memory0()[arg0 / 4 + 1] = len0; getInt32Memory0()[arg0 / 4 + 0] = ptr0; }, arguments) }; - imports.wbg.__wbg_replace_fde8d9ba8c5000f9 = function() { return handleError(function (arg0, arg1, arg2) { + imports.wbg.__wbg_replace_ec236a3e3182c4da = function() { return handleError(function (arg0, arg1, arg2) { getObject(arg0).replace(getStringFromWasm0(arg1, arg2)); }, arguments) }; - imports.wbg.__wbg_getItem_77fb9d4666f3b93a = function() { return handleError(function (arg0, arg1, arg2, arg3) { + imports.wbg.__wbg_getItem_f92ef607397e96b1 = function() { return handleError(function (arg0, arg1, arg2, arg3) { var ret = getObject(arg1).getItem(getStringFromWasm0(arg2, arg3)); var ptr0 = isLikeNone(ret) ? 0 : passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); var len0 = WASM_VECTOR_LEN; getInt32Memory0()[arg0 / 4 + 1] = len0; getInt32Memory0()[arg0 / 4 + 0] = ptr0; }, arguments) }; - imports.wbg.__wbg_removeItem_e02016195a414450 = function() { return handleError(function (arg0, arg1, arg2) { + imports.wbg.__wbg_removeItem_ccc2014f87a14e1b = function() { return handleError(function (arg0, arg1, arg2) { getObject(arg0).removeItem(getStringFromWasm0(arg1, arg2)); }, arguments) }; - imports.wbg.__wbg_setItem_b0c4561489dffecd = function() { return handleError(function (arg0, arg1, arg2, arg3, arg4) { + imports.wbg.__wbg_setItem_279b13e5ad0b82cb = function() { return handleError(function (arg0, arg1, arg2, arg3, arg4) { getObject(arg0).setItem(getStringFromWasm0(arg1, arg2), getStringFromWasm0(arg3, arg4)); }, arguments) }; - imports.wbg.__wbg_new_949bbc1147195c4e = function() { + imports.wbg.__wbg_get_bee69a0c35eec41c = function() { return handleError(function (arg0, arg1, arg2, arg3) { + var ret = getObject(arg1).get(getStringFromWasm0(arg2, arg3)); + var ptr0 = isLikeNone(ret) ? 0 : passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + var len0 = WASM_VECTOR_LEN; + getInt32Memory0()[arg0 / 4 + 1] = len0; + getInt32Memory0()[arg0 / 4 + 0] = ptr0; + }, arguments) }; + imports.wbg.__wbg_set_f9448486a94c9aef = function() { return handleError(function (arg0, arg1, arg2, arg3, arg4) { + getObject(arg0).set(getStringFromWasm0(arg1, arg2), getStringFromWasm0(arg3, arg4)); + }, arguments) }; + imports.wbg.__wbg_pathname_7affbcff36f35c0e = function(arg0, arg1) { + var ret = getObject(arg1).pathname; + var ptr0 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + var len0 = WASM_VECTOR_LEN; + getInt32Memory0()[arg0 / 4 + 1] = len0; + getInt32Memory0()[arg0 / 4 + 0] = ptr0; + }; + imports.wbg.__wbg_new_4473c9af1cac368b = function() { return handleError(function (arg0, arg1) { + var ret = new URL(getStringFromWasm0(arg0, arg1)); + return addHeapObject(ret); + }, arguments) }; + imports.wbg.__wbg_value_d3a30bc2c7caf357 = function(arg0, arg1) { + var ret = getObject(arg1).value; + var ptr0 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + var len0 = WASM_VECTOR_LEN; + getInt32Memory0()[arg0 / 4 + 1] = len0; + getInt32Memory0()[arg0 / 4 + 0] = ptr0; + }; + imports.wbg.__wbg_setvalue_6a34bab301f38bf2 = function(arg0, arg1, arg2) { + getObject(arg0).value = getStringFromWasm0(arg1, arg2); + }; + imports.wbg.__wbg_instanceof_Response_ea36d565358a42f7 = function(arg0) { + var ret = getObject(arg0) instanceof Response; + return ret; + }; + imports.wbg.__wbg_status_3a55bb50e744b834 = function(arg0) { + var ret = getObject(arg0).status; + return ret; + }; + imports.wbg.__wbg_headers_e4204c6775f7b3b4 = function(arg0) { + var ret = getObject(arg0).headers; + return addHeapObject(ret); + }; + imports.wbg.__wbg_json_4ab99130d1a5b3a9 = function() { return handleError(function (arg0) { + var ret = getObject(arg0).json(); + return addHeapObject(ret); + }, arguments) }; + imports.wbg.__wbg_text_aeba5a5bbfef7f15 = function() { return handleError(function (arg0) { + var ret = getObject(arg0).text(); + return addHeapObject(ret); + }, arguments) }; + imports.wbg.__wbg_new_16f24b0728c5e67b = function() { var ret = new Array(); return addHeapObject(ret); }; - imports.wbg.__wbg_newnoargs_be86524d73f67598 = function(arg0, arg1) { + imports.wbg.__wbg_newnoargs_f579424187aa1717 = function(arg0, arg1) { var ret = new Function(getStringFromWasm0(arg0, arg1)); return addHeapObject(ret); }; - imports.wbg.__wbg_get_4d0f21c2f823742e = function() { return handleError(function (arg0, arg1) { + imports.wbg.__wbg_get_8bbb82393651dd9c = function() { return handleError(function (arg0, arg1) { var ret = Reflect.get(getObject(arg0), getObject(arg1)); return addHeapObject(ret); }, arguments) }; - imports.wbg.__wbg_call_888d259a5fefc347 = function() { return handleError(function (arg0, arg1) { + imports.wbg.__wbg_call_89558c3e96703ca1 = function() { return handleError(function (arg0, arg1) { var ret = getObject(arg0).call(getObject(arg1)); return addHeapObject(ret); }, arguments) }; - imports.wbg.__wbg_new_0b83d3df67ecb33e = function() { + imports.wbg.__wbg_new_d3138911a89329b0 = function() { var ret = new Object(); return addHeapObject(ret); }; - imports.wbg.__wbg_push_284486ca27c6aa8b = function(arg0, arg1) { + imports.wbg.__wbg_push_a72df856079e6930 = function(arg0, arg1) { var ret = getObject(arg0).push(getObject(arg1)); return ret; }; - imports.wbg.__wbg_instanceof_Error_561efcb1265706d8 = function(arg0) { + imports.wbg.__wbg_instanceof_Error_4287ce7d75f0e3a2 = function(arg0) { var ret = getObject(arg0) instanceof Error; return ret; }; - imports.wbg.__wbg_message_9f7d15ff97fc4102 = function(arg0) { + imports.wbg.__wbg_message_1dfe93b595be8811 = function(arg0) { var ret = getObject(arg0).message; return addHeapObject(ret); }; - imports.wbg.__wbg_name_5a42234155690dbc = function(arg0) { + imports.wbg.__wbg_name_66305ab387468967 = function(arg0) { var ret = getObject(arg0).name; return addHeapObject(ret); }; - imports.wbg.__wbg_toString_0ef1ea57b966aed4 = function(arg0) { + imports.wbg.__wbg_toString_3e854a6a919f2996 = function(arg0) { var ret = getObject(arg0).toString(); return addHeapObject(ret); }; - imports.wbg.__wbg_valueOf_99d85ac83228d11b = function(arg0) { + imports.wbg.__wbg_valueOf_39e0d6bc7e4232b9 = function(arg0) { var ret = getObject(arg0).valueOf(); return ret; }; - imports.wbg.__wbg_is_0f5efc7977a2c50b = function(arg0, arg1) { + imports.wbg.__wbg_is_3d73f4d91adacc37 = function(arg0, arg1) { var ret = Object.is(getObject(arg0), getObject(arg1)); return ret; }; - imports.wbg.__wbg_resolve_d23068002f584f22 = function(arg0) { + imports.wbg.__wbg_resolve_4f8f547f26b30b27 = function(arg0) { var ret = Promise.resolve(getObject(arg0)); return addHeapObject(ret); }; - imports.wbg.__wbg_then_2fcac196782070cc = function(arg0, arg1) { + imports.wbg.__wbg_then_a6860c82b90816ca = function(arg0, arg1) { var ret = getObject(arg0).then(getObject(arg1)); return addHeapObject(ret); }; - imports.wbg.__wbg_then_8c2d62e8ae5978f7 = function(arg0, arg1, arg2) { + imports.wbg.__wbg_then_58a04e42527f52c6 = function(arg0, arg1, arg2) { var ret = getObject(arg0).then(getObject(arg1), getObject(arg2)); return addHeapObject(ret); }; - imports.wbg.__wbg_self_c6fbdfc2918d5e58 = function() { return handleError(function () { + imports.wbg.__wbg_self_e23d74ae45fb17d1 = function() { return handleError(function () { var ret = self.self; return addHeapObject(ret); }, arguments) }; - imports.wbg.__wbg_window_baec038b5ab35c54 = function() { return handleError(function () { + imports.wbg.__wbg_window_b4be7f48b24ac56e = function() { return handleError(function () { var ret = window.window; return addHeapObject(ret); }, arguments) }; - imports.wbg.__wbg_globalThis_3f735a5746d41fbd = function() { return handleError(function () { + imports.wbg.__wbg_globalThis_d61b1f48a57191ae = function() { return handleError(function () { var ret = globalThis.globalThis; return addHeapObject(ret); }, arguments) }; - imports.wbg.__wbg_global_1bc0b39582740e95 = function() { return handleError(function () { + imports.wbg.__wbg_global_e7669da72fd7f239 = function() { return handleError(function () { var ret = global.global; return addHeapObject(ret); }, arguments) }; - imports.wbg.__wbg_buffer_397eaa4d72ee94dd = function(arg0) { + imports.wbg.__wbg_buffer_5e74a88a1424a2e0 = function(arg0) { var ret = getObject(arg0).buffer; return addHeapObject(ret); }; - imports.wbg.__wbg_newwithbyteoffsetandlength_4b9b8c4e3f5adbff = function(arg0, arg1, arg2) { + imports.wbg.__wbg_newwithbyteoffsetandlength_278ec7532799393a = function(arg0, arg1, arg2) { var ret = new Uint8Array(getObject(arg0), arg1 >>> 0, arg2 >>> 0); return addHeapObject(ret); }; - imports.wbg.__wbg_new_a7ce447f15ff496f = function(arg0) { + imports.wbg.__wbg_new_e3b800e570795b3c = function(arg0) { var ret = new Uint8Array(getObject(arg0)); return addHeapObject(ret); }; - imports.wbg.__wbg_set_969ad0a60e51d320 = function(arg0, arg1, arg2) { + imports.wbg.__wbg_set_5b8081e9d002f0df = function(arg0, arg1, arg2) { getObject(arg0).set(getObject(arg1), arg2 >>> 0); }; - imports.wbg.__wbg_length_1eb8fc608a0d4cdb = function(arg0) { + imports.wbg.__wbg_length_30803400a8f15c59 = function(arg0) { var ret = getObject(arg0).length; return ret; }; - imports.wbg.__wbg_set_82a4e8a85e31ac42 = function() { return handleError(function (arg0, arg1, arg2) { + imports.wbg.__wbg_set_c42875065132a932 = function() { return handleError(function (arg0, arg1, arg2) { var ret = Reflect.set(getObject(arg0), getObject(arg1), getObject(arg2)); return ret; }, arguments) }; @@ -797,16 +807,16 @@ async function init(input) { var ret = wasm.memory; return addHeapObject(ret); }; - imports.wbg.__wbindgen_closure_wrapper1154 = function(arg0, arg1, arg2) { - var ret = makeMutClosure(arg0, arg1, 474, __wbg_adapter_30); + imports.wbg.__wbindgen_closure_wrapper1287 = function(arg0, arg1, arg2) { + var ret = makeMutClosure(arg0, arg1, 552, __wbg_adapter_30); return addHeapObject(ret); }; - imports.wbg.__wbindgen_closure_wrapper1351 = function(arg0, arg1, arg2) { - var ret = makeClosure(arg0, arg1, 522, __wbg_adapter_33); + imports.wbg.__wbindgen_closure_wrapper1490 = function(arg0, arg1, arg2) { + var ret = makeClosure(arg0, arg1, 602, __wbg_adapter_33); return addHeapObject(ret); }; - imports.wbg.__wbindgen_closure_wrapper1486 = function(arg0, arg1, arg2) { - var ret = makeMutClosure(arg0, arg1, 560, __wbg_adapter_36); + imports.wbg.__wbindgen_closure_wrapper1632 = function(arg0, arg1, arg2) { + var ret = makeMutClosure(arg0, arg1, 640, __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 ead38578b02b3cde39bf3fc66edaeb7c123f1ee1..cb01e2dc438f4920beeac0063fc003a0d64dd6af 100644 GIT binary patch delta 341975 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 z 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

Le%YtojzRO|fH|>0#+>WVEoLiCNWc2$J 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

fmz{Xd1b!g$oW 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∾8x9HN0}rSvcOl*s6XQmb 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 diff --git a/kanidmd_web_ui/src/lib.rs b/kanidmd_web_ui/src/lib.rs index 2ebbe6d0a..884e44a87 100644 --- a/kanidmd_web_ui/src/lib.rs +++ b/kanidmd_web_ui/src/lib.rs @@ -1,5 +1,15 @@ #![recursion_limit = "256"] #![deny(warnings)] +#![warn(unused_extern_crates)] +#![deny(clippy::todo)] +#![deny(clippy::unimplemented)] +#![deny(clippy::unwrap_used)] +#![deny(clippy::expect_used)] +#![deny(clippy::panic)] +#![deny(clippy::unreachable)] +#![deny(clippy::await_holding_lock)] +#![deny(clippy::needless_pass_by_value)] +#![deny(clippy::trivially_copy_pass_by_ref)] use wasm_bindgen::prelude::*; @@ -11,7 +21,7 @@ mod oauth2; mod utils; mod views; -#[wasm_bindgen] +#[cfg_attr(target_arch = "wasm32", wasm_bindgen)] pub fn run_app() -> Result<(), JsValue> { yew::start_app::(); Ok(()) diff --git a/kanidmd_web_ui/src/login.rs b/kanidmd_web_ui/src/login.rs index 335056736..12c04e5be 100644 --- a/kanidmd_web_ui/src/login.rs +++ b/kanidmd_web_ui/src/login.rs @@ -8,7 +8,6 @@ use yew::prelude::*; use yew_router::prelude::*; use crate::error::FetchError; -use crate::manager::Route; use crate::models; use crate::utils; @@ -79,7 +78,7 @@ impl LoginApp { }; let authreq_jsvalue = serde_json::to_string(&authreq) .map(|s| JsValue::from(&s)) - .expect("Failed to serialise authreq"); + .expect_throw("Failed to serialise authreq"); let mut opts = RequestInit::new(); opts.method("POST"); @@ -95,7 +94,7 @@ impl LoginApp { let window = utils::window(); let resp_value = JsFuture::from(window.fetch_with_request(&request)).await?; - let resp: Response = resp_value.dyn_into().unwrap(); + let resp: Response = resp_value.dyn_into().expect_throw("Invalid response type"); let status = resp.status(); let headers = resp.headers(); @@ -106,7 +105,7 @@ impl LoginApp { .flatten() .unwrap_or_else(|| "".to_string()); let jsval = JsFuture::from(resp.json()?).await?; - let state: AuthResponse = jsval.into_serde().unwrap(); + let state: AuthResponse = jsval.into_serde().expect_throw("Invalid response type"); Ok(LoginAppMsg::Start(session_id, state)) } else { let kopid = headers.get("x-kanidm-opid").ok().flatten(); @@ -122,7 +121,7 @@ impl LoginApp { ) -> Result { let authreq_jsvalue = serde_json::to_string(&authreq) .map(|s| JsValue::from(&s)) - .expect("Failed to serialise authreq"); + .expect_throw("Failed to serialise authreq"); let mut opts = RequestInit::new(); opts.method("POST"); @@ -142,13 +141,13 @@ impl LoginApp { let window = utils::window(); let resp_value = JsFuture::from(window.fetch_with_request(&request)).await?; - let resp: Response = resp_value.dyn_into().unwrap(); + let resp: Response = resp_value.dyn_into().expect_throw("Invalid response type"); let status = resp.status(); let headers = resp.headers(); if status == 200 { let jsval = JsFuture::from(resp.json()?).await?; - let state: AuthResponse = jsval.into_serde().unwrap(); + let state: AuthResponse = jsval.into_serde().expect_throw("Invalid response type"); Ok(LoginAppMsg::Next(state)) } else { let kopid = headers.get("x-kanidm-opid").ok().flatten(); @@ -326,7 +325,7 @@ impl LoginApp { .navigator() .credentials() .get_with_options(challenge) - .expect("Unable to create promise"); + .expect_throw("Unable to create promise"); let fut = JsFuture::from(promise); let linkc = ctx.link().clone(); @@ -362,13 +361,10 @@ impl LoginApp { } } LoginState::Authenticated => { - let loc: Route = models::pop_return_location().into(); + let loc = models::pop_return_location(); // redirect console::log!(format!("authenticated, try going to -> {:?}", loc)); - ctx.link() - .history() - .expect_throw("failed to read history") - .push(loc); + loc.goto(&ctx.link().history().expect_throw("failed to read history")); html! {

@@ -425,10 +421,10 @@ impl Component for LoginApp { let html_document = document .dyn_into::() - .expect("failed to dyn cast to htmldocument"); + .expect_throw("failed to dyn cast to htmldocument"); let cookie = html_document .cookie() - .expect("failed to access page cookies"); + .expect_throw("failed to access page cookies"); console::log!("cookies"); console::log!(cookie.as_str()); @@ -563,7 +559,7 @@ impl Component for LoginApp { self.session_id = session_id; if mechs.len() == 1 { // If it's only one mech, just submit that. - let mech = mechs.pop().unwrap(); + let mech = mechs.pop().expect_throw("Memory corruption occured"); let authreq = AuthRequest { step: AuthStep::Begin(mech), }; @@ -618,7 +614,7 @@ impl Component for LoginApp { AuthState::Continue(mut allowed) => { if allowed.len() == 1 { // If there is only one, change our state for that input type. - match allowed.pop().unwrap() { + match allowed.pop().expect_throw("Memory corruption occured") { AuthAllowed::Anonymous => { // Just submit this. } diff --git a/kanidmd_web_ui/src/manager.rs b/kanidmd_web_ui/src/manager.rs index ba64a149f..f19055c3c 100644 --- a/kanidmd_web_ui/src/manager.rs +++ b/kanidmd_web_ui/src/manager.rs @@ -5,22 +5,24 @@ //! will allow you to proceed with the oauth flow. use gloo::console; +use wasm_bindgen::UnwrapThrowExt; use yew::functional::*; use yew::prelude::*; use yew_router::prelude::*; use crate::login::LoginApp; use crate::oauth2::Oauth2App; -use crate::views::ViewsApp; +use crate::views::{ViewRoute, ViewsApp}; +use serde::{Deserialize, Serialize}; // router to decide on state. -#[derive(Routable, PartialEq, Clone, Debug)] +#[derive(Routable, PartialEq, Clone, Debug, Serialize, Deserialize)] pub enum Route { #[at("/")] Landing, - #[at("/ui/view")] - Index, + #[at("/ui/view/:s")] + Views, #[at("/ui/login")] Login, @@ -36,24 +38,26 @@ pub enum Route { #[function_component(Landing)] fn landing() -> Html { // Do this to allow use_history to work because lol. - use_history().unwrap().push(Route::Index); + use_history() + .expect_throw("Unable to access history") + .push(ViewRoute::Apps); html! {

} } -fn switch(routes: &Route) -> Html { +fn switch(route: &Route) -> Html { console::log!("manager::switch"); - match routes { + match route { Route::Landing => html! { }, - Route::Index => html! { }, Route::Login => html! { }, Route::Oauth2 => html! { }, + Route::Views => html! { }, Route::NotFound => { html! {

{ "404" }

- to={ Route::Index }> + to={ ViewRoute::Apps }> { "Home" } - > + >
} } diff --git a/kanidmd_web_ui/src/models/mod.rs b/kanidmd_web_ui/src/models/mod.rs index 274b54e66..09c49d1db 100644 --- a/kanidmd_web_ui/src/models/mod.rs +++ b/kanidmd_web_ui/src/models/mod.rs @@ -5,8 +5,10 @@ use gloo::storage::LocalStorage as PersistentStorage; use gloo::storage::SessionStorage as TemporaryStorage; use gloo::storage::Storage; use wasm_bindgen::UnwrapThrowExt; +use yew_router::prelude::{AnyHistory, History}; use crate::manager::Route; +use crate::views::ViewRoute; use serde::{Deserialize, Serialize}; pub fn get_bearer_token() -> Option { @@ -27,15 +29,15 @@ pub fn clear_bearer_token() { #[derive(Serialize, Deserialize, Debug)] pub enum Location { - Oauth2, - Views, + Manager(Route), + Views(ViewRoute), } -impl From for Route { - fn from(l: Location) -> Self { - match l { - Location::Views => Route::Index, - Location::Oauth2 => Route::Oauth2, +impl Location { + pub(crate) fn goto(self, history: &AnyHistory) { + match self { + Location::Manager(r) => history.push(r), + Location::Views(r) => history.push(r), } } } @@ -48,7 +50,7 @@ pub fn pop_return_location() -> Location { let l: Result = TemporaryStorage::get("return_location"); console::log!(format!("return_location -> {:?}", l).as_str()); TemporaryStorage::delete("return_location"); - l.unwrap_or(Location::Views) + l.unwrap_or(Location::Manager(Route::Landing)) } pub fn push_oauth2_authorisation_request(r: AuthorisationRequest) { diff --git a/kanidmd_web_ui/src/oauth2.rs b/kanidmd_web_ui/src/oauth2.rs index bce89201d..f59eb8c49 100644 --- a/kanidmd_web_ui/src/oauth2.rs +++ b/kanidmd_web_ui/src/oauth2.rs @@ -70,7 +70,7 @@ impl Oauth2App { let window = utils::window(); let resp_value = JsFuture::from(window.fetch_with_request(&request)).await?; - let resp: Response = resp_value.dyn_into().unwrap(); + let resp: Response = resp_value.dyn_into().expect_throw("Invalid response type"); let status = resp.status(); if status == 200 { @@ -93,7 +93,7 @@ impl Oauth2App { ) -> Result { let authreq_jsvalue = serde_json::to_string(&authreq) .map(|s| JsValue::from(&s)) - .expect("Failed to serialise authreq"); + .expect_throw("Failed to serialise authreq"); let mut opts = RequestInit::new(); opts.method("POST"); @@ -113,13 +113,13 @@ impl Oauth2App { let window = utils::window(); let resp_value = JsFuture::from(window.fetch_with_request(&request)).await?; - let resp: Response = resp_value.dyn_into().unwrap(); + let resp: Response = resp_value.dyn_into().expect_throw("Invalid response type"); let status = resp.status(); let headers = resp.headers(); if status == 200 { let jsval = JsFuture::from(resp.json()?).await?; - let state: ConsentRequest = jsval.into_serde().unwrap(); + let state: ConsentRequest = jsval.into_serde().expect_throw("Invalid response type"); Ok(Oauth2Msg::Consent(state)) } else { let kopid = headers.get("x-kanidm-opid").ok().flatten(); @@ -135,7 +135,7 @@ impl Oauth2App { ) -> Result { let consentreq_jsvalue = serde_json::to_string(&consent_req.consent_token) .map(|s| JsValue::from(&s)) - .expect("Failed to serialise consent_req"); + .expect_throw("Failed to serialise consent_req"); let mut opts = RequestInit::new(); opts.method("POST"); @@ -156,7 +156,7 @@ impl Oauth2App { let window = utils::window(); let resp_value = JsFuture::from(window.fetch_with_request(&request)).await?; - let resp: Response = resp_value.dyn_into().unwrap(); + let resp: Response = resp_value.dyn_into().expect_throw("Invalid response type"); let status = resp.status(); let headers = resp.headers(); @@ -190,7 +190,7 @@ impl Component for Oauth2App { let location = ctx .link() .location() - .expect("Can't access current location"); + .expect_throw("Can't access current location"); let query: Option = location .query() @@ -263,7 +263,8 @@ impl Component for Oauth2App { match msg { Oauth2Msg::LoginProceed => { - models::push_return_location(models::Location::Oauth2); + models::push_return_location(models::Location::Manager(Route::Oauth2)); + ctx.link() .history() .expect_throw("failed to read history") @@ -278,9 +279,8 @@ impl Component for Oauth2App { self.state = match (&self.state, ar) { (State::TokenCheck(token), Some(ar)) => { let token_c = token.clone(); - let ar_c = ar.clone(); ctx.link().send_future(async { - match Self::fetch_authreq(token_c, ar_c).await { + match Self::fetch_authreq(token_c, ar).await { Ok(v) => v, Err(v) => v.into(), } diff --git a/kanidmd_web_ui/src/utils.rs b/kanidmd_web_ui/src/utils.rs index 6d768064d..8a80e0e58 100644 --- a/kanidmd_web_ui/src/utils.rs +++ b/kanidmd_web_ui/src/utils.rs @@ -4,15 +4,17 @@ pub use web_sys::InputEvent; use web_sys::{Document, Event, HtmlElement, HtmlInputElement, Window}; pub fn window() -> Window { - web_sys::window().expect("Unable to retrieve window") + web_sys::window().expect_throw("Unable to retrieve window") } pub fn document() -> Document { - window().document().expect("Unable to retrieve document") + window() + .document() + .expect_throw("Unable to retrieve document") } pub fn body() -> HtmlElement { - document().body().expect("Unable to retrieve body") + document().body().expect_throw("Unable to retrieve body") } pub fn autofocus() { diff --git a/kanidmd_web_ui/src/views/apps.rs b/kanidmd_web_ui/src/views/apps.rs new file mode 100644 index 000000000..e38458a6e --- /dev/null +++ b/kanidmd_web_ui/src/views/apps.rs @@ -0,0 +1,77 @@ +use gloo::console; +use yew::prelude::*; + +pub enum Msg { + // Nothing +} + +pub struct AppsApp {} + +impl Component for AppsApp { + type Message = Msg; + type Properties = (); + + fn create(_ctx: &Context) -> Self { + console::log!("views::apps::create"); + AppsApp {} + } + + fn changed(&mut self, _ctx: &Context) -> bool { + console::log!("views::apps::changed"); + false + } + + fn update(&mut self, _ctx: &Context, _msg: Self::Message) -> bool { + console::log!("views::apps::update"); + /* + match msg { + ViewsMsg::Logout => { + } + } + */ + true + } + + fn rendered(&mut self, _ctx: &Context, _first_render: bool) { + console::log!("views::apps::rendered"); + } + + fn view(&self, _ctx: &Context) -> Html { + html! { + <> +
+

{ "Apps" }

+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
{ "#" }{ "Header" }{ "Header" }{ "Header" }{ "Header" }
{ "1,001" }{ "random" }{ "data" }{ "placeholder" }{ "text" }
{ "1,015" }{ "random" }{ "tabular" }{ "information" }{ "text" }
+
+ + } + } +} diff --git a/kanidmd_web_ui/src/views/components.rs b/kanidmd_web_ui/src/views/components.rs new file mode 100644 index 000000000..8b1378917 --- /dev/null +++ b/kanidmd_web_ui/src/views/components.rs @@ -0,0 +1 @@ + diff --git a/kanidmd_web_ui/src/views/mod.rs b/kanidmd_web_ui/src/views/mod.rs index 701ea74c6..89700f788 100644 --- a/kanidmd_web_ui/src/views/mod.rs +++ b/kanidmd_web_ui/src/views/mod.rs @@ -6,6 +6,28 @@ use yew::prelude::*; use crate::manager::Route; use yew_router::prelude::*; +use serde::{Deserialize, Serialize}; + +mod apps; +mod components; +mod security; + +use apps::AppsApp; +use security::SecurityApp; + +#[derive(Routable, PartialEq, Clone, Debug, Serialize, Deserialize)] +pub enum ViewRoute { + #[at("/ui/view/apps")] + Apps, + + #[at("/ui/view/security")] + Security, + + #[not_found] + #[at("/ui/view/404")] + NotFound, +} + enum State { LoginRequired, Authenticated(String), @@ -19,6 +41,17 @@ pub enum ViewsMsg { Logout, } +fn switch(route: &ViewRoute) -> Html { + console::log!("views::switch"); + match route { + ViewRoute::Apps => html! { }, + ViewRoute::Security => html! { }, + ViewRoute::NotFound => html! { + to={Route::NotFound}/> + }, + } +} + impl Component for ViewsApp { type Message = ViewsMsg; type Properties = (); @@ -56,7 +89,17 @@ impl Component for ViewsApp { fn view(&self, ctx: &Context) -> Html { match self.state { State::LoginRequired => { - models::push_return_location(models::Location::Views); + // Where are we? + let loc = ctx + .link() + .history() + .expect_throw("failed to read history") + .location() + .route() + .expect_throw("invalid route"); + + models::push_return_location(models::Location::Views(loc)); + ctx.link() .history() .expect_throw("failed to read history") @@ -90,47 +133,27 @@ impl ViewsApp {
-

{ "Section title" }

-
- - - - - - - - - - - - - - - - - - - - - - - - - - -
{ "#" }{ "Header" }{ "Header" }{ "Header" }{ "Header" }
{ "1,001" }{ "random" }{ "data" }{ "placeholder" }{ "text" }
{ "1,015" }{ "random" }{ "tabular" }{ "information" }{ "text" }
-
+ render={ Switch::render(switch) } />
diff --git a/kanidmd_web_ui/src/views/security.rs b/kanidmd_web_ui/src/views/security.rs new file mode 100644 index 000000000..f718c476e --- /dev/null +++ b/kanidmd_web_ui/src/views/security.rs @@ -0,0 +1,46 @@ +use gloo::console; +use yew::prelude::*; + +pub enum Msg { + // Nothing +} + +pub struct SecurityApp {} + +impl Component for SecurityApp { + type Message = Msg; + type Properties = (); + + fn create(_ctx: &Context) -> Self { + console::log!("views::security::create"); + SecurityApp {} + } + + fn changed(&mut self, _ctx: &Context) -> bool { + console::log!("views::security::changed"); + false + } + + fn update(&mut self, _ctx: &Context, _msg: Self::Message) -> bool { + console::log!("views::security::update"); + /* + match msg { + ViewsMsg::Logout => { + } + } + */ + true + } + + fn rendered(&mut self, _ctx: &Context, _first_render: bool) { + console::log!("views::security::rendered"); + } + + fn view(&self, _ctx: &Context) -> Html { + html! { +
+

{ "Security" }

+
+ } + } +} diff --git a/orca/Cargo.toml b/orca/Cargo.toml index 0d79b9052..072ee5097 100644 --- a/orca/Cargo.toml +++ b/orca/Cargo.toml @@ -2,7 +2,7 @@ name = "orca" version = "1.1.0-alpha.7" authors = ["William Brown "] -edition = "2018" +edition = "2021" license = "MPL-2.0" description = "Orca - load testing for LDAP and Kanidm" documentation = "https://docs.rs/kanidm/latest/kanidm/" @@ -45,3 +45,5 @@ async-std = { version = "1.6", features = ["tokio1"] } mathru = "0.11" +[build-dependencies] +profiles = { path = "../profiles" } diff --git a/orca/build.rs b/orca/build.rs new file mode 100644 index 000000000..5a19158c1 --- /dev/null +++ b/orca/build.rs @@ -0,0 +1,3 @@ +fn main() { + profiles::apply_profile(); +} diff --git a/platform/opensuse/kanidm-unixd-tasks.service b/platform/opensuse/kanidm-unixd-tasks.service index 9bbe8078a..17b2ff865 100644 --- a/platform/opensuse/kanidm-unixd-tasks.service +++ b/platform/opensuse/kanidm-unixd-tasks.service @@ -11,6 +11,7 @@ After=chronyd.service ntpd.service network-online.target kanidm-unixd.service User=root Type=simple ExecStart=/usr/sbin/kanidm_unixd_tasks +KillSignal=SIGINT CapabilityBoundingSet=CAP_CHOWN CAP_FOWNER CAP_DAC_OVERRIDE CAP_DAC_READ_SEARCH # SystemCallFilter=@aio @basic-io @chown @file-system @io-event @network-io @sync diff --git a/platform/opensuse/kanidm-unixd.service b/platform/opensuse/kanidm-unixd.service index 33ae50fea..187a0abe2 100644 --- a/platform/opensuse/kanidm-unixd.service +++ b/platform/opensuse/kanidm-unixd.service @@ -14,6 +14,7 @@ RuntimeDirectory=kanidm-unixd Type=simple ExecStart=/usr/sbin/kanidm_unixd +KillSignal=SIGINT # Implied by dynamic user. # ProtectHome= diff --git a/platform/opensuse/kanidmd.service b/platform/opensuse/kanidmd.service index 9bc7089b9..471e081f0 100644 --- a/platform/opensuse/kanidmd.service +++ b/platform/opensuse/kanidmd.service @@ -13,6 +13,7 @@ DynamicUser=yes UMask=0027 StateDirectory=kanidm ExecStart=/usr/sbin/kanidmd server -c /etc/kanidm/server.toml +KillSignal=SIGINT NoNewPrivileges=true PrivateTmp=true diff --git a/profiles/Cargo.toml b/profiles/Cargo.toml new file mode 100644 index 000000000..1a52d4420 --- /dev/null +++ b/profiles/Cargo.toml @@ -0,0 +1,23 @@ +[package] +name = "profiles" +version = "1.1.0" +authors = ["William Brown "] +edition = "2021" +license = "MPL-2.0" +description = "Kanidm Build System Profiles" +documentation = "https://docs.rs/kanidm/latest/kanidm/" +homepage = "https://github.com/kanidm/kanidm/" +repository = "https://github.com/kanidm/kanidm/" + +[lib] +name = "profiles" +path = "src/lib.rs" + +[dependencies] +serde = { version = "1", features = ["derive"] } +toml = "0.5" +base64 = "0.13" +rustc_version = "0.4.0" + +[build-dependencies] +base64 = "0.13" diff --git a/profiles/RUST_MSRV b/profiles/RUST_MSRV new file mode 100644 index 000000000..79f82f6b8 --- /dev/null +++ b/profiles/RUST_MSRV @@ -0,0 +1 @@ +1.58.0 diff --git a/profiles/build.rs b/profiles/build.rs new file mode 100644 index 000000000..172c6b2be --- /dev/null +++ b/profiles/build.rs @@ -0,0 +1,27 @@ +use std::env; +use std::fs; +use std::path::PathBuf; + +fn main() { + println!("cargo:rerun-if-changed=RUST_MSRV"); + println!("cargo:rerun-if-env-changed=KANIDM_BUILD_PROFILE"); + + let rust_minver = include_str!("RUST_MSRV"); + + let profile = env::var("KANIDM_BUILD_PROFILE").unwrap_or_else(|_| "developer".to_string()); + + let profile_path: PathBuf = ["./", format!("{}.toml", profile).as_str()] + .iter() + .collect(); + + let data = + fs::read(&profile_path).unwrap_or_else(|_| panic!("Failed to read {:?}", profile_path)); + + let contents = base64::encode(data); + + println!("cargo:rerun-if-changed={}", profile_path.to_str().unwrap()); + + println!("cargo:rustc-env=KANIDM_BUILD_PROFILE={}", profile); + println!("cargo:rustc-env=KANIDM_BUILD_PROFILE_TOML={}", contents); + println!("cargo:rustc-env=KANIDM_RUST_MSRV={}", rust_minver); +} diff --git a/profiles/developer.toml b/profiles/developer.toml index 6127af4f9..cf26cc86b 100644 --- a/profiles/developer.toml +++ b/profiles/developer.toml @@ -1,3 +1,3 @@ -web_ui_pkg_path = "../kanidmd_web_ui/pkg" +web_ui_pkg_path = "../../kanidmd_web_ui/pkg" # Valid options are none, native, x86_64, x86_64_v3 cpu_flags = "native" diff --git a/profiles/src/lib.rs b/profiles/src/lib.rs new file mode 100644 index 000000000..44fa0e5f4 --- /dev/null +++ b/profiles/src/lib.rs @@ -0,0 +1,74 @@ +use rustc_version::{version, Version}; +use serde::Deserialize; +use std::env; + +#[derive(Debug, Deserialize)] +#[allow(non_camel_case_types)] +enum CpuOptLevel { + none, + native, + x86_64_v1, + x86_64_v3, +} + +impl std::fmt::Display for CpuOptLevel { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + match &self { + CpuOptLevel::none => write!(f, "none"), + CpuOptLevel::native => write!(f, "native"), + CpuOptLevel::x86_64_v1 => write!(f, "x86_64_v1"), + CpuOptLevel::x86_64_v3 => write!(f, "x86_64_v3"), + } + } +} + +#[derive(Debug, Deserialize)] +struct ProfileConfig { + web_ui_pkg_path: String, + cpu_flags: CpuOptLevel, +} + +pub fn apply_profile() { + println!("cargo:rerun-if-env-changed=KANIDM_RUST_MSRV"); + println!("cargo:rerun-if-env-changed=KANIDM_BUILD_PROFILE"); + println!("cargo:rerun-if-env-changed=KANIDM_BUILD_PROFILE_TOML"); + + // check to see if the rust version matches the rust minimum version we require for this build + let rust_minver = env!("KANIDM_RUST_MSRV"); + let required_rust_ver = Version::parse(&rust_minver.replace("\n", "")).unwrap(); + println!("Rust version: {}", version().unwrap()); + println!("Required version: {}", required_rust_ver); + if version().unwrap() < required_rust_ver { + panic!("This crate requires rustc >= {}, quitting.", rust_minver); + } + + // transform any requested paths for our server. We do this by reading + // our profile that we have been provided. + let profile = env!("KANIDM_BUILD_PROFILE"); + let contents = env!("KANIDM_BUILD_PROFILE_TOML"); + + let data = base64::decode(contents) + .unwrap_or_else(|_| panic!("Failed to parse profile - {} - {}", profile, contents)); + + let profile_cfg: ProfileConfig = toml::from_slice(&data) + .unwrap_or_else(|_| panic!("Failed to parse profile - {} - {}", profile, contents)); + + /* + * x86-64: CMOV, CMPXCHG8B, FPU, FXSR, MMX, FXSR, SCE, SSE, SSE2 + * x86-64-v2: (close to Nehalem) CMPXCHG16B, LAHF-SAHF, POPCNT, SSE3, SSE4.1, SSE4.2, SSSE3 + * x86-64-v3: (close to Haswell) AVX, AVX2, BMI1, BMI2, F16C, FMA, LZCNT, MOVBE, XSAVE + */ + + match profile_cfg.cpu_flags { + CpuOptLevel::none => {} + CpuOptLevel::native => println!("cargo:rustc-env=RUSTFLAGS=-Ctarget-cpu=native"), + CpuOptLevel::x86_64_v1 => println!("cargo:rustc-env=RUSTFLAGS=-Ctarget-feature=+cmov,+cx8,+fxsr,+mmx,+sse,+sse2"), + CpuOptLevel::x86_64_v3 => println!("cargo:rustc-env=RUSTFLAGS=-Ctarget-feature=+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+cx16,+sahf,+popcnt,+sse3,+sse4.1,+sse4.2,+avx,+avx2,+bmi,+bmi2,+f16c,+fma,+lzcnt,+movbe,+xsave"), + } + println!("cargo:rustc-env=KANIDM_PROFILE_NAME={}", profile); + println!("cargo:rustc-env=KANIDM_CPU_FLAGS={}", profile_cfg.cpu_flags); + println!( + "cargo:rustc-env=KANIDM_WEB_UI_PKG_PATH={}", + profile_cfg.web_ui_pkg_path + ); +} diff --git a/profiles/syntax.rs b/profiles/syntax.rs deleted file mode 100644 index b3ba69def..000000000 --- a/profiles/syntax.rs +++ /dev/null @@ -1,26 +0,0 @@ -#[derive(Debug, Deserialize)] -#[allow(non_camel_case_types)] -enum CpuOptLevel { - none, - native, - x86_64_v1, - x86_64_v3, -} - -impl std::fmt::Display for CpuOptLevel { - fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - match &self { - CpuOptLevel::none => write!(f, "none"), - CpuOptLevel::native => write!(f, "native"), - CpuOptLevel::x86_64_v1 => write!(f, "x86_64_v1"), - CpuOptLevel::x86_64_v3 => write!(f, "x86_64_v3"), - } - } -} - -#[derive(Debug, Deserialize)] -struct ProfileConfig { - web_ui_pkg_path: String, - cpu_flags: CpuOptLevel, -} -