From cac9152d27bccf8b1efbc24b5fdff73e32c4e99e Mon Sep 17 00:00:00 2001 From: mdecimus Date: Fri, 31 Jan 2025 09:25:03 +0100 Subject: [PATCH] Open source third party OIDC support --- crates/directory/src/backend/mod.rs | 1 - crates/directory/src/backend/oidc/config.rs | 6 +----- crates/directory/src/backend/oidc/lookup.rs | 6 +----- crates/directory/src/backend/oidc/mod.rs | 6 +----- crates/directory/src/core/config.rs | 13 ++++--------- crates/directory/src/core/dispatch.rs | 18 +----------------- 6 files changed, 8 insertions(+), 42 deletions(-) diff --git a/crates/directory/src/backend/mod.rs b/crates/directory/src/backend/mod.rs index 35fc3c2a..2058580a 100644 --- a/crates/directory/src/backend/mod.rs +++ b/crates/directory/src/backend/mod.rs @@ -8,7 +8,6 @@ pub mod imap; pub mod internal; pub mod ldap; pub mod memory; -#[cfg(feature = "enterprise")] pub mod oidc; pub mod smtp; pub mod sql; diff --git a/crates/directory/src/backend/oidc/config.rs b/crates/directory/src/backend/oidc/config.rs index 28262cda..583e6205 100644 --- a/crates/directory/src/backend/oidc/config.rs +++ b/crates/directory/src/backend/oidc/config.rs @@ -1,11 +1,7 @@ /* * SPDX-FileCopyrightText: 2020 Stalwart Labs Ltd * - * SPDX-License-Identifier: LicenseRef-SEL - * - * This file is subject to the Stalwart Enterprise License Agreement (SEL) and - * is NOT open source software. - * + * SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-SEL */ use std::time::Duration; diff --git a/crates/directory/src/backend/oidc/lookup.rs b/crates/directory/src/backend/oidc/lookup.rs index 51ceb140..49253dd3 100644 --- a/crates/directory/src/backend/oidc/lookup.rs +++ b/crates/directory/src/backend/oidc/lookup.rs @@ -1,11 +1,7 @@ /* * SPDX-FileCopyrightText: 2020 Stalwart Labs Ltd * - * SPDX-License-Identifier: LicenseRef-SEL - * - * This file is subject to the Stalwart Enterprise License Agreement (SEL) and - * is NOT open source software. - * + * SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-SEL */ use ahash::HashMap; diff --git a/crates/directory/src/backend/oidc/mod.rs b/crates/directory/src/backend/oidc/mod.rs index e519815c..7956f6ba 100644 --- a/crates/directory/src/backend/oidc/mod.rs +++ b/crates/directory/src/backend/oidc/mod.rs @@ -1,11 +1,7 @@ /* * SPDX-FileCopyrightText: 2020 Stalwart Labs Ltd * - * SPDX-License-Identifier: LicenseRef-SEL - * - * This file is subject to the Stalwart Enterprise License Agreement (SEL) and - * is NOT open source software. - * + * SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-SEL */ pub mod config; diff --git a/crates/directory/src/core/config.rs b/crates/directory/src/core/config.rs index 2751dee3..dfb7bf9b 100644 --- a/crates/directory/src/core/config.rs +++ b/crates/directory/src/core/config.rs @@ -16,8 +16,8 @@ use ahash::AHashMap; use crate::{ backend::{ - imap::ImapDirectory, ldap::LdapDirectory, memory::MemoryDirectory, smtp::SmtpDirectory, - sql::SqlDirectory, + imap::ImapDirectory, ldap::LdapDirectory, memory::MemoryDirectory, oidc::OpenIdDirectory, + smtp::SmtpDirectory, sql::SqlDirectory, }, Directories, Directory, DirectoryInner, }; @@ -84,13 +84,8 @@ impl Directories { "memory" => MemoryDirectory::from_config(config, prefix, data_store.clone()) .await .map(DirectoryInner::Memory), - #[cfg(feature = "enterprise")] - "oidc" => crate::backend::oidc::OpenIdDirectory::from_config( - config, - prefix, - data_store.clone(), - ) - .map(DirectoryInner::OpenId), + "oidc" => OpenIdDirectory::from_config(config, prefix, data_store.clone()) + .map(DirectoryInner::OpenId), unknown => { let err = format!("Unknown directory type: {unknown:?}"); config.new_parse_error(("directory", id, "type"), err); diff --git a/crates/directory/src/core/dispatch.rs b/crates/directory/src/core/dispatch.rs index 94c519a5..a99e54fe 100644 --- a/crates/directory/src/core/dispatch.rs +++ b/crates/directory/src/core/dispatch.rs @@ -24,7 +24,6 @@ impl Directory { DirectoryInner::Imap(store) => store.query(by).await, DirectoryInner::Smtp(store) => store.query(by).await, DirectoryInner::Memory(store) => store.query(by).await, - #[cfg(feature = "enterprise")] DirectoryInner::OpenId(store) => store.query(by, return_member_of).await, } .caused_by(trc::location!()) @@ -38,7 +37,6 @@ impl Directory { DirectoryInner::Imap(store) => store.email_to_id(address).await, DirectoryInner::Smtp(store) => store.email_to_id(address).await, DirectoryInner::Memory(store) => store.email_to_id(address).await, - #[cfg(feature = "enterprise")] DirectoryInner::OpenId(store) => store.email_to_id(address).await, } .caused_by(trc::location!()) @@ -59,7 +57,6 @@ impl Directory { DirectoryInner::Imap(store) => store.is_local_domain(domain).await, DirectoryInner::Smtp(store) => store.is_local_domain(domain).await, DirectoryInner::Memory(store) => store.is_local_domain(domain).await, - #[cfg(feature = "enterprise")] DirectoryInner::OpenId(store) => store.is_local_domain(domain).await, } .caused_by(trc::location!())?; @@ -87,7 +84,6 @@ impl Directory { DirectoryInner::Imap(store) => store.rcpt(email).await, DirectoryInner::Smtp(store) => store.rcpt(email).await, DirectoryInner::Memory(store) => store.rcpt(email).await, - #[cfg(feature = "enterprise")] DirectoryInner::OpenId(store) => store.rcpt(email).await, } .caused_by(trc::location!())?; @@ -108,7 +104,6 @@ impl Directory { DirectoryInner::Imap(store) => store.vrfy(address).await, DirectoryInner::Smtp(store) => store.vrfy(address).await, DirectoryInner::Memory(store) => store.vrfy(address).await, - #[cfg(feature = "enterprise")] DirectoryInner::OpenId(store) => store.vrfy(address).await, } .caused_by(trc::location!()) @@ -122,7 +117,6 @@ impl Directory { DirectoryInner::Imap(store) => store.expn(address).await, DirectoryInner::Smtp(store) => store.expn(address).await, DirectoryInner::Memory(store) => store.expn(address).await, - #[cfg(feature = "enterprise")] DirectoryInner::OpenId(store) => store.expn(address).await, } .caused_by(trc::location!()) @@ -136,7 +130,6 @@ impl Directory { | DirectoryInner::Imap(_) | DirectoryInner::Smtp(_) | DirectoryInner::Memory(_) => false, - #[cfg(feature = "enterprise")] DirectoryInner::OpenId(_) => true, } } @@ -144,15 +137,6 @@ impl Directory { impl DirectoryInner { pub fn is_enterprise_directory(&self) -> bool { - match self { - DirectoryInner::Internal(_) - | DirectoryInner::Ldap(_) - | DirectoryInner::Sql(_) - | DirectoryInner::Imap(_) - | DirectoryInner::Smtp(_) - | DirectoryInner::Memory(_) => false, - #[cfg(feature = "enterprise")] - DirectoryInner::OpenId(_) => true, - } + false } }