|
|
/////////////////////////////////////////////////////////////////////////////
//
// Copyright (c) 1999 Microsoft Corporation
//
// Module Name:
// dnswrap.h
//
// Implementation File:
// dnswrap.cpp
//
// Description:
// Definition of the CDnsDomainDomainContainment class.
//
// Author:
// Henry Wang (Henrywa) March 8, 2000
//
// Notes:
//
/////////////////////////////////////////////////////////////////////////////
#pragma once
#include <list>
class CObjPath; class CDomainNode; class CWbemClassObject; using namespace std; /////////////////////////////////////////////////////////////////////////////
//++
//
// class CDnsBase
//
// Description:
// this is a wrap class for dns rpc API used in the provider. This class is
// implemented as singlton class, that's at any time, there is only one instance
// of this class.
//
//
// Inheritance:
//
//
//--
/////////////////////////////////////////////////////////////////////////////
class CDnsWrap { protected: // some def
typedef SCODE (*FPDNSOPS)( const CHAR * pszZoneName, const WCHAR*, const CHAR*, CWbemClassObject&); //
// map wbem property get and set to dns functions
//
typedef struct _table { const WCHAR* pwzProperty;//wbem property name
CHAR* OperationName; // dns operation name
FPDNSOPS fpOperationSet; FPDNSOPS fpOperationGet; } PropertyTable;
//
// dns server info class
//
class CServerInfo { public: CServerInfo(); ~CServerInfo(); PVOID m_pInfo; }; // end def
WCHAR* m_wszpServerName;
PVOID GetPropertyTable( DWORD* pdwSize );
public: typedef enum{ DNS_WRAP_RELOAD_ZONE, DNS_WRAP_DS_UPDATE, DNS_WRAP_WRITE_BACK_ZONE, DNS_WRAP_REFRESH_SECONDARY, DNS_WRAP_RESUME_ZONE, DNS_WRAP_PAUSE_ZONE } OpsFlag;
SCODE dnsClearCache(void); SCODE dnsResumeZone( const char* strZoneName ); wstring GetServerName(void); SCODE dnsPauseZone( const char *strZoneName ); static CDnsWrap& DnsObject(void); CDnsWrap(); virtual ~CDnsWrap(); SCODE dnsEnumRecordsForDomainEx( CDomainNode& objNode, PVOID pFilter, FILTER pfFilter, BOOL bRecursive, WORD wType, DWORD dwFlag, IWbemClassObject * pClass, CWbemInstanceMgr& InstMgr ); SCODE dnsGetDomain( CObjPath& objParent, IWbemClassObject* pClass, IWbemObjectSink* pHandler ); SCODE dnsEnumDomainForServer( list<CObjPath>* pList ); SCODE dnsEnumDomainForServer( list<CDomainNode>* pList ); SCODE dnsDeleteDomain( char * pszContainer, char * pszDomain ); SCODE dnsRestartServer( WCHAR* strServerName ); SCODE dnsDsServerName( wstring&); SCODE dnsDsZoneName( wstring& wstrDsName, wstring& wstrInZone ); SCODE dnsDsNodeName( wstring& wstrDsName, wstring& wstrInZone, wstring& wstrInNode ); SCODE dnsServerPropertySet( CWbemClassObject& Inst, BOOL bGet ); SCODE dnsServerPropertyGet( CWbemClassObject& Inst, BOOL bGet ); SCODE dnsQueryServerInfo( const WCHAR* strServerName, CWbemClassObject& NewInst, IWbemObjectSink* pHandler ); SCODE dnsDeleteZone( CObjPath& objZone ); SCODE dnsGetZone( const WCHAR* wszServer, const WCHAR* wszZone, CWbemClassObject& Inst, IWbemObjectSink* pHandler ); SCODE dnsQueryProperty( const WCHAR* wszZoneName, const WCHAR* wszPropertyName, DWORD* pdwResult );
static SCODE dnsGetDwordProperty( const char * pszZoneName, const WCHAR* wszWbemProperty, const char* pszOperationName, CWbemClassObject& Inst ); static SCODE dnsSetDwordProperty( const char * pszZoneName, const WCHAR* wszWbemProperty, const char* pszOperationName, CWbemClassObject& Inst );
static SCODE dnsGetStringProperty( const char * pszZoneName, const WCHAR * wszWbemProperty, const char * pszDnssrvPropertyName, CWbemClassObject& Inst );
static SCODE dnsSetStringProperty( const char * pszZoneName, const WCHAR * wszWbemProperty, const char * pszDnssrvPropertyName, CWbemClassObject& Inst );
static SCODE dnsGetIPArrayProperty( const char * pszZoneName, const WCHAR * wszWbemProperty, const char * pszDnssrvPropertyName, CWbemClassObject& Inst );
static SCODE dnsSetIPArrayProperty( const char * pszZoneName, const WCHAR * wszWbemProperty, const char * pszDnssrvPropertyName, CWbemClassObject& Inst );
static SCODE dnsSetServerListenAddress( const char * pszZoneName, const WCHAR* wszWbemProperty, const char* pszOperationName, CWbemClassObject& Inst );
static SCODE dnsSetServerForwarders( const char * pszZoneName, const WCHAR* wszWbemProperty, const char* pszOperationName, CWbemClassObject& Inst );
SCODE dnsSetProperty( const WCHAR* wszZoneName, const char* pszPropertyName, DWORD dwValue );
SCODE dnsSetProperty( const char* pszZoneName, const char* pszPropertyName, DWORD dwValue );
SCODE ValidateServerName( const WCHAR* pwzStr );
SCODE dnsOperation( string&, //zone name
OpsFlag );
SCODE dnsZoneCreate( string& strZoneName, DWORD dwZoneType, string& strDataFile, string& strAdmin, DWORD* pIp, DWORD cIp );
SCODE dnsZoneChangeType( string& strZone, DWORD dwZoneType, string& strDataFile, string& strAdmin, DWORD* pIp, DWORD cIp );
SCODE dnsZoneResetMaster( string& strZoneName, DWORD* pMasterIp, DWORD cMasterIp, DWORD dwLocal );
SCODE dnsZoneResetSecondary( string& strZoneName, DWORD dwSecurity, DWORD* pSecondaryIp, DWORD cSecondaryIp, DWORD dwNotify, DWORD * pNotifyIp, DWORD cNotifyIp );
SCODE dnsZonePut( CWbemClassObject& Inst );
SCODE CDnsWrap::dnsGetStatistics( IWbemClassObject * pClass, IWbemObjectSink * pHandler, DWORD dwStatId = 0 );
static void ThrowException( LONG status ); static void ThrowException( LPCSTR ErrString ); };
|