00001 #ifndef __LDAP_H__
00002 #define __LDAP_H__
00003
00004 #include <tqstring.h>
00005 #include <tqvaluelist.h>
00006
00007 #include <kio/slavebase.h>
00008 #include <kio/authinfo.h>
00009
00010 #define LDAP_DEPRECATED 1
00011 #include <lber.h>
00012 #include <ldap.h>
00013 #include <kabc/ldapurl.h>
00014
00015 class LDAPProtocol : public KIO::SlaveBase
00016 {
00017 public:
00018 LDAPProtocol( const TQCString &protocol, const TQCString &pool, const TQCString &app );
00019 virtual ~LDAPProtocol();
00020
00021 virtual void setHost( const TQString& host, int port,
00022 const TQString& user, const TQString& pass );
00023
00024 virtual void openConnection();
00025 virtual void closeConnection();
00026
00027 virtual void get( const KURL& url );
00028 virtual void stat( const KURL& url );
00029 virtual void listDir( const KURL& url );
00030 virtual void del( const KURL& url, bool isfile );
00031 virtual void put( const KURL& url, int permissions, bool overwrite, bool resume );
00032
00033 int saslInteract( void *in );
00034
00035 private:
00036
00037 TQString mHost;
00038 int mPort;
00039 TQString mUser;
00040 TQString mPassword;
00041 LDAP *mLDAP;
00042 int mVer, mSizeLimit, mTimeLimit;
00043 bool mTLS;
00044 bool mAuthSASL;
00045 TQString mMech,mRealm,mBindName;
00046 bool mCancel, mFirstAuth;
00047
00048 void controlsFromMetaData( LDAPControl ***serverctrls,
00049 LDAPControl ***clientctrls );
00050 void addControlOp( LDAPControl ***pctrls, const TQString &oid,
00051 const TQByteArray &value, bool critical );
00052 void addModOp( LDAPMod ***pmods, int mod_type,
00053 const TQString &attr, const TQByteArray &value );
00054 void LDAPEntry2UDSEntry( const TQString &dn, KIO::UDSEntry &entry,
00055 const KABC::LDAPUrl &usrc, bool dir=false );
00056 int asyncSearch( KABC::LDAPUrl &usrc );
00057
00058 TQCString LDAPEntryAsLDIF( LDAPMessage *msg );
00059 void LDAPErr( const KURL &url, int err = LDAP_SUCCESS );
00060 void changeCheck( KABC::LDAPUrl &url );
00061
00062 void fillAuthInfo( KIO::AuthInfo &info );
00063 };
00064
00065 #endif