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.

233 lines
4.5 KiB

  1. /*++
  2. Copyright (c) 1995 Microsoft Corporation
  3. Module Name:
  4. parseurl.h
  5. Abstract:
  6. Header for parseurl.c and protocol-specific parsers
  7. Author:
  8. Richard L Firth (rfirth) 26-Apr-1995
  9. Revision History:
  10. 26-Apr-1995
  11. Created
  12. --*/
  13. #if defined(__cplusplus)
  14. extern "C" {
  15. #endif
  16. //
  17. // manifests
  18. //
  19. #define SAFE 0x00 // character is safe in all schemes
  20. #define SCHEME_FTP 0x01 // character is unsafe in FTP scheme
  21. #define SCHEME_GOPHER 0x02 // character is unsafe in gopher scheme
  22. #define SCHEME_HTTP 0x04 // character is unsafe in HTTP scheme
  23. #define UNSAFE 0x80 // character is unsafe in all schemes
  24. #define HOSTNAME 0x08
  25. #define SCHEME_ANY (SCHEME_FTP | SCHEME_GOPHER | SCHEME_HTTP)
  26. //
  27. // types
  28. //
  29. typedef
  30. DWORD
  31. (*LPFN_URL_PARSER)(
  32. LPHINTERNET,
  33. LPSTR,
  34. DWORD,
  35. LPSTR,
  36. DWORD,
  37. DWORD,
  38. DWORD_PTR
  39. );
  40. //
  41. // prototypes
  42. //
  43. BOOL
  44. IsValidUrl(
  45. IN LPCSTR lpszUrl
  46. );
  47. //
  48. // flags for IsValidHostName(A/W)
  49. //
  50. #define IVHN_DISALLOW_IPV6_SCOPE_ID 0x1
  51. BOOL
  52. IsValidHostNameW(
  53. IN LPCWSTR lpwszHostName,
  54. IN DWORD dwFlags
  55. );
  56. BOOL
  57. IsValidHostNameA(
  58. IN LPCSTR lpszHostName,
  59. IN DWORD dwFlags
  60. );
  61. BOOL
  62. DoesSchemeRequireSlashes(
  63. IN LPSTR lpszScheme,
  64. IN DWORD dwSchemeLength,
  65. IN BOOL bHasHostName
  66. );
  67. DWORD
  68. ParseUrl(
  69. IN OUT LPHINTERNET hInternet,
  70. IN LPVOID hMapped,
  71. IN LPCSTR Url,
  72. IN LPCSTR Headers,
  73. IN DWORD HeadersLength,
  74. IN DWORD OpenFlags,
  75. IN DWORD_PTR Context
  76. );
  77. DWORD
  78. CrackUrl(
  79. IN OUT LPSTR lpszUrl,
  80. IN DWORD dwUrlLength,
  81. IN BOOL bEscape,
  82. OUT LPINTERNET_SCHEME lpSchemeType OPTIONAL,
  83. OUT LPSTR* lpszSchemeName OPTIONAL,
  84. OUT LPDWORD lpdwSchemeNameLength OPTIONAL,
  85. OUT LPSTR* lpszHostName OPTIONAL,
  86. OUT LPDWORD lpdwHostNameLength OPTIONAL,
  87. IN BOOL fUnescapeHostName,
  88. OUT LPINTERNET_PORT lpServerPort OPTIONAL,
  89. OUT LPSTR* lpszUserName OPTIONAL,
  90. OUT LPDWORD lpdwUserNameLength OPTIONAL,
  91. OUT LPSTR* lpszPassword OPTIONAL,
  92. OUT LPDWORD lpdwPasswordLength OPTIONAL,
  93. OUT LPSTR* UrlPath OPTIONAL,
  94. OUT LPDWORD lpdwUrlPathLength OPTIONAL,
  95. OUT LPSTR* lpszExtraInfo OPTIONAL,
  96. OUT LPDWORD lpdwExtraInfoLength OPTIONAL,
  97. OUT LPBOOL pHavePort
  98. );
  99. DWORD
  100. EncodeUrlPath(
  101. IN DWORD Flags,
  102. IN DWORD SchemeFlags,
  103. IN LPSTR UrlPath,
  104. IN DWORD UrlPathLength,
  105. OUT LPSTR* EncodedUrlPath,
  106. IN OUT LPDWORD EncodedUrlPathLength
  107. );
  108. class MEMORYPACKET;
  109. DWORD
  110. ConvertUnicodeToMultiByte(
  111. IN LPCWSTR lpszObjectName,
  112. IN DWORD dwCodePage,
  113. OUT MEMORYPACKET* pmpObjectName,
  114. IN DWORD dwFlags);
  115. //
  116. // flags for EncodeUrlPath
  117. //
  118. #define NO_ENCODE_PATH_SEP 0x00000001
  119. DWORD
  120. DecodeUrl(
  121. IN LPSTR Url,
  122. IN DWORD UrlLength,
  123. OUT LPSTR UnescapedString,
  124. IN OUT LPDWORD UnescapedLength
  125. );
  126. DWORD
  127. DecodeUrlInSitu(
  128. IN LPSTR BufferAddress,
  129. IN OUT LPDWORD BufferLength
  130. );
  131. DWORD
  132. DecodeUrlStringInSitu(
  133. IN LPSTR BufferAddress,
  134. IN OUT LPDWORD BufferLength
  135. );
  136. DWORD
  137. GetUrlAddressInfo(
  138. IN OUT LPSTR* Url,
  139. IN OUT LPDWORD UrlLength,
  140. OUT LPSTR* PartOne,
  141. OUT LPDWORD PartOneLength,
  142. OUT LPBOOL PartOneEscape,
  143. OUT LPSTR* PartTwo,
  144. OUT LPDWORD PartTwoLength,
  145. OUT LPBOOL PartTwoEscape
  146. );
  147. DWORD
  148. GetUrlAddress(
  149. IN OUT LPSTR* lpszUrl,
  150. OUT LPDWORD lpdwUrlLength,
  151. OUT LPSTR* lpszUserName OPTIONAL,
  152. OUT LPDWORD lpdwUserNameLength OPTIONAL,
  153. OUT LPSTR* lpszPassword OPTIONAL,
  154. OUT LPDWORD lpdwPasswordLength OPTIONAL,
  155. OUT LPSTR* lpszHostName OPTIONAL,
  156. OUT LPDWORD lpdwHostNameLength OPTIONAL,
  157. IN BOOL fUnescapeHostName,
  158. OUT INTERNET_PORT* lpPort OPTIONAL,
  159. OUT LPBOOL pHavePort
  160. );
  161. INTERNET_SCHEME
  162. MapUrlSchemeName(
  163. IN LPSTR lpszSchemeName,
  164. IN DWORD dwSchemeNameLength
  165. );
  166. LPSTR
  167. MapUrlScheme(
  168. IN INTERNET_SCHEME Scheme,
  169. OUT LPDWORD lpdwSchemeNameLength
  170. );
  171. LPSTR
  172. MapUrlSchemeToName(
  173. IN INTERNET_SCHEME Scheme
  174. );
  175. //
  176. // protocol-specific URL parsers
  177. //
  178. DWORD
  179. ParseHttpUrl(
  180. IN OUT LPHINTERNET hInternet,
  181. IN LPSTR Url,
  182. IN DWORD SchemeLength,
  183. IN LPSTR Headers,
  184. IN DWORD HeadersLength,
  185. IN DWORD OpenFlags,
  186. IN DWORD_PTR Context
  187. );
  188. #if defined(__cplusplus)
  189. }
  190. #endif