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
;
77 INTERNET_STATUS_CALLBACK lpfnStatusCB
;
78 } WININETAPPINFOA
, *LPWININETAPPINFOA
;
83 WININETHANDLEHEADER hdr
;
86 INTERNET_PORT nServerPort
;
87 struct sockaddr_in socketAddress
;
88 struct hostent
*phostent
;
89 } WININETHTTPSESSIONA
, *LPWININETHTTPSESSIONA
;
91 #define HDR_ISREQUEST 0x0001
92 #define HDR_COMMADELIMITED 0x0002
93 #define HDR_SEMIDELIMITED 0x0004
101 } HTTPHEADERA
, *LPHTTPHEADERA
;
106 WININETHANDLEHEADER hdr
;
110 WININET_NETCONNECTION netConnection
;
111 HTTPHEADERA StdHeaders
[HTTP_QUERY_MAX
+1];
112 HTTPHEADERA
*pCustHeaders
;
114 } WININETHTTPREQA
, *LPWININETHTTPREQA
;
119 WININETHANDLEHEADER hdr
;
120 BOOL session_deleted
;
122 } WININETFILE
, *LPWININETFILE
;
127 WININETHANDLEHEADER hdr
;
130 int pasvSocket
; /* data socket connected by us in case of passive FTP */
131 LPWININETFILE download_in_progress
;
132 struct sockaddr_in socketAddress
;
133 struct sockaddr_in lstnSocketAddress
;
134 struct hostent
*phostent
;
137 } WININETFTPSESSIONA
, *LPWININETFTPSESSIONA
;
145 struct tm tmLastModified
;
146 unsigned short permissions
;
147 } FILEPROPERTIESA
, *LPFILEPROPERTIESA
;
152 WININETHANDLEHEADER hdr
;
155 LPFILEPROPERTIESA lpafp
;
156 } WININETFINDNEXTA
, *LPWININETFINDNEXTA
;
161 FTPSETCURRENTDIRECTORYA
,
164 FTPGETCURRENTDIRECTORYA
,
176 typedef struct WORKREQ
180 #define HFTPSESSION param1
183 #define LPSZLOCALFILE param2
184 #define LPSZREMOTEFILE param2
185 #define LPSZFILENAME param2
186 #define LPSZSRCFILE param2
187 #define LPSZDIRECTORY param2
188 #define LPSZSEARCHFILE param2
189 #define LPSZHEADER param2
190 #define LPSZVERB param2
193 #define LPSZNEWREMOTEFILE param3
194 #define LPSZNEWFILE param3
195 #define LPFINDFILEDATA param3
196 #define LPDWDIRECTORY param3
197 #define FDWACCESS param3
198 #define LPSZDESTFILE param3
199 #define DWHEADERLENGTH param3
200 #define LPSZOBJECTNAME param3
203 #define DWFLAGS param4
204 #define LPOPTIONAL param4
207 #define DWCONTEXT param5
208 #define DWOPTIONALLENGTH param5
211 #define FFAILIFEXISTS param6
212 #define LPSZVERSION param6
215 #define DWLOCALFLAGSATTRIBUTE param7
216 #define LPSZREFERRER param7
219 #define LPSZACCEPTTYPES param8
221 struct WORKREQ
*next
;
222 struct WORKREQ
*prev
;
224 } WORKREQUEST
, *LPWORKREQUEST
;
227 time_t ConvertTimeString(LPCSTR asctime
);
229 HINTERNET
FTP_Connect(HINTERNET hInterent
, LPCSTR lpszServerName
,
230 INTERNET_PORT nServerPort
, LPCSTR lpszUserName
,
231 LPCSTR lpszPassword
, DWORD dwFlags
, DWORD dwContext
);
233 HINTERNET
HTTP_Connect(HINTERNET hInterent
, LPCSTR lpszServerName
,
234 INTERNET_PORT nServerPort
, LPCSTR lpszUserName
,
235 LPCSTR lpszPassword
, DWORD dwFlags
, DWORD dwContext
);
237 BOOL
GetAddress(LPCSTR lpszServerName
, INTERNET_PORT nServerPort
,
238 struct hostent
**phe
, struct sockaddr_in
*psa
);
240 void INTERNET_SetLastError(DWORD dwError
);
241 DWORD
INTERNET_GetLastError();
242 BOOL
INTERNET_AsyncCall(LPWORKREQUEST lpWorkRequest
);
243 LPSTR
INTERNET_GetResponseBuffer();
244 LPSTR
INTERNET_GetNextLine(INT nSocket
, LPSTR lpszBuffer
, LPDWORD dwBuffer
);
246 BOOL
FTP_CloseSessionHandle(LPWININETFTPSESSIONA lpwfs
);
247 BOOL
FTP_CloseFindNextHandle(LPWININETFINDNEXTA lpwfn
);
248 BOOL
FTP_CloseFileTransferHandle(LPWININETFILE lpwfn
);
249 BOOLAPI
FTP_FtpPutFileA(HINTERNET hConnect
, LPCSTR lpszLocalFile
,
250 LPCSTR lpszNewRemoteFile
, DWORD dwFlags
, DWORD dwContext
);
251 BOOLAPI
FTP_FtpSetCurrentDirectoryA(HINTERNET hConnect
, LPCSTR lpszDirectory
);
252 BOOLAPI
FTP_FtpCreateDirectoryA(HINTERNET hConnect
, LPCSTR lpszDirectory
);
253 INTERNETAPI HINTERNET WINAPI
FTP_FtpFindFirstFileA(HINTERNET hConnect
,
254 LPCSTR lpszSearchFile
, LPWIN32_FIND_DATAA lpFindFileData
, DWORD dwFlags
, DWORD dwContext
);
255 BOOLAPI
FTP_FtpGetCurrentDirectoryA(HINTERNET hFtpSession
, LPSTR lpszCurrentDirectory
,
256 LPDWORD lpdwCurrentDirectory
);
257 BOOL
FTP_ConvertFileProp(LPFILEPROPERTIESA lpafp
, LPWIN32_FIND_DATAA lpFindFileData
);
258 BOOL
FTP_FtpRenameFileA(HINTERNET hFtpSession
, LPCSTR lpszSrc
, LPCSTR lpszDest
);
259 BOOL
FTP_FtpRemoveDirectoryA(HINTERNET hFtpSession
, LPCSTR lpszDirectory
);
260 BOOL
FTP_FtpDeleteFileA(HINTERNET hFtpSession
, LPCSTR lpszFileName
);
261 HINTERNET
FTP_FtpOpenFileA(HINTERNET hFtpSession
, LPCSTR lpszFileName
,
262 DWORD fdwAccess
, DWORD dwFlags
, DWORD dwContext
);
263 BOOLAPI
FTP_FtpGetFileA(HINTERNET hInternet
, LPCSTR lpszRemoteFile
, LPCSTR lpszNewFile
,
264 BOOL fFailIfExists
, DWORD dwLocalFlagsAttribute
, DWORD dwInternetFlags
,
267 BOOLAPI
HTTP_HttpSendRequestA(HINTERNET hHttpRequest
, LPCSTR lpszHeaders
,
268 DWORD dwHeaderLength
, LPVOID lpOptional
,DWORD dwOptionalLength
);
269 INTERNETAPI HINTERNET WINAPI
HTTP_HttpOpenRequestA(HINTERNET hHttpSession
,
270 LPCSTR lpszVerb
, LPCSTR lpszObjectName
, LPCSTR lpszVersion
,
271 LPCSTR lpszReferrer
, LPCSTR
*lpszAcceptTypes
,
272 DWORD dwFlags
, DWORD dwContext
);
273 void HTTP_CloseHTTPSessionHandle(LPWININETHTTPSESSIONA lpwhs
);
274 void HTTP_CloseHTTPRequestHandle(LPWININETHTTPREQA lpwhr
);
276 VOID
SendAsyncCallback(LPWININETAPPINFOA hIC
, HINTERNET hHttpSession
,
277 DWORD dwContext
, DWORD dwInternetStatus
, LPVOID
278 lpvStatusInfo
, DWORD dwStatusInfoLength
);
280 VOID
SendAsyncCallbackInt(LPWININETAPPINFOA hIC
, HINTERNET hHttpSession
,
281 DWORD dwContext
, DWORD dwInternetStatus
, LPVOID
282 lpvStatusInfo
, DWORD dwStatusInfoLength
);
285 BOOL
NETCON_connected(WININET_NETCONNECTION
*connection
);
286 void NETCON_init(WININET_NETCONNECTION
*connnection
, BOOL useSSL
);
287 BOOL
NETCON_create(WININET_NETCONNECTION
*connection
, int domain
,
288 int type
, int protocol
);
289 BOOL
NETCON_close(WININET_NETCONNECTION
*connection
);
290 BOOL
NETCON_connect(WININET_NETCONNECTION
*connection
, const struct sockaddr
*serv_addr
,
292 BOOL
NETCON_send(WININET_NETCONNECTION
*connection
, const void *msg
, size_t len
, int flags
,
293 int *sent
/* out */);
294 BOOL
NETCON_recv(WININET_NETCONNECTION
*connection
, void *buf
, size_t len
, int flags
,
295 int *recvd
/* out */);
296 BOOL
NETCON_getNextLine(WININET_NETCONNECTION
*connection
, LPSTR lpszBuffer
, LPDWORD dwBuffer
);
298 #define MAX_REPLY_LEN 0x5B4
301 #endif /* _WINE_INTERNET_H_ */