Leaked source code of windows server 2003
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.

467 lines
12 KiB

  1. //+-------------------------------------------------------------------------
  2. //
  3. // Microsoft Windows
  4. //
  5. // Copyright (C) Microsoft Corporation, 1998 - 1999
  6. //
  7. // File: dnssnap.h
  8. //
  9. //--------------------------------------------------------------------------
  10. #ifndef _DNSSNAP_H
  11. #define _DNSSNAP_H
  12. //////////////////////////////////////////////////////////////////////////////
  13. // global constants and macros
  14. extern const CLSID CLSID_DNSSnapin; // In-Proc server GUID
  15. extern const CLSID CLSID_DNSSnapinEx; // In-Proc server GUID
  16. extern const CLSID CLSID_DNSSnapinAbout; // In-Proc server GUID
  17. extern const CLSID CLSID_DNSSnapinAboutEx; // In-Proc server GUID
  18. ///////////////////////////////////////////////////////////////////////////////
  19. // RESOURCES
  20. // enumeration for image strips
  21. enum
  22. {
  23. ROOT_IMAGE = 0,
  24. SEPARATOR_1,
  25. // 10 (5 regular, 5 test failed) images for server
  26. SERVER_IMAGE_NOT_LOADED,
  27. SERVER_IMAGE_LOADING,
  28. SERVER_IMAGE_LOADED,
  29. SERVER_IMAGE_UNABLE_TO_LOAD,
  30. SERVER_IMAGE_ACCESS_DENIED,
  31. SERVER_IMAGE_NOT_LOADED_TEST_FAIL,
  32. SERVER_IMAGE_LOADING_TEST_FAIL,
  33. SERVER_IMAGE_LOADED_TEST_FAIL,
  34. SERVER_IMAGE_UNABLE_TO_LOAD_TEST_FAIL,
  35. SERVER_IMAGE_ACCESS_DENIED_TEST_FAIL,
  36. SEPARATOR_2,
  37. // 12 (6 primary, 6 secondary) images for zones
  38. ZONE_IMAGE_1,
  39. ZONE_IMAGE_LOADING_1,
  40. ZONE_IMAGE_UNABLE_TO_LOAD_1,
  41. ZONE_IMAGE_PAUSED_1,
  42. ZONE_IMAGE_EXPIRED_1,
  43. ZONE_IMAGE_ACCESS_DENIED_1,
  44. SEPARATOR_3,
  45. ZONE_IMAGE_2,
  46. ZONE_IMAGE_LOADING_2,
  47. ZONE_IMAGE_UNABLE_TO_LOAD_2,
  48. ZONE_IMAGE_PAUSED_2,
  49. ZONE_IMAGE_EXPIRED_2,
  50. ZONE_IMAGE_ACCESS_DENIED_2,
  51. SEPARATOR_4,
  52. // 4 images for domains
  53. DOMAIN_IMAGE,
  54. DOMAIN_IMAGE_UNABLE_TO_LOAD,
  55. DOMAIN_IMAGE_LOADING,
  56. DOMAIN_IMAGE_ACCESS_DENIED,
  57. SEPARATOR_5,
  58. // 4 images for delegated domains
  59. DELEGATED_DOMAIN_IMAGE,
  60. DELEGATED_DOMAIN_IMAGE_UNABLE_TO_LOAD,
  61. DELEGATED_DOMAIN_IMAGE_LOADING,
  62. DELEGATED_DOMAIN_IMAGE_ACCESS_DENIED,
  63. SEPARATOR_6,
  64. // 4 generic images shared by cache, fwd and rev lookup zones
  65. FOLDER_IMAGE,
  66. FOLDER_IMAGE_UNABLE_TO_LOAD,
  67. FOLDER_IMAGE_LOADING,
  68. FOLDER_IMAGE_ACCESS_DENIED,
  69. SEPARATOR_7,
  70. // 1 record image
  71. RECORD_IMAGE_BASE,
  72. OPEN_FOLDER, // unused
  73. FOLDER_WITH_HAND,
  74. SEPARATOR_8,
  75. // server options nodes
  76. SERVER_OPTIONS_IMAGE
  77. };
  78. ////////////////////////////////////////////////////////////////
  79. // aliases for images indexes that share the same icon
  80. #define ZONE_IMAGE_NOT_LOADED_1 ZONE_IMAGE_1
  81. #define ZONE_IMAGE_NOT_LOADED_2 ZONE_IMAGE_2
  82. #define ZONE_IMAGE_LOADED_1 ZONE_IMAGE_1
  83. #define ZONE_IMAGE_LOADED_2 ZONE_IMAGE_2
  84. #define DOMAIN_IMAGE_NOT_LOADED DOMAIN_IMAGE
  85. #define DOMAIN_IMAGE_LOADED DOMAIN_IMAGE
  86. #define DELEGATED_DOMAIN_IMAGE_NOT_LOADED DELEGATED_DOMAIN_IMAGE
  87. #define DELEGATED_DOMAIN_IMAGE_LOADED DELEGATED_DOMAIN_IMAGE
  88. #define FOLDER_IMAGE_NOT_LOADED FOLDER_IMAGE
  89. #define FOLDER_IMAGE_LOADED FOLDER_IMAGE
  90. ///////////////////////////////////////////////////////////////
  91. // bitmaps and images constants
  92. #define BMP_COLOR_MASK RGB(255,0,255) // pink
  93. ///////////////////////////////////////////////////////////////
  94. // headers for result pane
  95. #define N_HEADER_COLS (3)
  96. #define N_DEFAULT_HEADER_COLS (3)
  97. #define N_SERVER_HEADER_COLS (1)
  98. #define N_ZONE_HEADER_COLS (3)
  99. #define N_HEADER_NAME (0)
  100. #define N_HEADER_TYPE (1)
  101. #define N_HEADER_DATA (2)
  102. //#define N_HEADER_PARTITION (3)
  103. extern RESULT_HEADERMAP _DefaultHeaderStrings[];
  104. extern RESULT_HEADERMAP _ServerHeaderStrings[];
  105. extern RESULT_HEADERMAP _ZoneHeaderStrings[];
  106. struct ZONE_TYPE_MAP
  107. {
  108. WCHAR szBuffer[MAX_RESULT_HEADER_STRLEN];
  109. UINT uResID;
  110. };
  111. extern ZONE_TYPE_MAP _ZoneTypeStrings[];
  112. BOOL LoadZoneTypeResources(ZONE_TYPE_MAP* pHeaderMap, int nCols);
  113. ///////////////////////////////////////////////////////////////
  114. // context menus
  115. // Identifiers for each of the commands in the context menu.
  116. enum
  117. {
  118. // items for the root node
  119. IDM_SNAPIN_ADVANCED_VIEW,
  120. IDM_SNAPIN_MESSAGE,
  121. IDM_SNAPIN_FILTERING,
  122. IDM_SNAPIN_CONNECT_TO_SERVER,
  123. // items for the server node
  124. IDM_SERVER_CONFIGURE,
  125. IDM_SERVER_CREATE_NDNC,
  126. IDM_SERVER_NEW_ZONE,
  127. IDM_SERVER_SET_AGING,
  128. IDM_SERVER_SCAVENGE,
  129. IDM_SERVER_UPDATE_DATA_FILES,
  130. IDM_SERVER_CLEAR_CACHE,
  131. IDM_SERVER_NSLOOKUP,
  132. // items for the cache folder
  133. IDM_CACHE_FOLDER_CLEAR_CACHE,
  134. // items for the zone node
  135. IDM_ZONE_UPDATE_DATA_FILE,
  136. IDM_ZONE_RELOAD,
  137. IDM_ZONE_TRANSFER,
  138. IDM_ZONE_RELOAD_FROM_MASTER,
  139. // items for the domain node
  140. IDM_DOMAIN_NEW_RECORD,
  141. IDM_DOMAIN_NEW_DOMAIN,
  142. IDM_DOMAIN_NEW_DELEGATION,
  143. IDM_DOMAIN_NEW_HOST,
  144. IDM_DOMAIN_NEW_ALIAS,
  145. IDM_DOMAIN_NEW_MX,
  146. IDM_DOMAIN_NEW_PTR,
  147. // common items
  148. };
  149. DECLARE_MENU(CDNSRootDataMenuHolder)
  150. DECLARE_MENU(CDNSServerMenuHolder)
  151. DECLARE_MENU(CDNSCathegoryFolderHolder)
  152. DECLARE_MENU(CDNSAuthoritatedZonesMenuHolder)
  153. DECLARE_MENU(CDNSCacheMenuHolder);
  154. DECLARE_MENU(CDNSZoneMenuHolder)
  155. DECLARE_MENU(CDNSDomainMenuHolder)
  156. DECLARE_MENU(CDNSRecordMenuHolder)
  157. //
  158. // Toolbar events
  159. //
  160. DECLARE_TOOLBAR_EVENT(toolbarNewServer, 1001)
  161. DECLARE_TOOLBAR_EVENT(toolbarNewRecord, 1002)
  162. DECLARE_TOOLBAR_EVENT(toolbarNewZone, 1003)
  163. ////////////////////////////////////////////////////////////////////////
  164. // CDNSComponentObject (.i.e "view")
  165. class CDNSComponentObject : public CComponentObject
  166. {
  167. BEGIN_COM_MAP(CDNSComponentObject)
  168. COM_INTERFACE_ENTRY(IComponent) // have to have at least one static entry, so pick one
  169. COM_INTERFACE_ENTRY_CHAIN(CComponentObject) // chain to the base class
  170. END_COM_MAP()
  171. DECLARE_NOT_AGGREGATABLE(CDNSComponentObject)
  172. protected:
  173. virtual HRESULT InitializeHeaders(CContainerNode* pContainerNode);
  174. virtual HRESULT InitializeBitmaps(CTreeNode* cookie);
  175. virtual HRESULT InitializeToolbar(IToolbar* pToolbar);
  176. HRESULT LoadToolbarStrings(MMCBUTTON * Buttons);
  177. };
  178. //////////////////////////////////////////////////////////////////////////
  179. // CDNSDefaultColumnSet
  180. class CDNSDefaultColumnSet : public CColumnSet
  181. {
  182. public :
  183. CDNSDefaultColumnSet(LPCWSTR lpszColumnID)
  184. : CColumnSet(lpszColumnID)
  185. {
  186. for (int iCol = 0; iCol < N_DEFAULT_HEADER_COLS; iCol++)
  187. {
  188. CColumn* pNewColumn = new CColumn(_DefaultHeaderStrings[iCol].szBuffer,
  189. _DefaultHeaderStrings[iCol].nFormat,
  190. _DefaultHeaderStrings[iCol].nWidth,
  191. iCol);
  192. if (pNewColumn)
  193. {
  194. AddTail(pNewColumn);
  195. }
  196. }
  197. }
  198. };
  199. //////////////////////////////////////////////////////////////////////////
  200. // CDNSServerColumnSet
  201. class CDNSServerColumnSet : public CColumnSet
  202. {
  203. public :
  204. CDNSServerColumnSet(LPCWSTR lpszColumnID)
  205. : CColumnSet(lpszColumnID)
  206. {
  207. for (int iCol = 0; iCol < N_SERVER_HEADER_COLS; iCol++)
  208. {
  209. CColumn* pNewColumn = new CColumn(_ServerHeaderStrings[iCol].szBuffer,
  210. _ServerHeaderStrings[iCol].nFormat,
  211. _ServerHeaderStrings[iCol].nWidth,
  212. iCol);
  213. if (pNewColumn)
  214. {
  215. AddTail(pNewColumn);
  216. }
  217. }
  218. }
  219. };
  220. //////////////////////////////////////////////////////////////////////////
  221. // CDNSZoneColumnSet
  222. class CDNSZoneColumnSet : public CColumnSet
  223. {
  224. public :
  225. CDNSZoneColumnSet(LPCWSTR lpszColumnID)
  226. : CColumnSet(lpszColumnID)
  227. {
  228. for (int iCol = 0; iCol < N_ZONE_HEADER_COLS; iCol++)
  229. {
  230. CColumn* pNewColumn = new CColumn(_ZoneHeaderStrings[iCol].szBuffer,
  231. _ZoneHeaderStrings[iCol].nFormat,
  232. _ZoneHeaderStrings[iCol].nWidth,
  233. iCol);
  234. if (pNewColumn)
  235. {
  236. AddTail(pNewColumn);
  237. }
  238. }
  239. }
  240. };
  241. ////////////////////////////////////////////////////////////////////////
  242. // CDNSComponentDataObjectBase (.i.e "document")
  243. class CDNSComponentDataObjectBase : public CComponentDataObject
  244. {
  245. BEGIN_COM_MAP(CDNSComponentDataObjectBase)
  246. COM_INTERFACE_ENTRY(IComponentData) // have to have at least one static entry, so pick one
  247. COM_INTERFACE_ENTRY_CHAIN(CComponentDataObject) // chain to the base class
  248. END_COM_MAP()
  249. DECLARE_NOT_AGGREGATABLE(CDNSComponentDataObjectBase)
  250. public:
  251. CDNSComponentDataObjectBase();
  252. virtual ~CDNSComponentDataObjectBase()
  253. {
  254. }
  255. // IComponentData interface members
  256. STDMETHOD(CreateComponent)(LPCOMPONENT* ppComponent);
  257. public:
  258. static BOOL LoadResources();
  259. private:
  260. static BOOL FindDialogContextTopic(/*IN*/UINT nDialogID,
  261. /*IN*/ HELPINFO* pHelpInfo,
  262. /*OUT*/ ULONG* pnContextTopic);
  263. // virtual functions
  264. protected:
  265. virtual HRESULT OnSetImages(LPIMAGELIST lpScopeImage);
  266. virtual CRootData* OnCreateRootData();
  267. // help handling
  268. virtual LPCWSTR GetHTMLHelpFileName();
  269. virtual void OnNodeContextHelp(CNodeList* pNodeList);
  270. virtual void OnNodeContextHelp(CTreeNode* pNode);
  271. public:
  272. virtual void OnDialogContextHelp(UINT nDialogID, HELPINFO* pHelpInfo);
  273. // Timer and Background Thread
  274. protected:
  275. virtual void OnTimer();
  276. virtual void OnTimerThread(WPARAM wParam, LPARAM lParam);
  277. virtual CTimerThread* OnCreateTimerThread();
  278. DWORD m_dwTime; // in
  279. public:
  280. CColumnSet* GetColumnSet(LPCWSTR lpszID)
  281. {
  282. return m_columnSetList.FindColumnSet(lpszID);
  283. }
  284. private:
  285. CColumnSetList m_columnSetList;
  286. };
  287. ////////////////////////////////////////////////////////////////////////
  288. // CDNSComponentDataObject (.i.e "document")
  289. // primary snapin
  290. class CDNSComponentDataObject :
  291. public CDNSComponentDataObjectBase,
  292. public CComCoClass<CDNSComponentDataObject,&CLSID_DNSSnapin>
  293. {
  294. BEGIN_COM_MAP(CDNSComponentDataObject)
  295. COM_INTERFACE_ENTRY(IComponentData) // have to have at least one static entry, so pick one
  296. COM_INTERFACE_ENTRY_CHAIN(CDNSComponentDataObjectBase) // chain to the base class
  297. END_COM_MAP()
  298. DECLARE_NOT_AGGREGATABLE(CDNSComponentDataObject)
  299. DECLARE_REGISTRY_CLSID()
  300. public:
  301. CDNSComponentDataObject()
  302. {
  303. }
  304. // IPersistStream interface members
  305. HRESULT STDMETHODCALLTYPE GetClassID(CLSID __RPC_FAR *pClassID)
  306. {
  307. ASSERT(pClassID != NULL);
  308. memcpy(pClassID, (GUID*)&GetObjectCLSID(), sizeof(CLSID));
  309. return S_OK;
  310. }
  311. virtual BOOL IsMultiSelect() { return TRUE; }
  312. };
  313. ////////////////////////////////////////////////////////////////////////
  314. // CDNSComponentDataObjectEx (.i.e "document")
  315. // extension snapin
  316. class CDNSComponentDataObjectEx :
  317. public CDNSComponentDataObjectBase,
  318. public CComCoClass<CDNSComponentDataObjectEx,&CLSID_DNSSnapinEx>
  319. {
  320. BEGIN_COM_MAP(CDNSComponentDataObjectEx)
  321. COM_INTERFACE_ENTRY(IComponentData) // have to have at least one static entry, so pick one
  322. COM_INTERFACE_ENTRY_CHAIN(CDNSComponentDataObjectBase) // chain to the base class
  323. END_COM_MAP()
  324. DECLARE_NOT_AGGREGATABLE(CDNSComponentDataObjectEx)
  325. DECLARE_REGISTRY_CLSID()
  326. public:
  327. CDNSComponentDataObjectEx()
  328. {
  329. SetExtensionSnapin(TRUE);
  330. }
  331. // IPersistStream interface members
  332. HRESULT STDMETHODCALLTYPE GetClassID(CLSID __RPC_FAR *pClassID)
  333. {
  334. ASSERT(pClassID != NULL);
  335. memcpy(pClassID, (GUID*)&GetObjectCLSID(), sizeof(CLSID));
  336. return S_OK;
  337. }
  338. protected:
  339. virtual HRESULT OnExtensionExpand(LPDATAOBJECT lpDataObject, LPARAM param);
  340. virtual HRESULT OnRemoveChildren(LPDATAOBJECT lpDataObject, LPARAM arg);
  341. };
  342. //////////////////////////////////////////////////////////////////////////
  343. // CDNSSnapinAbout
  344. class CDNSSnapinAbout :
  345. public CSnapinAbout,
  346. public CComCoClass<CDNSSnapinAbout, &CLSID_DNSSnapinAbout>
  347. {
  348. public:
  349. DECLARE_REGISTRY_CLSID()
  350. CDNSSnapinAbout();
  351. };
  352. //////////////////////////////////////////////////////////////////////////
  353. // CDNSSnapinAboutEx
  354. class CDNSSnapinAboutEx :
  355. public CSnapinAbout,
  356. public CComCoClass<CDNSSnapinAboutEx, &CLSID_DNSSnapinAboutEx>
  357. {
  358. public:
  359. DECLARE_REGISTRY_CLSID()
  360. CDNSSnapinAboutEx();
  361. };
  362. #endif _DNSSNAP_H