* !!! Don't remove next two rows !!!

#INCLUDE "core.h"


* Internet API Returns
*
#define ERROR_SUCCESS                              0
#define ERROR_FILE_NOT_FOUND                       2
#define ERROR_PATH_NOT_FOUND                       3
#define ERROR_ACCESS_DENIED                        5
#define ERROR_INVALID_HANDLE                       6
#define ERROR_NO_MORE_FILES                          18
#define ERROR_FILE_EXISTS                          80
#define ERROR_INVALID_PARAMETER                    87


#define ERROR_INTERNET_BASE                       12000

#define ERROR_INTERNET_OUT_OF_HANDLES             (ERROR_INTERNET_BASE + 1)
#define ERROR_INTERNET_TIMEOUT                    (ERROR_INTERNET_BASE + 2)
#define ERROR_INTERNET_EXTENDED_ERROR             (ERROR_INTERNET_BASE + 3)
#define ERROR_INTERNET_INTERNAL_ERROR             (ERROR_INTERNET_BASE + 4)
#define ERROR_INTERNET_INVALID_URL                (ERROR_INTERNET_BASE + 5)
#define ERROR_INTERNET_UNRECOGNIZED_SCHEME        (ERROR_INTERNET_BASE + 6)
#define ERROR_INTERNET_NAME_NOT_RESOLVED          (ERROR_INTERNET_BASE + 7)
#define ERROR_INTERNET_PROTOCOL_NOT_FOUND         (ERROR_INTERNET_BASE + 8)
#define ERROR_INTERNET_INVALID_OPTION             (ERROR_INTERNET_BASE + 9)
#define ERROR_INTERNET_BAD_OPTION_LENGTH          (ERROR_INTERNET_BASE + 10)
#define ERROR_INTERNET_OPTION_NOT_SETTABLE        (ERROR_INTERNET_BASE + 11)
#define ERROR_INTERNET_SHUTDOWN                   (ERROR_INTERNET_BASE + 12)
#define ERROR_INTERNET_INCORRECT_USER_NAME        (ERROR_INTERNET_BASE + 13)
#define ERROR_INTERNET_INCORRECT_PASSWORD         (ERROR_INTERNET_BASE + 14)
#define ERROR_INTERNET_LOGIN_FAILURE              (ERROR_INTERNET_BASE + 15)
#define ERROR_INTERNET_INVALID_OPERATION          (ERROR_INTERNET_BASE + 16)
#define ERROR_INTERNET_OPERATION_CANCELLED        (ERROR_INTERNET_BASE + 17)
#define ERROR_INTERNET_INCORRECT_HANDLE_TYPE      (ERROR_INTERNET_BASE + 18)
#define ERROR_INTERNET_INCORRECT_HANDLE_STATE     (ERROR_INTERNET_BASE + 19)
#define ERROR_INTERNET_NOT_PROXY_REQUEST          (ERROR_INTERNET_BASE + 20)
#define ERROR_INTERNET_REGISTRY_VALUE_NOT_FOUND   (ERROR_INTERNET_BASE + 21)
#define ERROR_INTERNET_BAD_REGISTRY_PARAMETER     (ERROR_INTERNET_BASE + 22)
#define ERROR_INTERNET_NO_DIRECT_ACCESS           (ERROR_INTERNET_BASE + 23)
#define ERROR_INTERNET_NO_CONTEXT                 (ERROR_INTERNET_BASE + 24)
#define ERROR_INTERNET_NO_CALLBACK                (ERROR_INTERNET_BASE + 25)
#define ERROR_INTERNET_REQUEST_PENDING            (ERROR_INTERNET_BASE + 26)
#define ERROR_INTERNET_INCORRECT_FORMAT           (ERROR_INTERNET_BASE + 27)
#define ERROR_INTERNET_ITEM_NOT_FOUND             (ERROR_INTERNET_BASE + 28)
#define ERROR_INTERNET_CANNOT_CONNECT             (ERROR_INTERNET_BASE + 29)
#define ERROR_INTERNET_CONNECTION_ABORTED         (ERROR_INTERNET_BASE + 30)
#define ERROR_INTERNET_CONNECTION_RESET           (ERROR_INTERNET_BASE + 31)
#define ERROR_INTERNET_FORCE_RETRY                (ERROR_INTERNET_BASE + 32)
#define ERROR_INTERNET_INVALID_PROXY_REQUEST      (ERROR_INTERNET_BASE + 33)
#define ERROR_INTERNET_NEED_UI                    (ERROR_INTERNET_BASE + 34)

#define ERROR_INTERNET_HANDLE_EXISTS              (ERROR_INTERNET_BASE + 36)
#define ERROR_INTERNET_SEC_CERT_DATE_INVALID      (ERROR_INTERNET_BASE + 37)
#define ERROR_INTERNET_SEC_CERT_CN_INVALID        (ERROR_INTERNET_BASE + 38)
#define ERROR_INTERNET_HTTP_TO_HTTPS_ON_REDIR     (ERROR_INTERNET_BASE + 39)
#define ERROR_INTERNET_HTTPS_TO_HTTP_ON_REDIR     (ERROR_INTERNET_BASE + 40)
#define ERROR_INTERNET_MIXED_SECURITY             (ERROR_INTERNET_BASE + 41)
#define ERROR_INTERNET_CHG_POST_IS_NON_SECURE     (ERROR_INTERNET_BASE + 42)
#define ERROR_INTERNET_POST_IS_NON_SECURE         (ERROR_INTERNET_BASE + 43)
#define ERROR_INTERNET_CLIENT_AUTH_CERT_NEEDED    (ERROR_INTERNET_BASE + 44)
#define ERROR_INTERNET_INVALID_CA                 (ERROR_INTERNET_BASE + 45)
#define ERROR_INTERNET_CLIENT_AUTH_NOT_SETUP      (ERROR_INTERNET_BASE + 46)
#define ERROR_INTERNET_ASYNC_THREAD_FAILED        (ERROR_INTERNET_BASE + 47)
#define ERROR_INTERNET_REDIRECT_SCHEME_CHANGE     (ERROR_INTERNET_BASE + 48)
#define ERROR_INTERNET_DIALOG_PENDING             (ERROR_INTERNET_BASE + 49)
#define ERROR_INTERNET_RETRY_DIALOG               (ERROR_INTERNET_BASE + 50)
#define ERROR_INTERNET_HTTPS_HTTP_SUBMIT_REDIR    (ERROR_INTERNET_BASE + 52)
#define ERROR_INTERNET_INSERT_CDROM               (ERROR_INTERNET_BASE + 53)


*
* FTP API errors
*

#define FTP_TRANSFER_IN_PROGRESS                  (ERROR_INTERNET_BASE + 110)
#define FTP_DROPPED                               (ERROR_INTERNET_BASE + 111)
#define FTP_NO_PASSIVE_MODE                       (ERROR_INTERNET_BASE + 112)


*
* additional Internet API error codes
*

#define ERROR_INTERNET_SECURITY_CHANNEL_ERROR     (ERROR_INTERNET_BASE + 157)
#define ERROR_INTERNET_UNABLE_TO_CACHE_FILE       (ERROR_INTERNET_BASE + 158)
#define ERROR_INTERNET_TCPIP_NOT_INSTALLED        (ERROR_INTERNET_BASE + 159)
#define ERROR_INTERNET_DISCONNECTED               (ERROR_INTERNET_BASE + 163)
#define ERROR_INTERNET_SERVER_UNREACHABLE         (ERROR_INTERNET_BASE + 164)
#define ERROR_INTERNET_PROXY_SERVER_UNREACHABLE   (ERROR_INTERNET_BASE + 165)

#define ERROR_INTERNET_BAD_AUTO_PROXY_SCRIPT      (ERROR_INTERNET_BASE + 166)
#define ERROR_INTERNET_UNABLE_TO_DOWNLOAD_SCRIPT  (ERROR_INTERNET_BASE + 167)
#define ERROR_INTERNET_SEC_INVALID_CERT              (ERROR_INTERNET_BASE + 169)
#define ERROR_INTERNET_SEC_CERT_REVOKED              (ERROR_INTERNET_BASE + 170)

*
* handle types
*

#define ERROR_INTERNET_HANDLE_TYPE_INTERNET              1
#define ERROR_INTERNET_HANDLE_TYPE_CONNECT_FTP           2
#define ERROR_INTERNET_HANDLE_TYPE_CONNECT_GOPHER        3
#define ERROR_INTERNET_HANDLE_TYPE_CONNECT_HTTP          4
#define ERROR_INTERNET_HANDLE_TYPE_FTP_FIND              5
#define ERROR_INTERNET_HANDLE_TYPE_FTP_FIND_HTML         6
#define ERROR_INTERNET_HANDLE_TYPE_FTP_FILE              7
#define ERROR_INTERNET_HANDLE_TYPE_FTP_FILE_HTML         8
#define ERROR_INTERNET_HANDLE_TYPE_GOPHER_FIND           9
#define ERROR_INTERNET_HANDLE_TYPE_GOPHER_FIND_HTML      10
#define ERROR_INTERNET_HANDLE_TYPE_GOPHER_FILE           11
#define ERROR_INTERNET_HANDLE_TYPE_GOPHER_FILE_HTML      12
#define ERROR_INTERNET_HANDLE_TYPE_HTTP_REQUEST          13



#define BYTE_1                                             1
#define BYTE_2                                           256
#define BYTE_3                                           65536
#define BYTE_4                                           16777216
#define MAXDWORD                                         4294967295

*
* File Caching Flags
*

#define INTERNET_FLAG_DONT_CACHE                         67108864
#define INTERNET_FLAG_HYPERLINK                             1024
#define INTERNET_FLAG_MAKE_PERSISTENT                     33554432
#define INTERNET_FLAG_MUST_CACHE_REQUEST                 16
#define INTERNET_FLAG_RELOAD                             2147483648
#define INTERNET_FLAG_NO_CACHE_WRITE                     67108864
#define INTERNET_FLAG_RESYNCHRONIZE                         2048
#define INTERNET_FLAG_NEED_FILE                          0x00000010
#define INTERNET_FLAG_OFFLINE                            0x00000010
#define INTERNET_FLAG_DONT_CARE                             INTERNET_FLAG_NO_CACHE_WRITE

*
* File Attributes
*

#define FILE_ATTRIBUTE_READONLY                          1
#define FILE_ATTRIBUTE_HIDDEN                            2
#define FILE_ATTRIBUTE_SYSTEM                               4
#define FILE_ATTRIBUTE_DIRECTORY                         16  
#define FILE_ATTRIBUTE_ARCHIVE                              32  
#define FILE_ATTRIBUTE_ENCRYPTED                         64 
#define FILE_ATTRIBUTE_NORMAL                            128  
#define FILE_ATTRIBUTE_TEMPORARY                         256  
#define FILE_ATTRIBUTE_SPARSE_FILE                       512
#define FILE_ATTRIBUTE_REPARSE_POINT                     1024    
#define FILE_ATTRIBUTE_COMPRESSED                        2048  
#define FILE_ATTRIBUTE_OFFLINE                           4096


#define BIT_ATTRIBUTE_READONLY                               0
#define BIT_ATTRIBUTE_HIDDEN                                 1
#define BIT_ATTRIBUTE_SYSTEM                               2
#define BIT_ATTRIBUTE_DIRECTORY                              4  
#define BIT_ATTRIBUTE_ARCHIVE                                   5
#define BIT_ATTRIBUTE_ENCRYPTED                             6  
#define BIT_ATTRIBUTE_NORMAL                                 7  
#define BIT_ATTRIBUTE_TEMPORARY                              8
#define BIT_ATTRIBUTE_SPARSE_FILE                         9
#define BIT_ATTRIBUTE_REPARSE_POINT                      10  
#define BIT_ATTRIBUTE_COMPRESSED                             11  
#define BIT_ATTRIBUTE_OFFLINE                                12  


* Flags for InternetAutodial
#define INTERNET_AUTODIAL_FORCE_ONLINE                   1
#define INTERNET_AUTODIAL_FORCE_UNATTENDED               2
#define INTERNET_AUTODIAL_FAILIFSECURITYCHECK            4

*
* FTP
*TYPE

#define FTP_TRANSFER_TYPE_UNKNOWN                        0
#define FTP_TRANSFER_TYPE_ASCII                          1
#define FTP_TRANSFER_TYPE_BINARY                         2

#define INTERNET_FLAG_TRANSFER_ASCII    FTP_TRANSFER_TYPE_ASCII
#define INTERNET_FLAG_TRANSFER_BINARY   FTP_TRANSFER_TYPE_BINARY


* Flags for InternetGetConnectedState
#define INTERNET_CONNECTION_MODEM                       1
#define INTERNET_CONNECTION_LAN                         2
#define INTERNET_CONNECTION_PROXY                       4
#define INTERNET_CONNECTION_MODEM_BUSY                  8
#define INTERNET_RAS_INSTALLED                       0x10
#define INTERNET_CONNECTION_OFFLINE                  0x20
#define INTERNET_CONNECTION_CONFIGURED               0x40


#define FTP_TRANSFER_TYPE_MASK                           3  && (FTP_TRANSFER_TYPE_ASCII | FTP_TRANSFER_TYPE_BINARY)

*
* Internet Variables

#define INTERNET_INVALID_PORT_NUMBER    0           && use the protocol-specific default

#define INTERNET_DEFAULT_FTP_PORT       21          && default for FTP servers
#define INTERNET_DEFAULT_GOPHER_PORT    70          &&    "     "  gopher "
#define INTERNET_DEFAULT_HTTP_PORT      80          &&    "     "  HTTP   "
#define INTERNET_DEFAULT_HTTPS_PORT     443         &&    "     "  HTTPS  "
#define INTERNET_DEFAULT_SOCKS_PORT     1080        && default for SOCKS firewall servers.

#define MAX_CACHE_ENTRY_INFO_SIZE       4096

#define INTERNET_SERVICE_FTP    1
#define INTERNET_SERVICE_GOPHER 2
#define INTERNET_SERVICE_HTTP   3

#define INTERNET_FLAG_PASSIVE           0x08000000  && used for FTP connections
#define INTERNET_FLAG_ASYNC             0x10000000  && this request is asynchronous (where supported)
#define INTERNET_FLAG_FROM_CACHE        0x01000000  &&


#define INTERNET_OPEN_TYPE_PRECONFIG    0   && use registry configuration
#define INTERNET_OPEN_TYPE_DIRECT       1   && direct to net
#define INTERNET_OPEN_TYPE_PROXY        3   && via named proxy


#define INTERNET_OPTION_CONNECTED_STATE            50
#define INTERNET_STATE_DISCONNECTED_BY_USER      0x10


#define PRE_CONFIG_INTERNET_ACCESS  INTERNET_OPEN_TYPE_PRECONFIG
#define LOCAL_INTERNET_ACCESS       INTERNET_OPEN_TYPE_DIRECT
#define GATEWAY_INTERNET_ACCESS     2   && Internet via gateway
#define CERN_PROXY_INTERNET_ACCESS  INTERNET_OPEN_TYPE_PROXY


#define cNULL                                             CHR(0)
#define MAX_PATH                                          260


#define GENERIC_READ                     0x80000000
#define GENERIC_WRITE                    0x40000000


#DEFINE _FTPS_RWF_Resume  0
#DEFINE _FTPS_RWF_File    0
#DEFINE _FTPS_RWF_String  1
#DEFINE _FTPS_RWF_Rewrite 2


#DEFINE _FTPS_MaxFileSize 15000000


#DEFINE _FTPS_Option_CurrentDir           1
#DEFINE _FTPS_Option_DLL_Loaded           2
#DEFINE _FTPS_Option_Inet_Handle          3
#DEFINE _FTPS_Option_Connect_Handle       4
#DEFINE _FTPS_Option_IPAddress            5
#DEFINE _FTPS_Option_UserName             6
#DEFINE _FTPS_Option_Password             7
#DEFINE _FTPS_Option_Port                 8
#DEFINE _FTPS_Option_UseProxy             9