KLDAP Library
ldapconfigwidget.cpp
00001 /* 00002 This file is part of libkldap. 00003 Copyright (c) 2004-2006 Szombathelyi György <gyurco@freemail.hu> 00004 00005 This library is free software; you can redistribute it and/or 00006 modify it under the terms of the GNU Library General Public 00007 License as published by the Free Software Foundation; either 00008 version 2 of the License, or (at your option) any later version. 00009 00010 This library is distributed in the hope that it will be useful, 00011 but WITHOUT ANY WARRANTY; without even the implied warranty of 00012 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00013 Library General Public License for more details. 00014 00015 You should have received a copy of the GNU Library General Public License 00016 along with this library; see the file COPYING.LIB. If not, write to 00017 the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 00018 Boston, MA 02110-1301, USA. 00019 */ 00020 00021 #include "ldapconfigwidget.h" 00022 #include "ldapsearch.h" 00023 00024 #include <kacceleratormanager.h> 00025 #include <kprogressdialog.h> 00026 #include <kcombobox.h> 00027 #include <kdebug.h> 00028 #include <klocale.h> 00029 #include <klineedit.h> 00030 #include <kmessagebox.h> 00031 00032 #include <QtCore/QObject> 00033 #include <QtGui/QCheckBox> 00034 #include <QtGui/QGroupBox> 00035 #include <QtGui/QLabel> 00036 #include <QtGui/QLayout> 00037 #include <QtGui/QPushButton> 00038 #include <QtGui/QRadioButton> 00039 #include <QtGui/QSpinBox> 00040 00041 using namespace KLDAP; 00042 00043 class LdapConfigWidget::Private 00044 { 00045 public: 00046 Private( LdapConfigWidget *parent ) 00047 : mParent( parent ), mFeatures( W_ALL ), mProg( 0 ) 00048 { 00049 mainLayout = new QGridLayout( mParent ); 00050 mainLayout->setMargin( 0 ); 00051 } 00052 00053 void setLDAPPort(); 00054 void setLDAPSPort(); 00055 void setAnonymous( bool on ); 00056 void setSimple( bool on ); 00057 void setSASL( bool on ); 00058 void queryDNClicked(); 00059 void queryMechClicked(); 00060 void loadData( LdapSearch *search, const LdapObject &object ); 00061 void loadResult( LdapSearch *search ); 00062 void sendQuery(); 00063 void initWidget(); 00064 00065 LdapConfigWidget *mParent; 00066 WinFlags mFeatures; 00067 QStringList mQResult; 00068 QString mAttr; 00069 00070 KLineEdit *mUser; 00071 KLineEdit *mPassword; 00072 KLineEdit *mHost; 00073 QSpinBox *mPort, *mVersion, *mSizeLimit, *mTimeLimit, *mPageSize; 00074 KLineEdit *mDn, *mBindDn, *mRealm; 00075 KLineEdit *mFilter; 00076 QRadioButton *mAnonymous,*mSimple,*mSASL; 00077 QCheckBox *mSubTree; 00078 QPushButton *mEditButton; 00079 QPushButton *mQueryMech; 00080 QRadioButton *mSecNo,*mSecTLS,*mSecSSL; 00081 KComboBox *mMech; 00082 00083 bool mCancelled; 00084 KProgressDialog *mProg; 00085 00086 QGridLayout *mainLayout; 00087 }; 00088 00089 void LdapConfigWidget::Private::initWidget() 00090 { 00091 QLabel *label; 00092 00093 mUser = mPassword = mHost = mDn = mBindDn = mRealm = mFilter = 0; 00094 mPort = mVersion = mTimeLimit = mSizeLimit = 0; 00095 mAnonymous = mSimple = mSASL = mSecNo = mSecTLS = mSecSSL = 0; 00096 mEditButton = mQueryMech = 0; 00097 mPageSize = 0; 00098 mMech = 0; 00099 int row = 0; 00100 int col; 00101 00102 if ( mFeatures & W_USER ) { 00103 label = new QLabel( i18n( "User:" ), mParent ); 00104 mUser = new KLineEdit( mParent ); 00105 mUser->setObjectName( "kcfg_ldapuser" ); 00106 00107 mainLayout->addWidget( label, row, 0 ); 00108 mainLayout->addWidget( mUser, row, 1, 1, 3 ); 00109 row++; 00110 } 00111 00112 if ( mFeatures & W_BINDDN ) { 00113 label = new QLabel( i18n( "Bind DN:" ), mParent ); 00114 mBindDn = new KLineEdit( mParent ); 00115 mBindDn->setObjectName( "kcfg_ldapbinddn" ); 00116 00117 mainLayout->addWidget( label, row, 0 ); 00118 mainLayout->addWidget( mBindDn, row, 1, 1, 3 ); 00119 row++; 00120 } 00121 00122 if ( mFeatures & W_REALM ) { 00123 label = new QLabel( i18n( "Realm:" ), mParent ); 00124 mRealm = new KLineEdit( mParent ); 00125 mRealm->setObjectName( "kcfg_ldaprealm" ); 00126 00127 mainLayout->addWidget( label, row, 0 ); 00128 mainLayout->addWidget( mRealm, row, 1, 1, 3 ); 00129 row++; 00130 } 00131 00132 if ( mFeatures & W_PASS ) { 00133 label = new QLabel( i18n( "Password:" ), mParent ); 00134 mPassword = new KLineEdit( mParent ); 00135 mPassword->setObjectName( "kcfg_ldappassword" ); 00136 mPassword->setEchoMode( KLineEdit::Password ); 00137 00138 mainLayout->addWidget( label, row, 0 ); 00139 mainLayout->addWidget( mPassword, row, 1, 1, 3 ); 00140 row++; 00141 } 00142 00143 if ( mFeatures & W_HOST ) { 00144 label = new QLabel( i18n( "Host:" ), mParent ); 00145 mHost = new KLineEdit( mParent ); 00146 mHost->setObjectName( "kcfg_ldaphost" ); 00147 00148 mainLayout->addWidget( label, row, 0 ); 00149 mainLayout->addWidget( mHost, row, 1, 1, 3 ); 00150 row++; 00151 } 00152 00153 col = 0; 00154 if ( mFeatures & W_PORT ) { 00155 label = new QLabel( i18n( "Port:" ), mParent ); 00156 mPort = new QSpinBox( mParent ); 00157 mPort->setRange( 0, 65535 ); 00158 mPort->setObjectName( "kcfg_ldapport" ); 00159 mPort->setSizePolicy( QSizePolicy( QSizePolicy::Maximum, QSizePolicy::Preferred ) ); 00160 mPort->setValue( 389 ); 00161 00162 mainLayout->addWidget( label, row, col ); 00163 mainLayout->addWidget( mPort, row, col+1 ); 00164 col += 2; 00165 } 00166 00167 if ( mFeatures & W_VER ) { 00168 label = new QLabel( i18n( "LDAP version:" ), mParent ); 00169 mVersion = new QSpinBox( mParent ); 00170 mVersion->setRange( 2, 3 ); 00171 mVersion->setObjectName( "kcfg_ldapver" ); 00172 mVersion->setSizePolicy( QSizePolicy( QSizePolicy::Maximum, QSizePolicy::Preferred ) ); 00173 mVersion->setValue( 3 ); 00174 mainLayout->addWidget( label, row, col ); 00175 mainLayout->addWidget( mVersion, row, col+1 ); 00176 } 00177 if ( mFeatures & ( W_PORT | W_VER ) ) { 00178 row++; 00179 } 00180 00181 col = 0; 00182 if ( mFeatures & W_SIZELIMIT ) { 00183 label = new QLabel( i18n( "Size limit:" ), mParent ); 00184 mSizeLimit = new QSpinBox( mParent ); 00185 mSizeLimit->setRange( 0, 9999999 ); 00186 mSizeLimit->setObjectName( "kcfg_ldapsizelimit" ); 00187 mSizeLimit->setSizePolicy( QSizePolicy( QSizePolicy::Maximum, QSizePolicy::Preferred ) ); 00188 mSizeLimit->setValue( 0 ); 00189 mSizeLimit->setSpecialValueText( i18nc( "default ldap size limit", "Default" ) ); 00190 mainLayout->addWidget( label, row, col ); 00191 mainLayout->addWidget( mSizeLimit, row, col+1 ); 00192 col += 2; 00193 } 00194 00195 if ( mFeatures & W_TIMELIMIT ) { 00196 label = new QLabel( i18n( "Time limit:" ), mParent ); 00197 mTimeLimit = new QSpinBox( mParent ); 00198 mTimeLimit->setRange( 0, 9999999 ); 00199 mTimeLimit->setObjectName( "kcfg_ldaptimelimit" ); 00200 mTimeLimit->setSizePolicy( QSizePolicy( QSizePolicy::Maximum, QSizePolicy::Preferred ) ); 00201 mTimeLimit->setValue( 0 ); 00202 mTimeLimit->setSuffix( i18n( " sec" ) ); 00203 mTimeLimit->setSpecialValueText( i18nc( "default ldap time limit", "Default" ) ); 00204 mainLayout->addWidget( label, row, col ); 00205 mainLayout->addWidget( mTimeLimit, row, col+1 ); 00206 } 00207 if ( mFeatures & ( W_SIZELIMIT | W_TIMELIMIT ) ) { 00208 row++; 00209 } 00210 00211 if ( mFeatures & W_PAGESIZE ) { 00212 label = new QLabel( i18n( "Page size:" ), mParent ); 00213 mPageSize = new QSpinBox( mParent ); 00214 mPageSize->setRange( 0, 9999999 ); 00215 mPageSize->setObjectName( "kcfg_ldappagesize" ); 00216 mPageSize->setSizePolicy( QSizePolicy( QSizePolicy::Maximum, QSizePolicy::Preferred ) ); 00217 mPageSize->setValue( 0 ); 00218 mPageSize->setSpecialValueText( i18n( "No paging" ) ); 00219 mainLayout->addWidget( label, row, 0 ); 00220 mainLayout->addWidget( mPageSize, row++, 1 ); 00221 } 00222 00223 if ( mFeatures & W_DN ) { 00224 label = new QLabel( i18nc( "Distinguished Name", "DN:" ), mParent ); 00225 mDn = new KLineEdit( mParent ); 00226 mDn->setObjectName( "kcfg_ldapdn" ); 00227 00228 mainLayout->addWidget( label, row, 0 ); 00229 mainLayout->addWidget( mDn, row, 1, 1, 1 ); 00230 //without host query doesn't make sense 00231 if ( mHost ) { 00232 QPushButton *dnquery = new QPushButton( i18n( "Query Server" ), mParent ); 00233 connect( dnquery, SIGNAL(clicked()), mParent, SLOT(queryDNClicked()) ); 00234 mainLayout->addWidget( dnquery, row, 2, 1, 1 ); 00235 } 00236 row++; 00237 } 00238 00239 if ( mFeatures & W_FILTER ) { 00240 label = new QLabel( i18n( "Filter:" ), mParent ); 00241 mFilter = new KLineEdit( mParent ); 00242 mFilter->setObjectName( "kcfg_ldapfilter" ); 00243 00244 mainLayout->addWidget( label, row, 0 ); 00245 mainLayout->addWidget( mFilter, row, 1, 1, 3 ); 00246 row++; 00247 } 00248 00249 if ( mFeatures & W_SECBOX ) { 00250 QGroupBox *btgroup = new QGroupBox( i18n( "Security" ), mParent ); 00251 QHBoxLayout *hbox = new QHBoxLayout; 00252 btgroup->setLayout( hbox ); 00253 mSecNo = new QRadioButton( i18nc( "@option:radio set no security", "No" ), btgroup ); 00254 mSecNo->setObjectName( "kcfg_ldapnosec" ); 00255 hbox->addWidget( mSecNo ); 00256 mSecTLS = new QRadioButton( i18nc( "@option:radio use TLS security", "TLS" ), btgroup ); 00257 mSecTLS->setObjectName( "kcfg_ldaptls" ); 00258 hbox->addWidget( mSecTLS ); 00259 mSecSSL = new QRadioButton( i18nc( "@option:radio use SSL security", "SSL" ), btgroup ); 00260 mSecSSL->setObjectName( "kcfg_ldapssl" ); 00261 hbox->addWidget( mSecSSL ); 00262 mainLayout->addWidget( btgroup, row, 0, 1, 4 ); 00263 00264 connect( mSecNo, SIGNAL(clicked()), mParent, SLOT(setLDAPPort()) ); 00265 connect( mSecTLS, SIGNAL(clicked()), mParent, SLOT(setLDAPPort()) ); 00266 connect( mSecSSL, SIGNAL(clicked()), mParent, SLOT(setLDAPSPort()) ); 00267 00268 mSecNo->setChecked( true ); 00269 row++; 00270 } 00271 00272 if ( mFeatures & W_AUTHBOX ) { 00273 00274 QGroupBox *authbox = 00275 new QGroupBox( i18n( "Authentication" ), mParent ); 00276 QVBoxLayout *vbox = new QVBoxLayout; 00277 authbox->setLayout( vbox ); 00278 QHBoxLayout *hbox = new QHBoxLayout; 00279 vbox->addLayout( hbox ); 00280 00281 mAnonymous = 00282 new QRadioButton( i18nc( "@option:radio anonymous authentication", "Anonymous" ), authbox ); 00283 mAnonymous->setObjectName( "kcfg_ldapanon" ); 00284 hbox->addWidget( mAnonymous ); 00285 mSimple = 00286 new QRadioButton( i18nc( "@option:radio simple authentication", "Simple" ), authbox ); 00287 mSimple->setObjectName( "kcfg_ldapsimple" ); 00288 hbox->addWidget( mSimple ); 00289 mSASL = 00290 new QRadioButton( i18nc( "@option:radio SASL authentication", "SASL" ), authbox ); 00291 mSASL->setObjectName( "kcfg_ldapsasl" ); 00292 hbox->addWidget( mSASL ); 00293 00294 hbox = new QHBoxLayout; 00295 vbox->addLayout( hbox ); 00296 label = new QLabel( i18n( "SASL mechanism:" ), authbox ); 00297 hbox->addWidget( label ); 00298 mMech = new KComboBox( false, authbox ); 00299 mMech->setObjectName( "kcfg_ldapsaslmech" ); 00300 mMech->setEditable( true ); 00301 mMech->addItem( "DIGEST-MD5" ); 00302 mMech->addItem( "GSSAPI" ); 00303 mMech->addItem( "PLAIN" ); 00304 hbox->addWidget( mMech ); 00305 00306 //without host query doesn't make sense 00307 if ( mHost ) { 00308 mQueryMech = new QPushButton( i18n( "Query Server" ), authbox ); 00309 hbox->addWidget( mQueryMech ); 00310 connect( mQueryMech, SIGNAL(clicked()), mParent, SLOT(queryMechClicked()) ); 00311 } 00312 00313 mainLayout->addWidget( authbox, row, 0, 2, 4 ); 00314 00315 connect( mAnonymous, SIGNAL(toggled(bool)), mParent, SLOT(setAnonymous(bool)) ); 00316 connect( mSimple, SIGNAL(toggled(bool)), mParent, SLOT(setSimple(bool)) ); 00317 connect( mSASL, SIGNAL(toggled(bool)), mParent, SLOT(setSASL(bool)) ); 00318 00319 mAnonymous->setChecked( true ); 00320 } 00321 } 00322 00323 void LdapConfigWidget::Private::sendQuery() 00324 { 00325 LdapUrl _url; 00326 00327 mQResult.clear(); 00328 mCancelled = true; 00329 00330 _url.setProtocol( ( mSecSSL && mSecSSL->isChecked() ) ? "ldaps" : "ldap" ); 00331 if ( mHost ) { 00332 _url.setHost( mHost->text() ); 00333 } 00334 if ( mPort ) { 00335 _url.setPort( mPort->value() ); 00336 } 00337 _url.setDn( LdapDN( "" ) ); 00338 _url.setAttributes( QStringList( mAttr ) ); 00339 _url.setScope( LdapUrl::Base ); 00340 if ( mVersion ) { 00341 _url.setExtension( "x-ver", QString::number( mVersion->value() ) ); 00342 } 00343 if ( mSecTLS && mSecTLS->isChecked() ) { 00344 _url.setExtension( "x-tls", "" ); 00345 } 00346 00347 kDebug() << "sendQuery url:" << _url.prettyUrl(); 00348 00349 LdapSearch search; 00350 connect( &search, SIGNAL(data(KLDAP::LdapSearch*,KLDAP::LdapObject)), 00351 mParent, SLOT(loadData(KLDAP::LdapSearch*,KLDAP::LdapObject)) ); 00352 connect( &search, SIGNAL(result(KLDAP::LdapSearch*)), 00353 mParent, SLOT(loadResult(KLDAP::LdapSearch*)) ); 00354 00355 if ( !search.search( _url ) ) { 00356 KMessageBox::error( mParent, search.errorString() ); 00357 return; 00358 } 00359 00360 if ( mProg == 0 ) { 00361 mProg = new KProgressDialog( mParent ); 00362 mProg->setWindowTitle( i18n( "LDAP Query" ) ); 00363 mProg->setModal( true ); 00364 } 00365 mProg->setLabelText( _url.prettyUrl() ); 00366 mProg->progressBar()->setRange( 0, 1 ); 00367 mProg->progressBar()->setValue( 0 ); 00368 mProg->exec(); 00369 if ( mCancelled ) { 00370 kDebug() << "query canceled!"; 00371 search.abandon(); 00372 } else { 00373 if ( search.error() ) { 00374 KMessageBox::error( mParent, search.errorString() ); 00375 } 00376 } 00377 } 00378 00379 void LdapConfigWidget::Private::queryMechClicked() 00380 { 00381 mAttr = "supportedsaslmechanisms"; 00382 sendQuery(); 00383 if ( !mQResult.isEmpty() ) { 00384 mQResult.sort(); 00385 mMech->clear(); 00386 mMech->addItems( mQResult ); 00387 } 00388 } 00389 00390 void LdapConfigWidget::Private::queryDNClicked() 00391 { 00392 mAttr = "namingcontexts"; 00393 sendQuery(); 00394 if ( !mQResult.isEmpty() ) { 00395 mDn->setText( mQResult.first() ); 00396 } 00397 } 00398 00399 void LdapConfigWidget::Private::loadData( LdapSearch *, const LdapObject &object ) 00400 { 00401 kDebug() << "object:" << object.toString(); 00402 mProg->progressBar()->setValue( mProg->progressBar()->value() + 1 ); 00403 LdapAttrMap::ConstIterator end( object.attributes().constEnd() ); 00404 for ( LdapAttrMap::ConstIterator it = object.attributes().constBegin(); 00405 it != end; ++it ) { 00406 LdapAttrValue::ConstIterator end2( (*it).constEnd() ); 00407 for ( LdapAttrValue::ConstIterator it2 = (*it).constBegin(); 00408 it2 != end2; ++it2 ) { 00409 mQResult.push_back( QString::fromUtf8( *it2 ) ); 00410 } 00411 } 00412 } 00413 00414 void LdapConfigWidget::Private::loadResult( LdapSearch *search ) 00415 { 00416 Q_UNUSED( search ); 00417 mCancelled = false; 00418 mProg->close(); 00419 } 00420 00421 void LdapConfigWidget::Private::setAnonymous( bool on ) 00422 { 00423 if ( !on ) { 00424 return; 00425 } 00426 if ( mUser ) { 00427 mUser->setEnabled( false ); 00428 } 00429 if ( mPassword ) { 00430 mPassword->setEnabled( false ); 00431 } 00432 if ( mBindDn ) { 00433 mBindDn->setEnabled( false ); 00434 } 00435 if ( mRealm ) { 00436 mRealm->setEnabled( false ); 00437 } 00438 if ( mMech ) { 00439 mMech->setEnabled( false ); 00440 } 00441 if ( mQueryMech ) { 00442 mQueryMech->setEnabled( false ); 00443 } 00444 } 00445 00446 void LdapConfigWidget::Private::setSimple( bool on ) 00447 { 00448 if ( !on ) { 00449 return; 00450 } 00451 if ( mUser ) { 00452 mUser->setEnabled( false ); 00453 } 00454 if ( mPassword ) { 00455 mPassword->setEnabled( true ); 00456 } 00457 if ( mBindDn ) { 00458 mBindDn->setEnabled( true ); 00459 } 00460 if ( mRealm ) { 00461 mRealm->setEnabled( false ); 00462 } 00463 if ( mMech ) { 00464 mMech->setEnabled( false ); 00465 } 00466 if ( mQueryMech ) { 00467 mQueryMech->setEnabled( false ); 00468 } 00469 } 00470 00471 void LdapConfigWidget::Private::setSASL( bool on ) 00472 { 00473 if ( !on ) { 00474 return; 00475 } 00476 if ( mUser ) { 00477 mUser->setEnabled( true ); 00478 } 00479 if ( mPassword ) { 00480 mPassword->setEnabled( true ); 00481 } 00482 if ( mBindDn ) { 00483 mBindDn->setEnabled( true ); 00484 } 00485 if ( mRealm ) { 00486 mRealm->setEnabled( true ); 00487 } 00488 if ( mMech ) { 00489 mMech->setEnabled( true ); 00490 } 00491 if ( mQueryMech ) { 00492 mQueryMech->setEnabled( true ); 00493 } 00494 } 00495 00496 void LdapConfigWidget::Private::setLDAPPort() 00497 { 00498 if ( mPort ) { 00499 mPort->setValue( 389 ); 00500 } 00501 } 00502 00503 void LdapConfigWidget::Private::setLDAPSPort() 00504 { 00505 if ( mPort ) { 00506 mPort->setValue( 636 ); 00507 } 00508 } 00509 00510 LdapConfigWidget::LdapConfigWidget( QWidget *parent, Qt::WFlags fl ) 00511 : QWidget( parent, fl ), d( new Private( this ) ) 00512 { 00513 } 00514 00515 LdapConfigWidget::LdapConfigWidget( LdapConfigWidget::WinFlags flags, 00516 QWidget *parent, Qt::WFlags fl ) 00517 : QWidget( parent, fl ), d( new Private( this ) ) 00518 { 00519 d->mFeatures = flags; 00520 00521 d->initWidget(); 00522 } 00523 00524 LdapConfigWidget::~LdapConfigWidget() 00525 { 00526 delete d; 00527 } 00528 00529 LdapUrl LdapConfigWidget::url() const 00530 { 00531 return server().url(); 00532 } 00533 00534 void LdapConfigWidget::setUrl( const LdapUrl &url ) 00535 { 00536 LdapServer _server; 00537 _server.setUrl( url ); 00538 setServer( _server ); 00539 } 00540 00541 LdapServer LdapConfigWidget::server() const 00542 { 00543 LdapServer _server; 00544 if ( d->mSecSSL && d->mSecSSL->isChecked() ) { 00545 _server.setSecurity( LdapServer::SSL ); 00546 } else if ( d->mSecTLS && d->mSecTLS->isChecked() ) { 00547 _server.setSecurity( LdapServer::TLS ); 00548 } else { 00549 _server.setSecurity( LdapServer::None ); 00550 } 00551 00552 if ( d->mUser ) { 00553 _server.setUser( d->mUser->text() ); 00554 } 00555 if ( d->mBindDn ) { 00556 _server.setBindDn( d->mBindDn->text() ); 00557 } 00558 if ( d->mPassword ) { 00559 _server.setPassword( d->mPassword->text() ); 00560 } 00561 if ( d->mRealm ) { 00562 _server.setRealm( d->mRealm->text() ); 00563 } 00564 if ( d->mHost ) { 00565 _server.setHost( d->mHost->text() ); 00566 } 00567 if ( d->mPort ) { 00568 _server.setPort( d->mPort->value() ); 00569 } 00570 if ( d->mDn ) { 00571 _server.setBaseDn( LdapDN( d->mDn->text() ) ); 00572 } 00573 if ( d->mFilter ) { 00574 _server.setFilter( d->mFilter->text() ); 00575 } 00576 if ( d->mVersion ) { 00577 _server.setVersion( d->mVersion->value() ); 00578 } 00579 if ( d->mSizeLimit && d->mSizeLimit->value() != 0 ) { 00580 _server.setSizeLimit( d->mSizeLimit->value() ); 00581 } 00582 if ( d->mTimeLimit && d->mTimeLimit->value() != 0 ) { 00583 _server.setTimeLimit( d->mTimeLimit->value() ); 00584 } 00585 if ( d->mPageSize && d->mPageSize->value() != 0 ) { 00586 _server.setPageSize( d->mPageSize->value() ); 00587 } 00588 if ( d->mAnonymous && d->mAnonymous->isChecked() ) { 00589 _server.setAuth( LdapServer::Anonymous ); 00590 } else if ( d->mSimple && d->mSimple->isChecked() ) { 00591 _server.setAuth( LdapServer::Simple ); 00592 } else if ( d->mSASL && d->mSASL->isChecked() ) { 00593 _server.setAuth( LdapServer::SASL ); 00594 _server.setMech( d->mMech->currentText() ); 00595 } 00596 return _server; 00597 } 00598 00599 void LdapConfigWidget::setServer( const LdapServer &server ) 00600 { 00601 switch ( server.security() ) { 00602 case LdapServer::SSL: 00603 if ( d->mSecSSL ) { 00604 d->mSecSSL->setChecked( true ); 00605 } 00606 case LdapServer::TLS: 00607 if ( d->mSecTLS ) { 00608 d->mSecTLS->setChecked( true ); 00609 } 00610 case LdapServer::None: 00611 if ( d->mSecNo ) { 00612 d->mSecNo->setChecked( true ); 00613 } 00614 } 00615 00616 switch ( server.auth() ) { 00617 case LdapServer::Anonymous: 00618 if ( d->mAnonymous ) { 00619 d->mAnonymous->setChecked( true ); 00620 } 00621 case LdapServer::Simple: 00622 if ( d->mSimple ) { 00623 d->mSimple->setChecked( true ); 00624 } 00625 case LdapServer::SASL: 00626 if ( d->mSASL ) { 00627 d->mSASL->setChecked( true ); 00628 } 00629 } 00630 00631 setUser( server.user() ); 00632 setBindDn( server.bindDn() ); 00633 setPassword( server.password() ); 00634 setRealm( server.realm() ); 00635 setHost( server.host() ); 00636 setPort( server.port() ); 00637 setFilter( server.filter() ); 00638 setDn( server.baseDn() ); 00639 setVersion( server.version() ); 00640 setSizeLimit( server.sizeLimit() ); 00641 setTimeLimit( server.timeLimit() ); 00642 setPageSize( server.pageSize() ); 00643 setMech( server.mech() ); 00644 } 00645 00646 void LdapConfigWidget::setUser( const QString &user ) 00647 { 00648 if ( d->mUser ) { 00649 d->mUser->setText( user ); 00650 } 00651 } 00652 00653 QString LdapConfigWidget::user() const 00654 { 00655 return d->mUser ? d->mUser->text() : QString(); 00656 } 00657 00658 void LdapConfigWidget::setPassword( const QString &password ) 00659 { 00660 if ( d->mPassword ) { 00661 d->mPassword->setText( password ); 00662 } 00663 } 00664 00665 QString LdapConfigWidget::password() const 00666 { 00667 return d->mPassword ? d->mPassword->text() : QString(); 00668 } 00669 00670 void LdapConfigWidget::setBindDn( const QString &binddn ) 00671 { 00672 if ( d->mBindDn ) { 00673 d->mBindDn->setText( binddn ); 00674 } 00675 } 00676 00677 QString LdapConfigWidget::bindDn() const 00678 { 00679 return d->mBindDn ? d->mBindDn->text() : QString(); 00680 } 00681 00682 void LdapConfigWidget::setRealm( const QString &realm ) 00683 { 00684 if ( d->mRealm ) { 00685 d->mRealm->setText( realm ); 00686 } 00687 } 00688 00689 QString LdapConfigWidget::realm() const 00690 { 00691 return d->mRealm ? d->mRealm->text() : QString(); 00692 } 00693 00694 void LdapConfigWidget::setHost( const QString &host ) 00695 { 00696 if ( d->mHost ) { 00697 d->mHost->setText( host ); 00698 } 00699 } 00700 00701 QString LdapConfigWidget::host() const 00702 { 00703 return d->mHost ? d->mHost->text() : QString(); 00704 } 00705 00706 void LdapConfigWidget::setPort( int port ) 00707 { 00708 if ( d->mPort ) { 00709 d->mPort->setValue( port ); 00710 } 00711 } 00712 00713 int LdapConfigWidget::port() const 00714 { 00715 return d->mPort ? d->mPort->value() : 389; 00716 } 00717 00718 void LdapConfigWidget::setVersion( int version ) 00719 { 00720 if ( d->mVersion ) { 00721 d->mVersion->setValue( version ); 00722 } 00723 } 00724 00725 int LdapConfigWidget::version() const 00726 { 00727 return d->mVersion ? d->mVersion->value() : 3; 00728 } 00729 00730 void LdapConfigWidget::setDn( const LdapDN &dn ) 00731 { 00732 if ( d->mDn ) { 00733 d->mDn->setText( dn.toString() ); 00734 } 00735 } 00736 00737 LdapDN LdapConfigWidget::dn() const 00738 { 00739 return d->mDn ? LdapDN( d->mDn->text() ) : LdapDN(); 00740 } 00741 00742 void LdapConfigWidget::setFilter( const QString &filter ) 00743 { 00744 if ( d->mFilter ) { 00745 d->mFilter->setText( filter ); 00746 } 00747 } 00748 00749 QString LdapConfigWidget::filter() const 00750 { 00751 return d->mFilter ? d->mFilter->text() : QString(); 00752 } 00753 00754 void LdapConfigWidget::setMech( const QString &mech ) 00755 { 00756 if ( d->mMech == 0 ) { 00757 return; 00758 } 00759 if ( !mech.isEmpty() ) { 00760 int i = 0; 00761 while ( i < d->mMech->count() ) { 00762 if ( d->mMech->itemText( i ) == mech ) { 00763 break; 00764 } 00765 i++; 00766 } 00767 if ( i == d->mMech->count() ) { 00768 d->mMech->addItem( mech ); 00769 } 00770 d->mMech->setCurrentIndex( i ); 00771 } 00772 } 00773 00774 QString LdapConfigWidget::mech() const 00775 { 00776 return d->mMech ? d->mMech->currentText() : QString(); 00777 } 00778 00779 void LdapConfigWidget::setSecurity( Security security ) 00780 { 00781 switch ( security ) { 00782 case None: 00783 d->mSecNo->setChecked( true ); 00784 break; 00785 case SSL: 00786 d->mSecSSL->setChecked( true ); 00787 break; 00788 case TLS: 00789 d->mSecTLS->setChecked( true ); 00790 break; 00791 } 00792 } 00793 00794 LdapConfigWidget::Security LdapConfigWidget::security() const 00795 { 00796 if ( d->mSecTLS->isChecked() ) { 00797 return TLS; 00798 } 00799 if ( d->mSecSSL->isChecked() ) { 00800 return SSL; 00801 } 00802 return None; 00803 } 00804 00805 void LdapConfigWidget::setAuth( Auth auth ) 00806 { 00807 switch ( auth ) { 00808 case Anonymous: 00809 d->mAnonymous->setChecked( true ); 00810 break; 00811 case Simple: 00812 d->mSimple->setChecked( true ); 00813 break; 00814 case SASL: 00815 d->mSASL->setChecked( true ); 00816 break; 00817 } 00818 } 00819 00820 LdapConfigWidget::Auth LdapConfigWidget::auth() const 00821 { 00822 if ( d->mSimple->isChecked() ) { 00823 return Simple; 00824 } 00825 if ( d->mSASL->isChecked() ) { 00826 return SASL; 00827 } 00828 return Anonymous; 00829 } 00830 00831 void LdapConfigWidget::setSizeLimit( int sizelimit ) 00832 { 00833 if ( d->mSizeLimit ) { 00834 d->mSizeLimit->setValue( sizelimit ); 00835 } 00836 } 00837 00838 int LdapConfigWidget::sizeLimit() const 00839 { 00840 return d->mSizeLimit ? d->mSizeLimit->value() : 0; 00841 } 00842 00843 void LdapConfigWidget::setTimeLimit( int timelimit ) 00844 { 00845 if ( d->mTimeLimit ) { 00846 d->mTimeLimit->setValue( timelimit ); 00847 } 00848 } 00849 00850 int LdapConfigWidget::timeLimit() const 00851 { 00852 return d->mTimeLimit ? d->mTimeLimit->value() : 0; 00853 } 00854 00855 void LdapConfigWidget::setPageSize( int pagesize ) 00856 { 00857 if ( d->mPageSize ) { 00858 d->mPageSize->setValue( pagesize ); 00859 } 00860 } 00861 00862 int LdapConfigWidget::pageSize() const 00863 { 00864 return d->mPageSize ? d->mPageSize->value() : 0; 00865 } 00866 00867 LdapConfigWidget::WinFlags LdapConfigWidget::features() const 00868 { 00869 return d->mFeatures; 00870 } 00871 00872 void LdapConfigWidget::setFeatures( LdapConfigWidget::WinFlags features ) 00873 { 00874 d->mFeatures = features; 00875 00876 // First delete all the child widgets. 00877 // FIXME: I hope it's correct 00878 QList<QObject*> ch = children(); 00879 const int numberOfChild( ch.count() ); 00880 for ( int i = 0; i < numberOfChild; ++i ) { 00881 QWidget *widget = dynamic_cast<QWidget*>( ch[ i ] ); 00882 if ( widget && widget->parent() == this ) { 00883 delete ( widget ); 00884 } 00885 } 00886 00887 // Re-create child widgets according to the new flags 00888 d->initWidget(); 00889 } 00890 00891 #include "ldapconfigwidget.moc"
This file is part of the KDE documentation.
Documentation copyright © 1996-2012 The KDE developers.
Generated on Mon Aug 27 2012 22:09:13 by doxygen 1.7.5 written by Dimitri van Heesch, © 1997-2006
Documentation copyright © 1996-2012 The KDE developers.
Generated on Mon Aug 27 2012 22:09:13 by doxygen 1.7.5 written by Dimitri van Heesch, © 1997-2006
KDE's Doxygen guidelines are available online.