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