/* **************************************************************************** | Copyright (C) 2002 Microsoft Corporation | | Component / Subcomponent | IIS 6.0 / IIS Migration Wizard | | Based on: | http://iis6/Specs/IIS%20Migration6.0_Final.doc | | Abstract: | IIS Metabase interface helper | | Author: | ivelinj | | Revision History: | V1.00 March 2002 | **************************************************************************** */ #pragma once #include "Wrappers.h" // Class for an IIS Web Site class CIISSite { // Data types private: enum { KeyAccessTimeout = 2000 // 2sec }; public: CIISSite ( ULONG nSiteID, bool bReadOnly = true ); ~CIISSite ( void ); // Class Interface public: void Close ( void ); void AddKey ( LPCWSTR wszKey )const; void ExportConfig ( const IXMLDOMDocumentPtr& spDoc, const IXMLDOMElementPtr& spRoot, HCRYPTKEY hEncryptKey )const; void ExportCert ( const IXMLDOMDocumentPtr& spDoc, const IXMLDOMElementPtr& spRoot, LPCWSTR wszPassword )const; void ImportConfig ( const IXMLDOMNodePtr& spSite, HCRYPTKEY hDecryptKey, bool bImportInherited )const; const std::wstring GetDisplayName ( void )const; const std::wstring GetAnonUser ( void )const; bool HaveCertificate ( void )const; static void BackupMetabase ( LPCWSTR wszLocation = NULL ); static DWORD CreateNew ( DWORD dwHint = 1 ); static void DeleteSite ( DWORD dwSiteID ); static const std::wstring GetDefaultAnonUser( void ); // Implementation private: void SetKeyData ( LPCWSTR wszPath, DWORD dwID, DWORD dwUserType, LPCWSTR wszData )const; void ExportKey ( const IXMLDOMDocumentPtr& spDoc, const IXMLDOMElementPtr& spRoot, HCRYPTKEY hCryptKey, LPCWSTR wszNodePath, TByteAutoPtr& rspBuffer, DWORD& rdwBufferSize )const; void ExportInheritData ( const IXMLDOMDocumentPtr& spXMLDoc, const IXMLDOMElementPtr& spInheritRoot, HCRYPTKEY hEncryptKey, TByteAutoPtr& rspBuffer, DWORD& rdwBufferSize )const; void ExportKeyData ( const IXMLDOMDocumentPtr& spDoc, const IXMLDOMElementPtr& spKey, HCRYPTKEY hCryptKey, LPCWSTR wszNodePath, TByteAutoPtr& rspBuffer, DWORD& rdwBufferSize )const; void ExportMetaRecord ( const IXMLDOMDocumentPtr& spDoc, const IXMLDOMElementPtr& spKey, HCRYPTKEY hCryptKey, const METADATA_GETALL_RECORD& Data, void* pvData )const; void RemoveLocalMetadata ( const IXMLDOMElementPtr& spRoot )const; void ImportMetaValue ( const IXMLDOMNodePtr& spValue, LPCWSTR wszLocation, HCRYPTKEY hDecryptKey )const; void DecryptData ( HCRYPTKEY hDecryptKey, LPWSTR wszData )const; const TCertContextHandle GetCert ( void )const; void ChainCertificate ( PCCERT_CONTEXT hCert, HCERTSTORE hStore )const; // Conversion helpers void MultiStrToString ( LPWSTR wszData )const; void XMLToMultiSz ( CComBSTR& bstrData, DWORD& rdwSize )const; // Data members private: METADATA_HANDLE m_hSiteHandle; IMSAdminBasePtr m_spIABO; // Restricted private: CIISSite( const CIISSite& ); void operator =( const CIISSite& ); };