directory-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Matt Doran <matt.do...@papercut.com>
Subject Re: Custom partition - obtaining network connection details
Date Mon, 29 Mar 2010 23:03:48 GMT
Hammond, Steven wrote:
> This is how I did it back in 1.5.3 (which I am still on until we get budget to move to
the present)
>
> A warning, at first I just had getAddress, but this caused a reverseDNS lookup and noticeable
slowness.
>
> In core\src\main\java\org\apache\directory\server\core\jndi\ServerContext.java  I added
 client_host and client_port:
>
>
>     protected NamingEnumeration<ServerSearchResult> doSearchOperation( LdapDN dn,
AliasDerefMode aliasDerefMode,
>         ExprNode filter, SearchControls searchControls, InetSocketAddress clientAddress,
>         DirContext dirCtx) throws NamingException
>     {
>         // setup the op context and populate with request controls
>         SearchOperationContext opCtx = new SearchOperationContext( registries, dn, aliasDerefMode,
filter,
>             searchControls );
>
>         opCtx.put( "client_host", clientAddress.getAddress().getHostAddress() );
>         opCtx.put( "client_port", String.valueOf( clientAddress.getPort() ) );
>         opCtx.put( "client_JNDI_CXN", dirCtx );
>         opCtx.addRequestControls( requestControls );
>
>         // execute search operation
>         NamingEnumeration<ServerSearchResult> results = nexusProxy.search( opCtx
);
>
>         // clear the request controls and set the response controls 
>         requestControls = EMPTY_CONTROLS;
>         responseControls = opCtx.getResponseControls();
>
>         return results;
>     }
>
>
>
> Then in the my partition inside    public NamingEnumeration<ServerSearchResult>
search(SearchOperationContext arg0) I have:
>
>             ob = opContext.get("client_host");
>             if (ob != null)
>             {
>                String hostname = (String) ob;
>                ob = opContext.get("client_port");
>                String clientPort = (String) ob;
>
>   

Thanks for letting me know your approach.   It looks like thngs have 
changed a lot since then, the SearchOperationContext doesn't have a put 
method.   It seems that with Apache DS a minor point release means a big 
internal code change. :)

My approach has worked *OK* ... but it's not passing the connections 
details down to the authentication layer so I can use it in the bind 
operation.  I'll need to dig further to see if I can get this working.   
I'll update the Jira issue as I progress.

Matt

 

Mime
View raw message