kpasswdserver.h
00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 #ifndef KPASSWDSERVER_H
00026 #define KPASSWDSERVER_H
00027
00028 #include <qdict.h>
00029 #include <qintdict.h>
00030
00031 #include <dcopclient.h>
00032 #include <kio/authinfo.h>
00033 #include <kded/kdedmodule.h>
00034
00035 namespace KWallet {
00036 class Wallet;
00037 }
00038
00039 class KPasswdServer : public KDEDModule
00040 {
00041 Q_OBJECT
00042 K_DCOP
00043 public:
00044 KPasswdServer(const QCString &);
00045 ~KPasswdServer();
00046
00047 k_dcop:
00048 KIO::AuthInfo checkAuthInfo(KIO::AuthInfo, long);
00049 KIO::AuthInfo queryAuthInfo(KIO::AuthInfo, QString, long, long);
00050 void addAuthInfo(KIO::AuthInfo, long);
00051
00052 public slots:
00053 void processRequest();
00054
00055 void removeAuthForWindowId(long windowId);
00056
00057 protected:
00058 struct AuthInfo;
00059
00060 QString createCacheKey( const KIO::AuthInfo &info );
00061 const AuthInfo *findAuthInfoItem(const QString &key, const KIO::AuthInfo &info);
00062 void removeAuthInfoItem(const QString &key, const KIO::AuthInfo &info);
00063 void addAuthInfoItem(const QString &key, const KIO::AuthInfo &info, long windowId, long seqNr, bool canceled);
00064 KIO::AuthInfo copyAuthInfo(const AuthInfo *);
00065 void updateAuthExpire(const QString &key, const AuthInfo *, long windowId, bool keep);
00066 static bool storeInWallet( KWallet::Wallet* wallet, const QString& key, const KIO::AuthInfo &info );
00067 static bool readFromWallet( KWallet::Wallet* wallet, const QString& key, QString& username, QString& password, bool userReadOnly, QMap<QString,QString>& knownLogins );
00068 int findWalletEntry( const QMap<QString,QString>& map, const QString& username );
00069 bool openWallet( WId windowId );
00070
00071 struct AuthInfo {
00072 AuthInfo() { expire = expNever; isCanceled = false; seqNr = 0; }
00073
00074 KURL url;
00075 QString directory;
00076 QString username;
00077 QString password;
00078 QString realmValue;
00079 QString digestInfo;
00080
00081 enum { expNever, expWindowClose, expTime } expire;
00082 QValueList<long> windowList;
00083 unsigned long expireTime;
00084 long seqNr;
00085
00086 bool isCanceled;
00087 };
00088
00089 class AuthInfoList : public QPtrList<AuthInfo>
00090 {
00091 public:
00092 AuthInfoList() { setAutoDelete(true); }
00093 int compareItems(QPtrCollection::Item n1, QPtrCollection::Item n2);
00094 };
00095
00096 QDict< AuthInfoList > m_authDict;
00097
00098 struct Request {
00099 DCOPClient *client;
00100 DCOPClientTransaction *transaction;
00101 QString key;
00102 KIO::AuthInfo info;
00103 QString errorMsg;
00104 long windowId;
00105 long seqNr;
00106 bool prompt;
00107 };
00108
00109 QPtrList< Request > m_authPending;
00110 QPtrList< Request > m_authWait;
00111 QIntDict<QStringList> mWindowIdList;
00112 DCOPClient *m_dcopClient;
00113 KWallet::Wallet* m_wallet;
00114 long m_seqNr;
00115 };
00116
00117 #endif
This file is part of the documentation for kio Library Version 3.4.3.