mirror of https://github.com/tongzx/nt5src
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.
176 lines
5.7 KiB
176 lines
5.7 KiB
//
|
|
// Dependencies
|
|
//
|
|
|
|
class ADDRESS_CHECK;
|
|
class CTcpAccess;
|
|
class CTcpAccessExceptions;
|
|
class CTcpAccessException;
|
|
class CMetabaseKey;
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// The TcpAccess Object
|
|
|
|
class CTcpAccess :
|
|
public CComDualImpl<ITcpAccess, &IID_ITcpAccess, &LIBID_SMTPADMLib>,
|
|
public ISupportErrorInfo,
|
|
public CComObjectRoot
|
|
{
|
|
public:
|
|
CTcpAccess();
|
|
virtual ~CTcpAccess ();
|
|
|
|
BEGIN_COM_MAP(CTcpAccess)
|
|
COM_INTERFACE_ENTRY(IDispatch)
|
|
COM_INTERFACE_ENTRY(ITcpAccess)
|
|
COM_INTERFACE_ENTRY(ISupportErrorInfo)
|
|
END_COM_MAP()
|
|
//DECLARE_NOT_AGGREGATABLE(CTcpAccess)
|
|
// 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(CTcpAccess, _T("Smtpadm.TcpAccess.1"), _T("Smtpadm.TcpAccess"), IDS_TCPACCESS_DESC, THREADFLAGS_BOTH)
|
|
// Private admin object interface:
|
|
public:
|
|
HRESULT GetFromMetabase ( CMetabaseKey * pMB );
|
|
HRESULT SendToMetabase ( CMetabaseKey * pMB );
|
|
|
|
// ITcpAccess
|
|
public:
|
|
|
|
//////////////////////////////////////////////////////////////////////
|
|
// Properties:
|
|
//////////////////////////////////////////////////////////////////////
|
|
|
|
STDMETHODIMP get_GrantedList ( ITcpAccessExceptions ** ppGrantedList );
|
|
STDMETHODIMP get_DeniedList ( ITcpAccessExceptions ** ppDeniedList );
|
|
/*
|
|
STDMETHODIMP put_GrantedList ( ITcpAccessExceptions * pGrantedList );
|
|
STDMETHODIMP put_DeniedList ( ITcpAccessExceptions * pDeniedList );
|
|
*/
|
|
//////////////////////////////////////////////////////////////////////
|
|
// Data:
|
|
//////////////////////////////////////////////////////////////////////
|
|
private:
|
|
|
|
CComObject<CTcpAccessExceptions> * m_pGrantList;
|
|
CComObject<CTcpAccessExceptions> * m_pDenyList;
|
|
|
|
HRESULT GetAddressCheckFromMetabase ( CMetabaseKey * pMB, ADDRESS_CHECK * pAC );
|
|
};
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// The TcpAccessExceptions Object
|
|
|
|
class CTcpAccessExceptions :
|
|
public CComDualImpl<ITcpAccessExceptions, &IID_ITcpAccessExceptions, &LIBID_SMTPADMLib>,
|
|
public ISupportErrorInfo,
|
|
public CComObjectRoot
|
|
{
|
|
public:
|
|
CTcpAccessExceptions();
|
|
virtual ~CTcpAccessExceptions ();
|
|
|
|
BEGIN_COM_MAP(CTcpAccessExceptions)
|
|
COM_INTERFACE_ENTRY(IDispatch)
|
|
COM_INTERFACE_ENTRY(ITcpAccessExceptions)
|
|
COM_INTERFACE_ENTRY(ISupportErrorInfo)
|
|
END_COM_MAP()
|
|
//DECLARE_NOT_AGGREGATABLE(CTcpAccessExceptions)
|
|
// 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(CTcpAccessExceptions, _T("Smtpadm.TcpAccessExceptions.1"), _T("Smtpadm.TcpAccessExceptions"), IDS_TCPACCESSEXCEPTIONS_DESC, THREADFLAGS_BOTH)
|
|
//
|
|
// Private admin object interface:
|
|
//
|
|
HRESULT FromAddressCheck ( ADDRESS_CHECK * pAC, BOOL fGrant );
|
|
HRESULT ToAddressCheck ( ADDRESS_CHECK * pAC, BOOL fGrant );
|
|
|
|
// ITcpAccessExceptions
|
|
public:
|
|
|
|
//////////////////////////////////////////////////////////////////////
|
|
// Properties:
|
|
//////////////////////////////////////////////////////////////////////
|
|
|
|
STDMETHODIMP get_Count ( long * pcCount );
|
|
STDMETHODIMP AddDnsName ( BSTR strDnsName );
|
|
STDMETHODIMP AddIpAddress( long lIpAddress, long lIpMask );
|
|
STDMETHODIMP Item ( long index, ITcpAccessException ** ppAccessException );
|
|
STDMETHODIMP Remove ( long index );
|
|
STDMETHODIMP FindDnsIndex( BSTR strDnsName, long * pIndex );
|
|
STDMETHODIMP FindIpIndex ( long lIpAddress, long lIpMask, long * pIndex );
|
|
STDMETHODIMP Clear ( );
|
|
|
|
//////////////////////////////////////////////////////////////////////
|
|
// Data:
|
|
//////////////////////////////////////////////////////////////////////
|
|
private:
|
|
long m_cCount;
|
|
CComPtr<ITcpAccessException> * m_rgItems;
|
|
|
|
HRESULT AddItem ( ITcpAccessException * pNew );
|
|
};
|
|
|
|
class CTcpAccessException :
|
|
public CComDualImpl<ITcpAccessException, &IID_ITcpAccessException, &LIBID_SMTPADMLib>,
|
|
public ISupportErrorInfo,
|
|
public CComObjectRoot
|
|
{
|
|
public:
|
|
CTcpAccessException();
|
|
virtual ~CTcpAccessException ();
|
|
|
|
static HRESULT CreateNew ( LPWSTR strDnsName, ITcpAccessException ** ppNew );
|
|
static HRESULT CreateNew ( DWORD dwIpAddress, DWORD dwIpMask, ITcpAccessException ** ppNew );
|
|
|
|
BEGIN_COM_MAP(CTcpAccessException)
|
|
COM_INTERFACE_ENTRY(IDispatch)
|
|
COM_INTERFACE_ENTRY(ITcpAccessException)
|
|
COM_INTERFACE_ENTRY(ISupportErrorInfo)
|
|
END_COM_MAP()
|
|
//DECLARE_NOT_AGGREGATABLE(CTcpAccessException)
|
|
// 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(CTcpAccessException, _T("Smtpadm.TcpAccessException.1"), _T("Smtpadm.TcpAccessException"), IDS_TCPACCESSEXCEPTION_DESC, THREADFLAGS_BOTH)
|
|
// ITcpAccessException
|
|
public:
|
|
|
|
//////////////////////////////////////////////////////////////////////
|
|
// Properties:
|
|
//////////////////////////////////////////////////////////////////////
|
|
|
|
STDMETHODIMP get_IsDnsName ( BOOL * pfIsDnsName );
|
|
STDMETHODIMP get_IsIpAddress ( BOOL * pfIsIpAddress );
|
|
|
|
STDMETHODIMP get_DnsName ( BSTR * pstrDnsName );
|
|
STDMETHODIMP put_DnsName ( BSTR strDnsName );
|
|
|
|
STDMETHODIMP get_IpAddress ( long * plIpAddress );
|
|
STDMETHODIMP put_IpAddress ( long lIpAddress );
|
|
|
|
STDMETHODIMP get_IpMask ( long * plIpMask );
|
|
STDMETHODIMP put_IpMask ( long lIpMask );
|
|
|
|
//////////////////////////////////////////////////////////////////////
|
|
// Data:
|
|
//////////////////////////////////////////////////////////////////////
|
|
private:
|
|
CComBSTR m_strDnsName;
|
|
DWORD m_dwIpAddress;
|
|
DWORD m_dwIpMask;
|
|
BOOL m_fIsDnsName;
|
|
BOOL m_fIsIpAddress;
|
|
};
|
|
|