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 struct WORKREQ_FTPPUTFILEA
183 LPSTR lpszNewRemoteFile;
188 struct WORKREQ_FTPSETCURRENTDIRECTORYA
193 struct WORKREQ_FTPCREATEDIRECTORYA
198 struct WORKREQ_FTPFINDFIRSTFILEA
200 LPSTR lpszSearchFile;
201 LPWIN32_FIND_DATAA lpFindFileData;
206 struct WORKREQ_FTPGETCURRENTDIRECTORYA
209 DWORD *lpdwDirectory;
212 struct WORKREQ_FTPOPENFILEA
220 struct WORKREQ_FTPGETFILEA
222 LPSTR lpszRemoteFile;
225 DWORD dwLocalFlagsAttribute;
230 struct WORKREQ_FTPDELETEFILEA
235 struct WORKREQ_FTPREMOVEDIRECTORYA
240 struct WORKREQ_FTPRENAMEFILEA
246 struct WORKREQ_INTERNETFINDNEXTA
248 LPWIN32_FIND_DATAA lpFindFileData;
251 struct WORKREQ_HTTPOPENREQUESTA
254 LPSTR lpszObjectName;
257 LPCSTR *lpszAcceptTypes;
262 struct WORKREQ_HTTPSENDREQUESTA
265 DWORD dwHeaderLength;
267 DWORD dwOptionalLength;
270 struct WORKREQ_SENDCALLBACK
272 HINTERNET hHttpSession;
274 DWORD dwInternetStatus;
275 LPVOID lpvStatusInfo;
276 DWORD dwStatusInfoLength;
279 typedef struct WORKREQ
285 struct WORKREQ_FTPPUTFILEA FtpPutFileA;
286 struct WORKREQ_FTPSETCURRENTDIRECTORYA FtpSetCurrentDirectoryA;
287 struct WORKREQ_FTPCREATEDIRECTORYA FtpCreateDirectoryA;
288 struct WORKREQ_FTPFINDFIRSTFILEA FtpFindFirstFileA;
289 struct WORKREQ_FTPGETCURRENTDIRECTORYA FtpGetCurrentDirectoryA;
290 struct WORKREQ_FTPOPENFILEA FtpOpenFileA;
291 struct WORKREQ_FTPGETFILEA FtpGetFileA;
292 struct WORKREQ_FTPDELETEFILEA FtpDeleteFileA;
293 struct WORKREQ_FTPREMOVEDIRECTORYA FtpRemoveDirectoryA;
294 struct WORKREQ_FTPRENAMEFILEA FtpRenameFileA;
295 struct WORKREQ_INTERNETFINDNEXTA InternetFindNextA;
296 struct WORKREQ_HTTPOPENREQUESTA HttpOpenRequestA;
297 struct WORKREQ_HTTPSENDREQUESTA HttpSendRequestA;
298 struct WORKREQ_SENDCALLBACK SendCallback;
301 struct WORKREQ *next;
302 struct WORKREQ *prev;
304 } WORKREQUEST, *LPWORKREQUEST;
307 time_t ConvertTimeString(LPCSTR asctime);
309 HINTERNET FTP_Connect(HINTERNET hInterent, LPCSTR lpszServerName,
310 INTERNET_PORT nServerPort, LPCSTR lpszUserName,
311 LPCSTR lpszPassword, DWORD dwFlags, DWORD dwContext);
313 HINTERNET HTTP_Connect(HINTERNET hInterent, LPCSTR lpszServerName,
314 INTERNET_PORT nServerPort, LPCSTR lpszUserName,
315 LPCSTR lpszPassword, DWORD dwFlags, DWORD dwContext);
317 BOOL GetAddress(LPCSTR lpszServerName, INTERNET_PORT nServerPort,
318 struct hostent **phe, struct sockaddr_in *psa);
320 void INTERNET_SetLastError(DWORD dwError);
321 DWORD INTERNET_GetLastError();
322 BOOL INTERNET_AsyncCall(LPWORKREQUEST lpWorkRequest);
323 LPSTR INTERNET_GetResponseBuffer();
324 LPSTR INTERNET_GetNextLine(INT nSocket, LPSTR lpszBuffer, LPDWORD dwBuffer);
326 BOOL FTP_CloseSessionHandle(LPWININETFTPSESSIONA lpwfs);
327 BOOL FTP_CloseFindNextHandle(LPWININETFINDNEXTA lpwfn);
328 BOOL FTP_CloseFileTransferHandle(LPWININETFILE lpwfn);
329 BOOLAPI FTP_FtpPutFileA(HINTERNET hConnect, LPCSTR lpszLocalFile,
330 LPCSTR lpszNewRemoteFile, DWORD dwFlags, DWORD dwContext);
331 BOOLAPI FTP_FtpSetCurrentDirectoryA(HINTERNET hConnect, LPCSTR lpszDirectory);
332 BOOLAPI FTP_FtpCreateDirectoryA(HINTERNET hConnect, LPCSTR lpszDirectory);
333 INTERNETAPI HINTERNET WINAPI FTP_FtpFindFirstFileA(HINTERNET hConnect,
334 LPCSTR lpszSearchFile, LPWIN32_FIND_DATAA lpFindFileData, DWORD dwFlags, DWORD dwContext);
335 BOOLAPI FTP_FtpGetCurrentDirectoryA(HINTERNET hFtpSession, LPSTR lpszCurrentDirectory,
336 LPDWORD lpdwCurrentDirectory);
337 BOOL FTP_ConvertFileProp(LPFILEPROPERTIESA lpafp, LPWIN32_FIND_DATAA lpFindFileData);
338 BOOL FTP_FtpRenameFileA(HINTERNET hFtpSession, LPCSTR lpszSrc, LPCSTR lpszDest);
339 BOOL FTP_FtpRemoveDirectoryA(HINTERNET hFtpSession, LPCSTR lpszDirectory);
340 BOOL FTP_FtpDeleteFileA(HINTERNET hFtpSession, LPCSTR lpszFileName);
341 HINTERNET FTP_FtpOpenFileA(HINTERNET hFtpSession, LPCSTR lpszFileName,
342 DWORD fdwAccess, DWORD dwFlags, DWORD dwContext);
343 BOOLAPI FTP_FtpGetFileA(HINTERNET hInternet, LPCSTR lpszRemoteFile, LPCSTR lpszNewFile,
344 BOOL fFailIfExists, DWORD dwLocalFlagsAttribute, DWORD dwInternetFlags,
347 BOOLAPI HTTP_HttpSendRequestA(HINTERNET hHttpRequest, LPCSTR lpszHeaders,
348 DWORD dwHeaderLength, LPVOID lpOptional ,DWORD dwOptionalLength);
349 INTERNETAPI HINTERNET WINAPI HTTP_HttpOpenRequestA(HINTERNET hHttpSession,
350 LPCSTR lpszVerb, LPCSTR lpszObjectName, LPCSTR lpszVersion,
351 LPCSTR lpszReferrer , LPCSTR *lpszAcceptTypes,
352 DWORD dwFlags, DWORD dwContext);
353 void HTTP_CloseHTTPSessionHandle(LPWININETHTTPSESSIONA lpwhs);
354 void HTTP_CloseHTTPRequestHandle(LPWININETHTTPREQA lpwhr);
356 VOID SendAsyncCallback(LPWININETAPPINFOA hIC, HINTERNET hHttpSession,
357 DWORD dwContext, DWORD dwInternetStatus, LPVOID
358 lpvStatusInfo , DWORD dwStatusInfoLength);
360 VOID SendAsyncCallbackInt(LPWININETAPPINFOA hIC, HINTERNET hHttpSession,
361 DWORD dwContext, DWORD dwInternetStatus, LPVOID
362 lpvStatusInfo , DWORD dwStatusInfoLength);
364 BOOL HTTP_InsertProxyAuthorization( LPWININETHTTPREQA lpwhr,
365 LPCSTR username, LPCSTR password );
367 BOOL NETCON_connected(WININET_NETCONNECTION *connection);
368 void NETCON_init(WININET_NETCONNECTION *connnection, BOOL useSSL);
369 BOOL NETCON_create(WININET_NETCONNECTION *connection, int domain,
370 int type, int protocol);
371 BOOL NETCON_close(WININET_NETCONNECTION *connection);
372 BOOL NETCON_connect(WININET_NETCONNECTION *connection, const struct sockaddr *serv_addr,
374 BOOL NETCON_send(WININET_NETCONNECTION *connection, const void *msg, size_t len, int flags,
375 int *sent /* out */);
376 BOOL NETCON_recv(WININET_NETCONNECTION *connection, void *buf, size_t len, int flags,
377 int *recvd /* out */);
378 BOOL NETCON_getNextLine(WININET_NETCONNECTION *connection, LPSTR lpszBuffer, LPDWORD dwBuffer);
380 #define MAX_REPLY_LEN 0x5B4
383 #endif /* _WINE_INTERNET_H_ */