summaryrefslogtreecommitdiffstats
path: root/tdeio/kpasswdserver/kpasswdserver.h
diff options
context:
space:
mode:
Diffstat (limited to 'tdeio/kpasswdserver/kpasswdserver.h')
-rw-r--r--tdeio/kpasswdserver/kpasswdserver.h118
1 files changed, 118 insertions, 0 deletions
diff --git a/tdeio/kpasswdserver/kpasswdserver.h b/tdeio/kpasswdserver/kpasswdserver.h
new file mode 100644
index 000000000..ce6d0386e
--- /dev/null
+++ b/tdeio/kpasswdserver/kpasswdserver.h
@@ -0,0 +1,118 @@
+/*
+ This file is part of the KDE Password Server
+
+ Copyright (C) 2002 Waldo Bastian (bastian@kde.org)
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU General Public License
+ version 2 as published by the Free Software Foundation.
+
+ This software 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 library; see the file COPYING. If not, write to
+ the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ Boston, MA 02110-1301, USA.
+*/
+//----------------------------------------------------------------------------
+//
+// KDE Password Server
+// $Id$
+
+#ifndef KPASSWDSERVER_H
+#define KPASSWDSERVER_H
+
+#include <tqdict.h>
+#include <tqintdict.h>
+
+#include <dcopclient.h>
+#include <tdeio/authinfo.h>
+#include <kded/kdedmodule.h>
+
+namespace KWallet {
+ class Wallet;
+}
+
+class KPasswdServer : public KDEDModule
+{
+ Q_OBJECT
+ K_DCOP
+public:
+ KPasswdServer(const TQCString &);
+ ~KPasswdServer();
+
+k_dcop:
+ // KDE4 merge
+ TDEIO::AuthInfo checkAuthInfo(TDEIO::AuthInfo, long, unsigned long);
+ TDEIO::AuthInfo checkAuthInfo(TDEIO::AuthInfo, long);
+ TDEIO::AuthInfo queryAuthInfo(TDEIO::AuthInfo, TQString, long, long, unsigned long);
+ TDEIO::AuthInfo queryAuthInfo(TDEIO::AuthInfo, TQString, long, long);
+ void addAuthInfo(TDEIO::AuthInfo, long);
+
+public slots:
+ void processRequest();
+ // Remove all authentication info associated with windowId
+ void removeAuthForWindowId(long windowId);
+
+protected:
+ struct AuthInfo;
+
+ TQString createCacheKey( const TDEIO::AuthInfo &info );
+ const AuthInfo *findAuthInfoItem(const TQString &key, const TDEIO::AuthInfo &info);
+ void removeAuthInfoItem(const TQString &key, const TDEIO::AuthInfo &info);
+ void addAuthInfoItem(const TQString &key, const TDEIO::AuthInfo &info, long windowId, long seqNr, bool canceled);
+ TDEIO::AuthInfo copyAuthInfo(const AuthInfo *);
+ void updateAuthExpire(const TQString &key, const AuthInfo *, long windowId, bool keep);
+ int findWalletEntry( const TQMap<TQString,TQString>& map, const TQString& username );
+ bool openWallet( WId windowId );
+
+ struct AuthInfo {
+ AuthInfo() { expire = expNever; isCanceled = false; seqNr = 0; }
+
+ KURL url;
+ TQString directory;
+ TQString username;
+ TQString password;
+ TQString realmValue;
+ TQString digestInfo;
+
+ enum { expNever, expWindowClose, expTime } expire;
+ TQValueList<long> windowList;
+ unsigned long expireTime;
+ long seqNr;
+
+ bool isCanceled;
+ };
+
+ class AuthInfoList : public TQPtrList<AuthInfo>
+ {
+ public:
+ AuthInfoList() { setAutoDelete(true); }
+ int compareItems(TQPtrCollection::Item n1, TQPtrCollection::Item n2);
+ };
+
+ TQDict< AuthInfoList > m_authDict;
+
+ struct Request {
+ DCOPClient *client;
+ DCOPClientTransaction *transaction;
+ TQString key;
+ TDEIO::AuthInfo info;
+ TQString errorMsg;
+ long windowId;
+ long seqNr;
+ bool prompt;
+ };
+
+ TQPtrList< Request > m_authPending;
+ TQPtrList< Request > m_authWait;
+ TQIntDict<TQStringList> mWindowIdList;
+ DCOPClient *m_dcopClient;
+ KWallet::Wallet* m_wallet;
+ long m_seqNr;
+};
+
+#endif