windows-nt/Source/XPSP1/NT/inetsrv/iis/svcs/nntp/adminsso/server.h
2020-09-26 16:20:57 +08:00

369 lines
12 KiB
C++

// server.h : Declaration of the CNntpVirtualServer
/////////////////////////////////////////////////////////////////////////////
// Dependencies:
#include "metafact.h"
#include "binding.h"
#include "vroots.h"
#include "ipaccess.h"
/////////////////////////////////////////////////////////////////////////////
// nntpadm
class CNntpVirtualServer :
public CComDualImpl<INntpVirtualServer, &IID_INntpVirtualServer, &LIBID_NNTPADMLib>,
public ISupportErrorInfo,
public CComObjectRoot,
public CComCoClass<CNntpVirtualServer,&CLSID_CNntpVirtualServer>
{
public:
CNntpVirtualServer();
virtual ~CNntpVirtualServer ();
BEGIN_COM_MAP(CNntpVirtualServer)
COM_INTERFACE_ENTRY(IDispatch)
COM_INTERFACE_ENTRY(INntpVirtualServer)
COM_INTERFACE_ENTRY(ISupportErrorInfo)
END_COM_MAP()
//DECLARE_NOT_AGGREGATABLE(CNntpVirtualServer)
// Remove the comment from the line above if you don't want your object to
// support aggregation. The default is to support it
DECLARE_REGISTRY(CNntpVirtualServer, _T("Nntpadm.VirtualServer.1"), _T("Nntpadm.VirtualServer"), IDS_NNTPADMINSERVICE_DESC, THREADFLAGS_BOTH)
// ISupportsErrorInfo
STDMETHOD(InterfaceSupportsErrorInfo)(REFIID riid);
// INntpVirtualServer
public:
//////////////////////////////////////////////////////////////////////
// Properties:
//////////////////////////////////////////////////////////////////////
// Which service to configure:
STDMETHODIMP get_Server ( BSTR * pstrServer );
STDMETHODIMP put_Server ( BSTR strServer );
STDMETHODIMP get_ServiceInstance ( long * plServiceInstance );
STDMETHODIMP put_ServiceInstance ( long lServiceInstance );
// Other admin interfaces for virtual server:
STDMETHODIMP get_FeedsAdmin ( IDispatch ** ppIDispatch );
STDMETHODIMP get_GroupsAdmin ( IDispatch ** ppIDispatch );
STDMETHODIMP get_SessionsAdmin ( IDispatch ** ppIDispatch );
STDMETHODIMP get_ExpirationAdmin ( IDispatch ** ppIDispatch );
STDMETHODIMP get_RebuildAdmin ( IDispatch ** ppIDispatch );
STDMETHODIMP get_VirtualRoots ( INntpVirtualRoots ** ppVirtualRoots );
STDMETHODIMP get_VirtualRootsDispatch ( IDispatch ** ppVirtualRoots );
STDMETHODIMP get_TcpAccess ( ITcpAccess ** ppTcpAccess );
/*
STDMETHODIMP get_HomeDirectory ( INntpVirtualRoot ** ppVirtualRoot );
STDMETHODIMP put_HomeDirectory ( INntpVirtualRoot * pVirtualRoot );
*/
// Overridable server properties:
STDMETHODIMP get_ArticleTimeLimit ( long * plArticleTimeLimit );
STDMETHODIMP put_ArticleTimeLimit ( long lArticleTimeLimit );
STDMETHODIMP get_HistoryExpiration ( long * plHistoryExpiration );
STDMETHODIMP put_HistoryExpiration ( long lHistoryExpiration );
STDMETHODIMP get_HonorClientMsgIDs ( BOOL * pfHonorClientMsgIDs );
STDMETHODIMP put_HonorClientMsgIDs ( BOOL fHonorClientMsgIDs );
STDMETHODIMP get_SmtpServer ( BSTR * pstrSmtpServer );
STDMETHODIMP put_SmtpServer ( BSTR strSmtpServer );
STDMETHODIMP get_AdminEmail ( BSTR * pstrAdminEmail );
STDMETHODIMP put_AdminEmail ( BSTR strAdminEmail );
STDMETHODIMP get_AllowClientPosts ( BOOL * pfAllowClientPosts );
STDMETHODIMP put_AllowClientPosts ( BOOL fAllowClientPosts );
STDMETHODIMP get_AllowFeedPosts ( BOOL * pfAllowFeedPosts );
STDMETHODIMP put_AllowFeedPosts ( BOOL fAllowFeedPosts );
STDMETHODIMP get_ClientPostHardLimit ( long * plClientPostHardLimit );
STDMETHODIMP put_ClientPostHardLimit ( long lClientPostHardLimit );
STDMETHODIMP get_ClientPostSoftLimit ( long * plClientPostSoftLimit );
STDMETHODIMP put_ClientPostSoftLimit ( long lClientPostSoftLimit );
STDMETHODIMP get_FeedPostHardLimit ( long * plFeedPostHardLimit );
STDMETHODIMP put_FeedPostHardLimit ( long lFeedPostHardLimit );
STDMETHODIMP get_FeedPostSoftLimit ( long * plFeedPostSoftLimit );
STDMETHODIMP put_FeedPostSoftLimit ( long lFeedPostSoftLimit );
STDMETHODIMP get_AllowControlMsgs ( BOOL * pfAllowControlMsgs );
STDMETHODIMP put_AllowControlMsgs ( BOOL fAllowControlMsgs );
STDMETHODIMP get_DefaultModeratorDomain ( BSTR * pstrDefaultModeratorDomain );
STDMETHODIMP put_DefaultModeratorDomain ( BSTR strDefaultModeratorDomain );
STDMETHODIMP get_CommandLogMask ( long * plCommandLogMask );
STDMETHODIMP put_CommandLogMask ( long lCommandLogMask );
STDMETHODIMP get_DisableNewnews ( BOOL * pfDisableNewnews );
STDMETHODIMP put_DisableNewnews ( BOOL fDisableNewnews );
STDMETHODIMP get_ExpireRunFrequency ( long * plExpireRunFrequency );
STDMETHODIMP put_ExpireRunFrequency ( long lExpireRunFrequency );
STDMETHODIMP get_ShutdownLatency ( long * plShutdownLatency );
STDMETHODIMP put_ShutdownLatency ( long lShutdownLatency );
STDMETHODIMP get_EnableLogging ( BOOL * pfEnableLogging );
STDMETHODIMP put_EnableLogging ( BOOL fEnableLogging );
// Service Properties:
STDMETHODIMP get_Organization ( BSTR * pstrOrganization );
STDMETHODIMP put_Organization ( BSTR strOrganization );
STDMETHODIMP get_UucpName ( BSTR * pstrUucpName );
STDMETHODIMP put_UucpName ( BSTR strUucpName );
STDMETHODIMP get_GroupHelpFile ( BSTR * pstrGroupHelpFile );
STDMETHODIMP put_GroupHelpFile ( BSTR strGroupHelpFile );
STDMETHODIMP get_GroupListFile ( BSTR * pstrGroupListFile );
STDMETHODIMP put_GroupListFile ( BSTR strGroupListFile );
STDMETHODIMP get_GroupVarListFile ( BSTR *pstrGroupVarListFile );
STDMETHODIMP put_GroupVarListFile ( BSTR strGroupVarListFile );
STDMETHODIMP get_ArticleTableFile ( BSTR * pstrArticleTableFile );
STDMETHODIMP put_ArticleTableFile ( BSTR strArticleTableFile );
STDMETHODIMP get_HistoryTableFile ( BSTR * pstrHistoryTableFile );
STDMETHODIMP put_HistoryTableFile ( BSTR strHistoryTableFile );
STDMETHODIMP get_ModeratorFile ( BSTR * pstrModeratorFile );
STDMETHODIMP put_ModeratorFile ( BSTR strModeratorFile );
STDMETHODIMP get_XOverTableFile ( BSTR * pstrXOverTableFile );
STDMETHODIMP put_XOverTableFile ( BSTR strXOverTableFile );
STDMETHODIMP get_AutoStart ( BOOL * pfAutoStart );
STDMETHODIMP put_AutoStart ( BOOL fAutoStart );
STDMETHODIMP get_Comment ( BSTR * pstrComment );
STDMETHODIMP put_Comment ( BSTR strComment );
STDMETHODIMP get_Bindings ( INntpServerBindings ** ppBindings );
STDMETHODIMP get_BindingsDispatch ( IDispatch ** ppDispatch );
STDMETHODIMP get_SecurePort ( long * pdwSecurePort );
STDMETHODIMP put_SecurePort ( long dwSecurePort );
STDMETHODIMP get_MaxConnections ( long * pdwMaxConnections );
STDMETHODIMP put_MaxConnections ( long dwMaxConnections );
STDMETHODIMP get_ConnectionTimeout ( long * pdwConnectionTimeout );
STDMETHODIMP put_ConnectionTimeout ( long dwConnectionTimeout );
STDMETHODIMP get_AnonymousUserName ( BSTR * pstrAnonymousUserName );
STDMETHODIMP put_AnonymousUserName ( BSTR strAnonymousUserName );
STDMETHODIMP get_AnonymousUserPass ( BSTR * pstrAnonymousUserPass );
STDMETHODIMP put_AnonymousUserPass ( BSTR strAnonymousUserPass );
STDMETHODIMP get_AutoSyncPassword ( BOOL * pfAutoSyncPassword );
STDMETHODIMP put_AutoSyncPassword ( BOOL fAutoSyncPassword );
STDMETHODIMP get_PickupDirectory ( BSTR * pstrPickupDirectory );
STDMETHODIMP put_PickupDirectory ( BSTR strPickupDirectory );
STDMETHODIMP get_FailedPickupDirectory ( BSTR * pstrFailedPickupDirectory );
STDMETHODIMP put_FailedPickupDirectory ( BSTR strFailedPickupDirectory );
STDMETHODIMP get_AuthAnonymous ( BOOL * pfAuthAnonymous );
STDMETHODIMP put_AuthAnonymous ( BOOL fAuthAnonymous );
STDMETHODIMP get_AuthBasic ( BOOL * pfAuthBasic );
STDMETHODIMP put_AuthBasic ( BOOL fAuthBasic );
STDMETHODIMP get_AuthMCISBasic ( BOOL * pfAuthMCISBasic );
STDMETHODIMP put_AuthMCISBasic ( BOOL fAuthMCISBasic );
STDMETHODIMP get_AuthNT ( BOOL * pfAuthNT );
STDMETHODIMP put_AuthNT ( BOOL fAuthNT );
STDMETHODIMP get_SSLNegotiateCert ( BOOL * pfSSLNegotiateCert );
STDMETHODIMP put_SSLNegotiateCert ( BOOL fSSLNegotiateCert );
STDMETHODIMP get_SSLRequireCert ( BOOL * pfSSLRequireCert );
STDMETHODIMP put_SSLRequireCert ( BOOL fSSLRequireCert );
STDMETHODIMP get_SSLMapCert ( BOOL * pfSSLMapCert );
STDMETHODIMP put_SSLMapCert ( BOOL fSSLMapCert );
/*
STDMETHODIMP get_AuthenticationProviders ( SAFEARRAY ** ppsastrProviders );
STDMETHODIMP put_AuthenticationProviders ( SAFEARRAY * psastrProviders );
STDMETHODIMP get_AuthenticationProvidersVariant ( SAFEARRAY ** ppsastrProviders );
STDMETHODIMP put_AuthenticationProvidersVariant ( SAFEARRAY * psastrProviders );
*/
/*
STDMETHODIMP get_NewsgroupsVariant ( SAFEARRAY ** ppsastrNewsgroups );
STDMETHODIMP put_NewsgroupsVariant ( SAFEARRAY * psastrNewsgroups );
*/
STDMETHODIMP get_Administrators ( SAFEARRAY ** ppsastrAdmins );
STDMETHODIMP put_Administrators ( SAFEARRAY * psastrAdmins );
STDMETHODIMP get_AdministratorsVariant ( SAFEARRAY ** ppsastrAdmins );
STDMETHODIMP put_AdministratorsVariant ( SAFEARRAY * psastrAdmins );
STDMETHODIMP get_ClusterEnabled ( BOOL *pfClusterEnabled );
STDMETHODIMP put_ClusterEnabled ( BOOL fClusterEnabled );
//
// Service State Properties:
//
STDMETHODIMP get_State ( NNTP_SERVER_STATE * pState );
STDMETHODIMP get_Win32ErrorCode ( long * plWin32ErrorCode );
/*
STDMETHODIMP get_EncryptionCapabilitiesMask ( long * plEncryptionCapabilitiesMask );
STDMETHODIMP put_EncryptionCapabilitiesMask ( long lEncryptionCapabilitiesMask );
STDMETHODIMP get_DisplayName ( BSTR * pstrDisplayName );
STDMETHODIMP put_DisplayName ( BSTR strDisplayName );
STDMETHODIMP get_ErrorControl ( BOOL * pfErrorControl );
STDMETHODIMP put_ErrorControl ( BOOL fErrorControl );
STDMETHODIMP get_CleanBoot ( BOOL * pfCleanBoot );
STDMETHODIMP put_CleanBoot ( BOOL fCleanBoot );
*/
//////////////////////////////////////////////////////////////////////
// Methods:
//////////////////////////////////////////////////////////////////////
STDMETHODIMP Get ( );
STDMETHODIMP Set ( BOOL fFailIfChanged);
STDMETHODIMP Start ( );
STDMETHODIMP Pause ( );
STDMETHODIMP Continue ( );
STDMETHODIMP Stop ( );
//////////////////////////////////////////////////////////////////////
// Data:
//////////////////////////////////////////////////////////////////////
private:
// Properties:
CComBSTR m_strServer;
DWORD m_dwServiceInstance;
DWORD m_dwArticleTimeLimit;
DWORD m_dwHistoryExpiration;
BOOL m_fHonorClientMsgIDs;
CComBSTR m_strSmtpServer;
CComBSTR m_strAdminEmail;
BOOL m_fAllowClientPosts;
BOOL m_fAllowFeedPosts;
BOOL m_fAllowControlMsgs;
CComBSTR m_strDefaultModeratorDomain;
DWORD m_dwCommandLogMask;
BOOL m_fDisableNewnews;
DWORD m_dwExpireRunFrequency;
DWORD m_dwShutdownLatency;
DWORD m_dwClientPostHardLimit;
DWORD m_dwClientPostSoftLimit;
DWORD m_dwFeedPostHardLimit;
DWORD m_dwFeedPostSoftLimit;
BOOL m_fEnableLogging;
CComBSTR m_strGroupHelpFile;
CComBSTR m_strGroupListFile;
CComBSTR m_strGroupVarListFile;
CComBSTR m_strArticleTableFile;
CComBSTR m_strHistoryTableFile;
CComBSTR m_strModeratorFile;
CComBSTR m_strXOverTableFile;
CComBSTR m_strUucpName;
CComBSTR m_strOrganization;
BOOL m_fAutoStart;
CComBSTR m_strComment;
DWORD m_dwSecurePort;
DWORD m_dwMaxConnections;
DWORD m_dwConnectionTimeout;
CComBSTR m_strAnonymousUserName;
CComBSTR m_strAnonymousUserPass;
BOOL m_fAutoSyncPassword;
CComBSTR m_strPickupDirectory;
CComBSTR m_strFailedPickupDirectory;
DWORD m_bvAuthorization;
DWORD m_bvSslAccess;
BOOL m_fClusterEnabled;
// CMultiSz m_mszProviders;
SAFEARRAY * m_psaAdmins;
// Service State:
NNTP_SERVER_STATE m_State;
DWORD m_dwWin32ErrorCode;
// Tcp restrictions:
CComPtr<ITcpAccess> m_pIpAccess;
CTcpAccess * m_pPrivateIpAccess;
// Bindings:
CComPtr<INntpServerBindings> m_pBindings;
CNntpServerBindings * m_pPrivateBindings;
/*
CComPtr<INntpVirtualRoot> m_pHomeDirectory;
CNntpVirtualRoot * m_pPrivateHomeDirectory;
*/
// Unused so far:
DWORD m_dwEncryptionCapabilities;
CComBSTR m_strDisplayName;
BOOL m_fErrorControl;
BOOL m_fCleanBoot;
// Status:
BOOL m_fGotProperties;
DWORD m_bvChangedFields;
DWORD m_bvChangedFields2;
FILETIME m_ftLastChanged;
// Metabase:
CMetabaseFactory m_mbFactory;
HRESULT GetPropertiesFromMetabase ( IMSAdminBase * pMetabase);
HRESULT SendPropertiesToMetabase ( BOOL fFailIfChanged, IMSAdminBase * pMetabase);
// State:
HRESULT ControlService (
IMSAdminBase * pMetabase,
DWORD ControlCode,
DWORD dwDesiredState,
DWORD dwPendingState
);
HRESULT WriteStateCommand ( IMSAdminBase * pMetabase, DWORD dwCommand );
HRESULT CheckServiceState ( IMSAdminBase * pMetabase, DWORD * pdwState );
NNTP_SERVER_STATE TranslateServerState ( DWORD dwState );
// Validation:
BOOL ValidateStrings ( ) const;
BOOL ValidateProperties ( ) const;
void CorrectProperties ( );
};