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 */
37 # include <openssl/ssl.h>
39 #define FAR do_not_use_this_in_wine
42 #ifdef HAVE_SYS_SOCKET_H
43 # include <sys/socket.h>
46 /* used for netconnection.c stuff */
51 #ifdef HAVE_OPENSSL_SSL_H
55 } WININET_NETCONNECTION;
57 inline static LPSTR WININET_strdup( LPCSTR str )
59 LPSTR ret = HeapAlloc( GetProcessHeap(), 0, strlen(str) + 1 );
60 if (ret) strcpy( ret, str );
66 WH_HINIT = INTERNET_HANDLE_TYPE_INTERNET,
67 WH_HFTPSESSION = INTERNET_HANDLE_TYPE_CONNECT_FTP,
68 WH_HGOPHERSESSION = INTERNET_HANDLE_TYPE_CONNECT_GOPHER,
69 WH_HHTTPSESSION = INTERNET_HANDLE_TYPE_CONNECT_HTTP,
70 WH_HFILE = INTERNET_HANDLE_TYPE_FTP_FILE,
71 WH_HFINDNEXT = INTERNET_HANDLE_TYPE_FTP_FIND,
72 WH_HHTTPREQ = INTERNET_HANDLE_TYPE_HTTP_REQUEST,
75 typedef struct _WININETHANDLEHEADER
81 struct _WININETHANDLEHEADER *lpwhparent;
82 } WININETHANDLEHEADER, *LPWININETHANDLEHEADER;
87 WININETHANDLEHEADER hdr;
90 LPSTR lpszProxyBypass;
91 LPSTR lpszProxyUsername;
92 LPSTR lpszProxyPassword;
94 INTERNET_STATUS_CALLBACK lpfnStatusCB;
95 } WININETAPPINFOA, *LPWININETAPPINFOA;
100 WININETHANDLEHEADER hdr;
101 LPSTR lpszServerName;
103 INTERNET_PORT nServerPort;
104 struct sockaddr_in socketAddress;
105 struct hostent *phostent;
106 } WININETHTTPSESSIONA, *LPWININETHTTPSESSIONA;
108 #define HDR_ISREQUEST 0x0001
109 #define HDR_COMMADELIMITED 0x0002
110 #define HDR_SEMIDELIMITED 0x0004
118 } HTTPHEADERA, *LPHTTPHEADERA;
123 WININETHANDLEHEADER hdr;
127 WININET_NETCONNECTION netConnection;
128 HTTPHEADERA StdHeaders[HTTP_QUERY_MAX+1];
129 HTTPHEADERA *pCustHeaders;
131 } WININETHTTPREQA, *LPWININETHTTPREQA;
136 WININETHANDLEHEADER hdr;
137 BOOL session_deleted;
139 } WININETFILE, *LPWININETFILE;
144 WININETHANDLEHEADER hdr;
147 int pasvSocket; /* data socket connected by us in case of passive FTP */
148 LPWININETFILE download_in_progress;
149 struct sockaddr_in socketAddress;
150 struct sockaddr_in lstnSocketAddress;
151 struct hostent *phostent;
154 } WININETFTPSESSIONA, *LPWININETFTPSESSIONA;
162 struct tm tmLastModified;
163 unsigned short permissions;
164 } FILEPROPERTIESA, *LPFILEPROPERTIESA;
169 WININETHANDLEHEADER hdr;
172 LPFILEPROPERTIESA lpafp;
173 } WININETFINDNEXTA, *LPWININETFINDNEXTA;
178 FTPSETCURRENTDIRECTORYA,
181 FTPGETCURRENTDIRECTORYA,
194 struct WORKREQ_FTPPUTFILEA
197 LPSTR lpszNewRemoteFile;
202 struct WORKREQ_FTPSETCURRENTDIRECTORYA
207 struct WORKREQ_FTPCREATEDIRECTORYA
212 struct WORKREQ_FTPFINDFIRSTFILEA
214 LPSTR lpszSearchFile;
215 LPWIN32_FIND_DATAA lpFindFileData;
220 struct WORKREQ_FTPGETCURRENTDIRECTORYA
223 DWORD *lpdwDirectory;
226 struct WORKREQ_FTPOPENFILEA
234 struct WORKREQ_FTPGETFILEA
236 LPSTR lpszRemoteFile;
239 DWORD dwLocalFlagsAttribute;
244 struct WORKREQ_FTPDELETEFILEA
249 struct WORKREQ_FTPREMOVEDIRECTORYA
254 struct WORKREQ_FTPRENAMEFILEA
260 struct WORKREQ_INTERNETFINDNEXTA
262 LPWIN32_FIND_DATAA lpFindFileData;
265 struct WORKREQ_HTTPOPENREQUESTA
268 LPSTR lpszObjectName;
271 LPCSTR *lpszAcceptTypes;
276 struct WORKREQ_HTTPSENDREQUESTA
279 DWORD dwHeaderLength;
281 DWORD dwOptionalLength;
284 struct WORKREQ_SENDCALLBACK
286 HINTERNET hHttpSession;
288 DWORD dwInternetStatus;
289 LPVOID lpvStatusInfo;
290 DWORD dwStatusInfoLength;
293 struct WORKREQ_INTERNETOPENURLA
298 DWORD dwHeadersLength;
303 typedef struct WORKREQ
309 struct WORKREQ_FTPPUTFILEA FtpPutFileA;
310 struct WORKREQ_FTPSETCURRENTDIRECTORYA FtpSetCurrentDirectoryA;
311 struct WORKREQ_FTPCREATEDIRECTORYA FtpCreateDirectoryA;
312 struct WORKREQ_FTPFINDFIRSTFILEA FtpFindFirstFileA;
313 struct WORKREQ_FTPGETCURRENTDIRECTORYA FtpGetCurrentDirectoryA;
314 struct WORKREQ_FTPOPENFILEA FtpOpenFileA;
315 struct WORKREQ_FTPGETFILEA FtpGetFileA;
316 struct WORKREQ_FTPDELETEFILEA FtpDeleteFileA;
317 struct WORKREQ_FTPREMOVEDIRECTORYA FtpRemoveDirectoryA;
318 struct WORKREQ_FTPRENAMEFILEA FtpRenameFileA;
319 struct WORKREQ_INTERNETFINDNEXTA InternetFindNextA;
320 struct WORKREQ_HTTPOPENREQUESTA HttpOpenRequestA;
321 struct WORKREQ_HTTPSENDREQUESTA HttpSendRequestA;
322 struct WORKREQ_SENDCALLBACK SendCallback;
323 struct WORKREQ_INTERNETOPENURLA InternetOpenUrlA;
326 struct WORKREQ *next;
327 struct WORKREQ *prev;
329 } WORKREQUEST, *LPWORKREQUEST;
331 HINTERNET WININET_AllocHandle( LPWININETHANDLEHEADER info );
332 LPWININETHANDLEHEADER WININET_GetObject( HINTERNET hinternet );
333 BOOL WININET_FreeHandle( HINTERNET hinternet );
334 HINTERNET WININET_FindHandle( LPWININETHANDLEHEADER info );
336 time_t ConvertTimeString(LPCSTR asctime);
338 HINTERNET FTP_Connect(HINTERNET hInterent, LPCSTR lpszServerName,
339 INTERNET_PORT nServerPort, LPCSTR lpszUserName,
340 LPCSTR lpszPassword, DWORD dwFlags, DWORD dwContext);
342 HINTERNET HTTP_Connect(HINTERNET hInterent, LPCSTR lpszServerName,
343 INTERNET_PORT nServerPort, LPCSTR lpszUserName,
344 LPCSTR lpszPassword, DWORD dwFlags, DWORD dwContext);
346 BOOL GetAddress(LPCSTR lpszServerName, INTERNET_PORT nServerPort,
347 struct hostent **phe, struct sockaddr_in *psa);
349 void INTERNET_SetLastError(DWORD dwError);
350 DWORD INTERNET_GetLastError();
351 BOOL INTERNET_AsyncCall(LPWORKREQUEST lpWorkRequest);
352 LPSTR INTERNET_GetResponseBuffer();
353 LPSTR INTERNET_GetNextLine(INT nSocket, LPSTR lpszBuffer, LPDWORD dwBuffer);
355 BOOL FTP_CloseSessionHandle(LPWININETFTPSESSIONA lpwfs);
356 BOOL FTP_CloseFindNextHandle(LPWININETFINDNEXTA lpwfn);
357 BOOL FTP_CloseFileTransferHandle(LPWININETFILE lpwfn);
358 BOOLAPI FTP_FtpPutFileA(HINTERNET hConnect, LPCSTR lpszLocalFile,
359 LPCSTR lpszNewRemoteFile, DWORD dwFlags, DWORD dwContext);
360 BOOLAPI FTP_FtpSetCurrentDirectoryA(HINTERNET hConnect, LPCSTR lpszDirectory);
361 BOOLAPI FTP_FtpCreateDirectoryA(HINTERNET hConnect, LPCSTR lpszDirectory);
362 INTERNETAPI HINTERNET WINAPI FTP_FtpFindFirstFileA(HINTERNET hConnect,
363 LPCSTR lpszSearchFile, LPWIN32_FIND_DATAA lpFindFileData, DWORD dwFlags, DWORD dwContext);
364 BOOLAPI FTP_FtpGetCurrentDirectoryA(HINTERNET hFtpSession, LPSTR lpszCurrentDirectory,
365 LPDWORD lpdwCurrentDirectory);
366 BOOL FTP_ConvertFileProp(LPFILEPROPERTIESA lpafp, LPWIN32_FIND_DATAA lpFindFileData);
367 BOOL FTP_FtpRenameFileA(HINTERNET hFtpSession, LPCSTR lpszSrc, LPCSTR lpszDest);
368 BOOL FTP_FtpRemoveDirectoryA(HINTERNET hFtpSession, LPCSTR lpszDirectory);
369 BOOL FTP_FtpDeleteFileA(HINTERNET hFtpSession, LPCSTR lpszFileName);
370 HINTERNET FTP_FtpOpenFileA(HINTERNET hFtpSession, LPCSTR lpszFileName,
371 DWORD fdwAccess, DWORD dwFlags, DWORD dwContext);
372 BOOLAPI FTP_FtpGetFileA(HINTERNET hInternet, LPCSTR lpszRemoteFile, LPCSTR lpszNewFile,
373 BOOL fFailIfExists, DWORD dwLocalFlagsAttribute, DWORD dwInternetFlags,
376 BOOLAPI HTTP_HttpSendRequestA(HINTERNET hHttpRequest, LPCSTR lpszHeaders,
377 DWORD dwHeaderLength, LPVOID lpOptional ,DWORD dwOptionalLength);
378 INTERNETAPI HINTERNET WINAPI HTTP_HttpOpenRequestA(HINTERNET hHttpSession,
379 LPCSTR lpszVerb, LPCSTR lpszObjectName, LPCSTR lpszVersion,
380 LPCSTR lpszReferrer , LPCSTR *lpszAcceptTypes,
381 DWORD dwFlags, DWORD dwContext);
382 void HTTP_CloseHTTPSessionHandle(LPWININETHTTPSESSIONA lpwhs);
383 void HTTP_CloseHTTPRequestHandle(LPWININETHTTPREQA lpwhr);
385 VOID SendAsyncCallback(LPWININETAPPINFOA hIC, HINTERNET hHttpSession,
386 DWORD dwContext, DWORD dwInternetStatus, LPVOID
387 lpvStatusInfo , DWORD dwStatusInfoLength);
389 VOID SendAsyncCallbackInt(LPWININETAPPINFOA hIC, HINTERNET hHttpSession,
390 DWORD dwContext, DWORD dwInternetStatus, LPVOID
391 lpvStatusInfo , DWORD dwStatusInfoLength);
393 BOOL HTTP_InsertProxyAuthorization( LPWININETHTTPREQA lpwhr,
394 LPCSTR username, LPCSTR password );
396 BOOL NETCON_connected(WININET_NETCONNECTION *connection);
397 void NETCON_init(WININET_NETCONNECTION *connnection, BOOL useSSL);
398 BOOL NETCON_create(WININET_NETCONNECTION *connection, int domain,
399 int type, int protocol);
400 BOOL NETCON_close(WININET_NETCONNECTION *connection);
401 BOOL NETCON_connect(WININET_NETCONNECTION *connection, const struct sockaddr *serv_addr,
403 BOOL NETCON_send(WININET_NETCONNECTION *connection, const void *msg, size_t len, int flags,
404 int *sent /* out */);
405 BOOL NETCON_recv(WININET_NETCONNECTION *connection, void *buf, size_t len, int flags,
406 int *recvd /* out */);
407 BOOL NETCON_getNextLine(WININET_NETCONNECTION *connection, LPSTR lpszBuffer, LPDWORD dwBuffer);
409 #define MAX_REPLY_LEN 0x5B4
412 #endif /* _WINE_INTERNET_H_ */