ldap_rs/
lib.rs

1//!
2//! LDAP client library for Rust with async/await support, based on [tokio](https://tokio.rs).
3//! TLS connectivity is supported via [native-tls](https://crates.io/crates/native-tls) or [rustls](https://crates.io/crates/rustls).
4//! It is controlled by the feature flags `tls-native-tls` and `tls-rustls`, respectively.
5//!
6//! A minimal Kerberos support is provided via `gssapi` feature flag with the following limitations:
7//!
8//! * SASL protection is not supported for plain connections, use TLS connection.
9//! * Channel binding is not supported.
10//!
11//! Usage example:
12//! ```no_run
13//! use futures::TryStreamExt;
14//! use ldap_rs::{LdapClient, SearchRequest, SearchRequestDerefAliases, SearchRequestScope, TlsOptions};
15//!
16//! #[tokio::main]
17//! async fn main() -> Result<(), Box<dyn std::error::Error>> {
18//!     pretty_env_logger::init_timed();
19//!
20//!     let options = TlsOptions::tls();
21//!
22//!     let mut client = LdapClient::builder("ldap-host.local")
23//!         .tls_options(options)
24//!         .connect()
25//!         .await?;
26//!     client
27//!         .simple_bind("cn=read-only-admin,dc=example,dc=com", "password")
28//!         .await?;
29//!
30//!     let req = SearchRequest::builder()
31//!         .base_dn("dc=example,dc=com")
32//!         .scope(SearchRequestScope::WholeSubtree)
33//!         .deref_aliases(SearchRequestDerefAliases::NeverDerefAliases)
34//!         .filter("(&(objectClass=person)(uid=ne*t*n))")
35//!         .build()?;
36//!
37//!     let result = client.search(req).await?;
38//!     let items = result.try_collect::<Vec<_>>().await?;
39//!     println!("Items: {items:#?}");
40//!
41//!     Ok(())
42//! }
43
44#![allow(clippy::result_large_err)]
45
46pub use bytes;
47pub use rasn_ldap;
48
49pub use client::*;
50pub use model::*;
51pub use options::*;
52pub use request::*;
53
54mod codec;
55mod conn;
56mod filter;
57
58pub mod channel;
59pub mod client;
60pub mod controls;
61pub mod error;
62pub mod model;
63pub mod oid;
64pub mod options;
65pub mod request;