449 lines
11 KiB
C++
449 lines
11 KiB
C++
//+-------------------------------------------------------------------------
|
|
//
|
|
// Microsoft Windows
|
|
//
|
|
// Copyright (C) Microsoft Corporation, 1998 - 1999
|
|
//
|
|
// File: dnssnap.h
|
|
//
|
|
//--------------------------------------------------------------------------
|
|
|
|
|
|
#ifndef _DNSSNAP_H
|
|
#define _DNSSNAP_H
|
|
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
// global constants and macros
|
|
|
|
extern const CLSID CLSID_DNSSnapin; // In-Proc server GUID
|
|
extern const CLSID CLSID_DNSSnapinEx; // In-Proc server GUID
|
|
extern const CLSID CLSID_DNSSnapinAbout; // In-Proc server GUID
|
|
extern const CLSID CLSID_DNSSnapinAboutEx; // In-Proc server GUID
|
|
|
|
///////////////////////////////////////////////////////////////////////////////
|
|
// RESOURCES
|
|
|
|
// enumeration for image strips
|
|
enum
|
|
{
|
|
ROOT_IMAGE = 0,
|
|
|
|
SEPARATOR_1,
|
|
|
|
// 10 (5 regular, 5 test failed) images for server
|
|
SERVER_IMAGE_NOT_LOADED,
|
|
SERVER_IMAGE_LOADING,
|
|
SERVER_IMAGE_LOADED,
|
|
SERVER_IMAGE_UNABLE_TO_LOAD,
|
|
SERVER_IMAGE_ACCESS_DENIED,
|
|
|
|
SERVER_IMAGE_NOT_LOADED_TEST_FAIL,
|
|
SERVER_IMAGE_LOADING_TEST_FAIL,
|
|
SERVER_IMAGE_LOADED_TEST_FAIL,
|
|
SERVER_IMAGE_UNABLE_TO_LOAD_TEST_FAIL,
|
|
SERVER_IMAGE_ACCESS_DENIED_TEST_FAIL,
|
|
|
|
SEPARATOR_2,
|
|
|
|
// 12 (6 primary, 6 secondary) images for zones
|
|
ZONE_IMAGE_1,
|
|
ZONE_IMAGE_LOADING_1,
|
|
ZONE_IMAGE_UNABLE_TO_LOAD_1,
|
|
ZONE_IMAGE_PAUSED_1,
|
|
ZONE_IMAGE_EXPIRED_1,
|
|
ZONE_IMAGE_ACCESS_DENIED_1,
|
|
|
|
SEPARATOR_3,
|
|
|
|
ZONE_IMAGE_2,
|
|
ZONE_IMAGE_LOADING_2,
|
|
ZONE_IMAGE_UNABLE_TO_LOAD_2,
|
|
ZONE_IMAGE_PAUSED_2,
|
|
ZONE_IMAGE_EXPIRED_2,
|
|
ZONE_IMAGE_ACCESS_DENIED_2,
|
|
|
|
SEPARATOR_4,
|
|
|
|
// 4 images for domains
|
|
DOMAIN_IMAGE,
|
|
DOMAIN_IMAGE_UNABLE_TO_LOAD,
|
|
DOMAIN_IMAGE_LOADING,
|
|
DOMAIN_IMAGE_ACCESS_DENIED,
|
|
|
|
SEPARATOR_5,
|
|
|
|
// 4 images for delegated domains
|
|
DELEGATED_DOMAIN_IMAGE,
|
|
DELEGATED_DOMAIN_IMAGE_UNABLE_TO_LOAD,
|
|
DELEGATED_DOMAIN_IMAGE_LOADING,
|
|
DELEGATED_DOMAIN_IMAGE_ACCESS_DENIED,
|
|
|
|
SEPARATOR_6,
|
|
|
|
// 4 generic images shared by cache, fwd and rev lookup zones
|
|
FOLDER_IMAGE,
|
|
FOLDER_IMAGE_UNABLE_TO_LOAD,
|
|
FOLDER_IMAGE_LOADING,
|
|
FOLDER_IMAGE_ACCESS_DENIED,
|
|
|
|
SEPARATOR_7,
|
|
|
|
// 1 record image
|
|
RECORD_IMAGE_BASE,
|
|
|
|
OPEN_FOLDER, // unused
|
|
FOLDER_WITH_HAND
|
|
};
|
|
|
|
////////////////////////////////////////////////////////////////
|
|
// aliases for images indexes that share the same icon
|
|
|
|
#define ZONE_IMAGE_NOT_LOADED_1 ZONE_IMAGE_1
|
|
#define ZONE_IMAGE_NOT_LOADED_2 ZONE_IMAGE_2
|
|
#define ZONE_IMAGE_LOADED_1 ZONE_IMAGE_1
|
|
#define ZONE_IMAGE_LOADED_2 ZONE_IMAGE_2
|
|
|
|
#define DOMAIN_IMAGE_NOT_LOADED DOMAIN_IMAGE
|
|
#define DOMAIN_IMAGE_LOADED DOMAIN_IMAGE
|
|
|
|
#define DELEGATED_DOMAIN_IMAGE_NOT_LOADED DELEGATED_DOMAIN_IMAGE
|
|
#define DELEGATED_DOMAIN_IMAGE_LOADED DELEGATED_DOMAIN_IMAGE
|
|
|
|
#define FOLDER_IMAGE_NOT_LOADED FOLDER_IMAGE
|
|
#define FOLDER_IMAGE_LOADED FOLDER_IMAGE
|
|
|
|
///////////////////////////////////////////////////////////////
|
|
// bitmaps and images constants
|
|
|
|
#define BMP_COLOR_MASK RGB(255,0,255) // pink
|
|
|
|
|
|
///////////////////////////////////////////////////////////////
|
|
// headers for result pane
|
|
|
|
#define N_HEADER_COLS (3)
|
|
#define N_DEFAULT_HEADER_COLS (3)
|
|
#define N_SERVER_HEADER_COLS (1)
|
|
#define N_ZONE_HEADER_COLS (3)
|
|
|
|
#define N_HEADER_NAME (0)
|
|
#define N_HEADER_TYPE (1)
|
|
#define N_HEADER_DATA (2)
|
|
//#define N_HEADER_PARTITION (3)
|
|
|
|
extern RESULT_HEADERMAP _DefaultHeaderStrings[];
|
|
extern RESULT_HEADERMAP _ServerHeaderStrings[];
|
|
extern RESULT_HEADERMAP _ZoneHeaderStrings[];
|
|
|
|
struct ZONE_TYPE_MAP
|
|
{
|
|
WCHAR szBuffer[MAX_RESULT_HEADER_STRLEN];
|
|
UINT uResID;
|
|
};
|
|
|
|
extern ZONE_TYPE_MAP _ZoneTypeStrings[];
|
|
|
|
BOOL LoadZoneTypeResources(ZONE_TYPE_MAP* pHeaderMap, int nCols);
|
|
|
|
///////////////////////////////////////////////////////////////
|
|
// context menus
|
|
|
|
// Identifiers for each of the commands in the context menu.
|
|
enum
|
|
{
|
|
// items for the root node
|
|
IDM_SNAPIN_ADVANCED_VIEW,
|
|
IDM_SNAPIN_MESSAGE,
|
|
IDM_SNAPIN_FILTERING,
|
|
IDM_SNAPIN_CONNECT_TO_SERVER,
|
|
|
|
// items for the server node
|
|
IDM_SERVER_CONFIGURE,
|
|
IDM_SERVER_CREATE_NDNC,
|
|
IDM_SERVER_NEW_ZONE,
|
|
IDM_SERVER_SET_AGING,
|
|
IDM_SERVER_SCAVENGE,
|
|
IDM_SERVER_UPDATE_DATA_FILES,
|
|
IDM_SERVER_CLEAR_CACHE,
|
|
|
|
// items for the cache folder
|
|
IDM_CACHE_FOLDER_CLEAR_CACHE,
|
|
|
|
// items for the zone node
|
|
IDM_ZONE_UPDATE_DATA_FILE,
|
|
IDM_ZONE_RELOAD,
|
|
IDM_ZONE_TRANSFER,
|
|
IDM_ZONE_RELOAD_FROM_MASTER,
|
|
|
|
// items for the domain node
|
|
IDM_DOMAIN_NEW_RECORD,
|
|
IDM_DOMAIN_NEW_DOMAIN,
|
|
IDM_DOMAIN_NEW_DELEGATION,
|
|
IDM_DOMAIN_NEW_HOST,
|
|
IDM_DOMAIN_NEW_ALIAS,
|
|
IDM_DOMAIN_NEW_MX,
|
|
IDM_DOMAIN_NEW_PTR,
|
|
|
|
// common items
|
|
};
|
|
|
|
|
|
DECLARE_MENU(CDNSRootDataMenuHolder)
|
|
DECLARE_MENU(CDNSServerMenuHolder)
|
|
DECLARE_MENU(CDNSCathegoryFolderHolder)
|
|
DECLARE_MENU(CDNSAuthoritatedZonesMenuHolder)
|
|
DECLARE_MENU(CDNSCacheMenuHolder);
|
|
DECLARE_MENU(CDNSZoneMenuHolder)
|
|
DECLARE_MENU(CDNSDomainMenuHolder)
|
|
DECLARE_MENU(CDNSRecordMenuHolder)
|
|
|
|
|
|
//
|
|
// Toolbar events
|
|
//
|
|
DECLARE_TOOLBAR_EVENT(toolbarNewServer, 1001)
|
|
DECLARE_TOOLBAR_EVENT(toolbarNewRecord, 1002)
|
|
DECLARE_TOOLBAR_EVENT(toolbarNewZone, 1003)
|
|
|
|
////////////////////////////////////////////////////////////////////////
|
|
// CDNSComponentObject (.i.e "view")
|
|
|
|
class CDNSComponentObject : public CComponentObject
|
|
{
|
|
BEGIN_COM_MAP(CDNSComponentObject)
|
|
COM_INTERFACE_ENTRY(IComponent) // have to have at least one static entry, so pick one
|
|
COM_INTERFACE_ENTRY_CHAIN(CComponentObject) // chain to the base class
|
|
END_COM_MAP()
|
|
|
|
DECLARE_NOT_AGGREGATABLE(CDNSComponentObject)
|
|
|
|
protected:
|
|
virtual HRESULT InitializeHeaders(CContainerNode* pContainerNode);
|
|
virtual HRESULT InitializeBitmaps(CTreeNode* cookie);
|
|
virtual HRESULT InitializeToolbar(IToolbar* pToolbar);
|
|
HRESULT LoadToolbarStrings(MMCBUTTON * Buttons);
|
|
};
|
|
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
// CDNSDefaultColumnSet
|
|
|
|
class CDNSDefaultColumnSet : public CColumnSet
|
|
{
|
|
public :
|
|
CDNSDefaultColumnSet(LPCWSTR lpszColumnID)
|
|
: CColumnSet(lpszColumnID)
|
|
{
|
|
for (int iCol = 0; iCol < N_DEFAULT_HEADER_COLS; iCol++)
|
|
{
|
|
CColumn* pNewColumn = new CColumn(_DefaultHeaderStrings[iCol].szBuffer,
|
|
_DefaultHeaderStrings[iCol].nFormat,
|
|
_DefaultHeaderStrings[iCol].nWidth,
|
|
iCol);
|
|
AddTail(pNewColumn);
|
|
}
|
|
}
|
|
};
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
// CDNSServerColumnSet
|
|
|
|
class CDNSServerColumnSet : public CColumnSet
|
|
{
|
|
public :
|
|
CDNSServerColumnSet(LPCWSTR lpszColumnID)
|
|
: CColumnSet(lpszColumnID)
|
|
{
|
|
for (int iCol = 0; iCol < N_SERVER_HEADER_COLS; iCol++)
|
|
{
|
|
CColumn* pNewColumn = new CColumn(_ServerHeaderStrings[iCol].szBuffer,
|
|
_ServerHeaderStrings[iCol].nFormat,
|
|
_ServerHeaderStrings[iCol].nWidth,
|
|
iCol);
|
|
AddTail(pNewColumn);
|
|
}
|
|
}
|
|
};
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
// CDNSZoneColumnSet
|
|
|
|
class CDNSZoneColumnSet : public CColumnSet
|
|
{
|
|
public :
|
|
CDNSZoneColumnSet(LPCWSTR lpszColumnID)
|
|
: CColumnSet(lpszColumnID)
|
|
{
|
|
for (int iCol = 0; iCol < N_ZONE_HEADER_COLS; iCol++)
|
|
{
|
|
CColumn* pNewColumn = new CColumn(_ZoneHeaderStrings[iCol].szBuffer,
|
|
_ZoneHeaderStrings[iCol].nFormat,
|
|
_ZoneHeaderStrings[iCol].nWidth,
|
|
iCol);
|
|
AddTail(pNewColumn);
|
|
}
|
|
}
|
|
};
|
|
|
|
////////////////////////////////////////////////////////////////////////
|
|
// CDNSComponentDataObjectBase (.i.e "document")
|
|
|
|
class CDNSComponentDataObjectBase : public CComponentDataObject
|
|
{
|
|
BEGIN_COM_MAP(CDNSComponentDataObjectBase)
|
|
COM_INTERFACE_ENTRY(IComponentData) // have to have at least one static entry, so pick one
|
|
COM_INTERFACE_ENTRY_CHAIN(CComponentDataObject) // chain to the base class
|
|
END_COM_MAP()
|
|
|
|
DECLARE_NOT_AGGREGATABLE(CDNSComponentDataObjectBase)
|
|
|
|
|
|
public:
|
|
CDNSComponentDataObjectBase();
|
|
virtual ~CDNSComponentDataObjectBase()
|
|
{
|
|
}
|
|
|
|
// IComponentData interface members
|
|
STDMETHOD(CreateComponent)(LPCOMPONENT* ppComponent);
|
|
|
|
public:
|
|
static BOOL LoadResources();
|
|
private:
|
|
static BOOL FindDialogContextTopic(/*IN*/UINT nDialogID,
|
|
/*IN*/ HELPINFO* pHelpInfo,
|
|
/*OUT*/ ULONG* pnContextTopic);
|
|
|
|
// virtual functions
|
|
protected:
|
|
virtual HRESULT OnSetImages(LPIMAGELIST lpScopeImage);
|
|
|
|
virtual CRootData* OnCreateRootData();
|
|
|
|
// help handling
|
|
virtual LPCWSTR GetHTMLHelpFileName();
|
|
virtual void OnNodeContextHelp(CNodeList* pNodeList);
|
|
public:
|
|
virtual void OnDialogContextHelp(UINT nDialogID, HELPINFO* pHelpInfo);
|
|
|
|
// Timer and Background Thread
|
|
protected:
|
|
virtual void OnTimer();
|
|
virtual void OnTimerThread(WPARAM wParam, LPARAM lParam);
|
|
virtual CTimerThread* OnCreateTimerThread();
|
|
|
|
DWORD m_dwTime; // in
|
|
|
|
public:
|
|
CColumnSet* GetColumnSet(LPCWSTR lpszID)
|
|
{
|
|
return m_columnSetList.FindColumnSet(lpszID);
|
|
}
|
|
|
|
private:
|
|
CColumnSetList m_columnSetList;
|
|
};
|
|
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////////
|
|
// CDNSComponentDataObject (.i.e "document")
|
|
// primary snapin
|
|
|
|
class CDNSComponentDataObject :
|
|
public CDNSComponentDataObjectBase,
|
|
public CComCoClass<CDNSComponentDataObject,&CLSID_DNSSnapin>
|
|
{
|
|
BEGIN_COM_MAP(CDNSComponentDataObject)
|
|
COM_INTERFACE_ENTRY(IComponentData) // have to have at least one static entry, so pick one
|
|
COM_INTERFACE_ENTRY_CHAIN(CDNSComponentDataObjectBase) // chain to the base class
|
|
END_COM_MAP()
|
|
|
|
DECLARE_NOT_AGGREGATABLE(CDNSComponentDataObject)
|
|
|
|
DECLARE_REGISTRY_CLSID()
|
|
|
|
public:
|
|
CDNSComponentDataObject()
|
|
{
|
|
}
|
|
|
|
// IPersistStream interface members
|
|
HRESULT STDMETHODCALLTYPE GetClassID(CLSID __RPC_FAR *pClassID)
|
|
{
|
|
ASSERT(pClassID != NULL);
|
|
memcpy(pClassID, (GUID*)&GetObjectCLSID(), sizeof(CLSID));
|
|
return S_OK;
|
|
}
|
|
|
|
virtual BOOL IsMultiSelect() { return TRUE; }
|
|
|
|
};
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////////
|
|
// CDNSComponentDataObjectEx (.i.e "document")
|
|
// extension snapin
|
|
|
|
class CDNSComponentDataObjectEx :
|
|
public CDNSComponentDataObjectBase,
|
|
public CComCoClass<CDNSComponentDataObjectEx,&CLSID_DNSSnapinEx>
|
|
{
|
|
BEGIN_COM_MAP(CDNSComponentDataObjectEx)
|
|
COM_INTERFACE_ENTRY(IComponentData) // have to have at least one static entry, so pick one
|
|
COM_INTERFACE_ENTRY_CHAIN(CDNSComponentDataObjectBase) // chain to the base class
|
|
END_COM_MAP()
|
|
|
|
DECLARE_NOT_AGGREGATABLE(CDNSComponentDataObjectEx)
|
|
|
|
DECLARE_REGISTRY_CLSID()
|
|
|
|
public:
|
|
CDNSComponentDataObjectEx()
|
|
{
|
|
SetExtensionSnapin(TRUE);
|
|
}
|
|
|
|
// IPersistStream interface members
|
|
HRESULT STDMETHODCALLTYPE GetClassID(CLSID __RPC_FAR *pClassID)
|
|
{
|
|
ASSERT(pClassID != NULL);
|
|
memcpy(pClassID, (GUID*)&GetObjectCLSID(), sizeof(CLSID));
|
|
return S_OK;
|
|
}
|
|
|
|
protected:
|
|
virtual HRESULT OnExtensionExpand(LPDATAOBJECT lpDataObject, LPARAM param);
|
|
virtual HRESULT OnRemoveChildren(LPDATAOBJECT lpDataObject, LPARAM arg);
|
|
};
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
// CDNSSnapinAbout
|
|
|
|
class CDNSSnapinAbout :
|
|
public CSnapinAbout,
|
|
public CComCoClass<CDNSSnapinAbout, &CLSID_DNSSnapinAbout>
|
|
|
|
{
|
|
public:
|
|
DECLARE_REGISTRY_CLSID()
|
|
CDNSSnapinAbout();
|
|
};
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
// CDNSSnapinAboutEx
|
|
|
|
class CDNSSnapinAboutEx :
|
|
public CSnapinAbout,
|
|
public CComCoClass<CDNSSnapinAboutEx, &CLSID_DNSSnapinAboutEx>
|
|
|
|
{
|
|
public:
|
|
DECLARE_REGISTRY_CLSID()
|
|
CDNSSnapinAboutEx();
|
|
};
|
|
|
|
|
|
|
|
#endif _DNSSNAP_H
|