00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
#ifndef KABC_RESOURCELDAP_H
00023
#define KABC_RESOURCELDAP_H
00024
00025
#include <kabc/resource.h>
00026
#include <kabc/ldif.h>
00027
#include <kio/job.h>
00028
00029
class KConfig;
00030
00031
namespace KABC {
00032
00033
class KABC_EXPORT ResourceLDAPKIO :
public Resource
00034 {
00035 Q_OBJECT
00036
00037
public:
00038
enum CachePolicy{ Cache_No, Cache_NoConnection, Cache_Always };
00039
00040 ResourceLDAPKIO(
const KConfig* );
00041
virtual ~ResourceLDAPKIO();
00045
virtual void init();
00046
00047
virtual void writeConfig(
KConfig* );
00048
00049
virtual bool doOpen();
00050
virtual void doClose();
00051
00052
virtual Ticket *requestSaveTicket();
00053
virtual void releaseSaveTicket(
Ticket* );
00054
00055
virtual bool readOnly()
const {
return Resource::readOnly(); }
00056
virtual void setReadOnly(
bool value );
00057
00058
virtual bool load();
00059
virtual bool asyncLoad();
00060
virtual bool save(
Ticket * );
00061
virtual bool asyncSave(
Ticket * );
00062
00063
virtual void removeAddressee(
const Addressee& addr );
00064
00065
void setUser(
const QString &user );
00066
QString user() const;
00067
00068
void setPassword( const
QString &password );
00069
QString password() const;
00070
00071
void setRealm( const
QString &realm );
00072
QString realm() const;
00073
00074
void setBindDN( const
QString &binddn );
00075
QString bindDN() const;
00076
00077
void setDn( const
QString &dn );
00078
QString dn() const;
00079
00080
void setHost( const
QString &host );
00081
QString host() const;
00082
00083
void setPort(
int port );
00084
int port() const;
00085
00086
void setVer(
int ver );
00087
int ver() const;
00088
00089
void setSizeLimit(
int sizelimit );
00090
int sizeLimit();
00091
00092
void setTimeLimit(
int timelimit );
00093
int timeLimit();
00094
00095
void setFilter( const
QString &filter );
00096
QString filter() const;
00097
00098
void setIsAnonymous(
bool value );
00099
bool isAnonymous() const;
00100
00101
void setAttributes( const
QMap<
QString, QString> &attributes );
00102
QMap<QString, QString> attributes() const;
00103
00104
void setRDNPrefix(
int value );
00105
int RDNPrefix() const;
00106
00107
void setIsTLS(
bool value );
00108
bool isTLS() const ;
00109
00110
void setIsSSL(
bool value );
00111
bool isSSL() const;
00112
00113
void setIsSubTree(
bool value );
00114
bool isSubTree() const ;
00115
00116
void setIsSASL(
bool value );
00117
bool isSASL() const ;
00118
00119
void setMech( const QString &mech );
00120 QString mech() const;
00121
00122
void setCachePolicy(
int pol );
00123
int cachePolicy() const;
00124
00125
void setAutoCache(
bool value );
00126
bool autoCache();
00127
00128 QString cacheDst() const;
00129
00130 protected slots:
00131
void entries( KIO::Job*, const KIO::UDSEntryList& );
00132
void data( KIO::Job*, const
QByteArray& );
00133
void result( KIO::Job* );
00134
void listResult( KIO::Job* );
00135
void syncLoadSaveResult( KIO::Job* );
00136
void saveResult( KIO::Job* );
00137
void saveData( KIO::Job*, QByteArray& );
00138
00139 private:
00140 QString mUser;
00141 QString mPassword;
00142 QString mDn;
00143 QString mHost;
00144 QString mFilter;
00145
int mPort;
00146
bool mAnonymous;
00147
QMap<QString, QString> mAttributes;
00148
00149
KURL mLDAPUrl;
00150
int mGetCounter;
00151
bool mErrorOccured;
00152 QString mErrorMsg;
00153
QMap<KIO::Job*, QByteArray> mJobMap;
00154
00155 KIO::Job *loadFromCache();
00156
void createCache();
00157
void activateCache();
00158
void enter_loop();
00159
QCString addEntry( const QString &attr, const QString &value,
bool mod );
00160 QString findUid( const QString &uid );
00161
bool AddresseeToLDIF( QByteArray &ldif, const
Addressee &addr,
00162 const QString &olddn );
00163
00164 class ResourceLDAPKIOPrivate;
00165 ResourceLDAPKIOPrivate *d;
00166 };
00167
00168 }
00169
00170 #endif