Sophie

Sophie

distrib > Mandriva > 8.2 > i586 > by-pkgid > 6282078ae76a671f49c6af38c67b1a07 > files > 1902

kdelibs-devel-2.2.2-49.2mdk.i586.rpm

<HTML>
<HEAD>
<TITLE>Source: authinfo.h</TITLE>

<META NAME="Generator" CONTENT="KDOC ">
</HEAD>
<BODY bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#000099" alink= "#ffffff">
<TABLE WIDTH="100%" BORDER="0">
<TR>
<TD>
	<TABLE BORDER="0">
		<TR><TD valign="top" align="left" cellspacing="10">
		<h1>Source: authinfo.h</h1>
		</TD>
		<TD valign="top" align="right" colspan="1"></TD></TR>
	</TABLE>
	<HR>
	<TABLE BORDER="0">
		
	</TABLE>
	</TD>
<TD align="right"><TABLE BORDER="0"><TR><TD><small><A HREF="index-long.html">Annotated List</A></small></TD></TR>
<TR><TD><small><A HREF="header-list.html">Files</A></small></TD></TR>
<TR><TD><small><A HREF="all-globals.html">Globals</A></small></TD></TR>
<TR><TD><small><A HREF="hier.html">Hierarchy</A></small></TD></TR>
<TR><TD><small><A HREF="index.html">Index</A></small></TD></TR>
</TABLE></TD></TR></TABLE>
<pre>
/*
 *  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., 59 Temple Place - Suite 330,
 *  Boston, MA 02111-1307, 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.
 *
 * <u>SPECIAL NOTE:</u> If you extend this class to add additional
 * paramters 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 AuthInfo
{
    friend QDataStream& operator<< (QDataStream& s, const AuthInfo& a);
    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.
    */
   bool isModified() const { return modified; }

   /**
    * Use this method to indicate that this object has been modified.
    */
   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 @p required except when prompting the
    * user for password.
    */
   KURL url;

   /**
    * This setting is @p required for caching.
    */
   QString username;

   /**
    * This setting is @p required for caching.
    */
   QString password;

   /**
    * Information to be displayed when prompting
    * the user for authentication information.
    *
    * <u>NOTE:</u>If this field is not set, the authentication
    * dialog simply displays the preset default prompt.
    *
    * This setting is @p optional and empty by default.
    */
   QString prompt;

   /**
    * The text to displayed in the title bar of
    * the password prompting dialog.
    *
    * <u>NOTE:</u>If this field is not set, the authentication
    * dialog simply displays the preset default caption.
    *
    * This setting is @p 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
    * @ref commentLabel can be used to describe the server that
    * requested the authentication:
    *
    *  <pre>
    *  Server:   Squid Proxy @ foo.com
    *  </pre>
    *
    * where "Server:" is the commetLabel 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 @p optional and empty by default.
    */
   QString comment;

   /**
    * Descriptive label to be displayed infront of the
    * comment when prompting the user for password.
    *
    * This setting is @p optional and only applicable when
    * the @ref 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 @ref
    * multipleUserCaching below.
    *
    * This setting is @p 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 @p 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 @p optional and false by default.
    */
   bool verifyPath;

   /**
    * Flag which if set forces the username field to be read-only.
    *
    * This setting is @p 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
    * makes the "keep Password" check box will 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;
};

QDataStream& operator<< (QDataStream& s, const AuthInfo& a);
QDataStream& operator>> (QDataStream& s, AuthInfo& a);

/**
 * This class provides an interface for parsing
 *
 * @short An interface to .kionetrc and the ftp .netrc files
 * @author Dawit Alemayehu <adawit@kde.org>
 */
class NetRC
{
public:
  enum LookUpMode
  {
      exactOnly = 0x0002,
      defaultOnly = 0x0004,
      presetOnly = 0x0008
  };

  struct AutoLogin
  {
    QString type;
    QString machine;
    QString login;
    QString password;
    QMap<QString, QStringList> macdef;
  };

  typedef QValueList<AutoLogin> LoginList;
  typedef QMap<QString, LoginList> LoginMap;

  static NetRC* self();
  bool lookup( const KURL&, AutoLogin&, bool userealnetrc = false,
               QString type = QString::null,
               int mode = (exactOnly|defaultOnly) );
  void reload() { isDirty = true; }

protected:
  QString extract( const char*, const char*, int& );
  int openf( const QString& );
  void parse( int );

private:
  NetRC();
  ~NetRC();

private:
  bool isDirty;
  LoginMap loginMap;
  static NetRC* instance;

  class NetRCPrivate;
  NetRCPrivate* d;
};
};
#endif
</pre>
<HR>
	<table>
	<tr><td><small>Generated by: qateam on updates.mandrakesoft.com on Mon Dec 30 16:09:14 2002, using kdoc 2.0a53.</small></td></tr>
	</table>
</BODY>
</HTML>