|
|
|
/*
|
|
|
|
This file is part of libkabc.
|
|
|
|
Copyright (c) 2004 Szombathelyi György <gyurco@freemail.hu>
|
|
|
|
|
|
|
|
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., 51 Franklin Street, Fifth Floor,
|
|
|
|
Boston, MA 02110-1301, USA.
|
|
|
|
*/
|
|
|
|
|
|
|
|
#ifndef LDAPCONFIGWIDGET_H
|
|
|
|
#define LDAPCONFIGWIDGET_H
|
|
|
|
|
|
|
|
#include <tqwidget.h>
|
|
|
|
#include <tqmap.h>
|
|
|
|
#include <tqstring.h>
|
|
|
|
|
|
|
|
#include <kabc/ldapurl.h>
|
|
|
|
#include <kabc/ldif.h>
|
|
|
|
#include <kio/job.h>
|
|
|
|
|
|
|
|
class TQGridLayout;
|
|
|
|
class TQSpinBox;
|
|
|
|
class TQPushButton;
|
|
|
|
class TQCheckBox;
|
|
|
|
class TQRadioButton;
|
|
|
|
class KComboBox;
|
|
|
|
class KLineEdit;
|
|
|
|
class KProgressDialog;
|
|
|
|
|
|
|
|
namespace KABC {
|
|
|
|
|
|
|
|
/**
|
|
|
|
@short LDAP Configuration widget
|
|
|
|
|
|
|
|
This class can be used to query the user for LDAP connection parameters.
|
|
|
|
It's KConfigXT compatible, using widget names starting with kcfg_
|
|
|
|
*/
|
|
|
|
|
|
|
|
class KABC_EXPORT LdapConfigWidget : public TQWidget
|
|
|
|
{
|
|
|
|
Q_OBJECT
|
|
|
|
|
|
|
|
TQ_PROPERTY( LCW_Flags flags READ flagsProp WRITE setFlagsProp )
|
|
|
|
TQ_PROPERTY( TQString user READ user WRITE setUser )
|
|
|
|
TQ_PROPERTY( TQString password READ password WRITE setPassword )
|
|
|
|
TQ_PROPERTY( TQString bindDN READ bindDN WRITE setBindDN )
|
|
|
|
TQ_PROPERTY( TQString realm READ realm WRITE setRealm )
|
|
|
|
TQ_PROPERTY( TQString host READ host WRITE setHost )
|
|
|
|
TQ_PROPERTY( int port READ port WRITE setPort )
|
|
|
|
TQ_PROPERTY( int ver READ ver WRITE setVer )
|
|
|
|
TQ_PROPERTY( TQString dn READ dn WRITE setDn )
|
|
|
|
TQ_PROPERTY( TQString filter READ filter WRITE setFilter )
|
|
|
|
TQ_PROPERTY( TQString mech READ mech WRITE setMech )
|
|
|
|
TQ_PROPERTY( bool secNO READ isSecNO WRITE setSecNO )
|
|
|
|
TQ_PROPERTY( bool secSSL READ isSecSSL WRITE setSecSSL )
|
|
|
|
TQ_PROPERTY( bool secTLS READ isSecSSL WRITE setSecTLS )
|
|
|
|
TQ_PROPERTY( bool authAnon READ isAuthAnon WRITE setAuthAnon )
|
|
|
|
TQ_PROPERTY( bool authSimple READ isAuthSimple WRITE setAuthSimple )
|
|
|
|
TQ_PROPERTY( bool authSASL READ isAuthSASL WRITE setAuthSASL )
|
|
|
|
TQ_PROPERTY( int sizeLimit READ sizeLimit WRITE setSizeLimit )
|
|
|
|
TQ_PROPERTY( int timeLimit READ timeLimit WRITE setTimeLimit )
|
|
|
|
TQ_SETS ( LCW_Flags )
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
|
|
|
enum LCW_Flags {
|
|
|
|
W_USER = 0x1,
|
|
|
|
W_PASS = 0x2,
|
|
|
|
W_BINDDN = 0x4,
|
|
|
|
W_REALM = 0x8,
|
|
|
|
W_HOST = 0x10,
|
|
|
|
W_PORT = 0x20,
|
|
|
|
W_VER = 0x40,
|
|
|
|
W_DN = 0x80,
|
|
|
|
W_FILTER = 0x100,
|
|
|
|
W_SECBOX = 0x400,
|
|
|
|
W_AUTHBOX = 0x800,
|
|
|
|
W_TIMELIMIT = 0x1000,
|
|
|
|
W_SIZELIMIT = 0x2000,
|
|
|
|
W_ALL = 0xFFFFFFF
|
|
|
|
};
|
|
|
|
|
|
|
|
/** Constructs an empty configuration widget.
|
|
|
|
* You need to call setFlags() after this.
|
|
|
|
*/
|
|
|
|
LdapConfigWidget( TQWidget* parent = 0,
|
|
|
|
const char* name = 0, WFlags fl = 0 );
|
|
|
|
/** Constructs a configuration widget */
|
|
|
|
LdapConfigWidget( int flags, TQWidget* parent = 0,
|
|
|
|
const char* name = 0, WFlags fl = 0 );
|
|
|
|
/** Destructs a configuration widget */
|
|
|
|
virtual ~LdapConfigWidget();
|
|
|
|
|
|
|
|
/** Sets the user name. Kconfig widget name: kcfg_ldapuser */
|
|
|
|
void setUser( const TQString &user );
|
|
|
|
/** Gets the user name. Kconfig widget name: kcfg_ldapuser */
|
|
|
|
TQString user() const;
|
|
|
|
|
|
|
|
/** Sets the password. Kconfig widget name: kcfg_ldappassword */
|
|
|
|
void setPassword( const TQString &password );
|
|
|
|
/** Gets the password. Kconfig widget name: kcfg_ldappassword */
|
|
|
|
TQString password() const;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Sets the bind dn. Useful for SASL proxy auth.
|
|
|
|
* Kconfig widget name: kcfg_ldapbinddn
|
|
|
|
*/
|
|
|
|
void setBindDN( const TQString &binddn );
|
|
|
|
/** Gets the bind dn. Kconfig widget name: kcfg_ldapbinddn*/
|
|
|
|
TQString bindDN() const;
|
|
|
|
|
|
|
|
/** Sets the SASL realm. Kconfig widget name: kcfg_ldaprealm */
|
|
|
|
void setRealm( const TQString &realm );
|
|
|
|
/** Gets the SASL realm. Kconfig widget name: kcfg_ldaprealm */
|
|
|
|
TQString realm() const;
|
|
|
|
|
|
|
|
/** Sets the host name. Kconfig widget name: kcfg_ldaphost */
|
|
|
|
void setHost( const TQString &host );
|
|
|
|
/** Gets the host name. Kconfig widget name: kcfg_ldaphost */
|
|
|
|
TQString host() const;
|
|
|
|
|
|
|
|
/** Sets the LDAP port. Kconfig widget name: kcfg_ldapport */
|
|
|
|
void setPort( int port );
|
|
|
|
/** Gets the LDAP port. Kconfig widget name: kcfg_ldapport */
|
|
|
|
int port() const;
|
|
|
|
|
|
|
|
/** Sets the LDAP protocol version. Kconfig widget name: kcfg_ldapver */
|
|
|
|
void setVer( int ver );
|
|
|
|
/** Gets the LDAP protocol version. Kconfig widget name: kcfg_ldapver */
|
|
|
|
int ver() const;
|
|
|
|
|
|
|
|
/** Sets the LDAP Base DN. Kconfig widget name: kcfg_ldapdn */
|
|
|
|
void setDn( const TQString &dn );
|
|
|
|
/** Gets the LDAP Base DN. Kconfig widget name: kcfg_ldapdn */
|
|
|
|
TQString dn() const;
|
|
|
|
|
|
|
|
/** Sets the LDAP Filter. Kconfig widget name: kcfg_ldapfilter */
|
|
|
|
void setFilter( const TQString &filter );
|
|
|
|
/** Gets the LDAP Filter. Kconfig widget name: kcfg_ldapfilter */
|
|
|
|
TQString filter() const;
|
|
|
|
|
|
|
|
/** Sets the SASL Mechanism. Kconfig widget name: kcfg_ldapsaslmech */
|
|
|
|
void setMech( const TQString &mech );
|
|
|
|
/** Gets the SASL Mechanism. Kconfig widget name: kcfg_ldapsaslmech */
|
|
|
|
TQString mech() const;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Sets the configuration to no transport security.
|
|
|
|
* Kconfig widget name: kcfg_ldapnosec
|
|
|
|
*/
|
|
|
|
void setSecNO( bool b = true );
|
|
|
|
/**
|
|
|
|
* Returns true if no transport security selected.
|
|
|
|
* Kconfig widget name: kcfg_ldapnosec
|
|
|
|
*/
|
|
|
|
bool isSecNO() const;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Sets the configuration to TLS.
|
|
|
|
* Kconfig widget name: kcfg_ldaptls
|
|
|
|
*/
|
|
|
|
void setSecTLS( bool b = true );
|
|
|
|
/**
|
|
|
|
* Returns true if TLS selected.
|
|
|
|
* Kconfig widget name: kcfg_ldaptls
|
|
|
|
*/
|
|
|
|
bool isSecTLS() const;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Sets the configuration to SSL.
|
|
|
|
* Kconfig widget name: kcfg_ldapssl
|
|
|
|
*/
|
|
|
|
void setSecSSL( bool b = true );
|
|
|
|
/**
|
|
|
|
* Returns true if SSL selected.
|
|
|
|
* Kconfig widget name: kcfg_ldapssl
|
|
|
|
*/
|
|
|
|
bool isSecSSL() const;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Sets the authentication to anonymous.
|
|
|
|
* Kconfig widget name: kcfg_ldapanon
|
|
|
|
*/
|
|
|
|
void setAuthAnon( bool b = true );
|
|
|
|
/**
|
|
|
|
* Returns true if Anonymous authentication selected.
|
|
|
|
* Kconfig widget name: kcfg_ldapanon
|
|
|
|
*/
|
|
|
|
bool isAuthAnon() const;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Sets the authentication to simple.
|
|
|
|
* Kconfig widget name: kcfg_ldapsimple
|
|
|
|
*/
|
|
|
|
void setAuthSimple( bool b = true );
|
|
|
|
/**
|
|
|
|
* Returns true if Simple authentication selected.
|
|
|
|
* Kconfig widget name: kcfg_ldapsimple
|
|
|
|
*/
|
|
|
|
bool isAuthSimple() const;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Sets the authentication to SASL.
|
|
|
|
* Kconfig widget name: kcfg_ldapsasl
|
|
|
|
*/
|
|
|
|
void setAuthSASL( bool b = true );
|
|
|
|
/**
|
|
|
|
* Returns true if SASL authentication selected.
|
|
|
|
* Kconfig widget name: kcfg_ldapsasl
|
|
|
|
*/
|
|
|
|
bool isAuthSASL() const;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Sets the size limit.
|
|
|
|
* KConfig widget name: kcfg_ldapsizelimit
|
|
|
|
*/
|
|
|
|
void setSizeLimit( int sizelimit );
|
|
|
|
/**
|
|
|
|
* Returns the size limit.
|
|
|
|
* KConfig widget name: kcfg_ldapsizelimit
|
|
|
|
*/
|
|
|
|
int sizeLimit() const;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Sets the time limit.
|
|
|
|
* KConfig widget name: kcfg_ldaptimelimit
|
|
|
|
*/
|
|
|
|
void setTimeLimit( int timelimit );
|
|
|
|
/**
|
|
|
|
* Returns the time limit.
|
|
|
|
* KConfig widget name: kcfg_ldaptimelimit
|
|
|
|
*/
|
|
|
|
int timeLimit() const;
|
|
|
|
|
|
|
|
int flags() const;
|
|
|
|
void setFlags( int flags );
|
|
|
|
inline LCW_Flags flagsProp() const { return (LCW_Flags)flags(); }
|
|
|
|
inline void setFlagsProp( LCW_Flags flags ) { setFlags((int)flags); }
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Returns a LDAP Url constructed from the settings given.
|
|
|
|
* Extensions are filled for use in the LDAP ioslave
|
|
|
|
*/
|
|
|
|
KABC::LDAPUrl url() const;
|
|
|
|
|
|
|
|
private slots:
|
|
|
|
void setLDAPPort();
|
|
|
|
void setLDAPSPort();
|
|
|
|
void setAnonymous( int state );
|
|
|
|
void setSimple( int state );
|
|
|
|
void setSASL( int state );
|
|
|
|
void mQueryDNClicked();
|
|
|
|
void mQueryMechClicked();
|
|
|
|
void loadData( KIO::Job*, const TQByteArray& );
|
|
|
|
void loadResult( KIO::Job* );
|
|
|
|
private:
|
|
|
|
|
|
|
|
int mFlags;
|
|
|
|
LDIF mLdif;
|
|
|
|
TQStringList mQResult;
|
|
|
|
TQString mAttr;
|
|
|
|
|
|
|
|
KLineEdit *mUser;
|
|
|
|
KLineEdit *mPassword;
|
|
|
|
KLineEdit *mHost;
|
|
|
|
TQSpinBox *mPort, *mVer, *mSizeLimit, *mTimeLimit;
|
|
|
|
KLineEdit *mDn, *mBindDN, *mRealm;
|
|
|
|
KLineEdit *mFilter;
|
|
|
|
TQRadioButton *mAnonymous,*mSimple,*mSASL;
|
|
|
|
TQCheckBox *mSubTree;
|
|
|
|
TQPushButton *mEditButton;
|
|
|
|
TQPushButton *mQueryMech;
|
|
|
|
TQRadioButton *mSecNO,*mSecTLS,*mSecSSL;
|
|
|
|
KComboBox *mMech;
|
|
|
|
|
|
|
|
TQString mErrorMsg;
|
|
|
|
bool mCancelled;
|
|
|
|
KProgressDialog *mProg;
|
|
|
|
|
|
|
|
TQGridLayout *mainLayout;
|
|
|
|
class LDAPConfigWidgetPrivate;
|
|
|
|
LDAPConfigWidgetPrivate *d;
|
|
|
|
|
|
|
|
void sendQuery();
|
|
|
|
void initWidget();
|
|
|
|
};
|
|
|
|
}
|
|
|
|
|
|
|
|
#endif
|