|
|
|
@ -2847,6 +2847,74 @@ int LDAPManager::setRealmCAMaster(TQString masterFQDN, TQString* errstr) {
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
int LDAPManager::getLdapCertificateStoreAttribute(TQString attribute, TQString* value, TQString* errstr) {
|
|
|
|
|
int retcode;
|
|
|
|
|
int returncode;
|
|
|
|
|
LDAPTDEBuiltinsInfo builtininfo;
|
|
|
|
|
|
|
|
|
|
TQString dn = TQString("cn=certificate store,o=tde,cn=tde realm data,ou=master services,ou=core,ou=realm,%1").arg(m_basedc);
|
|
|
|
|
|
|
|
|
|
if (!value) {
|
|
|
|
|
if (errstr) *errstr = i18n("Invalid string handle passed by host application");
|
|
|
|
|
return -1;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (bind(errstr) < 0) {
|
|
|
|
|
return -1;
|
|
|
|
|
}
|
|
|
|
|
else {
|
|
|
|
|
LDAPMessage* msg;
|
|
|
|
|
retcode = ldap_search_ext_s(m_ldap, dn.ascii(), LDAP_SCOPE_SUBTREE, NULL, ldap_user_and_operational_attributes, 0, NULL, NULL, NULL, 0, &msg);
|
|
|
|
|
if (retcode != LDAP_SUCCESS) {
|
|
|
|
|
if (errstr) *errstr = i18n("<qt>LDAP search failure<p>Reason: [%3] %4</qt>").arg(retcode).arg(ldap_err2string(retcode));
|
|
|
|
|
else KMessageBox::error(0, i18n("<qt>LDAP search failure<p>Reason: [%3] %4</qt>").arg(retcode).arg(ldap_err2string(retcode)), i18n("LDAP Error"));
|
|
|
|
|
return -1;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
returncode = -2;
|
|
|
|
|
|
|
|
|
|
// Iterate through the returned entries
|
|
|
|
|
LDAPMessage* entry;
|
|
|
|
|
for(entry = ldap_first_entry(m_ldap, msg); entry != NULL; entry = ldap_next_entry(m_ldap, entry)) {
|
|
|
|
|
char* attr;
|
|
|
|
|
struct berval **vals;
|
|
|
|
|
BerElement* ber;
|
|
|
|
|
int i;
|
|
|
|
|
|
|
|
|
|
LDAPTDEBuiltinsInfo builtininfo;
|
|
|
|
|
|
|
|
|
|
for( attr = ldap_first_attribute(m_ldap, entry, &ber); attr != NULL; attr = ldap_next_attribute(m_ldap, entry, ber)) {
|
|
|
|
|
if ((vals = ldap_get_values_len(m_ldap, entry, attr)) != NULL) {
|
|
|
|
|
builtininfo.informationValid = true;
|
|
|
|
|
TQString ldap_field = attr;
|
|
|
|
|
i=0;
|
|
|
|
|
if (ldap_field == attribute) {
|
|
|
|
|
*value = vals[i]->bv_val;
|
|
|
|
|
returncode = 0;
|
|
|
|
|
}
|
|
|
|
|
ldap_value_free_len(vals);
|
|
|
|
|
}
|
|
|
|
|
ldap_memfree(attr);
|
|
|
|
|
}
|
|
|
|
|
if (returncode != 0) {
|
|
|
|
|
// Resource not found
|
|
|
|
|
if (errstr) *errstr = i18n("Resource \"%s\" not found in LDAP certificate store").arg(attribute);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (ber != NULL) {
|
|
|
|
|
ber_free(ber, 0);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// clean up
|
|
|
|
|
ldap_msgfree(msg);
|
|
|
|
|
|
|
|
|
|
return returncode;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return -1;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
int LDAPManager::setLdapCertificateStoreAttribute(TQString attribute, TQString value, TQString* errstr) {
|
|
|
|
|
int retcode;
|
|
|
|
|
int i;
|
|
|
|
|