4 * Copyright 1999 Corel Corporation
8 * This library is free software; you can redistribute it and/or
9 * modify it under the terms of the GNU Lesser General Public
10 * License as published by the Free Software Foundation; either
11 * version 2.1 of the License, or (at your option) any later version.
13 * This library is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16 * Lesser General Public License for more details.
18 * You should have received a copy of the GNU Lesser General Public
19 * License along with this library; if not, write to the Free Software
20 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
23 #ifndef _WINE_INTERNET_H_
24 #define _WINE_INTERNET_H_
30 #ifdef HAVE_NETINET_IN_H
31 # include <sys/types.h>
32 # include <netinet/in.h>
34 #ifdef HAVE_OPENSSL_SSL_H
35 #define DSA __ssl_DSA /* avoid conflict with commctrl.h */
36 # include <openssl/ssl.h>
40 /* used for netconnection.c stuff */
45 #ifdef HAVE_OPENSSL_SSL_H
49 } WININET_NETCONNECTION;
53 WH_HINIT = INTERNET_HANDLE_TYPE_INTERNET,
54 WH_HFTPSESSION = INTERNET_HANDLE_TYPE_CONNECT_FTP,
55 WH_HGOPHERSESSION = INTERNET_HANDLE_TYPE_CONNECT_GOPHER,
56 WH_HHTTPSESSION = INTERNET_HANDLE_TYPE_CONNECT_HTTP,
57 WH_HFILE = INTERNET_HANDLE_TYPE_FTP_FILE,
58 WH_HFINDNEXT = INTERNET_HANDLE_TYPE_FTP_FIND,
59 WH_HHTTPREQ = INTERNET_HANDLE_TYPE_HTTP_REQUEST,
62 typedef struct _WININETHANDLEHEADER
68 struct _WININETHANDLEHEADER *lpwhparent;
69 } WININETHANDLEHEADER, *LPWININETHANDLEHEADER;
74 WININETHANDLEHEADER hdr;
77 LPSTR lpszProxyBypass;
78 LPSTR lpszProxyUsername;
79 LPSTR lpszProxyPassword;
81 INTERNET_STATUS_CALLBACK lpfnStatusCB;
82 } WININETAPPINFOA, *LPWININETAPPINFOA;
87 WININETHANDLEHEADER hdr;
90 INTERNET_PORT nServerPort;
91 struct sockaddr_in socketAddress;
92 struct hostent *phostent;
93 } WININETHTTPSESSIONA, *LPWININETHTTPSESSIONA;
95 #define HDR_ISREQUEST 0x0001
96 #define HDR_COMMADELIMITED 0x0002
97 #define HDR_SEMIDELIMITED 0x0004
105 } HTTPHEADERA, *LPHTTPHEADERA;
110 WININETHANDLEHEADER hdr;
114 WININET_NETCONNECTION netConnection;
115 HTTPHEADERA StdHeaders[HTTP_QUERY_MAX+1];
116 HTTPHEADERA *pCustHeaders;
118 } WININETHTTPREQA, *LPWININETHTTPREQA;
123 WININETHANDLEHEADER hdr;
124 BOOL session_deleted;
126 } WININETFILE, *LPWININETFILE;
131 WININETHANDLEHEADER hdr;
134 int pasvSocket; /* data socket connected by us in case of passive FTP */
135 LPWININETFILE download_in_progress;
136 struct sockaddr_in socketAddress;
137 struct sockaddr_in lstnSocketAddress;
138 struct hostent *phostent;
141 } WININETFTPSESSIONA, *LPWININETFTPSESSIONA;
149 struct tm tmLastModified;
150 unsigned short permissions;
151 } FILEPROPERTIESA, *LPFILEPROPERTIESA;
156 WININETHANDLEHEADER hdr;
159 LPFILEPROPERTIESA lpafp;
160 } WININETFINDNEXTA, *LPWININETFINDNEXTA;
165 FTPSETCURRENTDIRECTORYA,
168 FTPGETCURRENTDIRECTORYA,
180 typedef struct WORKREQ
184 #define HFTPSESSION param1
187 #define LPSZLOCALFILE param2
188 #define LPSZREMOTEFILE param2
189 #define LPSZFILENAME param2
190 #define LPSZSRCFILE param2
191 #define LPSZDIRECTORY param2
192 #define LPSZSEARCHFILE param2
193 #define LPSZHEADER param2
194 #define LPSZVERB param2
197 #define LPSZNEWREMOTEFILE param3
198 #define LPSZNEWFILE param3
199 #define LPFINDFILEDATA param3
200 #define LPDWDIRECTORY param3
201 #define FDWACCESS param3
202 #define LPSZDESTFILE param3
203 #define DWHEADERLENGTH param3
204 #define LPSZOBJECTNAME param3
207 #define DWFLAGS param4
208 #define LPOPTIONAL param4
211 #define DWCONTEXT param5
212 #define DWOPTIONALLENGTH param5
215 #define FFAILIFEXISTS param6
216 #define LPSZVERSION param6
219 #define DWLOCALFLAGSATTRIBUTE param7
220 #define LPSZREFERRER param7
223 #define LPSZACCEPTTYPES param8
225 struct WORKREQ *next;
226 struct WORKREQ *prev;
228 } WORKREQUEST, *LPWORKREQUEST;
231 time_t ConvertTimeString(LPCSTR asctime);
233 HINTERNET FTP_Connect(HINTERNET hInterent, LPCSTR lpszServerName,
234 INTERNET_PORT nServerPort, LPCSTR lpszUserName,
235 LPCSTR lpszPassword, DWORD dwFlags, DWORD dwContext);
237 HINTERNET HTTP_Connect(HINTERNET hInterent, LPCSTR lpszServerName,
238 INTERNET_PORT nServerPort, LPCSTR lpszUserName,
239 LPCSTR lpszPassword, DWORD dwFlags, DWORD dwContext);
241 BOOL GetAddress(LPCSTR lpszServerName, INTERNET_PORT nServerPort,
242 struct hostent **phe, struct sockaddr_in *psa);
244 void INTERNET_SetLastError(DWORD dwError);
245 DWORD INTERNET_GetLastError();
246 BOOL INTERNET_AsyncCall(LPWORKREQUEST lpWorkRequest);
247 LPSTR INTERNET_GetResponseBuffer();
248 LPSTR INTERNET_GetNextLine(INT nSocket, LPSTR lpszBuffer, LPDWORD dwBuffer);
250 BOOL FTP_CloseSessionHandle(LPWININETFTPSESSIONA lpwfs);
251 BOOL FTP_CloseFindNextHandle(LPWININETFINDNEXTA lpwfn);
252 BOOL FTP_CloseFileTransferHandle(LPWININETFILE lpwfn);
253 BOOLAPI FTP_FtpPutFileA(HINTERNET hConnect, LPCSTR lpszLocalFile,
254 LPCSTR lpszNewRemoteFile, DWORD dwFlags, DWORD dwContext);
255 BOOLAPI FTP_FtpSetCurrentDirectoryA(HINTERNET hConnect, LPCSTR lpszDirectory);
256 BOOLAPI FTP_FtpCreateDirectoryA(HINTERNET hConnect, LPCSTR lpszDirectory);
257 INTERNETAPI HINTERNET WINAPI FTP_FtpFindFirstFileA(HINTERNET hConnect,
258 LPCSTR lpszSearchFile, LPWIN32_FIND_DATAA lpFindFileData, DWORD dwFlags, DWORD dwContext);
259 BOOLAPI FTP_FtpGetCurrentDirectoryA(HINTERNET hFtpSession, LPSTR lpszCurrentDirectory,
260 LPDWORD lpdwCurrentDirectory);
261 BOOL FTP_ConvertFileProp(LPFILEPROPERTIESA lpafp, LPWIN32_FIND_DATAA lpFindFileData);
262 BOOL FTP_FtpRenameFileA(HINTERNET hFtpSession, LPCSTR lpszSrc, LPCSTR lpszDest);
263 BOOL FTP_FtpRemoveDirectoryA(HINTERNET hFtpSession, LPCSTR lpszDirectory);
264 BOOL FTP_FtpDeleteFileA(HINTERNET hFtpSession, LPCSTR lpszFileName);
265 HINTERNET FTP_FtpOpenFileA(HINTERNET hFtpSession, LPCSTR lpszFileName,
266 DWORD fdwAccess, DWORD dwFlags, DWORD dwContext);
267 BOOLAPI FTP_FtpGetFileA(HINTERNET hInternet, LPCSTR lpszRemoteFile, LPCSTR lpszNewFile,
268 BOOL fFailIfExists, DWORD dwLocalFlagsAttribute, DWORD dwInternetFlags,
271 BOOLAPI HTTP_HttpSendRequestA(HINTERNET hHttpRequest, LPCSTR lpszHeaders,
272 DWORD dwHeaderLength, LPVOID lpOptional ,DWORD dwOptionalLength);
273 INTERNETAPI HINTERNET WINAPI HTTP_HttpOpenRequestA(HINTERNET hHttpSession,
274 LPCSTR lpszVerb, LPCSTR lpszObjectName, LPCSTR lpszVersion,
275 LPCSTR lpszReferrer , LPCSTR *lpszAcceptTypes,
276 DWORD dwFlags, DWORD dwContext);
277 void HTTP_CloseHTTPSessionHandle(LPWININETHTTPSESSIONA lpwhs);
278 void HTTP_CloseHTTPRequestHandle(LPWININETHTTPREQA lpwhr);
280 VOID SendAsyncCallback(LPWININETAPPINFOA hIC, HINTERNET hHttpSession,
281 DWORD dwContext, DWORD dwInternetStatus, LPVOID
282 lpvStatusInfo , DWORD dwStatusInfoLength);
284 VOID SendAsyncCallbackInt(LPWININETAPPINFOA hIC, HINTERNET hHttpSession,
285 DWORD dwContext, DWORD dwInternetStatus, LPVOID
286 lpvStatusInfo , DWORD dwStatusInfoLength);
288 BOOL HTTP_InsertProxyAuthorization( LPWININETHTTPREQA lpwhr,
289 LPCSTR username, LPCSTR password );
291 BOOL NETCON_connected(WININET_NETCONNECTION *connection);
292 void NETCON_init(WININET_NETCONNECTION *connnection, BOOL useSSL);
293 BOOL NETCON_create(WININET_NETCONNECTION *connection, int domain,
294 int type, int protocol);
295 BOOL NETCON_close(WININET_NETCONNECTION *connection);
296 BOOL NETCON_connect(WININET_NETCONNECTION *connection, const struct sockaddr *serv_addr,
298 BOOL NETCON_send(WININET_NETCONNECTION *connection, const void *msg, size_t len, int flags,
299 int *sent /* out */);
300 BOOL NETCON_recv(WININET_NETCONNECTION *connection, void *buf, size_t len, int flags,
301 int *recvd /* out */);
302 BOOL NETCON_getNextLine(WININET_NETCONNECTION *connection, LPSTR lpszBuffer, LPDWORD dwBuffer);
304 #define MAX_REPLY_LEN 0x5B4
307 #endif /* _WINE_INTERNET_H_ */