/////////////////////////////////////////////////////////////////////////// // // Copyright(C) 1997-1998 Microsoft Corporation all rights reserved. // // Module: sdo.h // // Project: Everest // // Description: IAS Server Data Object Declaration // // Author: TLP 1/23/98 // // When Who What // ---- --- ---- // 2/28/98 TLP Prepare for IDataStore2 // 8/24/98 SEB MS-CHAP handler moved to NTSamAuthentication. // /////////////////////////////////////////////////////////////////////////// #ifndef __IAS_SDO_H_ #define __IAS_SDO_H_ #include "resource.h" #include #include #include #include #include "sdoproperty.h" #include #include #include using namespace std; ///////////////////////////////////////////////////////////////////////////// // Enumeration class definition ///////////////////////////////////////////////////////////////////////////// typedef CComEnum< IEnumVARIANT, &__uuidof(IEnumVARIANT), VARIANT, _Copy, CComSingleThreadModel > EnumVARIANT; ////////////////////////// // Tracing Flags ///////////////////////// // #define SDO_TRACE_VERBOSE #ifdef SDO_TRACE_VERBOSE #define SDO_TRACE_VERBOSE_0(msg) IASTracePrintf(msg) #define SDO_TRACE_VERBOSE_1(msg,param1) IASTracePrintf(msg,param1) #define SDO_TRACE_VERBOSE_2(msg,param1,param2) IASTracePrintf(msg,param1,param2) #define SDO_TRACE_VERBOSE_3(msg,param1,param2,param3) IASTracePrintf(msg,param1,param2,param3) #else #define SDO_TRACE_VERBOSE_0(msg) #define SDO_TRACE_VERBOSE_1(msg,param1) #define SDO_TRACE_VERBOSE_2(msg,param1,param2) #define SDO_TRACE_VERBOSE_3(msg,param1,param2,param3) #endif ////////////////////////////////////// // IAS Policy Registry Key #define IAS_POLICY_REG_KEY L"SYSTEM\\CurrentControlSet\\Services\\RemoteAccess\\Policy" ///////////////////////////////////////////////// // Well - Known names of data store entities #define SDO_STOCK_PROPERTY_CLASS L"class" #define SDO_STOCK_PROPERTY_NAME L"name" #define SDO_STOCK_PROPERTY_CLASS_ID L"Component Prog Id" ///////////////////////////////////////////// // IAS Service Data Store Type Registry Value #define IAS_DATASTORE_TYPE L"DataStoreType" ////////////////////////////// // Data Store Object Names // #define DS_OBJECT_CLIENTS L"Clients" #define DS_OBJECT_SERVICE L"Microsoft Internet Authentication Service" #define DS_OBJECT_PROFILES L"RadiusProfiles" #define DS_OBJECT_POLICIES L"NetworkPolicy" #define DS_OBJECT_PROTOCOLS L"Protocols" #define DS_OBJECT_AUDITORS L"Auditors" #define DS_OBJECT_REQUESTHANDLERS L"RequestHandlers" #define DS_OBJECT_VENDORS L"Vendors" #define DS_OBJECT_RADIUSGROUPS L"RADIUS Server Groups" #define DS_OBJECT_PROXY_POLICIES L"Proxy Policies" #define DS_OBJECT_PROXY_PROFILES L"Proxy Profiles" /////////////////// // Record Set Names // #define RECORD_SET_DICTIONARY_ATTRIBUTES L"Attributes" #define RECORD_SET_DICTIONARY_ENUMERATORS L"Enumerators" /////////////////////////// // Class Names and Prog IDs // #define SDO_CLASS_NAME_ATTRIBUTE L"Attribute" #define SDO_CLASS_NAME_ATTRIBUTE_VALUE L"AttributeValue" #define SDO_CLASS_NAME_CLIENT L"Client" #define SDO_CLASS_NAME_CONDITION L"Condition" #define SDO_CLASS_NAME_PROFILE L"msRADIUSProfile" // ADSI Class #define SDO_CLASS_NAME_POLICY L"msNetworkPolicy" // ADSI Class #define SDO_CLASS_NAME_USER L"user" // ADSI Class #define SDO_CLASS_NAME_DICTIONARY L"Dictionary" #define SDO_CLASS_NAME_SERVICE L"Service" #define SDO_CLASS_NAME_COMPONENT L"Component" #define SDO_CLASS_NAME_VENDOR L"Vendor" #define SDO_PROG_ID_ATTRIBUTE L"IAS.SdoAttribute" #define SDO_PROG_ID_ATTRIBUTE_VALUE L"IAS.SdoAttributeValue" #define SDO_PROG_ID_CLIENT L"IAS.SdoClient" #define SDO_PROG_ID_CONDITION L"IAS.SdoCondition" #define SDO_PROG_ID_PROFILE L"IAS.SdoProfile" #define SDO_PROG_ID_POLICY L"IAS.SdoPolicy" #define SDO_PROG_ID_USER L"IAS.SdoUser" #define SDO_PROG_ID_DICTIONARY L"IAS.SdoDictionary" #define SDO_PROG_ID_SERVICE L"IAS.SdoServiceIAS" #define SDO_PROG_ID_VENDOR L"IAS.SdoVendor" #define SDO_PROG_ID_RADIUSGROUP L"IAS.SdoRadiusServerGroup" #define SDO_PROG_ID_RADIUSSERVER L"IAS.SdoRadiusServer" // Wrap ATL Multi-Threaded Com Base Class Critical Section // class CSdoLock { public: CSdoLock(CComObjectRootEx& T) throw() : m_theLock(T) { m_theLock.Lock(); } ~CSdoLock() throw() { m_theLock.Unlock(); } protected: CComObjectRootEx& m_theLock; }; ///////////////////////////////////////////////////////////////////////////// // Class: CSdo // // Description: All SDOs that export ISdo inherit from this class ///////////////////////////////////////////////////////////////////////////// class ATL_NO_VTABLE CSdo : public CComObjectRootEx, public IDispatchImpl { public: ////////////////////////////////////////////////////////////////////////// CSdo(); ////////////////////////////////////////////////////////////////////////// virtual ~CSdo(); ////////////////////////////////////////////////////////////////////////// HRESULT InternalInitialize( /*[in]*/ LPCWSTR lpszSdoName, /*[in]*/ LPCWSTR lpszSdoProgId, /*[in]*/ ISdoMachine* pSdoMachine, /*[in]*/ IDataStoreObject* pDSObject, /*[in]*/ ISdoCollection* pParent, /*[in]*/ bool fInitNew ) throw(); ////////////////////////////////////////////////////////////////////////// HRESULT InternalInitialize( /*[in]*/ LPCWSTR lpszSdoName, /*[in]*/ LPCWSTR lpszSdoProgId, /*[in]*/ ISdoSchema* pSdoSchema, /*[in]*/ IDataStoreObject* pDSObject, /*[in]*/ ISdoCollection* pParent, /*[in]*/ bool fInitNew ) throw(); ////////////////// // ISdo Interface ////////////////// ////////////////////////////////////////////////////////////////////////// STDMETHOD(GetPropertyInfo)( /*[in]*/ LONG Id, /*[out]*/ IUnknown** ppSdoPropertyInfo ); ////////////////////////////////////////////////////////////////////////// STDMETHOD(GetProperty)( /*[in]*/ LONG Id, /*[out]*/ VARIANT* pValue ); ////////////////////////////////////////////////////////////////////////// STDMETHOD(PutProperty)( /*[in]*/ LONG Id, /*[in]*/ VARIANT* pValue ); ////////////////////////////////////////////////////////////////////////// STDMETHOD(ResetProperty)( /*[in]*/ LONG Id ); ////////////////////////////////////////////////////////////////////////// STDMETHOD(Apply)(void); ////////////////////////////////////////////////////////////////////////// STDMETHOD(Restore)(void); ////////////////////////////////////////////////////////////////////////////// STDMETHOD(get__NewEnum)( /*[out]*/ IUnknown** pEnumVARIANT // Property Enumerator ); protected: ////////////////////////////////////////////////////////////////////////// virtual HRESULT FinalInitialize( /*[in]*/ bool fInitNew, /*[in]*/ ISdoMachine* pAttachedMachine ) throw(); ////////////////////////////////////////////////////////////////////////// void InternalShutdown(void) throw(); ////////////////////////////////////////////////////////////////////////// HRESULT LoadProperties() throw(); ////////////////////////////////////////////////////////////////////////// HRESULT SaveProperties() throw(); ////////////////////////////////////////////////////////////////////////// BOOL IsSdoInitialized(void) const throw() { return m_fSdoInitialized; } ////////////////////////////////////////////////////////////////////////// void NoPersist(void) throw(); ////////////////////////////////////////////////////////////////////////// virtual HRESULT InitializeProperty(LONG lPropertyId) throw() { return S_OK; } ////////////////////////////////////////////////////////////////////////// HRESULT GetPropertyInternal( /*[in]*/ LONG lPropertyId, /*[in]*/ VARIANT* pValue ) throw(); ////////////////////////////////////////////////////////////////////////// HRESULT PutPropertyInternal( /*[in]*/ LONG lPropertyId, /*[in]*/ VARIANT* pValue ) throw(); ////////////////////////////////////////////////////////////////////////// HRESULT ChangePropertyDefaultInternal( /*[in]*/ LONG lPropertyId, /*[in]*/ VARIANT* pValue ) throw(); ////////////////////////////////////////////////////////////////////////// HRESULT InitializeCollection( LONG CollectionPropertyId, LPCWSTR lpszCreateClassId, ISdoMachine* pSdoMachine, IDataStoreContainer* pDSContainer, size_t maxSize = INFINITE ) throw(); ////////////////////////////////////////////////////////////////////////// virtual HRESULT Load(void) throw(); ////////////////////////////////////////////////////////////////////////// virtual HRESULT Save(void) throw(); ////////////////////////////////////////////////////////////////////////// virtual HRESULT ValidateProperty( /*[in]*/ PSDOPROPERTY pProperty, /*[in]*/ VARIANT* pValue ) throw(); ////////////////////////////////////////////////////////////////////////// typedef map PropertyMap; typedef PropertyMap::iterator PropertyMapIterator; // This SDO's property map PropertyMap m_PropertyMap; // Parent object ISdoCollection* m_pParent; // Data store object into which this SDO is persisted IDataStoreObject* m_pDSObject; private: CSdo(const CSdo& rhs); CSdo& operator = (CSdo& rhs); ///////////// // Properties ///////////// // Sdo state flag - Set to true once the SDO has been initialized BOOL m_fSdoInitialized; // Persist the object at apply time BOOL m_fPersistOnApply; // Set if object has been persisted (and can therfore be restored) BOOL m_fIsPersisted; //////////////////// // Private Functions //////////////////// ////////////////////////////////////////////////////////////////////////// void AllocateProperties( /*[in]*/ ISdoClassInfo* pSdoClassInfo ) throw (_com_error); ////////////////////////////////////////////////////////////////////////// void FreeProperties(void) throw(); ////////////////////////////////////////////////////////////////////////// HRESULT GetDatastoreName( /*[in*/ VARIANT* pDSName ) throw(); }; #endif //__IAS_SDO_H_