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.
 
 
 
 
 
 

150 lines
6.4 KiB

// IISSCO50.h : Declaration of the CIISSCO50
#ifndef __IISSCO50_H_
#define __IISSCO50_H_
#include "resource.h" // main symbols
#include <map> // Used for enum property key value pairs
#include <string> // Used in parseBSTR and AddBackSlashesToString
using namespace std;
typedef map<CComBSTR,CComBSTR> Map;
enum IIsAction { start, stop, pause }; // Actions related to start/stopping webs
/////////////////////////////////////////////////////////////////////////////
// CIISSCO50
class ATL_NO_VTABLE CIISSCO50 :
public CComCoClass<CIISSCO50, &CLSID_IISSCO50>,
public CProvProviderBase<&LIBID_IISSCOV50Lib>
{
public:
//Declarations of functions for EnumConfigRecursive Action
HRESULT EnumConfigRecursive_Execute(IXMLDOMNode *pXMLNode);
//Declarations of functions for EnumConfigRecursive Action
//HRESULT EnumConfigRecursive_Execute(IXMLDOMNode *pXMLNode);
//Declarations of functions for EnumConfig Action
HRESULT EnumConfig_Execute(IXMLDOMNode *pXMLNode);
//Declarations of functions for GetConfigProperty Action
HRESULT GetConfigProperty_Execute(IXMLDOMNode *pXMLNode);
//Declarations of functions for SetConfigProperty Action
HRESULT SetConfigProperty_Execute(IXMLDOMNode *pXMLNode);
HRESULT SetConfigProperty_Rollback(IXMLDOMNode *pXMLNode);
//Declarations of functions for DeleteVDir Action
HRESULT DeleteVDir_Execute(IXMLDOMNode *pXMLNode);
HRESULT DeleteVDir_Rollback(IXMLDOMNode *pXMLNode);
//Declarations of functions for CreateVDir Action
HRESULT CreateVDir_Execute(IXMLDOMNode *pXMLNode);
HRESULT CreateVDir_Rollback(IXMLDOMNode *pXMLNode);
//Declarations of functions for DeleteFTPSite Action
HRESULT DeleteFTPSite_Execute(IXMLDOMNode *pXMLNode);
HRESULT DeleteFTPSite_Rollback(IXMLDOMNode *pXMLNode);
//Declarations of functions for CreateFTPSite Action
HRESULT CreateFTPSite_Execute(IXMLDOMNode *pXMLNode);
HRESULT CreateFTPSite_Rollback(IXMLDOMNode *pXMLNode);
//Declarations of functions for DeleteWebSite Action
HRESULT DeleteWebSite_Execute(IXMLDOMNode *pXMLNode);
HRESULT DeleteWebSite_Rollback(IXMLDOMNode *pXMLNode);
//Declarations of functions for CreateWebSite Action
HRESULT CreateWebSite_Execute(IXMLDOMNode *pXMLNode);
HRESULT CreateWebSite_Rollback(IXMLDOMNode *pXMLNode);
DECLARE_REGISTRY_RESOURCEID(IDR_IISSCO50)
DECLARE_GET_CONTROLLING_UNKNOWN()
DECLARE_PROTECT_FINAL_CONSTRUCT()
BEGIN_COM_MAP(CIISSCO50)
COM_INTERFACE_ENTRY(IProvProvider)
COM_INTERFACE_ENTRY(ISupportErrorInfo)
END_COM_MAP()
HRESULT FinalConstruct();
//Mapping Action/Rollback to NameSpaces.
BEGIN_ACTION_MAP(CIISSCO50)
//
ACTION_MAP_ENTRY_NOROLLBACK("EnumConfigRecursive", EnumConfigRecursive_Execute)
ACTION_MAP_ENTRY_NOROLLBACK("EnumConfig", EnumConfig_Execute)
ACTION_MAP_ENTRY_NOROLLBACK("GetConfigProperty", GetConfigProperty_Execute)
ACTION_MAP_ENTRY("SetConfigProperty", SetConfigProperty_Execute, SetConfigProperty_Rollback)
ACTION_MAP_ENTRY("DeleteVDir", DeleteVDir_Execute, DeleteVDir_Rollback)
ACTION_MAP_ENTRY("CreateVDir", CreateVDir_Execute, CreateVDir_Rollback)
ACTION_MAP_ENTRY("DeleteFTPSite", DeleteFTPSite_Execute, DeleteFTPSite_Rollback)
ACTION_MAP_ENTRY("CreateFTPSite", CreateFTPSite_Execute, CreateFTPSite_Rollback)
ACTION_MAP_ENTRY("DeleteWebSite", DeleteWebSite_Execute, DeleteWebSite_Rollback)
ACTION_MAP_ENTRY("CreateWebSite", CreateWebSite_Execute, CreateWebSite_Rollback)
// ACTION_MAP_ENTRY("SignupUser", Action1, Rollback1)
// ACTION_MAP_ENTRY_NOROLLBACK("UnsubscribeUser", Action2)
// ACTION_MAP_ENTRY_TWOPHASE("CreateOrg", Action3, Rollback3, Prepare3,
// Commit3)
END_ACTION_MAP()
private:
// Used with IIsScoLogFailure(failstring) macro
HINSTANCE g_ErrorModule;
// adsi helper methods used by SCO action handlers
HRESULT GetMetaPropertyValue(CComPtr<IADs> pADs, CComBSTR bstrName, CComBSTR& pVal);
HRESULT SetMetaPropertyValue(CComPtr<IADs> pADs, CComBSTR bstrName, CComBSTR bstrValue);
HRESULT DeleteMetaPropertyValue(CComPtr<IADs> pADs, CComBSTR bstrName);
HRESULT CreateIIs50Site(CComBSTR bstrType,CComBSTR bADsPath,
CComBSTR bServerNumber, CComBSTR &bstrConfigPath);
HRESULT DeleteIIs50Site(CComBSTR bstrType,CComBSTR bADsPath,CComBSTR bServerNumber);
HRESULT CreateIIs50VDir(CComBSTR bstrType,CComBSTR bADsPath, CComBSTR bVDirName,
CComBSTR bAppFriendName, CComBSTR bVDirPath,CComBSTR &bstrConfigPath);
HRESULT DeleteIIs50VDir(CComBSTR bstrType,CComBSTR bADsPath,CComBSTR bVDirName);
HRESULT SetVDirProperty(CComPtr<IADs> pADs, CComBSTR bVDirProperty,CComBSTR bVDirValue);
HRESULT EnumPropertyValue(CComBSTR bstrPath, CComBSTR bstrIsInHerit, Map& mVar);
HRESULT EnumPaths(BOOL bRecursive, CComBSTR bstrPath, Map& mVar);
BOOL EnumIsSet(CComPtr<IISBaseObject> pBase, CComBSTR bstrPath, CComBSTR bstrProperty);
// misc adsi helper methods
HRESULT IIsServerAction(CComBSTR bADsPath,IIsAction action);
HRESULT ParseBSTR(CComBSTR bString,CComBSTR sDelim, int iFirstPiece, int iLastPiece,CComBSTR &pVal);
void AddBackSlashesToString(CComBSTR& bString);
HRESULT GetNextIndex(CComBSTR bstrPath, CComBSTR& pIndex);
HRESULT CheckBindings(CComBSTR bADsPath, CComBSTR bstrNewBindings);
HRESULT CreateBindingString(CComBSTR bstrIP,CComBSTR bstrPort,
CComBSTR bstrHostName,CComBSTR& bstrString);
BOOL IsPositiveInteger(CComBSTR bstrPort);
BOOL StringCompare(CComBSTR bstrString1, CComBSTR bstrString2);
int NumberOfDelims(CComBSTR& bString, CComBSTR sDelim);
// xml helper methods used by SCO action handlers above
HRESULT GetInputParam(CComPtr<IXMLDOMNode> pNode, CComBSTR elementName, CComBSTR& pVal);
HRESULT GetInputAttr(CComPtr<IXMLDOMNode> pNode, CComBSTR elementName, CComBSTR AttributeName, CComBSTR& pVal);
HRESULT PutElement(CComPtr<IXMLDOMNode> pNode, CComBSTR elementName, CComBSTR newVal);
HRESULT AppendElement(CComPtr<IXMLDOMNode> pNode, CComBSTR xmlString,CComPtr<IXMLDOMNode>& pNewNode);
HRESULT GetNodeLength(CComPtr<IXMLDOMNode> pTopNode, CComBSTR elementName, long *lLength);
HRESULT GetElementValueByAttribute(CComPtr<IXMLDOMNode> pTopNode,CComBSTR elementName,
CComBSTR attributeName, CComBSTR& pVal);
};
#endif //__IISSCO50_H_