|
|
/*++
Copyright (c) 1994-1998 Microsoft Corporation
Module Name :
w3sht.h
Abstract:
WWW Property Sheet Definitions
Author:
Ronald Meijer (ronaldm)
Project:
Internet Services Manager
Revision History:
--*/
#ifndef __W3SHT_H__
#define __W3SHT_H__
#include "shts.h"
extern const LPCTSTR g_cszSvc;
//
// Helper function to determine if SSL is installed
// and enabled on the given server
//
DWORD IsSSLEnabledOnServer( IN CComAuthInfo * pAuthInfo, OUT BOOL & fInstalled, OUT BOOL & fEnabled );
//
// Helper function to see if a certificate is installed
//
BOOL IsCertInstalledOnServer( IN CComAuthInfo * pAuthInfo, IN LPCTSTR lpszMDPath );
#ifndef LOGGING_ENABLED
#define LOGGING_ENABLED
inline BOOL LoggingEnabled( IN DWORD dwLogType ) { return (dwLogType == MD_LOG_TYPE_ENABLED); } #endif
#ifndef ENABLE_LOGGING
#define ENABLE_LOGGING
inline void EnableLogging( OUT DWORD & dwLogType, IN BOOL fEnabled = TRUE ) { dwLogType = fEnabled ? MD_LOG_TYPE_ENABLED : MD_LOG_TYPE_DISABLED; } #endif
//
// Bandwidth definitions
//
#define INFINITE_BANDWIDTH (0xffffffff)
#define INFINITE_CPU_RAW (0xffffffff)
#define KILOBYTE (1024L)
#define MEGABYTE (1024L * KILOBYTE)
#define DEF_BANDWIDTH (1 * MEGABYTE)
#define CPU_THROTTLING_FACTOR (1000)
#define DEFAULT_CPU_PERCENTAGE (10L)
//
// Some sanity values on max connections
//
#define INITIAL_MAX_CONNECTIONS ( 1000L)
// TODO: Check these limits
//#define UNLIMITED_CONNECTIONS (2000000000L)
#define UNLIMITED_CONNECTIONS (0xFFFFFFFF)
#define MAX_MAX_CONNECTIONS (UNLIMITED_CONNECTIONS - 1L)
#define MAX_TIMEOUT (0x7FFFFFFF)
class CW3InstanceProps : public CInstanceProps /*++
Class Description: WWW Instance properties class
Public Interface:
CW3InstanceProps : Constructor
--*/ { public: CW3InstanceProps( IN CComAuthInfo * pAuthInfo, IN LPCTSTR lpszMDPath );
public: //
// Write Data if dirty
//
virtual HRESULT WriteDirtyProps();
protected: //
// Break out GetAllData() data to data fields
//
virtual void ParseFields();
public: //
// Service Page
//
MP_DWORD m_dwLogType; MP_CILong m_nMaxConnections; MP_CILong m_nConnectionTimeOut; MP_CStringListEx m_strlSecureBindings;
//
// Performance Page
//
MP_int m_nServerSize; MP_BOOL m_fUseKeepAlives; MP_BOOL m_fLogUTF8; MP_BOOL m_fEnableCPUAccounting; MP_DWORD m_dwCPULimitLogEventRaw; MP_DWORD m_dwCPULimitPriorityRaw; MP_DWORD m_dwCPULimitPauseRaw; MP_DWORD m_dwCPULimitProcStopRaw; MP_CILong m_dwMaxBandwidth; MP_CILong m_dwMaxGlobalBandwidth; BOOL m_fUninstallPSHED;
//
// Operators Page
//
MP_CBlob m_acl;
//
// Root dir page
//
//MP_BOOL m_fFrontPage;
//
// Default Site page
//
MP_DWORD m_dwDownlevelInstance;
//
// Certificate and CTL information
//
MP_CBlob m_CertHash; MP_CString m_strCertStoreName; MP_CString m_strCTLIdentifier; MP_CString m_strCTLStoreName; };
class CW3DirProps : public CChildNodeProps /*++
Class Description:
WWW Directory Properties
Public Interface:
CW3DirProps : Constructor
--*/ { public: //
// Constructor
//
CW3DirProps( IN CComAuthInfo * pAuthInfo, IN LPCTSTR lpszMDPath );
public: //
// Write Data if dirty
//
virtual HRESULT WriteDirtyProps();
protected: //
// Break out GetAllData() data to data fields
//
virtual void ParseFields();
public: //
// Directory properties page
//
MP_CString m_strUserName; MP_CString m_strPassword; MP_CString m_strDefaultDocument; MP_CString m_strFooter; MP_CMaskedDWORD m_dwDirBrowsing; MP_BOOL m_fDontLog; MP_BOOL m_fEnableFooter; MP_BOOL m_fIndexed;
//
// HTTP Page
//
MP_CString m_strExpiration; MP_CStringListEx m_strlCustomHeaders;
//
// Custom Errors
//
MP_CStringListEx m_strlCustomErrors;
//
// Security page
//
MP_DWORD m_dwAuthFlags; MP_DWORD m_dwSSLAccessPermissions; MP_CString m_strBasicDomain; MP_CString m_strRealm; MP_CString m_strAnonUserName; MP_CString m_strAnonPassword; MP_BOOL m_fPasswordSync; MP_BOOL m_fU2Installed; MP_BOOL m_fUseNTMapper; MP_CBlob m_ipl; };
class CIISFilter : public CObjectPlus /*++
Class Description:
A single filter description
Public Interface:
CIISFilter : Constructors IsInitialized : Check to see if the name is set. Write : Write to the metabase. QueryResult : Query result from metabase read QueryError : Returns error as stored in metabase QueryName : Returns filter name IsLoaded : TRUE if filter is loaded IsUnloaded : TRUE if filter is unloaded IsEnabled : TRUE if filter is enabled Enable : Enable filter IsDirty : TRUE if filter values have changed IsFlaggedForDeletion : TRUE if filter should be deleted --*/ { //
// Constructors/Destructors
//
public: //
// Null Constructor
//
CIISFilter();
//
// Read filter values using provided key
//
CIISFilter( IN CMetaKey * pKey, IN LPCTSTR lpszName );
//
// Copy constructor
//
CIISFilter( IN const CIISFilter & flt );
public: //
// Sorting helper
//
int OrderByPriority( IN const CObjectPlus * pobAccess ) const;
BOOL IsInitialized() const { return !m_strName.IsEmpty(); }
//
// Write using provided key
//
HRESULT Write(CMetaKey * pKey);
public: BOOL IsLoaded() const; BOOL IsUnloaded() const; BOOL IsEnabled() const { return m_fEnabled; } void Enable(BOOL fEnabled = TRUE); DWORD QueryError() const { return m_dwWin32Error; } HRESULT QueryResult() const { return m_hrResult; }
//
// Check to see if this item is marked as dirty
//
BOOL IsDirty() const { return m_fDirty; }
//
// Check to see if this item is flagged for deletion
//
BOOL IsFlaggedForDeletion() const { return m_fFlaggedForDeletion; }
//
// Set/reset the dirty flag
//
void Dirty(BOOL fDirty = TRUE);
//
// Flag this item for deletion
//
void FlagForDeletion();
//
// Get the name of this filter
//
LPCTSTR QueryName() const { return m_strName; }
//
// Meta Values
//
public: int m_nPriority; int m_nOrder; BOOL m_fEnabled; DWORD m_dwState; DWORD m_dwWin32Error; HRESULT m_hrResult; CString m_strName; CString m_strExecutable;
//
// State Values
//
private: BOOL m_fDirty; BOOL m_fFlaggedForDeletion; DWORD m_dwFlags; };
class CIISFilterList : public CMetaKey /*++
Class Description:
A list of filters
Public Interface:
CIISFilterList : Constructor
BeginSearch : Reset the iterator MoreFilters : More items available in the list? GetNextFilter : Get the next item in the list
--*/ { public: CIISFilterList( IN CComAuthInfo * pAuthInfo, IN LPCTSTR lpszMetaPath /*
IN LPCTSTR lpszServerName, IN LPCTSTR lpszService, IN DWORD dwInstance = MASTER_INSTANCE */ );
public: //
// Write out the filter list
//
HRESULT WriteIfDirty();
//
// Acccess Functions
//
public: //DWORD QueryInstance() const { return m_dwInstance; }
BOOL FiltersLoaded() const { return m_fFiltersLoaded; }
//
// Load each filter in turn
//
HRESULT LoadAllFilters();
//
// Filter Access Functions
//
public: //
// Reset the filter list iterator
//
void ResetEnumerator();
int GetCount() const { return (int)m_oblFilters.GetCount(); }
//
// More filters available in the list?
//
BOOL MoreFilters() const { return m_pos != NULL; }
//
// Return position of filter by index
//
POSITION GetFilterPositionByIndex(int nSel);
//
// Iterate to the next filter in the list
//
CIISFilter * GetNextFilter();
//
// Remove filter
//
void RemoveFilter(int nItem);
//
// Add new filter
//
void AddFilter(CIISFilter * pFilter);
//
// Exchange two filters in the list
//
BOOL ExchangePositions( IN int nSel1, IN int nSel2, OUT CIISFilter *& p1, OUT CIISFilter *& p2 );
//
// See if at least one filter is dirty
//
BOOL HasDirtyFilter() const;
//
// Virtual Interface:
//
public: virtual BOOL Succeeded() const { return SUCCEEDED(m_hrResult); } virtual HRESULT QueryResult() const { return m_hrResult; }
protected: //
// Build up order string from component list
//
LPCTSTR BuildFilterOrderString( OUT CString & strFilterOrder );
protected: //
// Seperator string (one character)
//
static const LPCTSTR s_lpszSep;
private: BOOL m_fFiltersLoaded; //DWORD m_dwInstance;
POSITION m_pos; HRESULT m_hrResult; CString m_strFilterOrder; CObListPlus m_oblFilters; };
//
// W3 Property sheet
//
// <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
class CW3Sheet : public CInetPropertySheet { public: CW3Sheet( IN CComAuthInfo * pAuthInfo, IN LPCTSTR lpszMetaPath, IN DWORD dwAttributes, IN CWnd * pParentWnd = NULL, IN LPARAM lParam = 0L, IN LONG_PTR handle = 0L, IN UINT iSelectPage = 0 );
virtual ~CW3Sheet();
public: HRESULT QueryInstanceResult() const; HRESULT QueryDirectoryResult() const; CW3InstanceProps & GetInstanceProperties() { return *m_ppropInst; } CW3DirProps & GetDirectoryProperties() { return *m_ppropDir; } BOOL InCompatibilityMode() const { return m_fCompatMode; }
virtual HRESULT LoadConfigurationParameters(); virtual void FreeConfigurationParameters();
HRESULT EnumAppPools(CMapStringToString& pools); HRESULT SetKeyType(); HRESULT QueryDefaultPoolId(CString& id); enum { SHEET_TYPE_SERVER, SHEET_TYPE_SITE, SHEET_TYPE_VDIR, SHEET_TYPE_DIR, SHEET_TYPE_FILE }; HRESULT SetSheetType(int fSheetType);
protected: virtual void WinHelp(DWORD dwData, UINT nCmd = HELP_CONTEXT);
//{{AFX_MSG(CW3Sheet)
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
private: DWORD m_fNew; DWORD m_dwAttributes; BOOL m_fCompatMode; CW3InstanceProps * m_ppropInst; CW3DirProps * m_ppropDir; int m_fSheetType; };
//
// Inline Expansion
//
// <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
inline BOOL CIISFilter::IsLoaded() const { return m_dwState == MD_FILTER_STATE_LOADED; }
inline BOOL CIISFilter::IsUnloaded() const { return m_dwState == MD_FILTER_STATE_UNLOADED; }
inline void CIISFilter::Enable( IN BOOL fEnabled ) { m_fEnabled = fEnabled; }
inline void CIISFilter::Dirty( IN BOOL fDirty ) { m_fDirty = fDirty; }
inline void CIISFilter::FlagForDeletion() { m_fFlaggedForDeletion = TRUE; }
inline void CIISFilterList::ResetEnumerator() { m_pos = m_oblFilters.GetHeadPosition(); }
inline CIISFilter * CIISFilterList::GetNextFilter() { return (CIISFilter *)m_oblFilters.GetNext(m_pos); }
inline void CIISFilterList::RemoveFilter(int nItem) { m_oblFilters.RemoveIndex(nItem); }
inline void CIISFilterList::AddFilter(CIISFilter * pFilter) { m_oblFilters.AddTail(pFilter); }
//
// BUGBUG: Returns S_OK if object not present
//
inline HRESULT CW3Sheet::QueryInstanceResult() const { return m_ppropInst ? m_ppropInst->QueryResult() : S_OK; }
inline HRESULT CW3Sheet::QueryDirectoryResult() const { return m_ppropDir ? m_ppropDir->QueryResult() : S_OK; }
#endif // __W3SHT_H__
|