소스 검색

Adding starttls support

clement 1 년 전
부모
커밋
461dc146bf
3개의 변경된 파일8개의 추가작업 그리고 3개의 파일을 삭제
  1. 5 2
      src/ldap/pool.rs
  2. 1 0
      src/main.rs
  3. 2 1
      src/settings.toml.example

+ 5 - 2
src/ldap/pool.rs

@@ -1,4 +1,4 @@
-use ldap3::{Ldap, LdapConnAsync, LdapError};
+use ldap3::{Ldap, LdapConnAsync, LdapConnSettings, LdapError};
 use deadpool::managed::{self, Pool};
 
 #[derive(Clone)]
@@ -8,6 +8,7 @@ pub struct LdapConfig {
     pub basedn: String,
     pub binddn: String,
     pub bindpw: String,
+    pub starttls: bool,
 }
 
 pub struct LdapManager {config: LdapConfig}
@@ -23,8 +24,10 @@ impl managed::Manager for LdapManager {
     type Error = LdapError;
 
     async fn create(&self) -> Result<Self::Type, Self::Error> {
+        let ldap_settings = LdapConnSettings::new()
+        .set_starttls(self.config.starttls);
         let ldap_url = format!("ldap://{}:{}", self.config.hostname, self.config.port);
-        let (conn, ldap) = LdapConnAsync::new(&ldap_url)
+        let (conn, ldap) = LdapConnAsync::with_settings(ldap_settings, &ldap_url)
         .await?;
         ldap3::drive!(conn);
         Ok(ldap)

+ 1 - 0
src/main.rs

@@ -23,6 +23,7 @@ async fn main() -> std::io::Result<()> {
         basedn: settings.get("basedn").unwrap(),
         binddn: settings.get("binddn").unwrap(),
         bindpw: settings.get("bindpw").unwrap(),
+        starttls: settings.get("starttls").unwrap(),
     };
 
     let ldap_wrapper = LdapWrapper::new(config);

+ 2 - 1
src/settings.toml.example

@@ -2,4 +2,5 @@ hostname = "example.com"
 port = "389"
 basedn = "ou=people,dc=example,dc=com"
 binddn = ""
-bindpw = ""
+bindpw = ""
+starttls = false