289 lines
8.1 KiB
C
289 lines
8.1 KiB
C
|
// vroots.h : Declaration of the CNntpVirtualRoot & CNntpVirtualRoots classes.
|
||
|
|
||
|
#ifndef _VROOTS_INCLUDED_
|
||
|
#define _VROOTS_INCLUDED_
|
||
|
|
||
|
//
|
||
|
// Dependencies:
|
||
|
//
|
||
|
|
||
|
#include "nntptype.h"
|
||
|
#include "nntpapi.h"
|
||
|
#include "metafact.h"
|
||
|
class CMetabaseKey;
|
||
|
|
||
|
//
|
||
|
// A simple VRoot class:
|
||
|
//
|
||
|
|
||
|
class CVRoot
|
||
|
{
|
||
|
public:
|
||
|
CVRoot ();
|
||
|
|
||
|
CComBSTR m_strNewsgroupSubtree;
|
||
|
CComBSTR m_strDirectory;
|
||
|
DWORD m_dwWin32Error;
|
||
|
DWORD m_bvAccess;
|
||
|
DWORD m_bvSslAccess;
|
||
|
BOOL m_fLogAccess;
|
||
|
BOOL m_fIndexContent;
|
||
|
CComBSTR m_strUNCUsername;
|
||
|
CComBSTR m_strUNCPassword;
|
||
|
CComBSTR m_strDriverProgId;
|
||
|
CComBSTR m_strGroupPropFile;
|
||
|
CComBSTR m_strMdbGuid;
|
||
|
DWORD m_dwUseAccount;
|
||
|
BOOL m_fDoExpire;
|
||
|
BOOL m_fOwnModerator;
|
||
|
|
||
|
HRESULT SetProperties ( INntpVirtualRoot * pVirtualRoot );
|
||
|
inline HRESULT SetProperties ( const CVRoot & VRoot )
|
||
|
{
|
||
|
return SetProperties (
|
||
|
VRoot.m_strNewsgroupSubtree,
|
||
|
VRoot.m_strDirectory,
|
||
|
VRoot.m_dwWin32Error,
|
||
|
VRoot.m_bvAccess,
|
||
|
VRoot.m_bvSslAccess,
|
||
|
VRoot.m_fLogAccess,
|
||
|
VRoot.m_fIndexContent,
|
||
|
VRoot.m_strUNCUsername,
|
||
|
VRoot.m_strUNCPassword,
|
||
|
VRoot.m_strDriverProgId,
|
||
|
VRoot.m_strGroupPropFile,
|
||
|
VRoot.m_dwUseAccount,
|
||
|
VRoot.m_fDoExpire,
|
||
|
VRoot.m_fOwnModerator,
|
||
|
VRoot.m_strMdbGuid
|
||
|
);
|
||
|
}
|
||
|
|
||
|
HRESULT GetFromMetabase ( CMetabaseKey * pMB, LPCWSTR wszKey, DWORD dwInstanceId, LPWSTR wszVRootPath );
|
||
|
HRESULT SendToMetabase ( CMetabaseKey * pMB, LPCWSTR wszKey );
|
||
|
|
||
|
private:
|
||
|
HRESULT SetProperties (
|
||
|
BSTR strNewsgroupSubtree,
|
||
|
BSTR strDirectory,
|
||
|
DWORD dwWin32Error,
|
||
|
DWORD bvAccess,
|
||
|
DWORD bvSslAccess,
|
||
|
BOOL fLogAcccess,
|
||
|
BOOL fIndexContent,
|
||
|
BSTR strUNCUsername,
|
||
|
BSTR strUNCPassword,
|
||
|
BSTR strDriverProgId,
|
||
|
BSTR strGroupPropFile,
|
||
|
DWORD dwUseAccount,
|
||
|
BOOL fDoExpire,
|
||
|
BOOL fOwnModerator,
|
||
|
BSTR strMdbGuid
|
||
|
);
|
||
|
|
||
|
// Don't call this:
|
||
|
const CVRoot & operator= ( const CVRoot & );
|
||
|
};
|
||
|
|
||
|
/////////////////////////////////////////////////////////////////////////////
|
||
|
// The VRoot Object
|
||
|
|
||
|
class CNntpVirtualRoot :
|
||
|
public CComDualImpl<INntpVirtualRoot, &IID_INntpVirtualRoot, &LIBID_NNTPADMLib>,
|
||
|
public ISupportErrorInfo,
|
||
|
public CComObjectRoot,
|
||
|
public CComCoClass<CNntpVirtualRoot,&CLSID_CNntpVirtualRoot>
|
||
|
{
|
||
|
friend class CNntpVirtualRoots;
|
||
|
friend class CNntpVirtualServer;
|
||
|
|
||
|
public:
|
||
|
CNntpVirtualRoot();
|
||
|
virtual ~CNntpVirtualRoot ();
|
||
|
BEGIN_COM_MAP(CNntpVirtualRoot)
|
||
|
COM_INTERFACE_ENTRY(IDispatch)
|
||
|
COM_INTERFACE_ENTRY(INntpVirtualRoot)
|
||
|
COM_INTERFACE_ENTRY(ISupportErrorInfo)
|
||
|
END_COM_MAP()
|
||
|
//DECLARE_NOT_AGGREGATABLE(CNntpVirtualRoot)
|
||
|
// Remove the comment from the line above if you don't want your object to
|
||
|
// support aggregation. The default is to support it
|
||
|
|
||
|
// ISupportsErrorInfo
|
||
|
STDMETHOD(InterfaceSupportsErrorInfo)(REFIID riid);
|
||
|
|
||
|
DECLARE_REGISTRY(CNntpVirtualRoot, _T("Nntpadm.VirtualRoot.1"), _T("Nntpadm.VirtualRoot"), IDS_NNTPVIRTUALROOT_DESC, THREADFLAGS_BOTH)
|
||
|
// INntpVirtualRoot
|
||
|
public:
|
||
|
|
||
|
//////////////////////////////////////////////////////////////////////
|
||
|
// Properties:
|
||
|
//////////////////////////////////////////////////////////////////////
|
||
|
|
||
|
STDMETHODIMP get_NewsgroupSubtree ( BSTR * pstrNewsgroupSubtree );
|
||
|
STDMETHODIMP put_NewsgroupSubtree ( BSTR strNewsgroupSubtree );
|
||
|
|
||
|
STDMETHODIMP get_Directory ( BSTR * pstrDirectory );
|
||
|
STDMETHODIMP put_Directory ( BSTR strDirectory );
|
||
|
|
||
|
STDMETHODIMP get_Win32Error ( long * plWin32Error );
|
||
|
|
||
|
STDMETHODIMP get_AllowPosting ( BOOL * pfAllowPosting );
|
||
|
STDMETHODIMP put_AllowPosting ( BOOL fAllowPosting );
|
||
|
|
||
|
STDMETHODIMP get_RestrictGroupVisibility ( BOOL * pfRestrictGroupVisibility );
|
||
|
STDMETHODIMP put_RestrictGroupVisibility ( BOOL fRestrictGroupVisibility );
|
||
|
|
||
|
STDMETHODIMP get_LogAccess ( BOOL * pfLogAccess );
|
||
|
STDMETHODIMP put_LogAccess ( BOOL fLogAccess );
|
||
|
|
||
|
STDMETHODIMP get_IndexContent ( BOOL * pfIndexContent );
|
||
|
STDMETHODIMP put_IndexContent ( BOOL fIndexContent );
|
||
|
|
||
|
STDMETHODIMP get_RequireSsl ( BOOL * pfRequireSsl );
|
||
|
STDMETHODIMP put_RequireSsl ( BOOL fRequireSsl );
|
||
|
|
||
|
STDMETHODIMP get_Require128BitSsl ( BOOL * pfRequire128BitSsl );
|
||
|
STDMETHODIMP put_Require128BitSsl ( BOOL fRequire128BitSsl );
|
||
|
|
||
|
STDMETHODIMP get_UNCUsername ( BSTR * pstrUNCUsername );
|
||
|
STDMETHODIMP put_UNCUsername ( BSTR strUNCUsername );
|
||
|
|
||
|
STDMETHODIMP get_UNCPassword ( BSTR * pstrUNCPassword );
|
||
|
STDMETHODIMP put_UNCPassword ( BSTR strUNCPassword );
|
||
|
|
||
|
STDMETHODIMP get_DriverProgId( BSTR *pstrDriverProgId );
|
||
|
STDMETHODIMP put_DriverProgId( BSTR strDriverProgId );
|
||
|
|
||
|
STDMETHODIMP get_GroupPropFile( BSTR *pstrGRoupPropFile );
|
||
|
STDMETHODIMP put_GroupPropFile( BSTR strGroupPropFile );
|
||
|
|
||
|
STDMETHODIMP get_MdbGuid( BSTR *pstrMdbGuid );
|
||
|
STDMETHODIMP put_MdbGuid( BSTR strMdbGuid );
|
||
|
|
||
|
STDMETHODIMP get_UseAccount( DWORD *pdwUseAccount );
|
||
|
STDMETHODIMP put_UseAccount( DWORD dwUseAccount );
|
||
|
|
||
|
STDMETHODIMP get_OwnExpire( BOOL *fOwnExpire );
|
||
|
STDMETHODIMP put_OwnExpire( BOOL fOwnExpire );
|
||
|
|
||
|
STDMETHODIMP get_OwnModerator( BOOL *fOwnModerator );
|
||
|
STDMETHODIMP put_OwnModerator( BOOL fOwnModerator );
|
||
|
|
||
|
//////////////////////////////////////////////////////////////////////
|
||
|
// Data:
|
||
|
//////////////////////////////////////////////////////////////////////
|
||
|
private:
|
||
|
|
||
|
/*
|
||
|
inline HRESULT SetProperties ( BSTR strNewsgroupSubtree, BSTR strDirectory )
|
||
|
{
|
||
|
return m_vroot.SetProperties ( strNewsgroupSubtree, strDirectory );
|
||
|
}
|
||
|
*/
|
||
|
|
||
|
inline HRESULT SetProperties ( const CVRoot & VRoot )
|
||
|
{
|
||
|
return m_vroot.SetProperties ( VRoot );
|
||
|
}
|
||
|
|
||
|
// Property variables:
|
||
|
CVRoot m_vroot;
|
||
|
};
|
||
|
|
||
|
/////////////////////////////////////////////////////////////////////////////
|
||
|
// The VRoots Object
|
||
|
|
||
|
typedef HRESULT (* VROOT_ITERATOR) (
|
||
|
CMetabaseKey * pMB,
|
||
|
LPCWSTR wszPath,
|
||
|
LPARAM lParam
|
||
|
);
|
||
|
|
||
|
class CNntpVirtualRoots :
|
||
|
public CComDualImpl<INntpVirtualRoots, &IID_INntpVirtualRoots, &LIBID_NNTPADMLib>,
|
||
|
public ISupportErrorInfo,
|
||
|
public CComObjectRoot
|
||
|
{
|
||
|
friend class CNntpVirtualRoot;
|
||
|
friend class CNntpVirtualServer;
|
||
|
|
||
|
public:
|
||
|
CNntpVirtualRoots();
|
||
|
virtual ~CNntpVirtualRoots ();
|
||
|
BEGIN_COM_MAP(CNntpVirtualRoots)
|
||
|
COM_INTERFACE_ENTRY(IDispatch)
|
||
|
COM_INTERFACE_ENTRY(INntpVirtualRoots)
|
||
|
COM_INTERFACE_ENTRY(ISupportErrorInfo)
|
||
|
END_COM_MAP()
|
||
|
//DECLARE_NOT_AGGREGATABLE(CNntpVirtualRoots)
|
||
|
// Remove the comment from the line above if you don't want your object to
|
||
|
// support aggregation. The default is to support it
|
||
|
|
||
|
// ISupportsErrorInfo
|
||
|
STDMETHOD(InterfaceSupportsErrorInfo)(REFIID riid);
|
||
|
|
||
|
// INntpVirtualRoots
|
||
|
public:
|
||
|
|
||
|
//////////////////////////////////////////////////////////////////////
|
||
|
// Properties:
|
||
|
//////////////////////////////////////////////////////////////////////
|
||
|
|
||
|
STDMETHODIMP get_Server ( BSTR * pstrServer );
|
||
|
STDMETHODIMP put_Server ( BSTR strServer );
|
||
|
|
||
|
STDMETHODIMP get_ServiceInstance ( long * plServiceInstance );
|
||
|
STDMETHODIMP put_ServiceInstance ( long lServiceInstance );
|
||
|
|
||
|
STDMETHODIMP get_Count ( long * pdwCount );
|
||
|
|
||
|
//////////////////////////////////////////////////////////////////////
|
||
|
// Methods:
|
||
|
//////////////////////////////////////////////////////////////////////
|
||
|
|
||
|
STDMETHODIMP Enumerate ( );
|
||
|
STDMETHODIMP Item ( long index, INntpVirtualRoot ** ppVRoot );
|
||
|
STDMETHODIMP ItemDispatch ( long index, IDispatch ** ppVRoot );
|
||
|
STDMETHODIMP Add ( INntpVirtualRoot * pVRoot );
|
||
|
STDMETHODIMP AddDispatch ( IDispatch * pVRoot );
|
||
|
STDMETHODIMP Set ( long index, INntpVirtualRoot * pVRoot );
|
||
|
STDMETHODIMP SetDispatch ( long index, IDispatch * pVRoot );
|
||
|
STDMETHODIMP Remove ( long index );
|
||
|
STDMETHODIMP Find ( BSTR strNewsgroupSubtree, long * pIndex );
|
||
|
|
||
|
private:
|
||
|
HRESULT Init ( BSTR strServer, DWORD dwServiceInstance );
|
||
|
|
||
|
//////////////////////////////////////////////////////////////////////
|
||
|
// Data:
|
||
|
//////////////////////////////////////////////////////////////////////
|
||
|
private:
|
||
|
|
||
|
// Property variables:
|
||
|
long m_dwCount;
|
||
|
CVRoot * m_rgVRoots;
|
||
|
|
||
|
// Which service are we talking to:
|
||
|
CComBSTR m_strServer;
|
||
|
DWORD m_dwServiceInstance;
|
||
|
|
||
|
// Metabase values:
|
||
|
CMetabaseFactory m_mbFactory;
|
||
|
|
||
|
HRESULT GetVRootsFromMetabase ( IMSAdminBase * pMetabase );
|
||
|
|
||
|
static HRESULT IterateOverVroots (
|
||
|
CMetabaseKey * pMB,
|
||
|
VROOT_ITERATOR fpIterator,
|
||
|
LPARAM lParam,
|
||
|
LPCWSTR wszPath = _T("")
|
||
|
);
|
||
|
|
||
|
void GetMDVRootPath ( LPWSTR wszPath );
|
||
|
void GetVRootName ( LPWSTR wszDisplayName, LPWSTR wszPathName );
|
||
|
};
|
||
|
|
||
|
#endif // _VROOTS_INCLUDED_
|
||
|
|