cookies.h
上传用户:dangjiwu
上传日期:2013-07-19
资源大小:42019k
文件大小:8k
源码类别:

Symbian

开发平台:

Visual C++

  1. /* ***** BEGIN LICENSE BLOCK *****
  2.  * Source last modified: $Id: cookies.h,v 1.1.1.1.50.3 2004/07/09 01:48:00 hubbe Exp $
  3.  * 
  4.  * Portions Copyright (c) 1995-2004 RealNetworks, Inc. All Rights Reserved.
  5.  * 
  6.  * The contents of this file, and the files included with this file,
  7.  * are subject to the current version of the RealNetworks Public
  8.  * Source License (the "RPSL") available at
  9.  * http://www.helixcommunity.org/content/rpsl unless you have licensed
  10.  * the file under the current version of the RealNetworks Community
  11.  * Source License (the "RCSL") available at
  12.  * http://www.helixcommunity.org/content/rcsl, in which case the RCSL
  13.  * will apply. You may also obtain the license terms directly from
  14.  * RealNetworks.  You may not use this file except in compliance with
  15.  * the RPSL or, if you have a valid RCSL with RealNetworks applicable
  16.  * to this file, the RCSL.  Please see the applicable RPSL or RCSL for
  17.  * the rights, obligations and limitations governing use of the
  18.  * contents of the file.
  19.  * 
  20.  * Alternatively, the contents of this file may be used under the
  21.  * terms of the GNU General Public License Version 2 or later (the
  22.  * "GPL") in which case the provisions of the GPL are applicable
  23.  * instead of those above. If you wish to allow use of your version of
  24.  * this file only under the terms of the GPL, and not to allow others
  25.  * to use your version of this file under the terms of either the RPSL
  26.  * or RCSL, indicate your decision by deleting the provisions above
  27.  * and replace them with the notice and other provisions required by
  28.  * the GPL. If you do not delete the provisions above, a recipient may
  29.  * use your version of this file under the terms of any one of the
  30.  * RPSL, the RCSL or the GPL.
  31.  * 
  32.  * This file is part of the Helix DNA Technology. RealNetworks is the
  33.  * developer of the Original Code and owns the copyrights in the
  34.  * portions it created.
  35.  * 
  36.  * This file, and the files included with this file, is distributed
  37.  * and made available on an 'AS IS' basis, WITHOUT WARRANTY OF ANY
  38.  * KIND, EITHER EXPRESS OR IMPLIED, AND REALNETWORKS HEREBY DISCLAIMS
  39.  * ALL SUCH WARRANTIES, INCLUDING WITHOUT LIMITATION, ANY WARRANTIES
  40.  * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, QUIET
  41.  * ENJOYMENT OR NON-INFRINGEMENT.
  42.  * 
  43.  * Technology Compatibility Kit Test Suite(s) Location:
  44.  *    http://www.helixcommunity.org/content/tck
  45.  * 
  46.  * Contributor(s):
  47.  * 
  48.  * ***** END LICENSE BLOCK ***** */
  49. #ifndef _COOKIES_H_
  50. #define _COOKIES_H_
  51. #ifdef _WINDOWS
  52. typedef BOOL (PASCAL FAR *INTERNETGETCOOKIE)(LPCSTR, LPCSTR, LPSTR, LPDWORD);
  53. typedef BOOL (PASCAL FAR *INTERNETSETCOOKIE)(LPCSTR, LPCSTR, LPCSTR);
  54. #endif /* _WINDOWS */
  55. #ifdef _MACINTOSH
  56. #include <time.h>
  57. #endif
  58. #include "ihxcookies2.h"
  59. struct CookieStruct
  60. {
  61.     CookieStruct()
  62.     {
  63. pPath = NULL;
  64. pHost = NULL;
  65. pCookieName = NULL;
  66. pCookieValue = NULL;
  67.     }
  68.     ~CookieStruct()
  69.     {
  70. HX_DELETE(pPath);
  71. HX_DELETE(pHost);
  72. HX_DELETE(pCookieName);
  73. HX_DELETE(pCookieValue);
  74.     }
  75.     CHXString*  pPath;
  76.     CHXString*  pHost;
  77.     CHXString*  pCookieName;
  78.     CHXString*  pCookieValue;
  79.     time_t expires;
  80.     BOOL bIsDomain;
  81.     BOOL bMemoryOnly; //wasn't read from disk, but arrived via SetCookies (usually from playing a stream)
  82. };
  83. class HXCookies : public IHXCookies, public IHXCookies2
  84. {
  85. protected:  
  86.     LONG32 m_lRefCount;
  87.     IUnknown* m_pContext;
  88.     
  89.     BOOL m_bInitialized;
  90.     BOOL m_bSaveCookies;
  91.     BOOL                m_bMemoryOnly;
  92.     char* m_pNSCookiesPath;
  93.     char* m_pRMCookiesPath;
  94.     time_t m_lastModification;
  95.     CHXSimpleList* m_pNSCookies;
  96.     CHXSimpleList* m_pRMCookies;
  97.     IHXPreferences* m_pPreferences;
  98.     IHXCookiesHelper* m_pCookiesHelper;
  99. #ifdef _WINDOWS
  100.     HINSTANCE m_hLib;
  101.     HXEvent* m_pLock;
  102.     INTERNETSETCOOKIE _pInternetSetCookie;
  103.     INTERNETGETCOOKIE _pInternetGetCookie;
  104. #elif _UNIX
  105.     int m_fileID;
  106. #endif /* _WINDOWS */
  107.     
  108.     HX_RESULT     PrepareCookiesPath(void);
  109.     HX_RESULT     OpenCookies(char* pCookieFile, BOOL bRMCookies, CHXSimpleList*& pCookiesList);
  110.     HX_RESULT     SaveCookies(void);
  111.     HX_RESULT     AddCookie(CookieStruct* pCookie, CHXSimpleList*& pCookiesList);
  112.     HX_RESULT     FileReadLine(FILE* fp, char* pLine, UINT32 ulLineBuf, UINT32* pBytesRead);    
  113.     void     ResetCookies(CHXSimpleList* pCookieList);    
  114.     BOOL     WasCookieAdded(CHXSimpleList* pCookiesFound, CookieStruct* pCookie);
  115.     BOOL     IsCookieEnabled(void);
  116.     CookieStruct*   CheckForPrevCookie(char * path,
  117.        char * hostname,
  118.        char * name);
  119.     void     UpdateModificationTime(void);
  120.     BOOL     IsCookieFileModified(void);
  121.     HX_RESULT     MergeCookieList(CHXSimpleList* pFromList, CHXSimpleList* pToList);
  122.     /*
  123.     IHXBuffer*     ConvertToAsciiString(char* pBuffer, UINT32 nBuffLen);
  124.     IHXBuffer*     ChecksumFile(char* pszFileName);
  125.     HX_RESULT     GenerateCookieFileChecksum(REF(IHXBuffer*) pChecksum);
  126.     UINT32     GetHDSerialNumber();
  127.     void     DeleteTamperProofCookies();
  128.     bool     IsTimeProgressing();
  129.     void     DecryptTime(const char* szTime, char* szDecryptedTime, int cbEncryptedTime, const char* szKey);
  130.     void     EncryptTime(const char* szTime, char* szEncryptedTime, int cbEncryptedTime, const char* szKey);
  131.     */
  132.     HX_RESULT       GetCookiesInternal(const char* pHost,
  133.  const char*     pPath,
  134.  REF(IHXBuffer*)   pCookies,
  135.  REF(IHXBuffer*)   pPlayerCookies);
  136.     BOOL     DoesDomainMatch(const char* szDomain, const char* szDomainToParse);
  137. public:
  138.     HXCookies(IUnknown* pContext, BOOL bMemoryOnly = FALSE);
  139.     virtual ~HXCookies();
  140.     /*
  141.      * IUnknown methods
  142.      */
  143.     STDMETHOD(QueryInterface) (THIS_
  144. REFIID riid,
  145. void** ppvObj);
  146.     STDMETHOD_(ULONG32,AddRef) (THIS);
  147.     STDMETHOD_(ULONG32,Release) (THIS);
  148.     /*
  149.      * IHXCookies methods
  150.      */
  151.     /************************************************************************
  152.      * Method:
  153.      *     IHXCookies::SetCookies
  154.      * Purpose:
  155.      *     Set cookies
  156.      */
  157.     STDMETHOD(SetCookies) (THIS_
  158.  const char* pHost,
  159.  const char* pPath,
  160.  IHXBuffer* pCookies);
  161.     /************************************************************************
  162.      * Method:
  163.      *     IHXCookies::GetCookies
  164.      * Purpose:
  165.      *     Get cookies
  166.      */
  167.     STDMETHOD(GetCookies) (THIS_
  168.  const char*     pHost,
  169.  const char*     pPath,
  170.  REF(IHXBuffer*)   pCookies);
  171.     /************************************************************************
  172.      * Method:
  173.      *     IHXCookies2::GetExpiredCookies
  174.      * Purpose:
  175.      *     Get expired cookies
  176.      */
  177.     STDMETHOD(GetExpiredCookies)(THIS_ const char*  pHost,
  178.       const char*     pPath,
  179.       REF(IHXBuffer*)   pCookies);
  180.     /************************************************************************
  181.      * Method:
  182.      *     IHXCookies2::GetCookies
  183.      * Purpose:
  184.      *     Get cookies
  185.      */
  186.     STDMETHOD(GetCookies) (THIS_
  187.  const char*     pHost,
  188.  const char*     pPath,
  189.  REF(IHXBuffer*)   pCookies,
  190.  REF(IHXBuffer*)   pPlayerCookies);
  191.     virtual HX_RESULT     SecureCookies();
  192.     virtual HX_RESULT     CheckCookies();
  193.     HX_RESULT Initialize(void);
  194.     void Close(void);
  195.     void        SetMemoryOnlyFlag(BOOL bMemoryOnly) { m_bMemoryOnly = bMemoryOnly; }
  196.     BOOL        GetMemoryOnlyFlag() const           { return m_bMemoryOnly;        }
  197.     HX_RESULT SyncRMCookies(BOOL bSave);
  198. #ifdef _TEST
  199.     void DumpCookies();
  200. #endif // _TEST
  201. };
  202. #endif /* _COOKIES_H_ */