authinfo.h

来自「konqueror3 embedded版本, KDE环境下的当家浏览器的嵌入式版」· C头文件 代码 · 共 321 行

H
321
字号
/* *  This file is part of the KDE libraries *  Copyright (C) 2000-2001 Dawit Alemayehu <adawit@kde.org> * *  This library is free software; you can redistribute it and/or *  modify it under the terms of the GNU Library General Public *  License as published by the Free Software Foundation; either *  version 2 of the License, or (at your option) any later version. * *  This library 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 *  Library General Public License for more details. * *  You should have received a copy of the GNU Library General Public License *  along with this library; see the file COPYING.LIB.  If not, write to *  the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, *  Boston, MA 02110-1301, USA. */#ifndef __KIO_AUTHINFO_H#define __KIO_AUTHINFO_H#include <qmap.h>#include <qvaluelist.h>#include <kurl.h>namespace KIO {/** * This class is intended to make it easier to prompt for, cache * and retrieve authorization information. * * When using this class to cache, retrieve or prompt authentication * information, you only need to set the necessary attributes. For * example, to check whether a password is already cached, the only * required information is the URL of the resource and optionally * whether or not a path match should be performed.  Similarly, to * prompt for password you only need to optionally set the prompt, * username (if already supplied), comment and commentLabel fields. * * <em>SPECIAL NOTE:</em> If you extend this class to add additional * parameters do not forget to overload the stream insertion and * extraction operators ("<<" and ">>") so that the added data can * be correctly serialzed. * * @short A two way messaging class for passing authentication information. * @author Dawit Alemayehu <adawit@kde.org> */class KIO_EXPORT AuthInfo{    KIO_EXPORT friend QDataStream& operator<< (QDataStream& s, const AuthInfo& a);    KIO_EXPORT friend QDataStream& operator>> (QDataStream& s, AuthInfo& a);public:   /**    * Default constructor.    */   AuthInfo();   /**    * Copy constructor.    */   AuthInfo( const AuthInfo& info );   /**    * Overloaded equal to operator.    */   AuthInfo& operator=( const AuthInfo& info );   /**    * Use this method to check if the object was modified.    * @return true if the object has been modified    */   bool isModified() const { return modified; }   /**    * Use this method to indicate that this object has been modified.    * @param flag true to mark the object as modified, false to clear    */   void setModified( bool flag ) { modified = flag; }   /**    * The URL for which authentication is to be stored.    *    * This field is required when attempting to cache authorization    * and retrieve it.  However, it is not needed when prompting    * the user for authorization info.    *    * This setting is @em required except when prompting the    * user for password.    */   KURL url;   /**    * This is @em required for caching.    */   QString username;   /**    * This is @em required for caching.    */   QString password;   /**    * Information to be displayed when prompting    * the user for authentication information.    *    * @note If this field is not set, the authentication    *    dialog simply displays the preset default prompt.    *    * This setting is @em optional and empty by default.    */   QString prompt;   /**    * The text to displayed in the title bar of    * the password prompting dialog.    *    * @note If this field is not set, the authentication    *    dialog simply displays the preset default caption.    *    * This setting is @em optional and empty by default.    */   QString caption;   /**    * Additional comment to be displayed when prompting    * the user for authentication information.    *    * This field allows you to display a short (no more than    * 80 characters) extra description in the password prompt    * dialog.  For example, this field along with the    * commentLabel can be used to describe the server that    * requested the authentication:    *    *  \code    *  Server:   Squid Proxy @ foo.com    *  \endcode    *    * where "Server:" is the commentLabel and the rest is the    * actual comment.  Note that it is always better to use    * the @p commentLabel field as it will be placed properly    * in the dialog rather than to include it within the actual    * comment.    *    * This setting is @em optional and empty by default.    */   QString comment;   /**    * Descriptive label to be displayed in front of the    * comment when prompting the user for password.    *    * This setting is @em optional and only applicable when    * the comment field is also set.    */   QString commentLabel;   /**    * A unique identifier that allows caching of multiple    * passwords for different resources in the same server.    *    * Mostly this setting is applicable to the HTTP protocol    * whose authentication scheme explicitly defines the use    * of such a unique key.  However, any protocol that can    * generate or supply a unique id can effectively use it    * to distinguish passwords.    *    * (If you are instead interested in caching the authentication    * info for multiple users to the same server, refer to    * multipleUserCaching below)    *    * This setting is @em optional and not set by default.    */   QString realmValue;   /**    * Field to store any extra authentication information for    * protocols that need it (ex: http).    *    * This setting is @em optional and mostly applicable for HTTP    * protocol.  However, any protocol can make use of it to    * store extra info.    */   QString digestInfo;   /**    * Flag that, if set, indicates whether a path match should be    * performed when requesting for cached authorization.    *    * A path is deemed to be a match if it is equal to or is a subset    * of the cached path.  For example, if stored path is "/foo/bar"    * and the request's path set to "/foo/bar/acme", then it is a match    * whereas it would not if the request's path was set to "/foo".    *    * This setting is @em optional and false by default.    */   bool verifyPath;   /**    * Flag which if set forces the username field to be read-only.    *    * This setting is @em optional and false by default.    */   bool readOnly;   /**    * Flag to indicate the persistence of the given password.    *    * This is a two-way flag, when set before calling openPassDlg    * it makes the "keep Password" check box visible to the user.    * In return the flag will indicate the state of the check box.    * By default if the flag is checked the password will be cached    * for the entire life of the current KDE session otherwise the    * cached password is deleted right after the application using    * it has been closed.    */    bool keepPassword;protected:    bool modified;private:    class AuthInfoPrivate* d;};KIO_EXPORT QDataStream& operator<< (QDataStream& s, const AuthInfo& a);KIO_EXPORT QDataStream& operator>> (QDataStream& s, AuthInfo& a);/** * A Singleton class that provides access to passwords * stored in .netrc files for automatic login purposes. * This is only meant to address backward compatability * with old automated ftp client style logins... * * @short An interface to the ftp .netrc files * @author Dawit Alemayehu <adawit@kde.org> */class KIO_EXPORT NetRC{public:  /**   * Specifies the mode to be used when searching for a   * matching automatic login info for a given site :   *   * @li exactOnly        search entries with exact host name matches.   * @li defaultOnly      search entries that are specified as "default".   * @li presetOnly       search entries that are specified as "preset".   *   * @see lookup   */  enum LookUpMode  {      exactOnly = 0x0002,      defaultOnly = 0x0004,      presetOnly = 0x0008  };  /**   * Contains auto login information.   * @see lookup()   */  struct AutoLogin  {    QString type;    QString machine;    QString login;    QString password;    QMap<QString, QStringList> macdef;  };  /**   * A reference to the instance of the class.   * @return the class   */  static NetRC* self();  /**   * Looks up the @p login information for the given @p url.   *   * @param url the url whose login information will be checked   * @param login the login information will be writte here   * @param userealnetrc if true, use $HOME/.netrc fle   * @param type the type of the login. If null, the @p url's protocol   *        will be taken   * @param mode the LookUpMode flags (ORed) for the query   */  bool lookup( const KURL& url, AutoLogin& login,               bool userealnetrc = false,               QString type = QString::null,               int mode = (exactOnly|defaultOnly) );  /**   * Reloads the auto login information.   */  void reload() { isDirty = true; }protected:  QString extract( const char*, const char*, int& );  int openf( const QString& );  bool parse( int );private:  NetRC();  ~NetRC();private:  bool isDirty;  typedef QValueList<AutoLogin> LoginList;  typedef QMap<QString, LoginList> LoginMap;  LoginMap loginMap;  static NetRC* instance;  class NetRCPrivate;  NetRCPrivate* d;};}#endif

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?