cookies.h
上传用户:zhongxx05
上传日期:2007-06-06
资源大小:33641k
文件大小:7k
源码类别:

Symbian

开发平台:

C/C++

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