mirror of https://github.com/lianthony/NT4.0
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
441 lines
8.4 KiB
441 lines
8.4 KiB
/*++
|
|
|
|
Copyright (c) 1994 Microsoft Corporation
|
|
|
|
Module Name:
|
|
|
|
gateway.h
|
|
|
|
Abstract:
|
|
|
|
Contains manifests, macros, types and prototypes for Microsoft Windows
|
|
Internet Extensions
|
|
|
|
Author:
|
|
|
|
Madan Appiah (madana) 12-Dec-1994
|
|
|
|
Revision History:
|
|
|
|
Sophia Chung (sophiac) 17-Jun-1995 Added Statistics types and funcs
|
|
prototypes.
|
|
|
|
--*/
|
|
|
|
#if !defined(_GATEWAY_)
|
|
#define _GATEWAY_
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
#if defined(MIDL_PASS)
|
|
|
|
#define LPWSTR [unique, string] wchar_t *
|
|
#define LPCWSTR [unique, string] const wchar_t *
|
|
|
|
#define ULONGLONG DWORDLONG
|
|
|
|
#endif
|
|
|
|
//
|
|
// data definitions.
|
|
//
|
|
|
|
//
|
|
// maximum length of client host name
|
|
//
|
|
|
|
#define MAX_HOSTNAME_LENGTH 32
|
|
|
|
//
|
|
// maximum length of user name
|
|
//
|
|
|
|
#define MAX_USERNAME_LENGTH 32
|
|
|
|
//
|
|
// maximum length of server name
|
|
//
|
|
|
|
#define MAX_SERVERNAME_LENGTH 128
|
|
|
|
//
|
|
// configuration Performance registry key.
|
|
//
|
|
|
|
#define GATEWAY_PERFORMANCE_KEY \
|
|
TEXT("System\\CurrentControlSet\\Services\\InetGatewaySvc\\Performance")
|
|
|
|
//
|
|
// User Access Control data.
|
|
//
|
|
|
|
#define GATEWAY_SERVICE_NO_ACCESS 0x00000000
|
|
#define GATEWAY_SERVICE_READ_ACCESS 0x00000001
|
|
#define GATEWAY_SERVICE_WRITE_ACCESS 0x00000002
|
|
|
|
#define GOPHER_SERVICE_NAME "Gopher"
|
|
#define FTP_SERVICE_NAME "Ftp"
|
|
#define ARCHIE_SERVICE_NAME "Archie"
|
|
#define W3_SERVICE_NAME "W3"
|
|
|
|
#define GOPHER_SERVICE_NAME_W L"Gopher"
|
|
#define FTP_SERVICE_NAME_W L"Ftp"
|
|
#define ARCHIE_SERVICE_NAME_W L"Archie"
|
|
#define W3_SERVICE_NAME_W L"W3"
|
|
|
|
|
|
typedef struct _ACCESS_ENTRY {
|
|
ACCESS_MASK AccessRights;
|
|
#if defined(MIDL_PASS)
|
|
PISID
|
|
#else
|
|
PSID
|
|
#endif
|
|
UserID;
|
|
} ACCESS_ENTRY, *LPACCESS_ENTRY;
|
|
|
|
|
|
//
|
|
// conflict with compiling gateway performance counters directory
|
|
// in which perfgate.c includes lm.h file
|
|
//
|
|
|
|
#if !defined(_GATECTRS_H_)
|
|
#if !defined(_MIB_H_)
|
|
|
|
typedef struct _ACCESS_LIST {
|
|
DWORD NumEntries;
|
|
#if defined(MIDL_PASS)
|
|
[size_is(NumEntries)]
|
|
#endif // MIDL_PASS
|
|
LPACCESS_ENTRY AccessEntries;
|
|
} ACCESS_LIST, *LPACCESS_LIST;
|
|
|
|
#endif //_MIB_H_
|
|
#endif //_GATECTRS_H_
|
|
|
|
#if 0
|
|
//
|
|
// URL Files Cache Management data.
|
|
//
|
|
|
|
typedef struct _URL_ENTRY {
|
|
LPWSTR UrlName;
|
|
LPWSTR InternalFileName;
|
|
LONGLONG URLSize;
|
|
LONGLONG FileTime;
|
|
} URL_ENTRY, *LPURL_ENTRY;
|
|
|
|
typedef struct _URL_LIST {
|
|
DWORD NumURLs;
|
|
#if defined(MIDL_PASS)
|
|
[size_is(NumURLs)]
|
|
#endif // MIDL_PASS
|
|
LPURL_ENTRY URLs;
|
|
} URL_LIST, *LPURL_LIST;
|
|
|
|
typedef struct _CACHE_PATH_ENTRY {
|
|
LPWSTR CachePath;
|
|
LARGE_INTEGER CacheSize;
|
|
} CACHE_PATH_ENTRY, *LPCACHE_PATH_ENTRY;
|
|
|
|
typedef struct _CACHE_CONFIG {
|
|
DWORD NumCachePaths;
|
|
#if defined(MIDL_PASS)
|
|
[size_is(NumCachePaths)]
|
|
#endif // MIDL_PASS
|
|
LPCACHE_PATH_ENTRY CachePaths;
|
|
DWORD UpdateInterval;
|
|
} CACHE_CONFIG, *LPCACHE_CONFIG;
|
|
|
|
#endif // 0
|
|
|
|
//
|
|
// Gateway Server MIB data.
|
|
//
|
|
|
|
typedef struct _INTERNET_SERVICE_MIB_ENTRY {
|
|
LPWSTR ServiceName;
|
|
DWORD NumUsers;
|
|
DWORD NumFiles;
|
|
} INTERNET_SERVICE_MIB_ENTRY, *LPINTERNET_SERVICE_MIB_ENTRY;
|
|
|
|
typedef struct SERVER_MIB_INFO {
|
|
SYSTEMTIME StartTime;
|
|
DWORD NumUsersConnected;
|
|
DWORD NumCacheFiles;
|
|
DWORD NumCacheQueries;
|
|
DWORD NumServices;
|
|
#if defined(MIDL_PASS)
|
|
[size_is(NumServices)]
|
|
#endif // MIDL_PASS
|
|
LPINTERNET_SERVICE_MIB_ENTRY ServiceMIBs;
|
|
} SERVER_MIB_INFO, *LPSERVER_MIB_INFO;
|
|
|
|
//
|
|
// Gateway Server Audit APIs.
|
|
//
|
|
|
|
typedef enum _AUDIT_INFO_CLASS {
|
|
UserAccessInfoClass,
|
|
FileTransferInfoClass
|
|
} AUDIT_INFO_CLASS, *LPAUDIT_INFO_CLASS;
|
|
|
|
typedef enum _USER_ACCESS_TYPE {
|
|
UserGatewayConnect,
|
|
UserServiceConnect,
|
|
UserFileOpen,
|
|
UserFileClose,
|
|
UserServiceClose,
|
|
UserGatewayClose
|
|
} USER_ACCESS_TYPE, *LPUSER_ACCESS_TYPE;
|
|
|
|
typedef struct _USER_ACCESS_AUDIT_INFO {
|
|
#if defined(MIDL_PASS)
|
|
PISID
|
|
#else
|
|
PSID
|
|
#endif
|
|
UserID;
|
|
USER_ACCESS_TYPE AccessType;
|
|
SYSTEMTIME Time;
|
|
LPWSTR AccessInfo;
|
|
} USER_ACCESS_AUDIT_INFO, *LPUSER_ACCESS_AUDIT_INFO;
|
|
|
|
typedef struct _FILE_TRANSFER_AUDIT_INFO {
|
|
LPWSTR URLFileName;
|
|
SYSTEMTIME Time;
|
|
DWORD FileSize;
|
|
#if defined(MIDL_PASS)
|
|
PISID
|
|
#else
|
|
PSID
|
|
#endif
|
|
UserID;
|
|
} FILE_TRANSFER_AUDIT_INFO, *LPFILE_TRANSFER_AUDIT_INFO;
|
|
|
|
typedef struct _AUDIT_INFO {
|
|
AUDIT_INFO_CLASS AuditInfoClass;
|
|
#if defined(MIDL_PASS)
|
|
[switch_is(AuditInfoClass), switch_type(AUDIT_INFO_CLASS)]
|
|
union {
|
|
[case(UserAccessInfoClass)]
|
|
LPUSER_ACCESS_AUDIT_INFO UserAccessAuditInfo;
|
|
[case(FileTransferInfoClass)]
|
|
LPFILE_TRANSFER_AUDIT_INFO FileTransferAuditInfo;
|
|
} AuditInfo;
|
|
#else
|
|
union {
|
|
LPUSER_ACCESS_AUDIT_INFO UserAccessAuditInfo;
|
|
LPFILE_TRANSFER_AUDIT_INFO FileTransferAuditInfo;
|
|
} AuditInfo;
|
|
#endif
|
|
} AUDIT_INFO, *LPAUDIT_INFO;
|
|
|
|
|
|
//
|
|
// Gateway Server statistics_info & user_info structures
|
|
//
|
|
|
|
typedef struct _GATEWAY_STATISTICS_INFO {
|
|
|
|
LARGE_INTEGER TotalBytesSent;
|
|
LARGE_INTEGER TotalBytesRecvd;
|
|
DWORD TotalFilesSent;
|
|
DWORD TotalFilesRecvd;
|
|
|
|
DWORD CurrentUsers;
|
|
DWORD TotalUsers;
|
|
DWORD MaxUsers;
|
|
|
|
DWORD CurrentConnections;
|
|
DWORD TotalConnections; // total number of successful conn
|
|
DWORD MaxConnections;
|
|
DWORD ConnectionAttempts;
|
|
|
|
DWORD ArchieRequests;
|
|
DWORD FtpRequests;
|
|
DWORD GopherRequests;
|
|
DWORD HttpRequests;
|
|
|
|
DWORD TotalInternetRequests;
|
|
DWORD TotalInternetFetches;
|
|
DWORD TotalCacheFetches;
|
|
|
|
DWORD TimeOfLastClear;
|
|
|
|
} GATEWAY_STATISTICS_INFO, * LPGATEWAY_STATISTICS_INFO;
|
|
|
|
|
|
typedef struct _GATEWAY_USER_INFO
|
|
{
|
|
LPWSTR Hostname; // Client ComputerName
|
|
LPWSTR Username; // User name
|
|
DWORD tConnect; // User Connection Time (elapsed seconds)
|
|
DWORD BytesTrans; // Bytes transmitted: Read/Write
|
|
DWORD OpenConn; // Number of opened connections
|
|
|
|
} GATEWAY_USER_INFO, * LPGATEWAY_USER_INFO;
|
|
|
|
typedef struct _GATEWAY_USER_ENUM_LIST {
|
|
|
|
//
|
|
// returns a flexible array of items
|
|
//
|
|
|
|
DWORD dwEntriesRead;
|
|
|
|
#if defined(MIDL_PASS)
|
|
[size_is(dwEntriesRead)]
|
|
#endif // MIDL_PASS
|
|
LPGATEWAY_USER_INFO lpUsers;
|
|
|
|
} GATEWAY_USER_ENUM_LIST, * LPGATEWAY_USER_ENUM_LIST;
|
|
|
|
|
|
// --------------------------------------------------------------------- //
|
|
|
|
//
|
|
// APIs proto types.
|
|
//
|
|
|
|
//
|
|
// User Access Control APIs.
|
|
//
|
|
|
|
DWORD
|
|
GatewayAddUserAccess(
|
|
IN LPWSTR ServerAddress,
|
|
IN LPWSTR ServiceName,
|
|
IN LPACCESS_LIST AccessList
|
|
);
|
|
|
|
DWORD
|
|
GatewayDeleteUserAccess(
|
|
IN LPWSTR ServerAddress,
|
|
IN LPWSTR ServiceName,
|
|
IN LPACCESS_LIST AccessList
|
|
);
|
|
|
|
DWORD
|
|
GatewayEnumUserAccess(
|
|
IN LPWSTR ServerAddress,
|
|
IN LPWSTR ServiceName,
|
|
OUT LPACCESS_LIST *AccessList
|
|
);
|
|
|
|
#if 0
|
|
|
|
//
|
|
// URL Files Cache Management APIs.
|
|
//
|
|
|
|
DWORD
|
|
GatewayEnumCacheURLs(
|
|
IN LPWSTR ServerAddress,
|
|
OUT LPURL_LIST *URLList
|
|
);
|
|
|
|
DWORD
|
|
GatewayDeleteCacheURL(
|
|
IN LPWSTR ServerAddress,
|
|
IN LPWSTR UrlName
|
|
);
|
|
|
|
DWORD
|
|
GatewayUpdateCacheURL(
|
|
IN LPWSTR ServerAddress,
|
|
IN LPWSTR UrlName
|
|
);
|
|
|
|
DWORD
|
|
GatewaySetURLCacheConfig(
|
|
IN LPWSTR ServerAddress,
|
|
IN LPCACHE_CONFIG CacheConfig
|
|
);
|
|
|
|
DWORD
|
|
GatewayGetURLCacheConfig(
|
|
IN LPWSTR ServerAddress,
|
|
OUT LPCACHE_CONFIG *CacheConfig
|
|
);
|
|
|
|
DWORD
|
|
GatewayCacheURL(
|
|
IN LPWSTR UrlName,
|
|
IN LPWSTR LocalFileName
|
|
);
|
|
|
|
DWORD
|
|
GatewayRetrieveURL(
|
|
IN LPWSTR UrlName,
|
|
OUT LPWSTR *LocalFileName
|
|
);
|
|
|
|
#endif // 0
|
|
|
|
//
|
|
// Gateway Server MIB API.
|
|
//
|
|
|
|
DWORD
|
|
GatewayServerQueryMIBInfo(
|
|
IN LPWSTR ServerAddress,
|
|
OUT LPSERVER_MIB_INFO *ServerQueryMIBInfo
|
|
);
|
|
|
|
//
|
|
// Gateway Server Audit APIs.
|
|
//
|
|
|
|
DWORD
|
|
GatewayEnumAuditInfo(
|
|
IN LPWSTR ServerAddress,
|
|
IN AUDIT_INFO_CLASS AuditInfoClass,
|
|
OUT LPAUDIT_INFO *AuditInfo
|
|
);
|
|
|
|
//
|
|
// Gateway RPC free memory API.
|
|
//
|
|
|
|
VOID
|
|
GatewayFreeMemory(
|
|
IN LPWSTR ServerAddress,
|
|
IN PVOID MemoryBlock
|
|
);
|
|
|
|
|
|
//
|
|
// Gateway Server Statistics APIs
|
|
//
|
|
|
|
DWORD
|
|
GatewayQueryStatistics(
|
|
IN LPWSTR pszServer OPTIONAL,
|
|
OUT LPBYTE lpStatBuffer // pass LPGATEWAY_STATISTICS_INFO
|
|
);
|
|
|
|
DWORD
|
|
GatewayClearStatistics(
|
|
IN LPWSTR pszServer OPTIONAL
|
|
);
|
|
|
|
|
|
//
|
|
// Gateway Server Enumerate User Connection APIs
|
|
//
|
|
|
|
DWORD
|
|
GatewayEnumUserConnect(
|
|
IN LPWSTR pszServer OPTIONAL,
|
|
OUT LPGATEWAY_USER_ENUM_LIST *lpUserBuffer
|
|
);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif // _GATEWAY_
|