Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

232 lines
5.6 KiB

  1. /*++
  2. Copyright (c) 2000 Microsoft Corporation
  3. Module Name:
  4. session.h
  5. Abstract:
  6. This interface abstracts a Passport Session.
  7. Author:
  8. Biao Wang (biaow) 01-Oct-2000
  9. --*/
  10. #ifndef SESSION_H
  11. #define SESSION_H
  12. class SESSION
  13. {
  14. public:
  15. static
  16. BOOL CreateObject(PCWSTR pwszHttpStack, HINTERNET hSession,
  17. PCWSTR pwszProxyUser,
  18. PCWSTR pwszProxyPass,
  19. SESSION*& pSess);
  20. public:
  21. SESSION(void);
  22. virtual ~SESSION(void);
  23. void SetProxyCreds(PCWSTR pwszProxyUser, PCWSTR pwszProxyPass)
  24. {
  25. m_pwszProxyUser = pwszProxyUser;
  26. m_pwszProxyPass = pwszProxyPass;
  27. }
  28. UINT GetSessionId(void) const { return m_SessionId; }
  29. BOOL Match(UINT SessionId) const { return SessionId == m_SessionId; }
  30. void AddRef(void) { ++m_RefCount; }
  31. void RemoveRef(void)
  32. {
  33. if (m_RefCount > 0)
  34. {
  35. --m_RefCount;
  36. }
  37. }
  38. UINT RefCount(void) const { return m_RefCount; }
  39. // methods to retrieve the registry-configured value
  40. // PCWSTR GetLoginHost(void) const { return m_wDAHostName; }
  41. // PCWSTR GetLoginTarget(void) const { return m_wDATargetObj; }
  42. // PCWSTR GetRegistrationUrl(void) const { return m_wRegistrationUrl; }
  43. BOOL GetDAInfoFromPPNexus(
  44. );
  45. BOOL GetDAInfo(PCWSTR pwszSignIn,
  46. LPWSTR pwszDAHostName,
  47. DWORD HostNameLen,
  48. LPWSTR pwszDAHostObj,
  49. DWORD HostObjLen);
  50. BOOL UpdateDAInfo(
  51. PCWSTR pwszSignIn,
  52. PCWSTR pwszDAUrl
  53. );
  54. void Logout(void);
  55. BOOL IsLoggedOut(void) const;
  56. const SYSTEMTIME* GetLogoutTimeStamp(void) const;
  57. void ResetLogoutFlag(void);
  58. BOOL PurgeDAInfo(PCWSTR pwszSignIn);
  59. BOOL PurgeAllDAInfo(void);
  60. DWORD GetNexusVersion(void);
  61. BOOL GetCachedCreds(
  62. PCWSTR pwszRealm,
  63. PCWSTR pwszTarget,
  64. PCREDENTIALW** pppCreds,
  65. DWORD* pdwCreds
  66. );
  67. BOOL GetRealm(
  68. PWSTR pwszDARealm, // user supplied buffer ...
  69. PDWORD pdwDARealmLen // ... and length (will be updated to actual length
  70. // on successful return)
  71. ) const;
  72. virtual BOOL Open(PCWSTR pwszHttpStack, HINTERNET) = 0;
  73. virtual void Close(void) = 0;
  74. // methods below abstracts a subset of WinInet/WinHttp functionalities.
  75. virtual HINTERNET Connect(
  76. LPCWSTR lpwszServerName,
  77. INTERNET_PORT) = 0;
  78. virtual HINTERNET OpenRequest(
  79. HINTERNET hConnect,
  80. LPCWSTR lpwszVerb,
  81. LPCWSTR lpwszObjectName,
  82. DWORD dwFlags,
  83. DWORD_PTR dwContext = 0) = 0;
  84. virtual BOOL SendRequest(
  85. HINTERNET hRequest,
  86. LPCWSTR lpwszHeaders,
  87. DWORD dwHeadersLength,
  88. DWORD_PTR dwContext = 0) = 0;
  89. virtual BOOL ReceiveResponse(
  90. HINTERNET hRequest) = 0;
  91. virtual BOOL QueryHeaders(
  92. HINTERNET hRequest,
  93. DWORD dwInfoLevel,
  94. LPVOID lpvBuffer,
  95. LPDWORD lpdwBufferLength,
  96. LPDWORD lpdwIndex = NULL) = 0;
  97. virtual BOOL CloseHandle(
  98. IN HINTERNET hInternet) = 0;
  99. virtual BOOL QueryOption(
  100. HINTERNET hInternet,
  101. DWORD dwOption,
  102. LPVOID lpBuffer,
  103. LPDWORD lpdwBufferLength) = 0;
  104. virtual BOOL SetOption(
  105. HINTERNET hInternet,
  106. DWORD dwOption,
  107. LPVOID lpBuffer,
  108. DWORD dwBufferLength) = 0;
  109. virtual HINTERNET OpenUrl(
  110. LPCWSTR lpwszUrl,
  111. LPCWSTR lpwszHeaders,
  112. DWORD dwHeadersLength,
  113. DWORD dwFlags) = 0;
  114. virtual BOOL ReadFile(
  115. HINTERNET hFile,
  116. LPVOID lpBuffer,
  117. DWORD dwNumberOfBytesToRead,
  118. LPDWORD lpdwNumberOfBytesRead) = 0;
  119. virtual BOOL CrackUrl(
  120. LPCWSTR lpszUrl,
  121. DWORD dwUrlLength,
  122. DWORD dwFlags,
  123. LPURL_COMPONENTSW lpUrlComponents) = 0;
  124. virtual PVOID SetStatusCallback(
  125. HINTERNET hInternet,
  126. PVOID lpfnCallback
  127. ) = 0;
  128. virtual BOOL AddHeaders(
  129. HINTERNET hConnect,
  130. LPCWSTR lpszHeaders,
  131. DWORD dwHeadersLength,
  132. DWORD dwModifiers
  133. ) = 0;
  134. LPCWSTR GetCurrentDAUrl(void) const { return m_wCurrentDAUrl; }
  135. LPCWSTR GetCurrentDAHost(void) const { return m_wCurrentDAHost; }
  136. protected:
  137. static UINT m_SessionIdSeed;
  138. HMODULE m_hHttpStack;
  139. HMODULE m_hCredUI;
  140. UINT m_SessionId;
  141. BOOL m_fOwnedSession;
  142. UINT m_RefCount;
  143. HINTERNET m_hInternet;
  144. PFN_READ_DOMAIN_CRED_W
  145. m_pfnReadDomainCred;
  146. PFN_CRED_FREE m_pfnCredFree;
  147. HKEY m_hKeyLM;
  148. WCHAR m_wDefaultDAUrl[MAX_PASSPORT_URL_LENGTH + 1];
  149. WCHAR m_wCurrentDAUrl[MAX_PASSPORT_URL_LENGTH + 1];
  150. WCHAR m_wCurrentDAHost[MAX_PASSPORT_HOST_LENGTH + 1];
  151. WCHAR m_wDARealm[MAX_PASSPORT_REALM_LENGTH + 1];
  152. DWORD m_dwVersion;
  153. DWORD m_LastNexusDownloadTime;
  154. BOOL m_fLogout;
  155. SYSTEMTIME m_LogoutTimeStamp;
  156. PCWSTR m_pwszProxyUser;
  157. PCWSTR m_pwszProxyPass;
  158. protected:
  159. struct DA_ENTRY
  160. {
  161. DA_ENTRY() {wDomain[0] = 0; wDA[0] = 0; }
  162. LIST_ENTRY _List;
  163. WCHAR wDomain[MAX_PASSPORT_DOMAIN_LENGTH + 1];
  164. WCHAR wDA[MAX_PASSPORT_URL_LENGTH + 1];
  165. };
  166. typedef DA_ENTRY *P_DA_ENTRY;
  167. LIST_ENTRY m_DAMap; // a list of DA_ENTRY
  168. friend class LOGON;
  169. };
  170. #endif // SESSION_H