diff options
Diffstat (limited to 'opensuse/tdebase/kpamgreeter.diff')
-rw-r--r-- | opensuse/tdebase/kpamgreeter.diff | 852 |
1 files changed, 0 insertions, 852 deletions
diff --git a/opensuse/tdebase/kpamgreeter.diff b/opensuse/tdebase/kpamgreeter.diff deleted file mode 100644 index ff8241623..000000000 --- a/opensuse/tdebase/kpamgreeter.diff +++ /dev/null @@ -1,852 +0,0 @@ -Index: kdm/backend/client.c -=================================================================== ---- kdm/backend/client.c.orig -+++ kdm/backend/client.c -@@ -547,6 +547,9 @@ Verify( GConvFunc gconv, int rootok ) - } else - psrv = PAMService; - pdata.usecur = TRUE; -+ } else if (!strcmp( curtype, "pam" )) { -+ psrv = PAMService; -+ pdata.usecur = FALSE; - } else { - sprintf( psrvb, "%.31s-%.31s", PAMService, curtype ); - psrv = psrvb; -@@ -616,7 +619,7 @@ Verify( GConvFunc gconv, int rootok ) - free( msg ); - V_RET_FAIL( 0 ); - } -- } else if (!strcmp( curtype, "generic" )) { -+ } else if (!strcmp( curtype, "generic" ) || !strcmp(curtype, "pam")) { - if (!gconv( GCONV_USER, 0 )) - return 0; - for (curret = 0;;) { -Index: kdm/kfrontend/themer/kdmlabel.h -=================================================================== ---- kdm/kfrontend/themer/kdmlabel.h.orig -+++ kdm/kfrontend/themer/kdmlabel.h -@@ -50,6 +50,7 @@ protected: - // handle switching between normal / active / prelight configurations - virtual void statusChanged(); - -+public: - struct LabelStruct { - QString text; - bool isTimer; -Index: kdmlib/kgreet_pam.cpp -=================================================================== ---- /dev/null -+++ kdmlib/kgreet_pam.cpp -@@ -0,0 +1,668 @@ -+/* -+ -+Conversation widget for kdm greeter -+ -+Copyright (C) 2008 Dirk Mueller <[email protected]> -+ -+based on classic kdm greeter: -+ -+ Copyright (C) 1997, 1998, 2000 Steffen Hansen <[email protected]> -+ Copyright (C) 2000-2003 Oswald Buddenhagen <[email protected]> -+ -+ -+This program is free software; you can redistribute it and/or modify -+it under the terms of the GNU General Public License as published by -+the Free Software Foundation; either version 2 of the License, or -+(at your option) any later version. -+ -+This program 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 General Public License for more details. -+ -+You should have received a copy of the GNU General Public License -+along with this program; if not, write to the Free Software -+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -+ -+*/ -+ -+#include "kgreet_pam.h" -+#include "themer/kdmthemer.h" -+#include "themer/kdmlabel.h" -+ -+#include <klocale.h> -+#include <klineedit.h> -+#include <kpassdlg.h> -+#include <kuser.h> -+ -+#include <qregexp.h> -+#include <qlayout.h> -+#include <qlabel.h> -+#include <qtimer.h> -+ -+#include <stdlib.h> -+#include <stdio.h> -+#include <stdarg.h> -+#include <syslog.h> -+ -+//#define PAM_GREETER_DEBUG -+ -+class KDMPasswordEdit : public KPasswordEdit { -+public: -+ KDMPasswordEdit( QWidget *parent ) : KPasswordEdit( parent, 0 ) {} -+ KDMPasswordEdit( KPasswordEdit::EchoModes echoMode, QWidget *parent ) : KPasswordEdit( echoMode, parent, 0 ) {} -+protected: -+ virtual void contextMenuEvent( QContextMenuEvent * ) {} -+}; -+ -+static FILE* log; -+static void debug(const char* fmt, ...) -+{ -+ va_list lst; -+ va_start(lst, fmt); -+ -+#ifdef PAM_GREETER_DEBUG -+#if 0 -+ vfprintf(log, fmt, lst); -+ fflush(log); -+#else -+ char buf[6000]; -+ sprintf(buf, "*** %s\n", fmt); -+ vsyslog(LOG_WARNING, buf, lst); -+#endif -+#endif -+ va_end(lst); -+} -+ -+static KPasswordEdit::EchoModes echoMode; -+ -+KPamGreeter::KPamGreeter( KGreeterPluginHandler *_handler, -+ KdmThemer *themer, -+ QWidget *parent, QWidget *pred, -+ const QString &_fixedEntity, -+ Function _func, Context _ctx ) : -+ QObject(), -+ KGreeterPlugin( _handler ), -+ fixedUser( _fixedEntity ), -+ func( _func ), -+ ctx( _ctx ), -+ exp( -1 ), -+ pExp( -1 ), -+ running( false ) -+{ -+ ctx = Login; -+ -+ debug("KPamGreeter constructed\n"); -+ -+ m_parentWidget = parent; -+ -+ KdmItem *user_entry = 0, *pw_entry = 0; -+ int line = 0; -+ -+ layoutItem = 0; -+ -+ if (themer && -+ (!(user_entry = themer->findNode( "user-entry" )) || -+ !(pw_entry = themer->findNode( "pw-entry" )))) -+ themer = 0; -+ -+ m_themer = themer; -+ -+ if (!themer) -+ layoutItem = new QGridLayout( 0, 0, 10 ); -+ -+ loginLabel = 0; -+ authLabel.clear(); -+ authEdit.clear(); -+ loginLabel = 0; -+ loginEdit = 0; -+ if (ctx == ExUnlock || ctx == ExChangeTok) -+ fixedUser = KUser().loginName(); -+ if (func != ChAuthTok) { -+ debug("func != ChAuthTok\n"); -+ debug("fixedUser: *%s*\n", fixedUser.latin1()); -+ -+ if (fixedUser.isEmpty()) { -+ loginEdit = new KLineEdit( parent ); -+ loginEdit->setContextMenuEnabled( false ); -+ connect( loginEdit, SIGNAL(lostFocus()), SLOT(slotLoginLostFocus()) ); -+ connect( loginEdit, SIGNAL(lostFocus()), SLOT(slotActivity()) ); -+ connect( loginEdit, SIGNAL(textChanged( const QString & )), SLOT(slotActivity()) ); -+ connect( loginEdit, SIGNAL(selectionChanged()), SLOT(slotActivity()) ); -+ if (pred) { -+ parent->setTabOrder( pred, loginEdit ); -+ pred = loginEdit; -+ } -+ if (!getLayoutItem()) { -+ loginEdit->adjustSize(); -+ user_entry->setWidget( loginEdit ); -+ } else { -+ loginLabel = new QLabel( loginEdit, i18n("Username:"), parent ); -+ getLayoutItem()->addWidget( loginLabel, line, 0 ); -+ getLayoutItem()->addWidget( loginEdit, line++, 1 ); -+ } -+ } else if (ctx != Login && ctx != Shutdown && getLayoutItem()) { -+ loginLabel = new QLabel( i18n("Username:"), parent ); -+ getLayoutItem()->addWidget( loginLabel, line, 0 ); -+ getLayoutItem()->addWidget( new QLabel( fixedUser, parent ), line++, 1 ); -+ } -+#if 0 -+ if (echoMode == -1) -+ passwdEdit = new KDMPasswordEdit( parent ); -+ else -+ passwdEdit = new KDMPasswordEdit( echoMode, -+ parent ); -+ connect( passwdEdit, SIGNAL(textChanged( const QString & )), -+ SLOT(slotActivity()) ); -+ connect( passwdEdit, SIGNAL(lostFocus()), SLOT(slotActivity()) ); -+ if (pred) { -+ parent->setTabOrder( pred, passwdEdit ); -+ pred = passwdEdit; -+ } -+ if (!getLayoutItem()) { -+ passwdEdit->adjustSize(); -+ pw_entry->setWidget( passwdEdit ); -+ } else { -+ passwdLabel = new QLabel( passwdEdit, -+ func == Authenticate ? -+ i18n("hello &Password:") : -+ i18n("Current &password:"), -+ parent ); -+ getLayoutItem()->addWidget( passwdLabel, line, 0 ); -+ getLayoutItem()->addWidget( passwdEdit, line++, 1 ); -+ } -+#endif -+ if (loginEdit) -+ loginEdit->setFocus(); -+ } -+ if (func != Authenticate) { -+ if (echoMode == -1) { -+ authEdit << new KDMPasswordEdit( echoMode, parent ); -+ authEdit << new KDMPasswordEdit( echoMode, parent ); -+ } else { -+ authEdit << new KDMPasswordEdit( parent ); -+ authEdit << new KDMPasswordEdit( parent ); -+ } -+ authLabel << new QLabel( authEdit[0], i18n("&New password:"), parent ); -+ authLabel << new QLabel( authEdit[1], i18n("Con&firm password:"), parent ); -+ if (pred) { -+ parent->setTabOrder( pred, authEdit[0] ); -+ parent->setTabOrder( authEdit[0], authEdit[1] ); -+ } -+ if (getLayoutItem()) { -+ getLayoutItem()->addWidget( authLabel[0], line, 0 ); -+ getLayoutItem()->addWidget( authEdit[0], line++, 1 ); -+ getLayoutItem()->addWidget( authLabel[1], line, 0 ); -+ getLayoutItem()->addWidget( authEdit[1], line, 1 ); -+ } -+ if (authEdit.size() >= 2) -+ authEdit[1]->setFocus(); -+ } -+} -+ -+// virtual -+KPamGreeter::~KPamGreeter() -+{ -+ debug("KPamGreeter::~KPamGreeter"); -+ abort(); -+ if (!layoutItem) { -+ delete loginEdit; -+ return; -+ } -+ QLayoutIterator it = static_cast<QLayout *>(layoutItem)->iterator(); -+ for (QLayoutItem *itm = it.current(); itm; itm = ++it) -+ delete itm->widget(); -+ delete layoutItem; -+ debug("destructor finished, good bye"); -+} -+ -+void // virtual -+KPamGreeter::loadUsers( const QStringList &users ) -+{ -+ KCompletion *userNamesCompletion = new KCompletion; -+ userNamesCompletion->setItems( users ); -+ loginEdit->setCompletionObject( userNamesCompletion ); -+ loginEdit->setAutoDeleteCompletionObject( true ); -+ loginEdit->setCompletionMode( KGlobalSettings::CompletionAuto ); -+} -+ -+void // virtual -+KPamGreeter::presetEntity( const QString &entity, int field ) -+{ -+ debug("presetEntity(%s,%d) called!\n", entity.latin1(), field); -+ loginEdit->setText( entity ); -+ if (field == 1 && authEdit.size() >= 1) -+ authEdit[0]->setFocus(); -+ else { -+ loginEdit->setFocus(); -+ loginEdit->selectAll(); -+ if (field == -1 && authEdit.size() >= 1) { -+ authEdit[0]->setText( " " ); -+ authEdit[0]->setEnabled( false ); -+ authTok = false; -+ } -+ } -+ curUser = entity; -+} -+ -+QString // virtual -+KPamGreeter::getEntity() const -+{ -+ return fixedUser.isEmpty() ? loginEdit->text() : fixedUser; -+} -+ -+void // virtual -+KPamGreeter::setUser( const QString &user ) -+{ -+ // assert( fixedUser.isEmpty() ); -+ curUser = user; -+ loginEdit->setText( user ); -+ if (authEdit.size() >= 1) { -+ authEdit[0]->setFocus(); -+ authEdit[0]->selectAll(); -+ } -+} -+ -+void // virtual -+KPamGreeter::setEnabled(bool enable) -+{ -+ // assert( !passwd1Label ); -+ // assert( func == Authenticate && ctx == Shutdown ); -+// if (loginLabel) -+// loginLabel->setEnabled( enable ); -+ authEdit[0]->setEnabled( enable ); -+ setActive( enable ); -+ if (enable) -+ authEdit[0]->setFocus(); -+ } -+ -+void // private -+KPamGreeter::returnData() -+{ -+ debug("*************** returnData called with exp %d\n", exp); -+ -+ -+ switch (exp) { -+ case 0: -+ handler->gplugReturnText( (loginEdit ? loginEdit->text() : -+ fixedUser).local8Bit(), -+ KGreeterPluginHandler::IsUser ); -+ break; -+ case 1: -+ handler->gplugReturnText( authEdit[0]->password(), -+ KGreeterPluginHandler::IsPassword | -+ KGreeterPluginHandler::IsSecret ); -+ break; -+ case 2: -+ handler->gplugReturnText( authEdit[1]->password(), -+ KGreeterPluginHandler::IsSecret ); -+ break; -+ default: // case 3: -+ handler->gplugReturnText( authEdit[2]->password(), -+ KGreeterPluginHandler::IsNewPassword | -+ KGreeterPluginHandler::IsSecret ); -+ break; -+ } -+} -+ -+bool // virtual -+KPamGreeter::textMessage( const char *text, bool err ) -+{ -+ debug(" ************** textMessage(%s, %d)\n", text, err); -+ -+ if (!authEdit.size()) -+ return false; -+ -+ if (getLayoutItem()) { -+ QLabel* label = new QLabel(QString::fromUtf8(text), m_parentWidget); -+ getLayoutItem()->addWidget(label, state+1, 0, 0); -+ } -+ -+ return true; -+} -+ -+void // virtual -+KPamGreeter::textPrompt( const char *prompt, bool echo, bool nonBlocking ) -+{ -+ debug("textPrompt called with prompt %s echo %d nonBlocking %d", prompt, echo, nonBlocking); -+ debug("state is %d, authEdit.size is %d\n", state, authEdit.size()); -+ -+ if (state == 0 && echo) { -+ if (loginLabel) -+ loginLabel->setText(QString::fromUtf8(prompt)); -+ else if (m_themer) { -+ KdmLabel *kdmlabel = static_cast<KdmLabel*>(m_themer->findNode("user-label")); -+ if (kdmlabel) { -+ //userLabel->setText(QString::fromUtf8(prompt)); -+ kdmlabel->label.text = QString::fromUtf8(prompt); -+ QTimer::singleShot(0, kdmlabel, SLOT(update())); -+ } -+ } -+ } -+ else if (state >= authEdit.size()) { -+ if (getLayoutItem()) { -+ QLabel* label = new QLabel(QString::fromUtf8(prompt), m_parentWidget); -+ getLayoutItem()->addWidget(label, state+1, 0, 0); -+ debug("added label widget to layout"); -+ } -+ else if (m_themer) { -+ debug("themer found!"); -+ KdmItem *pw_label = 0; -+ -+ KdmLabel *kdmlabel = static_cast<KdmLabel*>(m_themer->findNode("pw-label")); -+ if (kdmlabel) { -+ //userLabel->setText(QString::fromUtf8(prompt)); -+ QString str = QString::fromUtf8(prompt); -+ kdmlabel->label.text = str; -+ QTimer::singleShot(0, kdmlabel, SLOT(update())); -+ } -+ } -+ -+ KDMPasswordEdit* passwdEdit; -+ -+ if (echoMode == -1) -+ passwdEdit = new KDMPasswordEdit( m_parentWidget ); -+ else -+ passwdEdit = new KDMPasswordEdit( echoMode, m_parentWidget); -+ connect( passwdEdit, SIGNAL(textChanged( const QString & )), -+ SLOT(slotActivity()) ); -+ connect( passwdEdit, SIGNAL(lostFocus()), SLOT(slotActivity()) ); -+ authEdit << passwdEdit; -+ -+#if 1 -+ for(QValueList<KPasswordEdit*>::iterator it = authEdit.begin(); -+ it != authEdit.end(); -+ ++it) { -+ if ((*it)->isEnabled() && (*it)->text().isEmpty()) { -+ (*it)->setFocus(); -+ break; -+ } -+ } -+#endif -+ if (getLayoutItem()) -+ getLayoutItem()->addWidget(passwdEdit, state+1, 1, 0); -+ -+ if (m_themer) { -+ debug("themer found!"); -+ KdmItem *pw_entry = 0; -+ -+ pw_entry = m_themer->findNode("pw-entry"); -+ -+ if (pw_entry && passwdEdit) -+ pw_entry->setWidget(passwdEdit); -+ -+ if (0) { -+ //userLabel->setText(QString::fromUtf8(prompt)); -+ //kdmlabel->label.text = QString::fromUtf8(prompt); -+ //QTimer::singleShot(0, kdmlabel, SLOT(update())); -+ } -+ } -+ else -+ debug("no themer found!"); -+ } -+ ++state; -+ pExp = exp; -+ -+ exp = authEdit.size(); -+ debug("state %d exp: %d, has %d\n", state, exp, has); -+ -+ if (has >= exp || nonBlocking) -+ returnData(); -+} -+ -+bool // virtual -+KPamGreeter::binaryPrompt( const char *, bool ) -+{ -+ // this simply cannot happen ... :} -+ return true; -+} -+ -+void // virtual -+KPamGreeter::start() -+{ -+ debug("******* start() called\n"); -+ -+ while(authEdit.begin() != authEdit.end()) { -+ KPasswordEdit* item = *authEdit.remove(authEdit.begin()); -+ delete item; -+ } -+ -+ while(authLabel.begin() != authLabel.end()) { -+ QLabel* item = *authLabel.remove(authLabel.begin()); -+ delete item; -+ } -+ -+ authTok = !(authEdit.size() >= 2 && authEdit[1]->isEnabled()); -+ exp = has = -1; -+ state = 0; -+ running = true; -+ handler->gplugStart(); -+} -+ -+void // virtual -+KPamGreeter::suspend() -+{ -+} -+ -+void // virtual -+KPamGreeter::resume() -+{ -+} -+ -+void // virtual -+KPamGreeter::next() -+{ -+ debug("********* next() called state %d\n", state); -+ -+ if (state == 0 && running && handler) { -+ debug(" **** returned text!\n"); -+ handler->gplugReturnText( (loginEdit ? loginEdit->text() : -+ fixedUser).local8Bit(), -+ KGreeterPluginHandler::IsUser ); -+ setActive(false); -+ } -+ -+ has = 0; -+ -+ for(QValueList<KPasswordEdit*>::iterator it = authEdit.begin(); -+ it != authEdit.end(); -+ ++it) { -+ -+ has++; -+ if ((*it)->hasFocus()) { -+ ++it; -+ if (it != authEdit.end()) -+ (*it)->setFocus(); -+ break; -+ } -+ if (it == authEdit.end()) -+ has = -1; -+ } -+ -+ debug(" has %d and exp %d\n", has, exp); -+ -+#if 0 -+ // assert( running ); -+ if (loginEdit && loginEdit->hasFocus()) { -+ passwdEdit->setFocus(); // will cancel running login if necessary -+ has = 0; -+ } else if (passwdEdit && passwdEdit->hasFocus()) { -+ if (passwd1Edit) -+ passwd1Edit->setFocus(); -+ has = 1; -+ } else if (passwd1Edit) { -+ if (passwd1Edit->hasFocus()) { -+ passwd2Edit->setFocus(); -+ has = 1; // sic! -+ } else -+ has = 3; -+ } else -+ has = 1; -+ if (exp < 0) -+ handler->gplugStart(); -+#endif -+ if (has >= exp) -+ returnData(); -+} -+ -+void // virtual -+KPamGreeter::abort() -+{ -+ debug("***** abort() called\n"); -+ -+ running = false; -+ if (exp >= 0) { -+ exp = -1; -+ handler->gplugReturnText( 0, 0 ); -+ } -+} -+ -+void // virtual -+KPamGreeter::succeeded() -+{ -+ debug("**** succeeded() called\n"); -+ -+ // assert( running || timed_login ); -+ if (!authTok) -+ setActive( false ); -+ else -+ setAllActive( false ); -+ exp = -1; -+ running = false; -+} -+ -+void // virtual -+KPamGreeter::failed() -+{ -+ // assert( running || timed_login ); -+ setActive( false ); -+ setAllActive( false ); -+ exp = -1; -+ running = false; -+} -+ -+#include<assert.h> -+void // virtual -+KPamGreeter::revive() -+{ -+ // assert( !running ); -+ setAllActive( true ); -+ -+#if 1 -+ if (authEdit.size() < 1) -+ return; -+#endif -+ -+ assert(authEdit.size() >= 1); -+ if (authTok) { -+ authEdit[0]->erase(); -+ if(authEdit.size() >= 2) -+ authEdit[1]->erase(); -+ authEdit[0]->setFocus(); -+ } else { -+ authEdit[0]->erase(); -+ if (loginEdit && loginEdit->isEnabled()) -+ authEdit[0]->setEnabled( true ); -+ else { -+ setActive( true ); -+ if (loginEdit && loginEdit->text().isEmpty()) -+ loginEdit->setFocus(); -+ else -+ authEdit[0]->setFocus(); -+ } -+ } -+} -+ -+void // virtual -+KPamGreeter::clear() -+{ -+ // assert( !running && !passwd1Edit ); -+ authEdit[0]->erase(); -+ if (loginEdit) { -+ loginEdit->clear(); -+ loginEdit->setFocus(); -+ curUser = QString::null; -+ } else -+ authEdit[0]->setFocus(); -+} -+ -+ -+// private -+ -+void -+KPamGreeter::setActive( bool enable ) -+{ -+ if (loginEdit) -+ loginEdit->setEnabled( enable ); -+} -+ -+void -+KPamGreeter::setAllActive( bool enable ) -+{ -+ for(QValueList<KPasswordEdit*>::iterator it = authEdit.begin(); -+ it != authEdit.end(); -+ ++it) -+ (*it)->setEnabled( enable ); -+} -+ -+void -+KPamGreeter::slotLoginLostFocus() -+{ -+ if (!running) -+ return; -+ if (exp > 0) { -+ if (curUser == loginEdit->text()) -+ return; -+ exp = -1; -+ handler->gplugReturnText( 0, 0 ); -+ } -+ curUser = loginEdit->text(); -+ debug("curUser is %s", curUser.latin1()); -+ handler->gplugSetUser( curUser ); -+} -+ -+void -+KPamGreeter::slotActivity() -+{ -+ debug("slotActivity"); -+ -+ if (running) -+ handler->gplugActivity(); -+} -+ -+// factory -+ -+static bool init( const QString &, -+ QVariant (*getConf)( void *, const char *, const QVariant & ), -+ void *ctx ) -+{ -+ echoMode = (KPasswordEdit::EchoModes) getConf( ctx, "EchoMode", QVariant( -1 ) ).toInt(); -+ KGlobal::locale()->insertCatalogue( "kgreet_pam" ); -+ return true; -+} -+ -+static void done( void ) -+{ -+ KGlobal::locale()->removeCatalogue( "kgreet_pam" ); -+ if (log && log != stderr) -+ fclose(log); -+ log = 0; -+} -+ -+static KGreeterPlugin * -+create( KGreeterPluginHandler *handler, KdmThemer *themer, -+ QWidget *parent, QWidget *predecessor, -+ const QString &fixedEntity, -+ KGreeterPlugin::Function func, -+ KGreeterPlugin::Context ctx ) -+{ -+ return new KPamGreeter( handler, themer, parent, predecessor, fixedEntity, func, ctx ); -+} -+ -+KDE_EXPORT kgreeterplugin_info kgreeterplugin_info = { -+ I18N_NOOP("Pam conversation plugin"), "pam", -+ kgreeterplugin_info::Local | kgreeterplugin_info::Presettable, -+ init, done, create -+}; -+ -+#include "kgreet_pam.moc" -Index: kdmlib/kgreet_pam.h -=================================================================== ---- /dev/null -+++ kdmlib/kgreet_pam.h -@@ -0,0 +1,93 @@ -+/* -+ -+Conversation widget for kdm greeter -+ -+Copyright (C) 2008 Dirk Mueller <[email protected]> -+ -+ -+This program is free software; you can redistribute it and/or modify -+it under the terms of the GNU General Public License as published by -+the Free Software Foundation; either version 2 of the License, or -+(at your option) any later version. -+ -+This program 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 General Public License for more details. -+ -+You should have received a copy of the GNU General Public License -+along with this program; if not, write to the Free Software -+Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -+ -+*/ -+ -+ -+#ifndef KGREET_CLASSIC_H -+#define KGREET_CLASSIC_H -+ -+#include "kgreeterplugin.h" -+ -+#include <qobject.h> -+#include <qlayout.h> -+ -+class KLineEdit; -+class KPasswordEdit; -+class KSimpleConfig; -+class QGridLayout; -+class QLabel; -+ -+class KPamGreeter : public QObject, public KGreeterPlugin { -+ Q_OBJECT -+ -+ public: -+ KPamGreeter( KGreeterPluginHandler *handler, -+ KdmThemer *themer, -+ QWidget *parent, QWidget *predecessor, -+ const QString &fixedEntitiy, -+ Function func, Context ctx ); -+ ~KPamGreeter(); -+ virtual void loadUsers( const QStringList &users ); -+ virtual void presetEntity( const QString &entity, int field ); -+ virtual QString getEntity() const; -+ virtual void setUser( const QString &user ); -+ virtual void setEnabled( bool on ); -+ virtual bool textMessage( const char *message, bool error ); -+ virtual void textPrompt( const char *prompt, bool echo, bool nonBlocking ); -+ virtual bool binaryPrompt( const char *prompt, bool nonBlocking ); -+ virtual void start(); -+ virtual void suspend(); -+ virtual void resume(); -+ virtual void next(); -+ virtual void abort(); -+ virtual void succeeded(); -+ virtual void failed(); -+ virtual void revive(); -+ virtual void clear(); -+ -+ QGridLayout *getLayoutItem() const { return static_cast<QGridLayout*>(layoutItem); } -+ -+ public slots: -+ void slotLoginLostFocus(); -+ void slotActivity(); -+ -+ private: -+ void setActive( bool enable ); -+ void setAllActive( bool enable ); -+ void returnData(); -+ -+ QLabel *loginLabel; -+ QValueList<QLabel*> authLabel; -+ KLineEdit *loginEdit; -+ QWidget* m_parentWidget; -+ QValueList<KPasswordEdit*> authEdit; -+ KSimpleConfig *stsFile; -+ KdmThemer *m_themer; -+ QString fixedUser, curUser; -+ Function func; -+ Context ctx; -+ int exp, pExp, has; -+ unsigned state; -+ bool running, authTok; -+}; -+ -+#endif /* KGREET_CLASSIC_H */ -Index: kdmlib/Makefile.am -=================================================================== ---- kdmlib/Makefile.am.orig -+++ kdmlib/Makefile.am -@@ -1,11 +1,15 @@ - AM_CPPFLAGS = -I$(top_srcdir)/kdm/kfrontend $(all_includes) - --kde_module_LTLIBRARIES = kgreet_classic.la kgreet_winbind.la -+kde_module_LTLIBRARIES = kgreet_classic.la kgreet_pam.la kgreet_winbind.la - - kgreet_classic_la_SOURCES = kgreet_classic.cpp - kgreet_classic_la_LDFLAGS = -module -no-undefined $(KDE_PLUGIN) $(all_libraries) - kgreet_classic_la_LIBADD = $(LIB_KDEUI) - -+kgreet_pam_la_SOURCES = kgreet_pam.cpp -+kgreet_pam_la_LDFLAGS = -module -no-undefined $(KDE_PLUGIN) $(all_libraries) -+kgreet_pam_la_LIBADD = $(LIB_KDEUI) -+ - kgreet_winbind_la_SOURCES = kgreet_winbind.cpp - kgreet_winbind_la_LDFLAGS = -module -no-undefined $(KDE_PLUGIN) $(all_libraries) - kgreet_winbind_la_LIBADD = $(LIB_KDEUI) -Index: kcheckpass/checkpass_pam.c -=================================================================== ---- kcheckpass/checkpass_pam.c.orig -+++ kcheckpass/checkpass_pam.c -@@ -140,13 +140,16 @@ AuthReturn Authenticate(const char *call - openlog("kcheckpass", LOG_PID, LOG_AUTH); - - PAM_data.conv = conv; -- if (strcmp(method, "classic")) { -- sprintf(pservb, "%.31s-%.31s", caller, method); -- pam_service = pservb; -- } else { -+ if (!strcmp(method, "classic")) { - PAM_data.classic = 1; - pam_service = caller; - } -+ else if (!strcmp(method, "pam")) { -+ pam_service = caller; -+ } else { -+ sprintf(pservb, "%.31s-%.31s", caller, method); -+ pam_service = pservb; -+ } - pam_error = pam_start(pam_service, user, &PAM_conversation, &pamh); - if (pam_error != PAM_SUCCESS) - return AuthError; |