2 * Copyright (c) 1998 Denis Perchine <dyp@perchine.com>
3 * Copyright (c) 2004 Szombathelyi György <gyurco@freemail.hu>
4 * Former maintainer: Adriaan de Groot <groot@kde.org>
6 * This program is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU General Public
8 * License as published by the Free Software Foundation; either
9 * version 2 of the License, or (at your option) any later version.
11 * This library is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * Library General Public License for more details.
16 * You should have received a copy of the GNU Library General Public License
17 * along with this library; see the file COPYING.LIB. If not, write to
18 * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
19 * Boston, MA 02110-1301, USA.
24 #include <kcombobox.h>
25 #include <kmessagebox.h>
26 #include <klineedit.h>
27 #include <knuminput.h>
28 #include <kpushbutton.h>
29 #include <ktabwidget.h>
30 #include <kldap/ldapconfigwidget.h>
31 #include <kldap/ldapurl.h>
34 #include "ku_configdlg.h"
37 #include "ui_ku_generalsettings.h"
38 #include "ui_ku_filessettings.h"
39 #include "ui_ku_ldapsettings.h"
40 #include "ui_ku_ldapsamba.h"
41 #include "ui_ku_passwordpolicy.h"
43 KU_ConfigDlg::KU_ConfigDlg( KConfigSkeleton
*config
, QWidget
*parent
, const char *name
) :
44 KConfigDialog( parent
, name
, config
),sambaui(0)
47 setButtons(Default
|Ok
|Apply
|Cancel
|Help
);
50 KTabWidget
*page1
= new KTabWidget( this );
52 Ui::KU_GeneralSettings ui
;
53 QFrame
*frame
= new QFrame ( page1
);
55 ui
.kcfg_shell
->addItem( i18n("<Empty>" ) );
56 ui
.kcfg_shell
->addItems( readShells() );
57 page1
->addTab( frame
, i18n("Connection") );
60 Ui::KU_PasswordPolicy ui
;
61 QFrame
*frame
= new QFrame ( page1
);
63 page1
->addTab( frame
, i18n("Password Policy") );
65 addPage( page1
, i18n("General"), "kuser", i18n("General Settings") );
68 QFrame
*page2
= new QFrame( this );
69 Ui::KU_FilesSettings
*ui
= new Ui::KU_FilesSettings();
71 addPage( page2
, i18n("Files"), "document-properties", i18n("File Source Settings") );
74 KTabWidget
*page3
= new KTabWidget( this );
77 new KLDAP::LdapConfigWidget(
78 KLDAP::LdapConfigWidget::W_USER
|
79 KLDAP::LdapConfigWidget::W_PASS
|
80 KLDAP::LdapConfigWidget::W_BINDDN
|
81 KLDAP::LdapConfigWidget::W_REALM
|
82 KLDAP::LdapConfigWidget::W_HOST
|
83 KLDAP::LdapConfigWidget::W_PORT
|
84 KLDAP::LdapConfigWidget::W_VER
|
85 KLDAP::LdapConfigWidget::W_DN
|
86 KLDAP::LdapConfigWidget::W_SECBOX
|
87 KLDAP::LdapConfigWidget::W_AUTHBOX
|
88 KLDAP::LdapConfigWidget::W_TIMELIMIT
|
89 KLDAP::LdapConfigWidget::W_SIZELIMIT
|
90 KLDAP::LdapConfigWidget::W_PAGESIZE
,
93 page3
->addTab( ldconf
, i18n("Connection") );
96 QFrame
*page3b
= new QFrame( 0 );
97 Ui::KU_LdapSettings
*ui
= new Ui::KU_LdapSettings();
98 ui
->setupUi( page3b
);
99 page3
->addTab( page3b
, i18n("Settings") );
102 QFrame
*page3c
= new QFrame( 0 );
103 sambaui
= new Ui::KU_LdapSamba();
104 sambaui
->setupUi( page3c
);
105 connect( sambaui
->domQuery
, SIGNAL(clicked()), SLOT(slotQueryClicked()) );
106 page3
->addTab( page3c
, i18n("Samba") );
108 addPage( page3
, i18n("LDAP"), "network-server-database", i18n("LDAP Source Settings") );
109 setHelp(QString(),"kuser");
112 KU_ConfigDlg::~KU_ConfigDlg()
117 void KU_ConfigDlg::slotQueryClicked()
120 KLDAP::LdapUrl _url
= ldconf
->url();
125 mDomain
.ridbase
= 1000;
128 QString filter
= "(objectClass=sambaDomain)";
129 QString dom
= sambaui
->kcfg_samdomain
->text();
130 if ( !dom
.isEmpty() ) filter
= "(&(sambaDomainName=" + dom
+ ')' + filter
+ ')';
131 attrs
.append("sambaDomainName");
132 attrs
.append("sambaSID");
133 attrs
.append("sambaAlgorithmicRidBase");
134 _url
.setAttributes( attrs
);
135 _url
.setScope( KLDAP::LdapUrl::One
);
136 _url
.setExtension( "x-dir", "base" );
137 _url
.setFilter( filter
);
139 kDebug() << "sendQuery url: " << _url
.prettyUrl();
140 mLdif
.startParsing();
141 KIO::Job
*job
= KIO::get( _url
, KIO::Reload
, KIO::HideProgressInfo
);
142 // job->addMetaData("no-auth-prompt","true");
143 connect( job
, SIGNAL( data( KIO::Job
*, const QByteArray
& ) ),
144 this, SLOT( loadData( KIO::Job
*, const QByteArray
& ) ) );
145 connect( job
, SIGNAL( result( KJob
* ) ),
146 this, SLOT( loadResult( KJob
* ) ) );
148 mProg
= new QProgressDialog( 0 );
149 mProg
->setLabel( new QLabel(_url
.prettyUrl()) );
150 mProg
->setValue( 0 );
151 mProg
->setMaximum( 1 );
152 mProg
->setAutoClose( false );
153 mProg
->setAutoReset( false );
155 if ( mProg
->wasCanceled() ) {
156 kDebug() << "query cancelled!";
157 job
->kill( KJob::Quietly
);
159 if ( !mErrorMsg
.isEmpty() )
160 KMessageBox::error( this, mErrorMsg
);
162 if ( !mResult
.isEmpty() ) {
163 mDomain
= mResult
.first();
164 if ( !mDomain
.name
.isEmpty() && !mDomain
.sid
.isEmpty() ) {
165 sambaui
->kcfg_samdomain
->setText( mDomain
.name
);
166 sambaui
->kcfg_samdomsid
->setText( mDomain
.sid
);
167 sambaui
->kcfg_samridbase
->setValue( mDomain
.ridbase
);
173 kDebug() << "domQueryx";
177 void KU_ConfigDlg::loadData( KIO::Job
*, const QByteArray
& d
)
179 KLDAP::Ldif::ParseValue ret
;
187 ret
= mLdif
.nextItem();
189 case KLDAP::Ldif::Item
:
190 if ( mLdif
.attr() == "sambaDomainName" )
191 mDomain
.name
= QString::fromUtf8( mLdif
.value(), mLdif
.value().size() );
192 else if ( mLdif
.attr() == "sambaSID" )
193 mDomain
.sid
= QString::fromUtf8( mLdif
.value(), mLdif
.value().size() );
194 else if ( mLdif
.attr() == "sambaAlgorithmicRidBase" )
195 mDomain
.ridbase
= QString::fromUtf8( mLdif
.value(), mLdif
.value().size() ).toUInt();
197 case KLDAP::Ldif::EndEntry
:
198 mProg
->setValue( 1 );
199 if ( !mDomain
.name
.isEmpty() && !mDomain
.sid
.isEmpty() )
200 mResult
.push_back( mDomain
);
203 mDomain
.ridbase
= 1000;
207 } while ( ret
!= KLDAP::Ldif::MoreData
);
210 void KU_ConfigDlg::loadResult( KJob
* job
)
212 int error
= job
->error();
213 if ( error
&& error
!= KIO::ERR_USER_CANCELED
)
214 mErrorMsg
= job
->errorString();
221 #include "ku_configdlg.moc"