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.
952 lines
23 KiB
952 lines
23 KiB
/*++
|
|
|
|
Copyright (c) 1995 Microsoft Corporation
|
|
|
|
Module Name:
|
|
|
|
Nntpapi.h
|
|
|
|
Abstract:
|
|
|
|
This file contains information about the MSN Replication Service Admin
|
|
APIs.
|
|
|
|
Author:
|
|
|
|
Johnson Apacible (johnsona) 10-Sept-1995
|
|
|
|
--*/
|
|
|
|
|
|
#ifndef _NNTPAPI_
|
|
#define _NNTPAPI_
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
#include <inetcom.h>
|
|
#ifndef NET_API_FUNCTION
|
|
#define NET_API_FUNCTION _stdcall
|
|
#endif
|
|
|
|
#pragma warning( disable:4200 ) // nonstandard ext. - zero sized array
|
|
// (MIDL requires zero entries)
|
|
|
|
//
|
|
// 0 - Perfmon stats
|
|
//
|
|
|
|
typedef struct _NNTP_STATISTICS_0 {
|
|
|
|
//
|
|
// total bytes sent/received, including protocol msgs
|
|
//
|
|
|
|
LARGE_INTEGER TotalBytesSent;
|
|
LARGE_INTEGER TotalBytesReceived;
|
|
|
|
//
|
|
// incoming connections (includes all connections including hubs)
|
|
//
|
|
|
|
DWORD TotalConnections; // total connects from Nntp clients
|
|
DWORD TotalSSLConnections;
|
|
DWORD CurrentConnections; // current number
|
|
DWORD MaxConnections; // max simultaneous
|
|
|
|
DWORD CurrentAnonymousUsers;
|
|
DWORD CurrentNonAnonymousUsers;
|
|
DWORD TotalAnonymousUsers;
|
|
DWORD TotalNonAnonymousUsers;
|
|
DWORD MaxAnonymousUsers;
|
|
DWORD MaxNonAnonymousUsers;
|
|
|
|
//
|
|
// outgoing connections
|
|
//
|
|
|
|
DWORD TotalOutboundConnects; // total
|
|
DWORD OutboundConnectsFailed;
|
|
DWORD CurrentOutboundConnects; // current
|
|
DWORD OutboundLogonFailed; // failed logon
|
|
|
|
//
|
|
// common
|
|
//
|
|
|
|
DWORD TotalPullFeeds;
|
|
DWORD TotalPushFeeds;
|
|
DWORD TotalPassiveFeeds;
|
|
|
|
DWORD ArticlesSent; // articles sent by us
|
|
DWORD ArticlesReceived; // articles received
|
|
|
|
DWORD ArticlesPosted;
|
|
DWORD ArticleMapEntries;
|
|
DWORD HistoryMapEntries;
|
|
DWORD XoverEntries;
|
|
|
|
DWORD ControlMessagesIn; // number of control messages received
|
|
DWORD ControlMessagesFailed; // number of control messages failed
|
|
DWORD ModeratedPostingsSent; // number of moderated postings we attempt to send to an smtp server
|
|
DWORD ModeratedPostingsFailed; // number of moderated postings we failed to send to an smtp server
|
|
|
|
//
|
|
// The number of sessions currently in a flow controlled state where
|
|
// writes to disk are not keeping up with network reads.
|
|
//
|
|
|
|
DWORD SessionsFlowControlled;
|
|
|
|
//
|
|
// The number of articles expired since the service was started
|
|
//
|
|
|
|
DWORD ArticlesExpired;
|
|
|
|
//
|
|
// User command counters - one counter for each type of command
|
|
//
|
|
|
|
DWORD ArticleCommands;
|
|
DWORD GroupCommands;
|
|
DWORD HelpCommands;
|
|
DWORD IHaveCommands;
|
|
DWORD LastCommands;
|
|
DWORD ListCommands;
|
|
DWORD NewgroupsCommands;
|
|
DWORD NewnewsCommands;
|
|
DWORD NextCommands;
|
|
DWORD PostCommands;
|
|
DWORD QuitCommands;
|
|
DWORD StatCommands;
|
|
DWORD LogonAttempts; // validations
|
|
DWORD LogonFailures; // validation failures
|
|
DWORD CheckCommands;
|
|
DWORD TakethisCommands;
|
|
DWORD ModeCommands;
|
|
DWORD SearchCommands;
|
|
DWORD XHdrCommands;
|
|
DWORD XOverCommands;
|
|
DWORD XPatCommands;
|
|
DWORD XReplicCommands;
|
|
|
|
DWORD TimeOfLastClear; // statistics last cleared
|
|
|
|
} NNTP_STATISTICS_0, *LPNNTP_STATISTICS_0;
|
|
|
|
typedef struct _NNTP_STATISTICS_BLOCK {
|
|
DWORD dwInstance;
|
|
NNTP_STATISTICS_0 Stats_0;
|
|
} NNTP_STATISTICS_BLOCK, *LPNNTP_STATISTICS_BLOCK;
|
|
|
|
typedef struct _NNTP_STATISTICS_BLOCK_ARRAY {
|
|
DWORD cEntries;
|
|
#ifdef MIDL_PASS
|
|
[size_is(cEntries)]
|
|
#endif
|
|
NNTP_STATISTICS_BLOCK aStatsBlock[];
|
|
} NNTP_STATISTICS_BLOCK_ARRAY, *LPNNTP_STATISTICS_BLOCK_ARRAY;
|
|
|
|
//
|
|
// Information about the server
|
|
//
|
|
|
|
typedef struct _NNTP_CONFIG_INFO {
|
|
|
|
//
|
|
// Arcane Gibraltar field
|
|
//
|
|
|
|
FIELD_CONTROL FieldControl;
|
|
|
|
#if 0
|
|
|
|
// !!!newfields
|
|
// Notes:
|
|
|
|
// None of the old fields really need to be here. The ui doesn't
|
|
// use them.
|
|
|
|
// _INET_INFO_CONFIG_INFO must be fully supported by the nntpsvc.
|
|
// The apis are defined in inetinfo.h
|
|
|
|
// The virtual root structure must be extended to support retention
|
|
// policy on directories. Retention policy is by posted date (days) or
|
|
// by newsgroup size (megabytes).
|
|
|
|
//
|
|
// The new fields:
|
|
//
|
|
|
|
//
|
|
// Connection Information
|
|
//
|
|
|
|
BOOL AllowClientConnections; // Allow clients to connect?
|
|
BOOL AllowServerFeeds; // Allow servers to connect?
|
|
DWORD MaximumFeedConnections; // Max Number of server feeds
|
|
|
|
//
|
|
// Organization & Path ID
|
|
//
|
|
|
|
LPWSTR Organization;
|
|
LPWSTR PathID;
|
|
|
|
#endif
|
|
|
|
// Following 2 fields controlled by FC_NNTP_POSTINGMODES
|
|
|
|
//
|
|
// If TRUE then clients are allowed to post
|
|
//
|
|
BOOL AllowClientPosting ;
|
|
|
|
//
|
|
// If TRUE then we accept articles from feeds !
|
|
//
|
|
BOOL AllowFeedPosting ;
|
|
|
|
// Following field controlled by FC_NNTP_ORGANIZATION
|
|
|
|
//
|
|
// For the organization header in postings !
|
|
//
|
|
LPSTR Organization ;
|
|
|
|
// Following 2 fields controlled by FC_NNTP_POSTLIMITS
|
|
|
|
//
|
|
// Number of bytes a user can post into a file before we break the socket !
|
|
//
|
|
DWORD ServerPostHardLimit ;
|
|
|
|
//
|
|
// Maximum posting sizes the server will accept - if the user exceeds this
|
|
// (without exceeding the hard limit) we will reject the post.
|
|
//
|
|
DWORD ServerPostSoftLimit ;
|
|
|
|
//
|
|
// Maximum size of articles from a feed - hard and soft limits
|
|
//
|
|
DWORD ServerFeedHardLimit ;
|
|
DWORD ServerFeedSoftLimit ;
|
|
|
|
//
|
|
// Encryption Capabilities flags
|
|
//
|
|
|
|
DWORD dwEncCaps;
|
|
|
|
//
|
|
// SMTP address for moderated postings
|
|
//
|
|
|
|
LPWSTR SmtpServerAddress;
|
|
|
|
//
|
|
// server's UUCP name
|
|
//
|
|
|
|
LPWSTR UucpServerName;
|
|
|
|
//
|
|
// Control Messages allowed ?
|
|
//
|
|
|
|
BOOL AllowControlMessages;
|
|
|
|
//
|
|
// Default moderator for moderated postings
|
|
//
|
|
|
|
LPWSTR DefaultModerator;
|
|
|
|
} NNTP_CONFIG_INFO, * LPNNTP_CONFIG_INFO;
|
|
|
|
#define FC_NNTP_POSTINGMODES ((FIELD_CONTROL)BitFlag(0))
|
|
#define FC_NNTP_ORGANIZATION ((FIELD_CONTROL)BitFlag(1))
|
|
#define FC_NNTP_POSTLIMITS ((FIELD_CONTROL)BitFlag(2))
|
|
#define FC_NNTP_FEEDLIMITS ((FIELD_CONTROL)BitFlag(3))
|
|
#define FC_NNTP_ENCRYPTCAPS ((FIELD_CONTROL)BitFlag(4))
|
|
#define FC_NNTP_SMTPADDRESS ((FIELD_CONTROL)BitFlag(5))
|
|
#define FC_NNTP_UUCPNAME ((FIELD_CONTROL)BitFlag(6))
|
|
#define FC_NNTP_CONTROLSMSGS ((FIELD_CONTROL)BitFlag(7))
|
|
#define FC_NNTP_DEFAULTMODERATOR ((FIELD_CONTROL)BitFlag(8))
|
|
#define FC_NNTP_AUTHORIZATION ((FIELD_CONTROL)BitFlag(9))
|
|
#define FC_NNTP_DISABLE_NEWNEWS ((FIELD_CONTROL)BitFlag(10))
|
|
#define FC_MD_SERVER_SS_AUTH_MAPPING ((FIELD_CONTROL)BitFlag(11))
|
|
#define FC_NNTP_CLEARTEXT_AUTH_PROVIDER ((FIELD_CONTROL)BitFlag(12))
|
|
#define FC_NTAUTHENTICATION_PROVIDERS ((FIELD_CONTROL)BitFlag(13))
|
|
#define FC_NNTP_ALL ( \
|
|
FC_NNTP_POSTINGMODES | \
|
|
FC_NNTP_ORGANIZATION | \
|
|
FC_NNTP_POSTLIMITS | \
|
|
FC_NNTP_FEEDLIMITS | \
|
|
FC_NNTP_ENCRYPTCAPS | \
|
|
FC_NNTP_SMTPADDRESS | \
|
|
FC_NNTP_UUCPNAME | \
|
|
FC_NNTP_CONTROLSMSGS | \
|
|
FC_NNTP_DEFAULTMODERATOR | \
|
|
FC_NNTP_AUTHORIZATION | \
|
|
FC_NNTP_DISABLE_NEWNEWS | \
|
|
FC_MD_SERVER_SS_AUTH_MAPPING | \
|
|
FC_NNTP_CLEARTEXT_AUTH_PROVIDER | \
|
|
FC_NTAUTHENTICATION_PROVIDERS | \
|
|
0 )
|
|
|
|
//
|
|
// Feed Server information
|
|
//
|
|
|
|
typedef struct _NNTP_FEED_INFO {
|
|
|
|
LPWSTR ServerName; // feed server
|
|
FEED_TYPE FeedType;
|
|
|
|
//
|
|
// date/time specified when doing a NEWNEWS/NEWGROUP
|
|
//
|
|
|
|
FILETIME PullRequestTime;
|
|
|
|
//
|
|
// Date/Time scheduling is to start
|
|
//
|
|
|
|
FILETIME StartTime;
|
|
|
|
//
|
|
// Time the next feed is scheduled
|
|
//
|
|
|
|
FILETIME NextActiveTime;
|
|
|
|
//
|
|
// Interval in minutes between feeds. If 0, a one time feed
|
|
// specified by StartTime
|
|
//
|
|
|
|
DWORD FeedInterval;
|
|
|
|
//
|
|
// Unique number assigned to this feed
|
|
//
|
|
|
|
DWORD FeedId;
|
|
|
|
//
|
|
// Create automatically?
|
|
//
|
|
|
|
BOOL AutoCreate;
|
|
|
|
//
|
|
// Disable the feed ?
|
|
//
|
|
BOOL Enabled ;
|
|
|
|
DWORD cbNewsgroups;
|
|
LPWSTR Newsgroups;
|
|
DWORD cbDistribution;
|
|
LPWSTR Distribution;
|
|
DWORD cbUucpName ;
|
|
LPWSTR UucpName ;
|
|
DWORD cbFeedTempDirectory ;
|
|
LPWSTR FeedTempDirectory ;
|
|
|
|
//
|
|
// For outgoing feeds - maximum number of connect attempts
|
|
// before we disable the feed !
|
|
//
|
|
DWORD MaxConnectAttempts ;
|
|
|
|
//
|
|
// For outgoing feeds - the number of concurrent sessions
|
|
// to start.
|
|
//
|
|
DWORD ConcurrentSessions ;
|
|
|
|
//
|
|
// Feed session security - do we use a protocol like SSL
|
|
// or PCT to encrypt the session !
|
|
//
|
|
|
|
DWORD SessionSecurityType ;
|
|
|
|
//
|
|
// Feed Nntp security - do we do some variotion of a logon
|
|
// protocol !!
|
|
//
|
|
|
|
DWORD AuthenticationSecurityType ;
|
|
|
|
DWORD cbAccountName ;
|
|
LPWSTR NntpAccountName ;
|
|
DWORD cbPassword ;
|
|
LPWSTR NntpPassword ;
|
|
|
|
//
|
|
// Allow control messages on this feed ?
|
|
//
|
|
BOOL fAllowControlMessages;
|
|
|
|
//
|
|
// Port to use for outgoing feeds
|
|
//
|
|
DWORD OutgoingPort;
|
|
|
|
//
|
|
// Associated feed pair id
|
|
//
|
|
DWORD FeedPairId;
|
|
|
|
} NNTP_FEED_INFO, *LPNNTP_FEED_INFO;
|
|
|
|
|
|
#define AUTH_PROTOCOL_NONE 0
|
|
#define AUTH_PROTOCOL_MSN 1 // Sicily
|
|
#define AUTH_PROTOCOL_NTLM 2 // NTLM
|
|
#define AUTH_PROTOCOL_CLEAR 10 // clear text authinfo user/authinfo pass
|
|
|
|
#define SESSION_PROTOCOL_SSL 3
|
|
#define SESSION_PROTOCOL_PCT 4
|
|
|
|
|
|
//
|
|
// Flags for feed admin handshake
|
|
//
|
|
#define FEED_UPDATE_CONFIRM 0x00000000
|
|
#define FEED_UPDATING 0x00000001
|
|
#define FEED_UPDATE_COMPLETE 0x00000002
|
|
|
|
//
|
|
// Parameter mask. Used to indicate where the error was during a set.
|
|
//
|
|
|
|
#define FEED_PARM_FEEDTYPE 0x00000001
|
|
#define FEED_PARM_STARTTIME 0x00000002
|
|
#define FEED_PARM_FEEDID 0x00000004
|
|
#define FEED_PARM_FEEDINTERVAL 0x00000008
|
|
#define FEED_PARM_NEWSGROUPS 0x00000010
|
|
#define FEED_PARM_DISTRIBUTION 0x00000020
|
|
#define FEED_PARM_SERVERNAME 0x00000040
|
|
#define FEED_PARM_AUTOCREATE 0x00000080
|
|
#define FEED_PARM_ENABLED 0x00000100
|
|
#define FEED_PARM_UUCPNAME 0x00000200
|
|
#define FEED_PARM_TEMPDIR 0x00000400
|
|
#define FEED_PARM_MAXCONNECT 0x00000800
|
|
#define FEED_PARM_SESSIONSECURITY 0x00001000
|
|
#define FEED_PARM_AUTHTYPE 0x00002000
|
|
#define FEED_PARM_ACCOUNTNAME 0x00004000
|
|
#define FEED_PARM_PASSWORD 0x00008000
|
|
#define FEED_PARM_CONCURRENTSESSION 0x00010000
|
|
#define FEED_PARM_ALLOW_CONTROL 0x00020000
|
|
#define FEED_PARM_OUTGOING_PORT 0x00040000
|
|
#define FEED_PARM_FEEDPAIR_ID 0x00080000
|
|
#define FEED_PARM_PULLREQUESTTIME 0x00100000
|
|
|
|
#define FEED_ALL_PARAMS 0xffffffff
|
|
|
|
//
|
|
// Indicates whether this field is to be changed
|
|
//
|
|
|
|
#define FEED_FEEDTYPE_NOCHANGE 0xffffffff
|
|
#define FEED_AUTOCREATE_NOCHANGE 0xffffffff
|
|
#define FEED_STARTTIME_NOCHANGE 0xffffffff
|
|
#define FEED_PULLTIME_NOCHANGE 0xffffffff
|
|
#define FEED_FEEDINTERVAL_NOCHANGE 0xffffffff
|
|
#define FEED_MAXCONNECTS_NOCHANGE 0xffffffff
|
|
#define FEED_STRINGS_NOCHANGE NULL
|
|
|
|
//
|
|
// Sessions
|
|
//
|
|
#define MAX_USER_NAME_LENGTH 64
|
|
|
|
typedef struct _NNTP_SESSION_INFO {
|
|
|
|
FILETIME SessionStartTime;
|
|
DWORD IPAddress; // ipaddress
|
|
DWORD AuthenticationType; // type of authentication
|
|
DWORD PortConnected; // port connected to
|
|
BOOL fAnonymous; // using anonymous?
|
|
CHAR UserName[MAX_USER_NAME_LENGTH+1]; // logged on user
|
|
|
|
} NNTP_SESSION_INFO, *LPNNTP_SESSION_INFO;
|
|
|
|
|
|
|
|
|
|
typedef struct _NNTP_EXPIRE_INFO {
|
|
//
|
|
// Expiration policies are numbered
|
|
//
|
|
DWORD ExpireId ;
|
|
|
|
//
|
|
// Units of Megabytes
|
|
//
|
|
DWORD ExpireSizeHorizon ;
|
|
|
|
//
|
|
// In retail builds - units of hours, debug builds - units of ??
|
|
//
|
|
DWORD ExpireTime ;
|
|
|
|
//
|
|
// MULTISZ expiration pattern and size !
|
|
//
|
|
|
|
DWORD cbNewsgroups ;
|
|
PUCHAR Newsgroups;
|
|
|
|
//
|
|
// Name of expire policy
|
|
//
|
|
|
|
LPWSTR ExpirePolicy ;
|
|
|
|
} NNTP_EXPIRE_INFO, *LPNNTP_EXPIRE_INFO ;
|
|
|
|
|
|
typedef struct _NNTP_NEWSGROUP_INFO {
|
|
|
|
DWORD cbNewsgroup ;
|
|
|
|
PUCHAR Newsgroup ;
|
|
|
|
DWORD cbDescription ;
|
|
|
|
PUCHAR Description ;
|
|
|
|
DWORD cbModerator ;
|
|
|
|
PUCHAR Moderator ;
|
|
|
|
BOOL fIsModerated ;
|
|
|
|
BOOL ReadOnly ;
|
|
|
|
DWORD cbPrettyname ;
|
|
|
|
PUCHAR Prettyname ;
|
|
|
|
FILETIME ftCreationDate;
|
|
|
|
} NNTP_NEWSGROUP_INFO, *LPNNTP_NEWSGROUP_INFO ;
|
|
|
|
#pragma warning( disable:4200 ) // nonstandard ext. - zero sized array
|
|
// (MIDL requires zero entries)
|
|
|
|
//
|
|
// Find RPC structs
|
|
//
|
|
|
|
typedef struct _NNTP_FIND_ENTRY
|
|
{
|
|
LPWSTR lpszName;
|
|
} NNTP_FIND_ENTRY, *LPNNTP_FIND_ENTRY;
|
|
|
|
|
|
typedef struct _NNTP_FIND_LIST
|
|
{
|
|
DWORD cEntries;
|
|
#if defined(MIDL_PASS)
|
|
[size_is(cEntries)]
|
|
#endif
|
|
NNTP_FIND_ENTRY aFindEntry[];
|
|
} NNTP_FIND_LIST, *LPNNTP_FIND_LIST;
|
|
|
|
|
|
//
|
|
// Retention policy flags
|
|
//
|
|
|
|
#define NEWS_EXPIRE_BOTH 0x30000000
|
|
#define NEWS_EXPIRE_TIME 0x10000000
|
|
#define NEWS_EXPIRE_SIZE 0x20000000
|
|
#define NEWS_EXPIRE_OLDEST 0x00000001
|
|
#define NEWS_EXPIRE_BIGGEST 0x00000002
|
|
#define NEWS_EXPIRE_SIZE_OLDEST (NEWS_EXPIRE_SIZE | NEWS_EXPIRE_OLDEST)
|
|
#define NEWS_EXPIRE_SIZE_BIGGEST (NEWS_EXPIRE_SIZE | NEWS_EXPIRE_BIGGEST)
|
|
#define NEWS_EXPIRE_BOTH_OLDEST (NEWS_EXPIRE_BOTH | NEWS_EXPIRE_OLDEST)
|
|
#define NEWS_EXPIRE_BOTH_BIGGEST (NEWS_EXPIRE_BOTH | NEWS_EXPIRE_BIGGEST)
|
|
|
|
//
|
|
// Get Server Statistics
|
|
//
|
|
|
|
NET_API_STATUS
|
|
NET_API_FUNCTION
|
|
NntpQueryStatistics(
|
|
IN LPWSTR ServerName OPTIONAL,
|
|
IN DWORD Level,
|
|
OUT LPBYTE * Buffer
|
|
);
|
|
|
|
//
|
|
// Clear server statistics
|
|
//
|
|
|
|
NET_API_STATUS
|
|
NET_API_FUNCTION
|
|
NntpClearStatistics(
|
|
IN LPWSTR ServerName OPTIONAL,
|
|
IN DWORD InstanceId
|
|
);
|
|
|
|
//
|
|
// Statistics clear flags
|
|
//
|
|
|
|
#define NNTP_STAT_CLEAR_OUTGOING 0x00000001
|
|
#define NNTP_STAT_CLEAR_INGOING 0x00000002
|
|
|
|
|
|
//
|
|
// Getting and setting server Information
|
|
//
|
|
//
|
|
|
|
NET_API_STATUS
|
|
NET_API_FUNCTION
|
|
NntpGetAdminInformation(
|
|
IN LPWSTR pszServer OPTIONAL,
|
|
IN DWORD InstanceId,
|
|
OUT LPNNTP_CONFIG_INFO * pConfig
|
|
);
|
|
|
|
NET_API_STATUS
|
|
NET_API_FUNCTION
|
|
NntpSetAdminInformation(
|
|
IN LPWSTR pszServer OPTIONAL,
|
|
IN DWORD InstanceId,
|
|
IN LPNNTP_CONFIG_INFO pConfig,
|
|
OUT LPDWORD pParmError OPTIONAL
|
|
);
|
|
|
|
|
|
//
|
|
// Sessions
|
|
//
|
|
|
|
NET_API_STATUS
|
|
NET_API_FUNCTION
|
|
NntpEnumerateSessions(
|
|
IN LPWSTR ServerName OPTIONAL,
|
|
IN DWORD InstanceId,
|
|
OUT LPDWORD EntriesRead,
|
|
OUT LPNNTP_SESSION_INFO *Buffer
|
|
);
|
|
|
|
NET_API_STATUS
|
|
NET_API_FUNCTION
|
|
NntpTerminateSession(
|
|
IN LPWSTR ServerName OPTIONAL,
|
|
IN DWORD InstanceId,
|
|
IN LPSTR UserName OPTIONAL,
|
|
IN LPSTR IPAddress OPTIONAL
|
|
);
|
|
|
|
//
|
|
// Feeds
|
|
//
|
|
|
|
NET_API_STATUS
|
|
NET_API_FUNCTION
|
|
NntpEnumerateFeeds(
|
|
IN LPWSTR ServerName OPTIONAL,
|
|
IN DWORD InstanceId,
|
|
OUT LPDWORD EntriesRead,
|
|
OUT LPNNTP_FEED_INFO *FeedInfo
|
|
);
|
|
|
|
NET_API_STATUS
|
|
NET_API_FUNCTION
|
|
NntpGetFeedInformation(
|
|
IN LPWSTR ServerName OPTIONAL,
|
|
IN DWORD InstanceId,
|
|
IN DWORD FeedId,
|
|
OUT LPNNTP_FEED_INFO *FeedInfo
|
|
);
|
|
|
|
NET_API_STATUS
|
|
NET_API_FUNCTION
|
|
NntpSetFeedInformation(
|
|
IN LPWSTR ServerName OPTIONAL,
|
|
IN DWORD InstanceId,
|
|
IN LPNNTP_FEED_INFO FeedInfo,
|
|
OUT LPDWORD ParmErr OPTIONAL
|
|
);
|
|
|
|
NET_API_STATUS
|
|
NET_API_FUNCTION
|
|
NntpAddFeed(
|
|
IN LPWSTR ServerName OPTIONAL,
|
|
IN DWORD InstanceId,
|
|
IN LPNNTP_FEED_INFO FeedInfo,
|
|
OUT LPDWORD ParmErr OPTIONAL,
|
|
OUT LPDWORD pdwFeedId
|
|
);
|
|
|
|
NET_API_STATUS
|
|
NET_API_FUNCTION
|
|
NntpDeleteFeed(
|
|
IN LPWSTR ServerName OPTIONAL,
|
|
IN DWORD InstanceId,
|
|
IN DWORD FeedId
|
|
);
|
|
|
|
NET_API_STATUS
|
|
NET_API_FUNCTION
|
|
NntpEnableFeed(
|
|
IN LPWSTR ServerName OPTIONAL,
|
|
IN DWORD InstanceId,
|
|
IN DWORD FeedId,
|
|
IN BOOL Enable,
|
|
IN BOOL Refill,
|
|
IN FILETIME RefillTime
|
|
) ;
|
|
|
|
|
|
NET_API_STATUS
|
|
NET_API_FUNCTION
|
|
NntpEnumerateExpires(
|
|
IN LPWSTR ServerName,
|
|
IN DWORD InstanceId,
|
|
OUT LPDWORD EntriesRead,
|
|
OUT LPNNTP_EXPIRE_INFO* Buffer
|
|
) ;
|
|
|
|
NET_API_STATUS
|
|
NET_API_FUNCTION
|
|
NntpAddExpire(
|
|
IN LPWSTR ServerName,
|
|
IN DWORD InstanceId,
|
|
IN LPNNTP_EXPIRE_INFO ExpireInfo,
|
|
OUT LPDWORD ParmErr OPTIONAL,
|
|
OUT LPDWORD pdwExpireId
|
|
) ;
|
|
|
|
NET_API_STATUS
|
|
NET_API_FUNCTION
|
|
NntpDeleteExpire(
|
|
IN LPWSTR ServerName,
|
|
IN DWORD InstanceId,
|
|
IN DWORD ExpireId
|
|
) ;
|
|
|
|
NET_API_STATUS
|
|
NET_API_FUNCTION
|
|
NntpGetExpireInformation(
|
|
IN LPWSTR ServerName,
|
|
IN DWORD InstanceId,
|
|
IN DWORD ExpireId,
|
|
OUT LPNNTP_EXPIRE_INFO *Buffer
|
|
) ;
|
|
|
|
|
|
NET_API_STATUS
|
|
NET_API_FUNCTION
|
|
NntpSetExpireInformation(
|
|
IN LPWSTR ServerName OPTIONAL,
|
|
IN DWORD InstanceId,
|
|
IN LPNNTP_EXPIRE_INFO ExpireInfo,
|
|
OUT LPDWORD ParmErr OPTIONAL
|
|
) ;
|
|
|
|
NET_API_STATUS
|
|
NET_API_FUNCTION
|
|
NntpGetNewsgroup(
|
|
IN LPWSTR ServerName OPTIONAL,
|
|
IN DWORD InstanceId,
|
|
IN OUT LPNNTP_NEWSGROUP_INFO *NewgroupInfo
|
|
) ;
|
|
|
|
NET_API_STATUS
|
|
NET_API_FUNCTION
|
|
NntpSetNewsgroup(
|
|
IN LPWSTR ServerName OPTIONAL,
|
|
IN DWORD InstanceId,
|
|
IN LPNNTP_NEWSGROUP_INFO NewgroupInfo
|
|
) ;
|
|
|
|
NET_API_STATUS
|
|
NET_API_FUNCTION
|
|
NntpCreateNewsgroup(
|
|
IN LPWSTR ServerName OPTIONAL,
|
|
IN DWORD InstanceId,
|
|
IN LPNNTP_NEWSGROUP_INFO NewsgroupInfo
|
|
) ;
|
|
|
|
NET_API_STATUS
|
|
NET_API_FUNCTION
|
|
NntpDeleteNewsgroup(
|
|
IN LPWSTR ServerName OPTIONAL,
|
|
IN DWORD InstanceId,
|
|
IN LPNNTP_NEWSGROUP_INFO NewsgroupInfo
|
|
) ;
|
|
|
|
//
|
|
// Find RPCs
|
|
//
|
|
NET_API_STATUS
|
|
NET_API_FUNCTION
|
|
NntpFindNewsgroup(
|
|
IN LPWSTR ServerName,
|
|
IN DWORD InstanceId,
|
|
IN LPWSTR NewsgroupPrefix,
|
|
IN DWORD MaxResults,
|
|
OUT LPDWORD pdwResultsFound,
|
|
OUT LPNNTP_FIND_LIST *ppFindList
|
|
) ;
|
|
|
|
#define NNTPBLD_DEGREE_THOROUGH 0x00000000
|
|
#define NNTPBLD_DEGREE_STANDARD 0x00000001
|
|
#define NNTPBLD_DEGREE_MEDIUM 0x00000010
|
|
|
|
//
|
|
// Nntpbld structs and RPCs
|
|
//
|
|
|
|
typedef struct _NNTPBLD_INFO {
|
|
|
|
//
|
|
// Verbosity of reporting
|
|
//
|
|
BOOL Verbose ;
|
|
|
|
//
|
|
// Specify whether to blow away all old data structures
|
|
//
|
|
BOOL DoClean ;
|
|
|
|
//
|
|
// If TRUE then don't delete the history file regardless of other settings.
|
|
//
|
|
BOOL NoHistoryDelete ;
|
|
|
|
//
|
|
// 0x00000000 for thorough ie delete all index files
|
|
// 0x00000001 for standard ie reuse all index files
|
|
// 0x00000101 for standard with skip corrupt group enabled
|
|
// 0x00000010 for medium ie validate index files
|
|
//
|
|
DWORD ReuseIndexFiles ;
|
|
|
|
//
|
|
// If TRUE, omit non-leaf dirs
|
|
//
|
|
BOOL OmitNonleafDirs ;
|
|
|
|
//
|
|
// Name of a file containing either an INN style 'Active' file or
|
|
// a tool generated newsgroup list file. Either way, we will pull
|
|
// newsgroups out of this file and use them to build a news tree.
|
|
//
|
|
DWORD cbGroupFile ;
|
|
LPWSTR szGroupFile ;
|
|
|
|
//
|
|
// Name of report file
|
|
//
|
|
DWORD cbReportFile ;
|
|
LPWSTR szReportFile ;
|
|
|
|
//
|
|
// If TRUE then szGroupFile specifies an INN style Active file,
|
|
// otherwise it specifies a tool generated human edit newsgroup list.
|
|
//
|
|
BOOL IsActiveFile ;
|
|
|
|
//
|
|
// Number of rebuild threads
|
|
//
|
|
|
|
DWORD NumThreads;
|
|
|
|
} NNTPBLD_INFO, *LPNNTPBLD_INFO ;
|
|
|
|
//
|
|
// Nntpbld RPCs
|
|
//
|
|
//
|
|
|
|
NET_API_STATUS
|
|
NET_API_FUNCTION
|
|
NntpStartRebuild(
|
|
IN LPWSTR pszServer OPTIONAL,
|
|
IN DWORD InstanceId,
|
|
IN LPNNTPBLD_INFO pBuildInfo,
|
|
OUT LPDWORD pParmError OPTIONAL
|
|
);
|
|
|
|
NET_API_STATUS
|
|
NET_API_FUNCTION
|
|
NntpGetBuildStatus(
|
|
IN LPWSTR pszServer OPTIONAL,
|
|
IN DWORD InstanceId,
|
|
IN BOOL fCancel,
|
|
OUT LPDWORD pdwProgress
|
|
);
|
|
|
|
//
|
|
// Nntp vroot PRCs
|
|
//
|
|
|
|
NET_API_STATUS
|
|
NET_API_FUNCTION
|
|
NntpGetVRootWin32Error(
|
|
IN LPWSTR wszServer,
|
|
IN DWORD dwInstanceId,
|
|
IN LPWSTR wszVRootPath,
|
|
OUT LPDWORD pdwWin32Error
|
|
);
|
|
|
|
#if 0
|
|
NET_API_STATUS
|
|
NET_API_FUNCTION
|
|
NntpAddDropNewsgroup(
|
|
IN LPWSTR pszServer OPTIONAL,
|
|
IN DWORD InstanceId,
|
|
IN LPCSTR szNewsgroup
|
|
);
|
|
|
|
NET_API_STATUS
|
|
NET_API_FUNCTION
|
|
NntpRemoveDropNewsgroup(
|
|
IN LPWSTR pszServer OPTIONAL,
|
|
IN DWORD InstanceId,
|
|
IN LPCSTR szNewsgroup
|
|
);
|
|
#endif
|
|
|
|
NET_API_STATUS
|
|
NET_API_FUNCTION
|
|
NntpCancelMessageID(
|
|
IN LPWSTR pszServer OPTIONAL,
|
|
IN DWORD InstanceId,
|
|
IN LPCSTR szMessageID
|
|
);
|
|
|
|
|
|
//
|
|
// Used to free buffers returned by APIs
|
|
//
|
|
|
|
VOID
|
|
NntpFreeBuffer(
|
|
LPVOID Buffer
|
|
);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif _NNTPAPI_
|
|
|