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>
39 #ifdef HAVE_SYS_SOCKET_H
40 # include <sys/socket.h>
43 /* used for netconnection.c stuff */
48 #ifdef HAVE_OPENSSL_SSL_H
52 } WININET_NETCONNECTION;
56 WH_HINIT = INTERNET_HANDLE_TYPE_INTERNET,
57 WH_HFTPSESSION = INTERNET_HANDLE_TYPE_CONNECT_FTP,
58 WH_HGOPHERSESSION = INTERNET_HANDLE_TYPE_CONNECT_GOPHER,
59 WH_HHTTPSESSION = INTERNET_HANDLE_TYPE_CONNECT_HTTP,
60 WH_HFILE = INTERNET_HANDLE_TYPE_FTP_FILE,
61 WH_HFINDNEXT = INTERNET_HANDLE_TYPE_FTP_FIND,
62 WH_HHTTPREQ = INTERNET_HANDLE_TYPE_HTTP_REQUEST,
65 typedef struct _WININETHANDLEHEADER
71 struct _WININETHANDLEHEADER *lpwhparent;
72 } WININETHANDLEHEADER, *LPWININETHANDLEHEADER;
77 WININETHANDLEHEADER hdr;
80 LPSTR lpszProxyBypass;
81 LPSTR lpszProxyUsername;
82 LPSTR lpszProxyPassword;
84 INTERNET_STATUS_CALLBACK lpfnStatusCB;
85 } WININETAPPINFOA, *LPWININETAPPINFOA;
90 WININETHANDLEHEADER hdr;
93 INTERNET_PORT nServerPort;
94 struct sockaddr_in socketAddress;
95 struct hostent *phostent;
96 } WININETHTTPSESSIONA, *LPWININETHTTPSESSIONA;
98 #define HDR_ISREQUEST 0x0001
99 #define HDR_COMMADELIMITED 0x0002
100 #define HDR_SEMIDELIMITED 0x0004
108 } HTTPHEADERA, *LPHTTPHEADERA;
113 WININETHANDLEHEADER hdr;
117 WININET_NETCONNECTION netConnection;
118 HTTPHEADERA StdHeaders[HTTP_QUERY_MAX+1];
119 HTTPHEADERA *pCustHeaders;
121 } WININETHTTPREQA, *LPWININETHTTPREQA;
126 WININETHANDLEHEADER hdr;
127 BOOL session_deleted;
129 } WININETFILE, *LPWININETFILE;
134 WININETHANDLEHEADER hdr;
137 int pasvSocket; /* data socket connected by us in case of passive FTP */
138 LPWININETFILE download_in_progress;
139 struct sockaddr_in socketAddress;
140 struct sockaddr_in lstnSocketAddress;
141 struct hostent *phostent;
144 } WININETFTPSESSIONA, *LPWININETFTPSESSIONA;
152 struct tm tmLastModified;
153 unsigned short permissions;
154 } FILEPROPERTIESA, *LPFILEPROPERTIESA;
159 WININETHANDLEHEADER hdr;
162 LPFILEPROPERTIESA lpafp;
163 } WININETFINDNEXTA, *LPWININETFINDNEXTA;
168 FTPSETCURRENTDIRECTORYA,
171 FTPGETCURRENTDIRECTORYA,
183 struct WORKREQ_FTPPUTFILEA
186 LPSTR lpszNewRemoteFile;
191 struct WORKREQ_FTPSETCURRENTDIRECTORYA
196 struct WORKREQ_FTPCREATEDIRECTORYA
201 struct WORKREQ_FTPFINDFIRSTFILEA
203 LPSTR lpszSearchFile;
204 LPWIN32_FIND_DATAA lpFindFileData;
209 struct WORKREQ_FTPGETCURRENTDIRECTORYA
212 DWORD *lpdwDirectory;
215 struct WORKREQ_FTPOPENFILEA
223 struct WORKREQ_FTPGETFILEA
225 LPSTR lpszRemoteFile;
228 DWORD dwLocalFlagsAttribute;
233 struct WORKREQ_FTPDELETEFILEA
238 struct WORKREQ_FTPREMOVEDIRECTORYA
243 struct WORKREQ_FTPRENAMEFILEA
249 struct WORKREQ_INTERNETFINDNEXTA
251 LPWIN32_FIND_DATAA lpFindFileData;
254 struct WORKREQ_HTTPOPENREQUESTA
257 LPSTR lpszObjectName;
260 LPCSTR *lpszAcceptTypes;
265 struct WORKREQ_HTTPSENDREQUESTA
268 DWORD dwHeaderLength;
270 DWORD dwOptionalLength;
273 struct WORKREQ_SENDCALLBACK
275 HINTERNET hHttpSession;
277 DWORD dwInternetStatus;
278 LPVOID lpvStatusInfo;
279 DWORD dwStatusInfoLength;
282 typedef struct WORKREQ
288 struct WORKREQ_FTPPUTFILEA FtpPutFileA;
289 struct WORKREQ_FTPSETCURRENTDIRECTORYA FtpSetCurrentDirectoryA;
290 struct WORKREQ_FTPCREATEDIRECTORYA FtpCreateDirectoryA;
291 struct WORKREQ_FTPFINDFIRSTFILEA FtpFindFirstFileA;
292 struct WORKREQ_FTPGETCURRENTDIRECTORYA FtpGetCurrentDirectoryA;
293 struct WORKREQ_FTPOPENFILEA FtpOpenFileA;
294 struct WORKREQ_FTPGETFILEA FtpGetFileA;
295 struct WORKREQ_FTPDELETEFILEA FtpDeleteFileA;
296 struct WORKREQ_FTPREMOVEDIRECTORYA FtpRemoveDirectoryA;
297 struct WORKREQ_FTPRENAMEFILEA FtpRenameFileA;
298 struct WORKREQ_INTERNETFINDNEXTA InternetFindNextA;
299 struct WORKREQ_HTTPOPENREQUESTA HttpOpenRequestA;
300 struct WORKREQ_HTTPSENDREQUESTA HttpSendRequestA;
301 struct WORKREQ_SENDCALLBACK SendCallback;
304 struct WORKREQ *next;
305 struct WORKREQ *prev;
307 } WORKREQUEST, *LPWORKREQUEST;
310 time_t ConvertTimeString(LPCSTR asctime);
312 HINTERNET FTP_Connect(HINTERNET hInterent, LPCSTR lpszServerName,
313 INTERNET_PORT nServerPort, LPCSTR lpszUserName,
314 LPCSTR lpszPassword, DWORD dwFlags, DWORD dwContext);
316 HINTERNET HTTP_Connect(HINTERNET hInterent, LPCSTR lpszServerName,
317 INTERNET_PORT nServerPort, LPCSTR lpszUserName,
318 LPCSTR lpszPassword, DWORD dwFlags, DWORD dwContext);
320 BOOL GetAddress(LPCSTR lpszServerName, INTERNET_PORT nServerPort,
321 struct hostent **phe, struct sockaddr_in *psa);
323 void INTERNET_SetLastError(DWORD dwError);
324 DWORD INTERNET_GetLastError();
325 BOOL INTERNET_AsyncCall(LPWORKREQUEST lpWorkRequest);
326 LPSTR INTERNET_GetResponseBuffer();
327 LPSTR INTERNET_GetNextLine(INT nSocket, LPSTR lpszBuffer, LPDWORD dwBuffer);
329 BOOL FTP_CloseSessionHandle(LPWININETFTPSESSIONA lpwfs);
330 BOOL FTP_CloseFindNextHandle(LPWININETFINDNEXTA lpwfn);
331 BOOL FTP_CloseFileTransferHandle(LPWININETFILE lpwfn);
332 BOOLAPI FTP_FtpPutFileA(HINTERNET hConnect, LPCSTR lpszLocalFile,
333 LPCSTR lpszNewRemoteFile, DWORD dwFlags, DWORD dwContext);
334 BOOLAPI FTP_FtpSetCurrentDirectoryA(HINTERNET hConnect, LPCSTR lpszDirectory);
335 BOOLAPI FTP_FtpCreateDirectoryA(HINTERNET hConnect, LPCSTR lpszDirectory);
336 INTERNETAPI HINTERNET WINAPI FTP_FtpFindFirstFileA(HINTERNET hConnect,
337 LPCSTR lpszSearchFile, LPWIN32_FIND_DATAA lpFindFileData, DWORD dwFlags, DWORD dwContext);
338 BOOLAPI FTP_FtpGetCurrentDirectoryA(HINTERNET hFtpSession, LPSTR lpszCurrentDirectory,
339 LPDWORD lpdwCurrentDirectory);
340 BOOL FTP_ConvertFileProp(LPFILEPROPERTIESA lpafp, LPWIN32_FIND_DATAA lpFindFileData);
341 BOOL FTP_FtpRenameFileA(HINTERNET hFtpSession, LPCSTR lpszSrc, LPCSTR lpszDest);
342 BOOL FTP_FtpRemoveDirectoryA(HINTERNET hFtpSession, LPCSTR lpszDirectory);
343 BOOL FTP_FtpDeleteFileA(HINTERNET hFtpSession, LPCSTR lpszFileName);
344 HINTERNET FTP_FtpOpenFileA(HINTERNET hFtpSession, LPCSTR lpszFileName,
345 DWORD fdwAccess, DWORD dwFlags, DWORD dwContext);
346 BOOLAPI FTP_FtpGetFileA(HINTERNET hInternet, LPCSTR lpszRemoteFile, LPCSTR lpszNewFile,
347 BOOL fFailIfExists, DWORD dwLocalFlagsAttribute, DWORD dwInternetFlags,
350 BOOLAPI HTTP_HttpSendRequestA(HINTERNET hHttpRequest, LPCSTR lpszHeaders,
351 DWORD dwHeaderLength, LPVOID lpOptional ,DWORD dwOptionalLength);
352 INTERNETAPI HINTERNET WINAPI HTTP_HttpOpenRequestA(HINTERNET hHttpSession,
353 LPCSTR lpszVerb, LPCSTR lpszObjectName, LPCSTR lpszVersion,
354 LPCSTR lpszReferrer , LPCSTR *lpszAcceptTypes,
355 DWORD dwFlags, DWORD dwContext);
356 void HTTP_CloseHTTPSessionHandle(LPWININETHTTPSESSIONA lpwhs);
357 void HTTP_CloseHTTPRequestHandle(LPWININETHTTPREQA lpwhr);
359 VOID SendAsyncCallback(LPWININETAPPINFOA hIC, HINTERNET hHttpSession,
360 DWORD dwContext, DWORD dwInternetStatus, LPVOID
361 lpvStatusInfo , DWORD dwStatusInfoLength);
363 VOID SendAsyncCallbackInt(LPWININETAPPINFOA hIC, HINTERNET hHttpSession,
364 DWORD dwContext, DWORD dwInternetStatus, LPVOID
365 lpvStatusInfo , DWORD dwStatusInfoLength);
367 BOOL HTTP_InsertProxyAuthorization( LPWININETHTTPREQA lpwhr,
368 LPCSTR username, LPCSTR password );
370 BOOL NETCON_connected(WININET_NETCONNECTION *connection);
371 void NETCON_init(WININET_NETCONNECTION *connnection, BOOL useSSL);
372 BOOL NETCON_create(WININET_NETCONNECTION *connection, int domain,
373 int type, int protocol);
374 BOOL NETCON_close(WININET_NETCONNECTION *connection);
375 BOOL NETCON_connect(WININET_NETCONNECTION *connection, const struct sockaddr *serv_addr,
377 BOOL NETCON_send(WININET_NETCONNECTION *connection, const void *msg, size_t len, int flags,
378 int *sent /* out */);
379 BOOL NETCON_recv(WININET_NETCONNECTION *connection, void *buf, size_t len, int flags,
380 int *recvd /* out */);
381 BOOL NETCON_getNextLine(WININET_NETCONNECTION *connection, LPSTR lpszBuffer, LPDWORD dwBuffer);
383 #define MAX_REPLY_LEN 0x5B4
386 #endif /* _WINE_INTERNET_H_ */