use URIs instead of hostname/port

This commit is contained in:
Ralf Haferkamp 2007-10-17 17:07:05 +00:00
parent f3c2c29f69
commit 029a05a8d5
2 changed files with 29 additions and 21 deletions

View File

@ -49,22 +49,26 @@ void LDAPAsynConnection::init(const string& hostname, int port){
" hostname:" << hostname << endl
<< " port:" << port << endl);
char* ldapuri;
LDAPURLDesc url;
memset( &url, 0, sizeof(url));
url.lud_scheme = strdup("ldap");
url.lud_host = strdup(hostname.c_str());
url.lud_port = port;
url.lud_scope = LDAP_SCOPE_DEFAULT;
ldapuri = ldap_url_desc2str( &url );
m_uri.setScheme("ldap");
m_uri.setHost(hostname);
m_uri.setPort(port);
const char *ldapuri = m_uri.getURLString().c_str();
int ret = ldap_initialize(&cur_session, ldapuri);
if ( ret != LDAP_SUCCESS ) {
throw LDAPException( ret );
}
m_host=hostname;
m_port=port;
int opt=3;
ldap_set_option(cur_session, LDAP_OPT_REFERRALS, LDAP_OPT_OFF);
ldap_set_option(cur_session, LDAP_OPT_PROTOCOL_VERSION, &opt);
}
void LDAPAsynConnection::initialize(const std::string& uri){
m_uri.setURLString(uri);
int ret = ldap_initialize(&cur_session, m_uri.getURLString().c_str());
if ( ret != LDAP_SUCCESS ) {
throw LDAPException( ret );
}
int opt=3;
ldap_set_option(cur_session, LDAP_OPT_REFERRALS, LDAP_OPT_OFF);
ldap_set_option(cur_session, LDAP_OPT_PROTOCOL_VERSION, &opt);
@ -250,12 +254,12 @@ LDAP* LDAPAsynConnection::getSessionHandle() const{
const string& LDAPAsynConnection::getHost() const{
DEBUG(LDAP_DEBUG_TRACE,"LDAPAsynConnection::setHost()" << endl);
return m_host;
return m_uri.getHost();
}
int LDAPAsynConnection::getPort() const{
DEBUG(LDAP_DEBUG_TRACE,"LDAPAsynConnection::getPort()" << endl);
return m_port;
return m_uri.getPort();
}
LDAPAsynConnection* LDAPAsynConnection::referralConnect(

View File

@ -88,6 +88,15 @@ class LDAPAsynConnection{
*/
void init(const std::string& hostname, int port);
/**
* Initializes a connection to a server.
*
* There actually no communication to the server. Just the
* object is initialized
* @param uri The LDAP-Uri for the destination
*/
void initialize(const std::string& uri);
/**
* Start TLS on this connection. This isn't in the constructor,
* because it could fail (i.e. server doesn't have SSL cert, client
@ -306,14 +315,9 @@ class LDAPAsynConnection{
LDAPConstraints *m_constr;
/**
* The name of the destination host
* The URI of this connection
*/
std::string m_host;
/**
* The port the destination server is running on.
*/
int m_port;
LDAPUrl m_uri;
protected:
/**