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 # include <openssl/ssl.h>
38 /* used for netconnection.c stuff */
43 #ifdef HAVE_OPENSSL_SSL_H
47 } WININET_NETCONNECTION
;
51 WH_HINIT
= INTERNET_HANDLE_TYPE_INTERNET
,
52 WH_HFTPSESSION
= INTERNET_HANDLE_TYPE_CONNECT_FTP
,
53 WH_HGOPHERSESSION
= INTERNET_HANDLE_TYPE_CONNECT_GOPHER
,
54 WH_HHTTPSESSION
= INTERNET_HANDLE_TYPE_CONNECT_HTTP
,
55 WH_HFILE
= INTERNET_HANDLE_TYPE_FTP_FILE
,
56 WH_HFINDNEXT
= INTERNET_HANDLE_TYPE_FTP_FIND
,
57 WH_HHTTPREQ
= INTERNET_HANDLE_TYPE_HTTP_REQUEST
,
60 typedef struct _WININETHANDLEHEADER
66 struct _WININETHANDLEHEADER
*lpwhparent
;
67 } WININETHANDLEHEADER
, *LPWININETHANDLEHEADER
;
72 WININETHANDLEHEADER hdr
;
75 LPSTR lpszProxyBypass
;
76 LPSTR lpszProxyUsername
;
77 LPSTR lpszProxyPassword
;
79 INTERNET_STATUS_CALLBACK lpfnStatusCB
;
80 } WININETAPPINFOA
, *LPWININETAPPINFOA
;
85 WININETHANDLEHEADER hdr
;
88 INTERNET_PORT nServerPort
;
89 struct sockaddr_in socketAddress
;
90 struct hostent
*phostent
;
91 } WININETHTTPSESSIONA
, *LPWININETHTTPSESSIONA
;
93 #define HDR_ISREQUEST 0x0001
94 #define HDR_COMMADELIMITED 0x0002
95 #define HDR_SEMIDELIMITED 0x0004
103 } HTTPHEADERA
, *LPHTTPHEADERA
;
108 WININETHANDLEHEADER hdr
;
112 WININET_NETCONNECTION netConnection
;
113 HTTPHEADERA StdHeaders
[HTTP_QUERY_MAX
+1];
114 HTTPHEADERA
*pCustHeaders
;
116 } WININETHTTPREQA
, *LPWININETHTTPREQA
;
121 WININETHANDLEHEADER hdr
;
122 BOOL session_deleted
;
124 } WININETFILE
, *LPWININETFILE
;
129 WININETHANDLEHEADER hdr
;
132 int pasvSocket
; /* data socket connected by us in case of passive FTP */
133 LPWININETFILE download_in_progress
;
134 struct sockaddr_in socketAddress
;
135 struct sockaddr_in lstnSocketAddress
;
136 struct hostent
*phostent
;
139 } WININETFTPSESSIONA
, *LPWININETFTPSESSIONA
;
147 struct tm tmLastModified
;
148 unsigned short permissions
;
149 } FILEPROPERTIESA
, *LPFILEPROPERTIESA
;
154 WININETHANDLEHEADER hdr
;
157 LPFILEPROPERTIESA lpafp
;
158 } WININETFINDNEXTA
, *LPWININETFINDNEXTA
;
163 FTPSETCURRENTDIRECTORYA
,
166 FTPGETCURRENTDIRECTORYA
,
178 typedef struct WORKREQ
182 #define HFTPSESSION param1
185 #define LPSZLOCALFILE param2
186 #define LPSZREMOTEFILE param2
187 #define LPSZFILENAME param2
188 #define LPSZSRCFILE param2
189 #define LPSZDIRECTORY param2
190 #define LPSZSEARCHFILE param2
191 #define LPSZHEADER param2
192 #define LPSZVERB param2
195 #define LPSZNEWREMOTEFILE param3
196 #define LPSZNEWFILE param3
197 #define LPFINDFILEDATA param3
198 #define LPDWDIRECTORY param3
199 #define FDWACCESS param3
200 #define LPSZDESTFILE param3
201 #define DWHEADERLENGTH param3
202 #define LPSZOBJECTNAME param3
205 #define DWFLAGS param4
206 #define LPOPTIONAL param4
209 #define DWCONTEXT param5
210 #define DWOPTIONALLENGTH param5
213 #define FFAILIFEXISTS param6
214 #define LPSZVERSION param6
217 #define DWLOCALFLAGSATTRIBUTE param7
218 #define LPSZREFERRER param7
221 #define LPSZACCEPTTYPES param8
223 struct WORKREQ
*next
;
224 struct WORKREQ
*prev
;
226 } WORKREQUEST
, *LPWORKREQUEST
;
229 time_t ConvertTimeString(LPCSTR asctime
);
231 HINTERNET
FTP_Connect(HINTERNET hInterent
, LPCSTR lpszServerName
,
232 INTERNET_PORT nServerPort
, LPCSTR lpszUserName
,
233 LPCSTR lpszPassword
, DWORD dwFlags
, DWORD dwContext
);
235 HINTERNET
HTTP_Connect(HINTERNET hInterent
, LPCSTR lpszServerName
,
236 INTERNET_PORT nServerPort
, LPCSTR lpszUserName
,
237 LPCSTR lpszPassword
, DWORD dwFlags
, DWORD dwContext
);
239 BOOL
GetAddress(LPCSTR lpszServerName
, INTERNET_PORT nServerPort
,
240 struct hostent
**phe
, struct sockaddr_in
*psa
);
242 void INTERNET_SetLastError(DWORD dwError
);
243 DWORD
INTERNET_GetLastError();
244 BOOL
INTERNET_AsyncCall(LPWORKREQUEST lpWorkRequest
);
245 LPSTR
INTERNET_GetResponseBuffer();
246 LPSTR
INTERNET_GetNextLine(INT nSocket
, LPSTR lpszBuffer
, LPDWORD dwBuffer
);
248 BOOL
FTP_CloseSessionHandle(LPWININETFTPSESSIONA lpwfs
);
249 BOOL
FTP_CloseFindNextHandle(LPWININETFINDNEXTA lpwfn
);
250 BOOL
FTP_CloseFileTransferHandle(LPWININETFILE lpwfn
);
251 BOOLAPI
FTP_FtpPutFileA(HINTERNET hConnect
, LPCSTR lpszLocalFile
,
252 LPCSTR lpszNewRemoteFile
, DWORD dwFlags
, DWORD dwContext
);
253 BOOLAPI
FTP_FtpSetCurrentDirectoryA(HINTERNET hConnect
, LPCSTR lpszDirectory
);
254 BOOLAPI
FTP_FtpCreateDirectoryA(HINTERNET hConnect
, LPCSTR lpszDirectory
);
255 INTERNETAPI HINTERNET WINAPI
FTP_FtpFindFirstFileA(HINTERNET hConnect
,
256 LPCSTR lpszSearchFile
, LPWIN32_FIND_DATAA lpFindFileData
, DWORD dwFlags
, DWORD dwContext
);
257 BOOLAPI
FTP_FtpGetCurrentDirectoryA(HINTERNET hFtpSession
, LPSTR lpszCurrentDirectory
,
258 LPDWORD lpdwCurrentDirectory
);
259 BOOL
FTP_ConvertFileProp(LPFILEPROPERTIESA lpafp
, LPWIN32_FIND_DATAA lpFindFileData
);
260 BOOL
FTP_FtpRenameFileA(HINTERNET hFtpSession
, LPCSTR lpszSrc
, LPCSTR lpszDest
);
261 BOOL
FTP_FtpRemoveDirectoryA(HINTERNET hFtpSession
, LPCSTR lpszDirectory
);
262 BOOL
FTP_FtpDeleteFileA(HINTERNET hFtpSession
, LPCSTR lpszFileName
);
263 HINTERNET
FTP_FtpOpenFileA(HINTERNET hFtpSession
, LPCSTR lpszFileName
,
264 DWORD fdwAccess
, DWORD dwFlags
, DWORD dwContext
);
265 BOOLAPI
FTP_FtpGetFileA(HINTERNET hInternet
, LPCSTR lpszRemoteFile
, LPCSTR lpszNewFile
,
266 BOOL fFailIfExists
, DWORD dwLocalFlagsAttribute
, DWORD dwInternetFlags
,
269 BOOLAPI
HTTP_HttpSendRequestA(HINTERNET hHttpRequest
, LPCSTR lpszHeaders
,
270 DWORD dwHeaderLength
, LPVOID lpOptional
,DWORD dwOptionalLength
);
271 INTERNETAPI HINTERNET WINAPI
HTTP_HttpOpenRequestA(HINTERNET hHttpSession
,
272 LPCSTR lpszVerb
, LPCSTR lpszObjectName
, LPCSTR lpszVersion
,
273 LPCSTR lpszReferrer
, LPCSTR
*lpszAcceptTypes
,
274 DWORD dwFlags
, DWORD dwContext
);
275 void HTTP_CloseHTTPSessionHandle(LPWININETHTTPSESSIONA lpwhs
);
276 void HTTP_CloseHTTPRequestHandle(LPWININETHTTPREQA lpwhr
);
278 VOID
SendAsyncCallback(LPWININETAPPINFOA hIC
, HINTERNET hHttpSession
,
279 DWORD dwContext
, DWORD dwInternetStatus
, LPVOID
280 lpvStatusInfo
, DWORD dwStatusInfoLength
);
282 VOID
SendAsyncCallbackInt(LPWININETAPPINFOA hIC
, HINTERNET hHttpSession
,
283 DWORD dwContext
, DWORD dwInternetStatus
, LPVOID
284 lpvStatusInfo
, DWORD dwStatusInfoLength
);
286 BOOL
HTTP_InsertProxyAuthorization( LPWININETHTTPREQA lpwhr
,
287 LPCSTR username
, LPCSTR password
);
289 BOOL
NETCON_connected(WININET_NETCONNECTION
*connection
);
290 void NETCON_init(WININET_NETCONNECTION
*connnection
, BOOL useSSL
);
291 BOOL
NETCON_create(WININET_NETCONNECTION
*connection
, int domain
,
292 int type
, int protocol
);
293 BOOL
NETCON_close(WININET_NETCONNECTION
*connection
);
294 BOOL
NETCON_connect(WININET_NETCONNECTION
*connection
, const struct sockaddr
*serv_addr
,
296 BOOL
NETCON_send(WININET_NETCONNECTION
*connection
, const void *msg
, size_t len
, int flags
,
297 int *sent
/* out */);
298 BOOL
NETCON_recv(WININET_NETCONNECTION
*connection
, void *buf
, size_t len
, int flags
,
299 int *recvd
/* out */);
300 BOOL
NETCON_getNextLine(WININET_NETCONNECTION
*connection
, LPSTR lpszBuffer
, LPDWORD dwBuffer
);
302 #define MAX_REPLY_LEN 0x5B4
305 #endif /* _WINE_INTERNET_H_ */