diff options
Diffstat (limited to 'kabc/ldapconfigwidget.cpp')
-rw-r--r-- | kabc/ldapconfigwidget.cpp | 626 |
1 files changed, 0 insertions, 626 deletions
diff --git a/kabc/ldapconfigwidget.cpp b/kabc/ldapconfigwidget.cpp deleted file mode 100644 index b0a899d8c..000000000 --- a/kabc/ldapconfigwidget.cpp +++ /dev/null @@ -1,626 +0,0 @@ -/* - 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. -*/ -#include <tqapplication.h> - -#include <tqobjectlist.h> -#include <tqcheckbox.h> -#include <tqlabel.h> -#include <tqlayout.h> -#include <tqpushbutton.h> -#include <tqspinbox.h> -#include <tqvgroupbox.h> -#include <tqhbuttongroup.h> -#include <tqradiobutton.h> - -#include <kmessagebox.h> -#include <kaccelmanager.h> -#include <kdialogbase.h> -#include <klocale.h> -#include <klineedit.h> -#include <kcombobox.h> -#include <kprogress.h> - -#include <kdebug.h> - -#include "ldapconfigwidget.h" -#include "ldapconfigwidget.moc" - -using namespace KABC; - -LdapConfigWidget::LdapConfigWidget( TQWidget* parent, - const char* name, WFlags fl ) : TQWidget( parent, name, fl ) -{ - mProg = 0; - mFlags = 0; - mainLayout = new TQGridLayout( this, 12, 4, 0, - KDialog::spacingHint() ); -} - -LdapConfigWidget::LdapConfigWidget( int flags, TQWidget* parent, - const char* name, WFlags fl ) : TQWidget( parent, name, fl ) -{ - mFlags = flags; - mProg = 0; - mainLayout = new TQGridLayout( this, 12, 4, 0, - KDialog::spacingHint() ); - initWidget(); -} - -LdapConfigWidget::~LdapConfigWidget() -{ -} - -void LdapConfigWidget::initWidget() -{ - TQLabel *label; - - mUser = mPassword = mHost = mDn = mBindDN = mRealm = mFilter = 0; - mPort = mVer = mTimeLimit = mSizeLimit = 0; - mAnonymous = mSimple = mSASL = mSecNO = mSecTLS = mSecSSL = 0; - mEditButton = mQueryMech = 0; - mMech = 0; - int row = 0; - int col; - - if ( mFlags & W_USER ) { - label = new TQLabel( i18n( "User:" ), this ); - mUser = new KLineEdit( this, "kcfg_ldapuser" ); - - mainLayout->addWidget( label, row, 0 ); - mainLayout->addMultiCellWidget( mUser, row, row, 1, 3 ); - row++; - } - - if ( mFlags & W_BINDDN ) { - label = new TQLabel( i18n( "Bind DN:" ), this ); - mBindDN = new KLineEdit( this, "kcfg_ldapbinddn" ); - - mainLayout->addWidget( label, row, 0 ); - mainLayout->addMultiCellWidget( mBindDN, row, row, 1, 3 ); - row++; - } - - if ( mFlags & W_REALM ) { - label = new TQLabel( i18n( "Realm:" ), this ); - mRealm = new KLineEdit( this, "kcfg_ldaprealm" ); - - mainLayout->addWidget( label, row, 0 ); - mainLayout->addMultiCellWidget( mRealm, row, row, 1, 3 ); - row++; - } - - if ( mFlags & W_PASS ) { - label = new TQLabel( i18n( "Password:" ), this ); - mPassword = new KLineEdit( this, "kcfg_ldappassword" ); - mPassword->setEchoMode( KLineEdit::Password ); - - mainLayout->addWidget( label, row, 0 ); - mainLayout->addMultiCellWidget( mPassword, row, row, 1, 3 ); - row++; - } - - if ( mFlags & W_HOST ) { - label = new TQLabel( i18n( "Host:" ), this ); - mHost = new KLineEdit( this, "kcfg_ldaphost" ); - - mainLayout->addWidget( label, row, 0 ); - mainLayout->addMultiCellWidget( mHost, row, row, 1, 3 ); - row++; - } - - col = 0; - if ( mFlags & W_PORT ) { - label = new TQLabel( i18n( "Port:" ), this ); - mPort = new TQSpinBox( 0, 65535, 1, this, "kcfg_ldapport" ); - mPort->setSizePolicy( TQSizePolicy( TQSizePolicy::Maximum, TQSizePolicy::Preferred ) ); - mPort->setValue( 389 ); - - mainLayout->addWidget( label, row, col ); - mainLayout->addWidget( mPort, row, col+1 ); - col += 2; - } - - if ( mFlags & W_VER ) { - label = new TQLabel( i18n( "LDAP version:" ), this ); - mVer = new TQSpinBox( 2, 3, 1, this, "kcfg_ldapver" ); - mVer->setSizePolicy( TQSizePolicy( TQSizePolicy::Maximum, TQSizePolicy::Preferred ) ); - mVer->setValue( 3 ); - mainLayout->addWidget( label, row, col ); - mainLayout->addWidget( mVer, row, col+1 ); - } - if ( mFlags & ( W_PORT | W_VER ) ) row++; - - col = 0; - if ( mFlags & W_SIZELIMIT ) { - label = new TQLabel( i18n( "Size limit:" ), this ); - mSizeLimit = new TQSpinBox( 0, 9999999, 1, this, "kcfg_ldapsizelimit" ); - mSizeLimit->setSizePolicy( TQSizePolicy( TQSizePolicy::Maximum, TQSizePolicy::Preferred ) ); - mSizeLimit->setValue( 0 ); - mSizeLimit->setSpecialValueText( i18n("Default") ); - mainLayout->addWidget( label, row, col ); - mainLayout->addWidget( mSizeLimit, row, col+1 ); - col += 2; - } - - if ( mFlags & W_TIMELIMIT ) { - label = new TQLabel( i18n( "Time limit:" ), this ); - mTimeLimit = new TQSpinBox( 0, 9999999, 1, this, "kcfg_ldaptimelimit" ); - mTimeLimit->setSizePolicy( TQSizePolicy( TQSizePolicy::Maximum, TQSizePolicy::Preferred ) ); - mTimeLimit->setValue( 0 ); - mTimeLimit->setSuffix( i18n(" sec") ); - mTimeLimit->setSpecialValueText( i18n("Default") ); - mainLayout->addWidget( label, row, col ); - mainLayout->addWidget( mTimeLimit, row, col+1 ); - } - if ( mFlags & ( W_SIZELIMIT | W_TIMELIMIT ) ) row++; - - if ( mFlags & W_DN ) { - label = new TQLabel( i18n( "Distinguished Name", "DN:" ), this ); - mDn = new KLineEdit( this, "kcfg_ldapdn" ); - - mainLayout->addWidget( label, row, 0 ); - mainLayout->addMultiCellWidget( mDn, row, row, 1, 1 ); - //without host query doesn't make sense - if ( mHost ) { - TQPushButton *dnquery = new TQPushButton( i18n( "Query Server" ), this ); - connect( dnquery, TQT_SIGNAL( clicked() ), TQT_SLOT( mQueryDNClicked() ) ); - mainLayout->addMultiCellWidget( dnquery, row, row, 2, 3 ); - } - row++; - } - - if ( mFlags & W_FILTER ) { - label = new TQLabel( i18n( "Filter:" ), this ); - mFilter = new KLineEdit( this, "kcfg_ldapfilter" ); - - mainLayout->addWidget( label, row, 0 ); - mainLayout->addMultiCellWidget( mFilter, row, row, 1, 3 ); - row++; - } - - if ( mFlags & W_SECBOX ) { - TQHButtonGroup *btgroup = new TQHButtonGroup( i18n( "Security" ), this ); - mSecNO = new TQRadioButton( i18n( "No" ), btgroup, "kcfg_ldapnosec" ); - mSecTLS = new TQRadioButton( i18n( "TLS" ), btgroup, "kcfg_ldaptls" ); - mSecSSL = new TQRadioButton( i18n( "SSL" ), btgroup, "kcfg_ldapssl" ); - mainLayout->addMultiCellWidget( btgroup, row, row, 0, 3 ); - - connect( mSecNO, TQT_SIGNAL( clicked() ), TQT_SLOT( setLDAPPort() ) ); - connect( mSecTLS, TQT_SIGNAL( clicked() ), TQT_SLOT( setLDAPPort() ) ); - connect( mSecSSL, TQT_SIGNAL( clicked() ), TQT_SLOT( setLDAPSPort( ) ) ); - - mSecNO->setChecked( true ); - row++; - } - - if ( mFlags & W_AUTHBOX ) { - - TQButtonGroup *authbox = - new TQButtonGroup( 3, Qt::Horizontal, i18n( "Authentication" ), this ); - - mAnonymous = new TQRadioButton( i18n( "Anonymous" ), authbox, "kcfg_ldapanon" ); - mSimple = new TQRadioButton( i18n( "Simple" ), authbox, "kcfg_ldapsimple" ); - mSASL = new TQRadioButton( i18n( "SASL" ), authbox, "kcfg_ldapsasl" ); - - label = new TQLabel( i18n( "SASL mechanism:" ), authbox ); - mMech = new KComboBox( false, authbox, "kcfg_ldapsaslmech" ); - mMech->setEditable( true ); - mMech->insertItem( "DIGEST-MD5" ); - mMech->insertItem( "GSSAPI" ); - mMech->insertItem( "PLAIN" ); - - //without host query doesn't make sense - if ( mHost ) { - mQueryMech = new TQPushButton( i18n( "Query Server" ), authbox ); - connect( mQueryMech, TQT_SIGNAL( clicked() ), TQT_SLOT( mQueryMechClicked() ) ); - } - - mainLayout->addMultiCellWidget( authbox, row, row+1, 0, 3 ); - - connect( mAnonymous, TQT_SIGNAL( stateChanged(int) ), TQT_SLOT( setAnonymous(int) ) ); - connect( mSimple, TQT_SIGNAL( stateChanged(int) ), TQT_SLOT( setSimple(int) ) ); - connect( mSASL, TQT_SIGNAL( stateChanged(int) ), TQT_SLOT( setSASL(int) ) ); - - mAnonymous->setChecked( true ); - } - -} - -void LdapConfigWidget::loadData( KIO::Job*, const TQByteArray& d ) -{ - LDIF::ParseVal ret; - - if ( d.size() ) { - mLdif.setLDIF( d ); - } else { - mLdif.endLDIF(); - } - do { - ret = mLdif.nextItem(); - if ( ret == LDIF::Item && mLdif.attr().lower() == mAttr ) { - mProg->progressBar()->advance( 1 ); - mQResult.push_back( TQString::fromUtf8( mLdif.val(), mLdif.val().size() ) ); - } - } while ( ret != LDIF::MoreData ); -} - -void LdapConfigWidget::loadResult( KIO::Job* job) -{ - int error = job->error(); - if ( error && error != KIO::ERR_USER_CANCELED ) - mErrorMsg = job->errorString(); - else - mErrorMsg = ""; - - mCancelled = false; - mProg->close(); -} - -void LdapConfigWidget::sendQuery() -{ - LDAPUrl _url; - - mQResult.clear(); - mCancelled = true; - - _url.setProtocol( ( mSecSSL && mSecSSL->isChecked() ) ? "ldaps" : "ldap" ); - if ( mHost ) _url.setHost( mHost->text() ); - if ( mPort ) _url.setPort( mPort->value() ); - _url.setDn( "" ); - _url.setAttributes( mAttr ); - _url.setScope( LDAPUrl::Base ); - if ( mVer ) _url.setExtension( "x-ver", TQString::number( mVer->value() ) ); - if ( mSecTLS && mSecTLS->isChecked() ) _url.setExtension( "x-tls", "" ); - - kdDebug(5700) << "sendQuery url: " << _url.prettyURL() << endl; - mLdif.startParsing(); - KIO::Job *job = KIO::get( _url, true, false ); - job->addMetaData("no-auth-prompt","true"); - connect( job, TQT_SIGNAL( data( KIO::Job*, const TQByteArray& ) ), - this, TQT_SLOT( loadData( KIO::Job*, const TQByteArray& ) ) ); - connect( job, TQT_SIGNAL( result( KIO::Job* ) ), - this, TQT_SLOT( loadResult( KIO::Job* ) ) ); - - if ( mProg == NULL ) - mProg = new KProgressDialog( this, 0, i18n("LDAP Query"), _url.prettyURL(), true ); - else - mProg->setLabel( _url.prettyURL() ); - mProg->progressBar()->setValue( 0 ); - mProg->progressBar()->setTotalSteps( 1 ); - mProg->exec(); - if ( mCancelled ) { - kdDebug(5700) << "query cancelled!" << endl; - job->kill( true ); - } else { - if ( !mErrorMsg.isEmpty() ) KMessageBox::error( this, mErrorMsg ); - } -} - -void LdapConfigWidget::mQueryMechClicked() -{ - mAttr = "supportedsaslmechanisms"; - sendQuery(); - if ( !mQResult.isEmpty() ) { - mQResult.sort(); - mMech->clear(); - mMech->insertStringList( mQResult ); - } -} - -void LdapConfigWidget::mQueryDNClicked() -{ - mAttr = "namingcontexts"; - sendQuery(); - if ( !mQResult.isEmpty() ) mDn->setText( mQResult.first() ); -} - -void LdapConfigWidget::setAnonymous( int state ) -{ - if ( state == TQButton::Off ) return; - if ( mUser ) mUser->setEnabled(false); - if ( mPassword ) mPassword->setEnabled(false); - if ( mBindDN ) mBindDN->setEnabled(false); - if ( mRealm ) mRealm->setEnabled(false); - if ( mMech ) mMech->setEnabled(false); - if ( mQueryMech ) mQueryMech->setEnabled(false); -} - -void LdapConfigWidget::setSimple( int state ) -{ - if ( state == TQButton::Off ) return; - if ( mUser ) mUser->setEnabled(true); - if ( mPassword ) mPassword->setEnabled(true); - if ( mBindDN ) mBindDN->setEnabled(false); - if ( mRealm ) mRealm->setEnabled(false); - if ( mMech ) mMech->setEnabled(false); - if ( mQueryMech ) mQueryMech->setEnabled(false); -} - -void LdapConfigWidget::setSASL( int state ) -{ - if ( state == TQButton::Off ) return; - if ( mUser ) mUser->setEnabled(true); - if ( mPassword ) mPassword->setEnabled(true); - if ( mBindDN ) mBindDN->setEnabled(true); - if ( mRealm ) mRealm->setEnabled(true); - if ( mMech ) mMech->setEnabled(true); - if ( mQueryMech ) mQueryMech->setEnabled(true); -} - -void LdapConfigWidget::setLDAPPort() -{ - mPort->setValue( 389 ); -} - -void LdapConfigWidget::setLDAPSPort() -{ - mPort->setValue( 636 ); -} - - -LDAPUrl LdapConfigWidget::url() const -{ - LDAPUrl _url; - if ( mSecSSL && mSecSSL->isChecked() ) - _url.setProtocol( "ldaps" ); - else - _url.setProtocol( "ldap" ); - - if ( mUser ) _url.setUser( mUser->text() ); - if ( mPassword ) _url.setPass( mPassword->text() ); - if ( mHost ) _url.setHost( mHost->text() ); - if ( mPort ) _url.setPort( mPort->value() ); - if ( mDn ) _url.setDn( mDn->text() ); - if ( mVer ) _url.setExtension( "x-ver", TQString::number( mVer->value() ) ); - if ( mSizeLimit && mSizeLimit->value() != 0 ) - _url.setExtension( "x-sizelimit", TQString::number( mSizeLimit->value() ) ); - if ( mTimeLimit && mTimeLimit->value() != 0 ) - _url.setExtension( "x-timelimit", TQString::number( mTimeLimit->value() ) ); - if ( mSecTLS && mSecTLS->isChecked() ) _url.setExtension( "x-tls","" ); - if ( mFilter && !mFilter->text().isEmpty() ) - _url.setFilter( mFilter->text() ); - if ( mSASL && mSASL->isChecked() ) { - _url.setExtension( "x-sasl", "" ); - _url.setExtension( "x-mech", mMech->currentText() ); - if ( mBindDN && !mBindDN->text().isEmpty() ) - _url.setExtension( "bindname", mBindDN->text() ); - if ( mRealm && !mRealm->text().isEmpty() ) - _url.setExtension( "x-realm", mRealm->text() ); - } - return ( _url ); -} - -void LdapConfigWidget::setUser( const TQString &user ) -{ - if ( mUser ) mUser->setText( user ); -} - -TQString LdapConfigWidget::user() const -{ - return ( mUser ? mUser->text() : TQString::null ); -} - -void LdapConfigWidget::setPassword( const TQString &password ) -{ - if ( mPassword ) mPassword->setText( password ); -} - -TQString LdapConfigWidget::password() const -{ - return ( mPassword ? mPassword->text() : TQString::null ); -} - -void LdapConfigWidget::setBindDN( const TQString &binddn ) -{ - if ( mBindDN ) mBindDN->setText( binddn ); -} - -TQString LdapConfigWidget::bindDN() const -{ - return ( mBindDN ? mBindDN->text() : TQString::null ); -} - -void LdapConfigWidget::setRealm( const TQString &realm ) -{ - if ( mRealm ) mRealm->setText( realm ); -} - -TQString LdapConfigWidget::realm() const -{ - return ( mRealm ? mRealm->text() : TQString::null ); -} - -void LdapConfigWidget::setHost( const TQString &host ) -{ - if ( mHost ) mHost->setText( host ); -} - -TQString LdapConfigWidget::host() const -{ - return ( mHost ? mHost->text() : TQString::null ); -} - -void LdapConfigWidget::setPort( int port ) -{ - if ( mPort ) mPort->setValue( port ); -} - -int LdapConfigWidget::port() const -{ - return ( mPort ? mPort->value() : 389 ); -} - -void LdapConfigWidget::setVer( int ver ) -{ - if ( mVer ) mVer->setValue( ver ); -} - -int LdapConfigWidget::ver() const -{ - return ( mVer ? mVer->value() : 3 ); -} - -void LdapConfigWidget::setDn( const TQString &dn ) -{ - if ( mDn ) mDn->setText( dn ); -} - -TQString LdapConfigWidget::dn() const -{ - return ( mDn ? mDn->text() : TQString::null ); -} - -void LdapConfigWidget::setFilter( const TQString &filter ) -{ - if ( mFilter ) mFilter->setText( filter ); -} - -TQString LdapConfigWidget::filter() const -{ - return ( mFilter ? mFilter->text() : TQString::null ); -} - -void LdapConfigWidget::setMech( const TQString &mech ) -{ - if ( mMech == 0 ) return; - if ( !mech.isEmpty() ) { - int i = 0; - while ( i < mMech->count() ) { - if ( mMech->text( i ) == mech ) break; - i++; - } - if ( i == mMech->count() ) mMech->insertItem( mech ); - mMech->setCurrentItem( i ); - } -} - -TQString LdapConfigWidget::mech() const -{ - return ( mMech ? mMech->currentText() : TQString::null ); -} - -void LdapConfigWidget::setSecNO( bool b ) -{ - if ( mSecNO ) mSecNO->setChecked( b ); -} - -bool LdapConfigWidget::isSecNO() const -{ - return ( mSecNO ? mSecNO->isChecked() : true ); -} - -void LdapConfigWidget::setSecTLS( bool b ) -{ - if ( mSecTLS ) mSecTLS->setChecked( b ); -} - -bool LdapConfigWidget::isSecTLS() const -{ - return ( mSecTLS ? mSecTLS->isChecked() : false ); -} - -void LdapConfigWidget::setSecSSL( bool b ) -{ - if ( mSecSSL ) mSecSSL->setChecked( b ); -} - -bool LdapConfigWidget::isSecSSL() const -{ - return ( mSecSSL ? mSecSSL->isChecked() : false ); -} - -void LdapConfigWidget::setAuthAnon( bool b ) -{ - if ( mAnonymous ) mAnonymous->setChecked( b ); -} - -bool LdapConfigWidget::isAuthAnon() const -{ - return ( mAnonymous ? mAnonymous->isChecked() : true ); -} - -void LdapConfigWidget::setAuthSimple( bool b ) -{ - if ( mSimple ) mSimple->setChecked( b ); -} - -bool LdapConfigWidget::isAuthSimple() const -{ - return ( mSimple ? mSimple->isChecked() : false ); -} - -void LdapConfigWidget::setAuthSASL( bool b ) -{ - if ( mSASL ) mSASL->setChecked( b ); -} - -bool LdapConfigWidget::isAuthSASL() const -{ - return ( mSASL ? mSASL->isChecked() : false ); -} - -void LdapConfigWidget::setSizeLimit( int sizelimit ) -{ - if ( mSizeLimit ) mSizeLimit->setValue( sizelimit ); -} - -int LdapConfigWidget::sizeLimit() const -{ - return ( mSizeLimit ? mSizeLimit->value() : 0 ); -} - -void LdapConfigWidget::setTimeLimit( int timelimit ) -{ - if ( mTimeLimit ) mTimeLimit->setValue( timelimit ); -} - -int LdapConfigWidget::timeLimit() const -{ - return ( mTimeLimit ? mTimeLimit->value() : 0 ); -} - -int LdapConfigWidget::flags() const -{ - return mFlags; -} - -void LdapConfigWidget::setFlags( int flags ) -{ - mFlags = flags; - - // First delete all the child widgets. - // FIXME: I hope it's correct - const TQObjectList ch = childrenListObject(); - TQObjectList ch2 = ch; - TQObject *obj; - TQWidget *widget; - - obj = ch2.first(); - while ( obj != 0 ) { - widget = dynamic_cast<TQWidget*> (obj); - if ( widget && TQT_BASE_OBJECT(widget->parent()) == TQT_BASE_OBJECT(this) ) { - mainLayout->remove( widget ); - delete ( widget ); - } - obj = ch2.next(); - } - // Re-create child widgets according to the new flags - initWidget(); -} |