Windows NT 4.0 source code leak
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

/*++
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_