/*++ Copyright (c) 1994-2001 Microsoft Corporation Module Name : app_sheet.h Abstract: Application property sheet relevant classes Author: Sergei Antonov (sergeia) Project: Internet Services Manager Revision History: --*/ #ifndef _APP_SHEET_H #define _APP_SHEET_H #include #include #include "inetprop.h" #define CACHE_UNLIM_MAX 999999 typedef struct _Mapping { CString ext; CString path; CString verbs; DWORD flags; _Mapping() { } _Mapping(const struct _Mapping& m) { ext = m.ext; path = m.path; verbs = m.verbs; flags = m.flags; } _Mapping(const CString& buf); LPCTSTR ToString(CString& buf) const; } Mapping; class CApplicationProps : public CMetaProperties { public: CApplicationProps(CComAuthInfo * pAuthInfo, LPCTSTR meta_path, BOOL fInherit = TRUE); CApplicationProps(CMetaInterface * pInterface, LPCTSTR meta_path, BOOL fInherit = TRUE); CApplicationProps(CMetaKey * pInterface, LPCTSTR meta_path, BOOL fInherit = TRUE); virtual HRESULT WriteDirtyProps(); WORD MajorVersion() { return LOWORD(m_dwVersion); } WORD MinorVersion() { return HIWORD(m_dwVersion); } protected: virtual void ParseFields(); HRESULT LoadVersion(); void LoadInitialMappings(CStringListEx& list); BOOL InitialDataChanged(CStringListEx& list); public: CString m_ServerName; CString m_UserName; CStrPassword m_UserPassword; CString m_MetaPath; CString m_HelpPath; BOOL m_fIsLocal; BOOL m_fCompatMode; BOOL m_Dirty; MP_DWORD m_AppIsolated; //MD_APP_ISOLATED // CAspMain MP_BOOL m_EnableSession; //MD_ASP_ALLOWSESSIONSTATE MP_BOOL m_EnableBuffering; //MD_ASP_BUFFERINGON MP_BOOL m_EnableParents; //MD_ASP_ENABLEPARENTPATHS MP_DWORD m_SessionTimeout; //MD_ASP_SESSIONTIMEOUT MP_DWORD m_ScriptTimeout; //MD_ASP_SCRIPTTIMEOUT MP_CString m_Languages; //MD_ASP_SCRIPTLANGUAGE MP_DWORD m_AspServiceFlag; MP_CString m_AspSxsName; // CAppMappingPageBase MP_BOOL m_CacheISAPI; //MD_CACHE_EXTENSIONS MP_CStringListEx m_strlMappings; //MD_SCRIPT_MAPS BOOL m_fMappingsInherited; std::vector m_initData; MP_BOOL m_ServerDebug; //MD_ASP_ENABLESERVERDEBUG MP_BOOL m_ClientDebug; //MD_ASP_ENABLECLIENTDEBUG MP_BOOL m_SendAspError; //MD_ASP_SCRIPTERRORSSENTTOBROWSER MP_CString m_DefaultError; //MD_ASP_SCRIPTERRORMESSAGE BOOL m_NoCache; BOOL m_UnlimCache; BOOL m_LimCache; BOOL m_LimDiskCache; MP_DWORD m_AspScriptFileCacheSize; MP_DWORD m_AspMaxDiskTemplateCacheFiles; int m_LimCacheDiskSize; int m_LimCacheMemSize; MP_CString m_DiskCacheDir; //MD_ASP_DISKTEMPLATECACHEDIRECTORY MP_DWORD m_ScriptEngCacheMax; //MD_ASP_SCRIPTENGINECACHEMAX DWORD m_dwVersion; // CAppPropSheet * m_pSheet; }; class CAppPropSheet : public CInetPropertySheet { DECLARE_DYNAMIC(CAppPropSheet) public: CAppPropSheet( CComAuthInfo * pAuthInfo, LPCTSTR lpszMetaPath, CWnd * pParentWnd = NULL, LPARAM lParam = 0L, LPARAM lParamParent = 0L, UINT iSelectPage = 0 ); virtual ~CAppPropSheet(); public: // The following methods have predefined names to be compatible with // BEGIN_META_INST_READ and other macros. HRESULT QueryInstanceResult() const { return m_pprops ? m_pprops->QueryResult() : S_OK; } CApplicationProps & GetInstanceProperties() { return *m_pprops; } virtual HRESULT LoadConfigurationParameters(); virtual void FreeConfigurationParameters(); //{{AFX_MSG(CAppPropSheet) //}}AFX_MSG DECLARE_MESSAGE_MAP() private: CApplicationProps * m_pprops; }; class CAspMainPage : public CInetPropertyPage { DECLARE_DYNCREATE(CAspMainPage) public: CAspMainPage(CInetPropertySheet * pSheet = NULL); virtual ~CAspMainPage(); protected: enum {IDD = IDD_ASPMAIN}; virtual BOOL OnInitDialog(); afx_msg void OnItemChanged(); afx_msg void OnSxs(); //}}AFX_MSG DECLARE_MESSAGE_MAP() protected: BOOL m_EnableSession; BOOL m_EnableBuffering; BOOL m_EnableParents; DWORD m_SessionTimeout; DWORD m_ScriptTimeout; CString m_Languages; DWORD m_AspServiceFlag; BOOL m_AspEnableSxs; CString m_AspSxsName; CEdit m_LanguagesCtrl; //{{AFX_VIRTUAL(CAppPoolGeneral) virtual void DoDataExchange(CDataExchange * pDX); //}}AFX_VIRTUAL virtual void SetControlsState(); virtual HRESULT FetchLoadedValues(); virtual HRESULT SaveInfo(); }; BOOL SortMappings(CListCtrl& list, int col, int order); class CAppMappingPageBase : public CInetPropertyPage { public: CAppMappingPageBase(DWORD id, CInetPropertySheet * pSheet); virtual ~CAppMappingPageBase(); enum { COL_EXTENSION = 0, COL_PATH, COL_EXCLUSIONS }; protected: virtual OnNotify(WPARAM wParam, LPARAM lParam, LRESULT* pResult); virtual BOOL OnInitDialog(); afx_msg void OnAdd(); afx_msg void OnEdit(); afx_msg void OnRemove(); afx_msg BOOL OnDblClickList(NMHDR* pNMHDR, LRESULT* pResult); afx_msg BOOL OnItemChanged(NMHDR* pNMHDR, LRESULT* pResult); afx_msg BOOL OnKeyDown(NMHDR* pNMHDR, LRESULT* pResult); afx_msg BOOL OnColumnClick(NMHDR* pNMHDR, LRESULT* pResult); afx_msg void OnDlgItemChanged(); //}}AFX_MSG DECLARE_MESSAGE_MAP() protected: BOOL m_CacheISAPI; CListCtrl m_list; CStringListEx m_strlMappings; int m_sortCol; int m_sortOrder; //{{AFX_VIRTUAL(CAppMappingPageBase) virtual void DoDataExchange(CDataExchange * pDX); //}}AFX_VIRTUAL virtual HRESULT FetchLoadedValues(); virtual HRESULT SaveInfo(); virtual void SetControlsState(); void RemoveSelected(CListCtrl& lst); }; class CAppMappingPage_iis5 : public CAppMappingPageBase { public: CAppMappingPage_iis5(CInetPropertySheet * pSheet = NULL) : CAppMappingPageBase(IDD, pSheet) { } virtual ~CAppMappingPage_iis5() { } protected: enum {IDD = IDD_APPMAP_IIS5}; DECLARE_MESSAGE_MAP() }; class CAppMappingPage : public CAppMappingPageBase { public: CAppMappingPage(CInetPropertySheet * pSheet = NULL) : CAppMappingPageBase(IDD, pSheet) { } virtual ~CAppMappingPage() { } protected: enum {IDD = IDD_APPMAP}; CListCtrl m_list_exe; virtual void SetControlsState(); void MoveItem(CListCtrl& lst, int from, int to); virtual BOOL OnInitDialog(); virtual void DoDataExchange(CDataExchange * pDX); virtual OnNotify(WPARAM wParam, LPARAM lParam, LRESULT* pResult); afx_msg void OnInsert(); afx_msg void OnEditExe(); afx_msg void OnRemoveExe(); afx_msg void OnMoveUp(); afx_msg void OnMoveDown(); afx_msg BOOL OnDblClickListExe(NMHDR* pNMHDR, LRESULT* pResult); afx_msg BOOL OnItemChangedExe(NMHDR* pNMHDR, LRESULT* pResult); afx_msg BOOL OnKeyDownExe(NMHDR* pNMHDR, LRESULT* pResult); DECLARE_MESSAGE_MAP() }; ////////////////////////////////////////////////////////// class CEditMapBase : public CDialog { public: CEditMapBase(UINT id, CWnd * pParent) : CDialog(id, pParent) { m_pMaps = NULL; // IDS_EXECUTABLE_DLL_MASK or IDS_EXECUTABLE_EXE_DLL_MASK m_IDS_BROWSE_BUTTON_MASK = IDS_EXECUTABLE_DLL_MASK; } public: CString m_exec; CString m_exec_init; BOOL m_file_exists; BOOL m_new, m_exec_valid, m_star_maps; BOOL m_bIsLocal; DWORD m_flags; CListCtrl * m_pMaps; UINT_PTR m_IDS_BROWSE_BUTTON_MASK; protected: virtual BOOL OnInitDialog(); virtual void DoDataExchange(CDataExchange * pDX); BOOL SetControlsState(); protected: afx_msg void OnButtonBrowse(); afx_msg void OnExecutableChanged(); DECLARE_MESSAGE_MAP() }; class CEditMap : public CEditMapBase { public: CEditMap(CWnd * pParent = NULL) : CEditMapBase(CEditMap::IDD, pParent) { m_star_maps = FALSE; m_IDS_BROWSE_BUTTON_MASK = IDS_EXECUTABLE_EXE_DLL_MASK; } public: CString m_ext; int m_verbs_index; CString m_verbs; BOOL m_has_global_interceptor; BOOL m_script_engine; protected: enum { IDD = IDD_EDITMAP }; virtual BOOL OnInitDialog(); virtual void DoDataExchange(CDataExchange * pDX); BOOL SetControlsState(); protected: afx_msg void OnExtChanged(); afx_msg void OnVerbs(); afx_msg void OnVerbsChanged(); afx_msg void OnHelp(); DECLARE_MESSAGE_MAP(); }; class CEditStarMap : public CEditMapBase { public: CEditStarMap(CWnd * pParent) : CEditMapBase(CEditStarMap::IDD, pParent) { m_star_maps = TRUE; m_IDS_BROWSE_BUTTON_MASK = IDS_EXECUTABLE_DLL_MASK; } protected: enum { IDD = IDD_EDIT_STARMAP }; afx_msg void OnHelp(); DECLARE_MESSAGE_MAP(); }; class CAppCacheBase : public CInetPropertyPage { public: CAppCacheBase(DWORD id, CInetPropertySheet * pSheet); virtual ~CAppCacheBase(); protected: virtual BOOL OnInitDialog(); afx_msg void OnItemChanged(); DECLARE_MESSAGE_MAP() protected: virtual void DoDataExchange(CDataExchange * pDX); virtual HRESULT FetchLoadedValues() { return S_OK; } virtual HRESULT SaveInfo() { return S_OK; } virtual void SetControlsState(); protected: BOOL m_NoCache, m_UnlimCache, m_LimCache; CSpinButtonCtrl m_ScriptEngCacheMaxSpin; DWORD m_ScriptEngCacheMax; }; class CAppCache : public CAppCacheBase { public: CAppCache(CInetPropertySheet * pSheet); virtual ~CAppCache(); int BrowseForFolderCallback(HWND hwnd, UINT uMsg, LPARAM lParam); protected: virtual BOOL OnInitDialog(); afx_msg void OnNoCache(); afx_msg void OnUnlimitedCache(); afx_msg void OnLimitedCache(); afx_msg void OnUnlimitedDiskCache(); afx_msg void OnLimitedDiskCache(); afx_msg void OnBrowse(); // afx_msg void OnItemChanged(); DECLARE_MESSAGE_MAP() protected: virtual void DoDataExchange(CDataExchange * pDX); virtual void SetControlsState(); virtual HRESULT FetchLoadedValues(); virtual HRESULT SaveInfo(); protected: enum { IDD = IDD_CACHE_OPT }; BOOL m_LimDiskCache; DWORD m_LimCacheDiskSize; DWORD m_LimCacheMemSize; CString m_DiskCacheDir; LPTSTR m_pPathTemp; CSpinButtonCtrl m_LimCacheMemSizeSpin; CSpinButtonCtrl m_LimCacheDiskSizeSpin; }; class CAppCache_iis5 : public CAppCacheBase { public: CAppCache_iis5(CInetPropertySheet * pSheet); virtual ~CAppCache_iis5(); protected: virtual BOOL OnInitDialog(); afx_msg void OnNoCache(); afx_msg void OnUnlimitedCache(); afx_msg void OnLimitedCache(); afx_msg void OnItemChanged(); DECLARE_MESSAGE_MAP() protected: virtual void DoDataExchange(CDataExchange * pDX); virtual void SetControlsState(); virtual HRESULT FetchLoadedValues(); virtual HRESULT SaveInfo(); protected: enum { IDD = IDD_CACHE_OPT_IIS5 }; int m_AspScriptFileCacheSize; CSpinButtonCtrl m_AspScriptFileCacheSizeSpin; }; class CAspDebug : public CInetPropertyPage { DECLARE_DYNCREATE(CAspDebug) public: CAspDebug(CInetPropertySheet * pSheet = NULL); virtual ~CAspDebug(); protected: enum {IDD = IDD_ASPDEBUG}; virtual BOOL OnInitDialog(); afx_msg void OnItemChanged(); afx_msg void OnChangedError(); //}}AFX_MSG DECLARE_MESSAGE_MAP() protected: BOOL m_ServerDebug; BOOL m_ClientDebug; BOOL m_SendAspError; CString m_DefaultError; //{{AFX_VIRTUAL(CAspDebug) virtual void DoDataExchange(CDataExchange * pDX); //}}AFX_VIRTUAL virtual HRESULT FetchLoadedValues(); virtual HRESULT SaveInfo(); }; #endif //_APP_SHEET_H