mirror of
				https://github.com/nitnelave/lldap.git
				synced 2023-04-12 14:25:13 +00:00 
			
		
		
		
	ldap: Improve debug messages
This commit is contained in:
		
							parent
							
								
									a6f8ba45b6
								
							
						
					
					
						commit
						08d0a1dc5b
					
				@ -12,7 +12,7 @@ use ldap3_server::proto::{
 | 
				
			|||||||
    LdapFilter, LdapOp, LdapPartialAttribute, LdapPasswordModifyRequest, LdapResult,
 | 
					    LdapFilter, LdapOp, LdapPartialAttribute, LdapPasswordModifyRequest, LdapResult,
 | 
				
			||||||
    LdapResultCode, LdapSearchRequest, LdapSearchResultEntry, LdapSearchScope,
 | 
					    LdapResultCode, LdapSearchRequest, LdapSearchResultEntry, LdapSearchScope,
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
use log::*;
 | 
					use log::{debug, warn};
 | 
				
			||||||
use std::convert::TryFrom;
 | 
					use std::convert::TryFrom;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
fn make_dn_pair<I>(mut iter: I) -> Result<(String, String)>
 | 
					fn make_dn_pair<I>(mut iter: I) -> Result<(String, String)>
 | 
				
			||||||
@ -290,7 +290,7 @@ impl<Backend: BackendHandler + LoginHandler + OpaqueHandler> LdapHandler<Backend
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    pub async fn do_bind(&mut self, request: &LdapBindRequest) -> (LdapResultCode, String) {
 | 
					    pub async fn do_bind(&mut self, request: &LdapBindRequest) -> (LdapResultCode, String) {
 | 
				
			||||||
        info!(r#"Received bind request for "{}""#, &request.dn);
 | 
					        debug!(r#"Received bind request for "{}""#, &request.dn);
 | 
				
			||||||
        let user_id = match get_user_id_from_distinguished_name(
 | 
					        let user_id = match get_user_id_from_distinguished_name(
 | 
				
			||||||
            &request.dn,
 | 
					            &request.dn,
 | 
				
			||||||
            &self.base_dn,
 | 
					            &self.base_dn,
 | 
				
			||||||
@ -396,10 +396,10 @@ impl<Backend: BackendHandler + LoginHandler + OpaqueHandler> LdapHandler<Backend
 | 
				
			|||||||
            && request.scope == LdapSearchScope::Base
 | 
					            && request.scope == LdapSearchScope::Base
 | 
				
			||||||
            && request.filter == LdapFilter::Present("objectClass".to_string())
 | 
					            && request.filter == LdapFilter::Present("objectClass".to_string())
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            info!("Received rootDSE request");
 | 
					            debug!("Received rootDSE request");
 | 
				
			||||||
            return vec![root_dse_response(&self.base_dn_str), make_search_success()];
 | 
					            return vec![root_dse_response(&self.base_dn_str), make_search_success()];
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        info!("Received search request: {:?}", &request);
 | 
					        debug!("Received search request: {:?}", &request);
 | 
				
			||||||
        let dn_parts = match parse_distinguished_name(&request.base) {
 | 
					        let dn_parts = match parse_distinguished_name(&request.base) {
 | 
				
			||||||
            Ok(dn) => dn,
 | 
					            Ok(dn) => dn,
 | 
				
			||||||
            Err(_) => {
 | 
					            Err(_) => {
 | 
				
			||||||
@ -411,6 +411,10 @@ impl<Backend: BackendHandler + LoginHandler + OpaqueHandler> LdapHandler<Backend
 | 
				
			|||||||
        };
 | 
					        };
 | 
				
			||||||
        if !is_subtree(&dn_parts, &self.base_dn) {
 | 
					        if !is_subtree(&dn_parts, &self.base_dn) {
 | 
				
			||||||
            // Search path is not in our tree, just return an empty success.
 | 
					            // Search path is not in our tree, just return an empty success.
 | 
				
			||||||
 | 
					            warn!(
 | 
				
			||||||
 | 
					                "The specified search tree {:?} is not under the common subtree {:?}",
 | 
				
			||||||
 | 
					                &dn_parts, &self.base_dn
 | 
				
			||||||
 | 
					            );
 | 
				
			||||||
            return vec![make_search_success()];
 | 
					            return vec![make_search_success()];
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        let mut results = Vec::new();
 | 
					        let mut results = Vec::new();
 | 
				
			||||||
@ -1278,6 +1282,20 @@ mod tests {
 | 
				
			|||||||
        );
 | 
					        );
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    #[tokio::test]
 | 
				
			||||||
 | 
					    async fn test_search_wrong_base() {
 | 
				
			||||||
 | 
					        let mut ldap_handler = setup_bound_handler(MockTestBackendHandler::new()).await;
 | 
				
			||||||
 | 
					        let request = make_search_request(
 | 
				
			||||||
 | 
					            "ou=users,dc=example,dc=com",
 | 
				
			||||||
 | 
					            LdapFilter::And(vec![]),
 | 
				
			||||||
 | 
					            vec!["objectClass"],
 | 
				
			||||||
 | 
					        );
 | 
				
			||||||
 | 
					        assert_eq!(
 | 
				
			||||||
 | 
					            ldap_handler.do_search(&request).await,
 | 
				
			||||||
 | 
					            vec![make_search_success()]
 | 
				
			||||||
 | 
					        );
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    #[tokio::test]
 | 
					    #[tokio::test]
 | 
				
			||||||
    async fn test_search_unsupported_filters() {
 | 
					    async fn test_search_unsupported_filters() {
 | 
				
			||||||
        let mut ldap_handler = setup_bound_handler(MockTestBackendHandler::new()).await;
 | 
					        let mut ldap_handler = setup_bound_handler(MockTestBackendHandler::new()).await;
 | 
				
			||||||
 | 
				
			|||||||
@ -29,6 +29,9 @@ where
 | 
				
			|||||||
    match session.handle_ldap_message(msg.op).await {
 | 
					    match session.handle_ldap_message(msg.op).await {
 | 
				
			||||||
        None => return Ok(false),
 | 
					        None => return Ok(false),
 | 
				
			||||||
        Some(result) => {
 | 
					        Some(result) => {
 | 
				
			||||||
 | 
					            if result.is_empty() {
 | 
				
			||||||
 | 
					                debug!("No response");
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
            for result_op in result.into_iter() {
 | 
					            for result_op in result.into_iter() {
 | 
				
			||||||
                debug!("Replying with LDAP op: {:?}", &result_op);
 | 
					                debug!("Replying with LDAP op: {:?}", &result_op);
 | 
				
			||||||
                resp.send(LdapMsg {
 | 
					                resp.send(LdapMsg {
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user