-rw-r--r-- | kabc/plugins/ldap/ldapE.pro | 2 | ||||
-rw-r--r-- | kabc/plugins/ldap/resourceldap.cpp | 7 | ||||
-rw-r--r-- | kabc/plugins/ldap/resourceldap.h | 2 |
3 files changed, 6 insertions, 5 deletions
diff --git a/kabc/plugins/ldap/ldapE.pro b/kabc/plugins/ldap/ldapE.pro index f6ca586..2e79fc0 100644 --- a/kabc/plugins/ldap/ldapE.pro +++ b/kabc/plugins/ldap/ldapE.pro @@ -1,21 +1,21 @@ TEMPLATE = lib CONFIG += qt warn_on release #release debug TARGET = microkabc_ldap -INCLUDEPATH += ../.. ../../../microkde ../../../microkde/kdecore ../../../microkde/kio/kfile ../../../qtcompat $(QPEDIR)/include +INCLUDEPATH += ../.. ../../../microkde ../../../microkde/kdecore ../../../microkde/kio/kfile ../../../microkde/kresources ../../../qtcompat $(QPEDIR)/include OBJECTS_DIR = obj/$(PLATFORM) MOC_DIR = moc/$(PLATFORM) DESTDIR = $(QPEDIR)/lib LIBS += -lmicrokde -lmicrokabc LIBS += -L$(QPEDIR)/lib INTERFACES = \ HEADERS = \ resourceldap.h \ resourceldapconfig.h SOURCES = \ resourceldap.cpp \ resourceldapconfig.cpp diff --git a/kabc/plugins/ldap/resourceldap.cpp b/kabc/plugins/ldap/resourceldap.cpp index 55c43af..4b9dede 100644 --- a/kabc/plugins/ldap/resourceldap.cpp +++ b/kabc/plugins/ldap/resourceldap.cpp @@ -1,183 +1,184 @@ /* This file is part of libkabc. Copyright (c) 2002 Tobias Koenig <tokoe@kde.org> This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with this library; see the file COPYING.LIB. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ /* Enhanced Version of the file for platform independent KDE tools. Copyright (c) 2004 Ulf Schenk $Id$ */ #include <kdebug.h> #include <kglobal.h> #include <klineedit.h> #include <klocale.h> #include <kconfig.h> #include <kstringhandler.h> #include <stdlib.h> #include "resourceldap.h" #include "resourceldapconfig.h" +#include "syncwidget.h" using namespace KABC; extern "C" { //US void *init_kabc_ldap() void *init_microkabc_ldap() { - return new KRES::PluginFactory<ResourceLDAP,ResourceLDAPConfig>(); + return new KRES::PluginFactory<ResourceLDAP,ResourceLDAPConfig, KRES::SyncWidget>(); } } void addModOp( LDAPMod ***pmods, const QString &attr, const QString &value ); -ResourceLDAP::ResourceLDAP( const KConfig *config ) - : Resource( config ), mPort( 389 ), mLdap( 0 ) +ResourceLDAP::ResourceLDAP( const KConfig *config, bool syncable ) + : Resource( config, syncable ), mPort( 389 ), mLdap( 0 ) { KConfig *cfg = (KConfig *)config; if ( cfg ) { mUser = cfg->readEntry( "LdapUser" ); mPassword = KStringHandler::obscure( cfg->readEntry( "LdapPassword" ) ); mDn = cfg->readEntry( "LdapDn" ); mHost = cfg->readEntry( "LdapHost" ); mPort = cfg->readNumEntry( "LdapPort", 389 ); mFilter = cfg->readEntry( "LdapFilter" ); mAnonymous = cfg->readBoolEntry( "LdapAnonymous" ); QStringList attributes = cfg->readListEntry( "LdapAttributes" ); for ( uint pos = 0; pos < attributes.count(); pos += 2 ) mAttributes.insert( attributes[ pos ], attributes[ pos + 1 ] ); } /** If you want to add new attributes, append them here, add a translation string in the ctor of AttributesDialog and handle them in the load() method below. These are the default values from */ if ( mAttributes.count() == 0 ) { mAttributes.insert( "commonName", "cn" ); mAttributes.insert( "formattedName", "displayName" ); mAttributes.insert( "familyName", "sn" ); mAttributes.insert( "givenName", "givenName" ); mAttributes.insert( "mail", "mail" ); mAttributes.insert( "mailAlias", "" ); mAttributes.insert( "phoneNumber", "telephoneNumber" ); mAttributes.insert( "uid", "uid" ); } } void ResourceLDAP::writeConfig( KConfig *config ) { Resource::writeConfig( config ); config->writeEntry( "LdapUser", mUser ); config->writeEntry( "LdapPassword", KStringHandler::obscure( mPassword ) ); config->writeEntry( "LdapDn", mDn ); config->writeEntry( "LdapHost", mHost ); config->writeEntry( "LdapPort", mPort ); config->writeEntry( "LdapFilter", mFilter ); config->writeEntry( "LdapAnonymous", mAnonymous ); QStringList attributes; QMap<QString, QString>::Iterator it; for ( it = mAttributes.begin(); it != mAttributes.end(); ++it ) attributes << it.key() << it.data(); config->writeEntry( "LdapAttributes", attributes ); } Ticket *ResourceLDAP::requestSaveTicket() { if ( !addressBook() ) { kdDebug(5700) << "no addressbook" << endl; return 0; } return createTicket( this ); } bool ResourceLDAP::doOpen() { if ( mLdap ) return false; if ( !mPort ) mPort = 389; mLdap = ldap_init( mHost.local8Bit(), mPort ); if ( !mLdap ) { addressBook()->error( i18n( "Unable to connect to server '%1' on port '%2'" ).arg( mHost ).arg( mPort ) ); return false; } if ( !mUser.isEmpty() && !mAnonymous ) { if ( ldap_simple_bind_s( mLdap, mUser.local8Bit(), mPassword.local8Bit() ) != LDAP_SUCCESS ) { addressBook()->error( i18n( "Unable to bind to server '%1'" ).arg( mHost ) ); return false; } kdDebug(5700) << "ResourceLDAP: bind to server successfully" << endl; } else { if ( ldap_simple_bind_s( mLdap, NULL, NULL ) != LDAP_SUCCESS ) { addressBook()->error( i18n( "Unable to bind anonymously to server '%1'" ).arg( mHost ) ); return false; } kdDebug( 5700 ) << "ResourceLDAP: bind anonymously to server successfully" << endl; } int deref = LDAP_DEREF_ALWAYS; if ( ldap_set_option( mLdap, LDAP_OPT_DEREF, (void *) &deref ) != LDAP_OPT_SUCCESS ) { kdDebug(5700) << "ResourceLDAP: can't set 'deref' option" << endl; return false; } if ( ldap_set_option( mLdap, LDAP_OPT_REFERRALS, LDAP_OPT_ON ) != LDAP_OPT_SUCCESS ) { kdDebug(5700) << "ResourceLDAP: can't set 'referrals' option" << endl; return false; } return true; } void ResourceLDAP::doClose() { if ( ldap_unbind_s( mLdap ) != LDAP_SUCCESS ) { kdDebug(5700) << "ResourceLDAP: can't unbind from server" << endl; return; } mLdap = 0; } bool ResourceLDAP::load() { LDAPMessage *res; LDAPMessage *msg; BerElement *track; char *names; char **values; char **LdapSearchAttr = new char*[ mAttributes.count() + 1 ]; diff --git a/kabc/plugins/ldap/resourceldap.h b/kabc/plugins/ldap/resourceldap.h index 0625f30..0aad3c1 100644 --- a/kabc/plugins/ldap/resourceldap.h +++ b/kabc/plugins/ldap/resourceldap.h @@ -1,99 +1,99 @@ /* This file is part of libkabc. Copyright (c) 2002 Tobias Koenig <tokoe@kde.org> This library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more details. You should have received a copy of the GNU Library General Public License along with this library; see the file COPYING.LIB. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ /* Enhanced Version of the file for platform independent KDE tools. Copyright (c) 2004 Ulf Schenk $Id$ */ #ifndef KABC_RESOURCELDAP_H #define KABC_RESOURCELDAP_H #include <lber.h> #include <ldap.h> #include "addressbook.h" #include "resource.h" class KConfig; namespace KABC { class ResourceLDAP : public Resource { public: - ResourceLDAP( const KConfig* ); + ResourceLDAP( const KConfig*, bool syncable ); virtual void writeConfig( KConfig* ); virtual bool doOpen(); virtual void doClose(); virtual Ticket *requestSaveTicket(); virtual bool load(); virtual bool save( Ticket * ); virtual void removeAddressee( const Addressee& addr ); void setUser( const QString &user ); QString user() const; void setPassword( const QString &password ); QString password() const; void setDn( const QString &dn ); QString dn() const; void setHost( const QString &host ); QString host() const; void setPort( int port ); int port() const; void setFilter( const QString &filter ); QString filter() const; void setIsAnonymous( bool value ); bool isAnonymous() const; void setAttributes( const QMap<QString, QString> &attributes ); QMap<QString, QString> attributes() const; private: QString mUser; QString mPassword; QString mDn; QString mHost; QString mFilter; int mPort; bool mAnonymous; QMap<QString, QString> mAttributes; LDAP *mLdap; }; } #endif |