|
|
/*++
Copyright (c) 1994-2000 Microsoft Corporation
Module Name : pwiz.h
Abstract: IIS Security Wizard
Author: Ronald Meijer (ronaldm) Sergei Antonov (sergeia)
Project: Internet Services Manager
Revision History:
--*/ #ifndef __IISPWIZ_H__
#define __IISPWIZ_H__
class CBlob;
#define NUM_ACCESS_RECORDS (2)
typedef CList<DWORD, DWORD> CDWORDList;
//
// Structure to map a flag to a string ID
//
typedef struct tagFLAGTOSTRING { DWORD dwFlag; UINT nID; BOOL fSet; } FLAGTOSTRING;
class CIISSecurityTemplate : public CMetaProperties /*++
Class Description:
Security template info
Public Interface:
CIISSecurityTemplate : Constructor
ApplySettings : Apply template to destination path ClearSummary : Clear the text summary GenerateSummary : Generate the text summary
--*/ { public: CIISSecurityTemplate( CMetaKey * pKey, LPCTSTR lpszMDPath, BOOL fInherit );
public: //
// Apply settings to destination path
//
virtual HRESULT ApplySettings( BOOL fUseTemplates, CComAuthInfo * pAuthInfo, LPCTSTR lpszMDPath );
//
// Build summary strings from security settings. Clear summary
// before calling GenerateSummary().
//
virtual void GenerateSummary( BOOL fUseTemplates, CComAuthInfo * pAuthInfo, LPCTSTR lpszMDPath ); void ClearSummary() { m_strlSummary.RemoveAll(); } POSITION GetHeadPosition() { return m_strlSummary.GetHeadPosition(); } CString & GetNext(POSITION & pos) { return m_strlSummary.GetNext(pos); }
void AddSummaryString( LPCTSTR szTextItem, int cIndentLevel = 0 );
void AddSummaryString( UINT nID, int cIndentLevel = 0 );
protected: //
// Break out GetAllData() data to data fields
//
virtual void ParseFields();
public: MP_DWORD m_dwAccessPerms; MP_CBlob m_ipl;
protected: //
// The derived class is expected to add its managed properties
// to this list in its constructor
//
CDWORDList m_dlProperties; CStringList m_strlSummary; };
class CFTPSecurityTemplate : public CIISSecurityTemplate { public: CFTPSecurityTemplate( CMetaKey * pKey, LPCTSTR lpszMDPath, BOOL fInherit);
public: virtual HRESULT ApplySettings( BOOL fUseTemplates, CComAuthInfo * pAuthInfo, LPCTSTR lpszMDPath ); virtual HRESULT LoadData(); virtual void GenerateSummary( BOOL fUseTemplates, CComAuthInfo * pAuthInfo, LPCTSTR lpszMDPath ); protected: virtual void ParseFields();
public: MP_BOOL m_fAllowAnonymous; MP_BOOL m_fAnonymousOnly; };
class CWebSecurityTemplate : public CIISSecurityTemplate { public: CWebSecurityTemplate( CMetaKey * pKey, LPCTSTR lpszMDPath, BOOL fInherit);
public: virtual HRESULT ApplySettings( BOOL fUseTemplates, CComAuthInfo * pAuthInfo, LPCTSTR lpszMDPath ); virtual HRESULT LoadData(); virtual void GenerateSummary( BOOL fUseTemplates, CComAuthInfo * pAuthInfo, LPCTSTR lpszMDPath );
protected: virtual void ParseFields();
public: MP_DWORD m_dwAuthentication; MP_DWORD m_dwDirBrowsing; };
//
// Launch security wizard
//
HRESULT RunSecurityWizard( CComAuthInfo * pAuthInfo, CMetaInterface * pInterface, CString& meta_path, UINT nLeftBmpId, UINT nHeadBmpId );
class CIISSecWizSettings : public CObjectPlus /*++
Class Description:
Security wizard settings -- passed around from page to page.
Public Interface:
CIISSecWizSettings : Constructor
--*/ { //
// Constructor/Destructor
//
public: CIISSecWizSettings( IN CComAuthInfo * pAuthInfo, IN LPCTSTR lpszMDPath );
~CIISSecWizSettings();
public: //
// Fetch the metabase properties from the open key
// (could be template or another vroot)
//
HRESULT FetchProperties( IN CMetaKey & mk, IN LPCTSTR lpszPath = NULL, IN BOOL fInherit = FALSE );
//
// Data Members
//
public: BOOL m_fSetAcls; BOOL m_fReplaceAcls; BOOL m_fRedirected; BOOL m_fUseTemplate; DWORD m_dwInstance; DWORD m_AccessMaskAdmin; DWORD m_AccessMaskEveryone; DWORD m_AccessMaskDefault; HRESULT m_hResult; CString m_strPath; CComAuthInfo * m_auth; CString m_strMDPath; CIISSecurityTemplate * m_pist; EXPLICIT_ACCESS m_rgaae[NUM_ACCESS_RECORDS]; };
//
// Permissions Wizard Source Page
//
// <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
class CPWSource : public CIISWizardPage { DECLARE_DYNCREATE(CPWSource)
//
// Construction
//
public: CPWSource(IN CIISSecWizSettings * pSettings = NULL); ~CPWSource();
//
// Dialog Data
//
protected: enum { RADIO_INHERITANCE, RADIO_TEMPLATE, };
//{{AFX_DATA(CPWSource)
enum { IDD = IDD_PERMWIZ_SOURCE }; int m_nSource; //}}AFX_DATA
//
// Overrides
//
protected: // ClassWizard generate virtual function overrides
//{{AFX_VIRTUAL(CPWSource)
public: virtual BOOL OnSetActive(); virtual LRESULT OnWizardNext(); protected: virtual void DoDataExchange(CDataExchange * pDX); //}}AFX_VIRTUAL
//
// Implementation
//
protected: // Generated message map functions
//{{AFX_MSG(CPWSource)
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
void SetControlStates();
private: CIISSecWizSettings * m_pSettings; };
//
// Permissions Wizard Template Page
//
// <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
class CPWTemplate : public CIISWizardPage { DECLARE_DYNCREATE(CPWTemplate)
//
// Construction
//
public: CPWTemplate(IN CIISSecWizSettings * pSettings = NULL); ~CPWTemplate();
//
// Dialog Data
//
protected: //{{AFX_DATA(CPWTemplate)
enum { IDD = IDD_PERMWIZ_TEMPLATE }; CListBox m_list_Templates; CEdit m_edit_Description; //}}AFX_DATA
//
// Overrides
//
protected: // ClassWizard generate virtual function overrides
//{{AFX_VIRTUAL(CPWTemplate)
public: virtual BOOL OnSetActive(); virtual LRESULT OnWizardNext(); protected: virtual void DoDataExchange(CDataExchange * pDX); //}}AFX_VIRTUAL
//
// Implementation
//
protected: // Generated message map functions
//{{AFX_MSG(CPWTemplate)
virtual BOOL OnInitDialog(); afx_msg void OnSelchangeListTemplates(); //}}AFX_MSG
DECLARE_MESSAGE_MAP()
void SetControlStates();
private: CIISSecWizSettings * m_pSettings; };
//
// Permissions Wizard ACL Page
//
// <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
class CPWACL : public CIISWizardPage { DECLARE_DYNCREATE(CPWACL)
//
// Construction
//
public: CPWACL(IN CIISSecWizSettings * pSettings = NULL); ~CPWACL();
//
// Dialog Data
//
protected: enum { RADIO_MAXIMUM, RADIO_MINIMUM, RADIO_NONE, };
//{{AFX_DATA(CPWACL)
enum { IDD = IDD_PERMWIZ_ACL }; CStatic m_static_Line4; CStatic m_static_Line3; CStatic m_static_Line2; CStatic m_static_Line1; int m_nRadioAclType; //}}AFX_DATA
//
// Overrides
//
protected: // ClassWizard generate virtual function overrides
//{{AFX_VIRTUAL(CPWACL)
public: virtual BOOL OnSetActive(); virtual LRESULT OnWizardNext(); protected: virtual void DoDataExchange(CDataExchange * pDX); //}}AFX_VIRTUAL
//
// Implementation
//
protected: // Generated message map functions
//{{AFX_MSG(CPWACL)
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
void SetControlStates();
private: CIISSecWizSettings * m_pSettings; };
//
// Permissions Wizard Summary Page
//
// <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
class CPWSummary : public CIISWizardPage { DECLARE_DYNCREATE(CPWSummary)
//
// Construction
//
public: CPWSummary(IN CIISSecWizSettings * pSettings = NULL); ~CPWSummary();
//
// Dialog Data
//
protected: //{{AFX_DATA(CPWSummary)
enum { IDD = IDD_PERMWIZ_SUMMARY }; CListBox m_list_Summary; //}}AFX_DATA
//
// Overrides
//
protected: // ClassWizard generate virtual function overrides
//{{AFX_VIRTUAL(CPWSummary)
public: virtual BOOL OnSetActive(); virtual LRESULT OnWizardNext(); protected: virtual void DoDataExchange(CDataExchange * pDX); //}}AFX_VIRTUAL
//
// Implementation
//
protected: // Generated message map functions
//{{AFX_MSG(CPWSummary)
virtual BOOL OnInitDialog(); //}}AFX_MSG
DECLARE_MESSAGE_MAP()
void SetControlStates(); void GenerateAclSummary(); void DisplaySummary();
HRESULT ApplyACLSToFiles();
HRESULT SetPermToChildren( IN CString& FileName, IN SECURITY_INFORMATION si, IN PACL pDacl, IN PACL pSacl );
private: CIISSecWizSettings * m_pSettings; };
#endif // __IISPWIZ_H__
|