325 lines
9.1 KiB
C++
325 lines
9.1 KiB
C++
|
//
|
||
|
//
|
||
|
//
|
||
|
#include "stdafx.h"
|
||
|
#include "resource.h"
|
||
|
#include "PropSheet.h"
|
||
|
#include <common.h>
|
||
|
|
||
|
HRESULT
|
||
|
CMappings::Load(CMetaKey * pKey)
|
||
|
{
|
||
|
CStringListEx listData;
|
||
|
HRESULT hr = pKey->QueryValue(MD_SCRIPT_MAPS, listData);
|
||
|
if (SUCCEEDED(hr))
|
||
|
{
|
||
|
CStringListEx::iterator i;
|
||
|
CString buf;
|
||
|
for (i = listData.begin(); i != listData.end(); i++)
|
||
|
{
|
||
|
buf = *i;
|
||
|
Mapping map;
|
||
|
int len = buf.GetLength();
|
||
|
int pos = buf.find(_T(','));
|
||
|
ASSERT(pos != CString::npos);
|
||
|
map.ext = buf.Left(pos);
|
||
|
|
||
|
int pos1 = buf.find(_T(','), ++pos);
|
||
|
ASSERT(pos1 != CString::npos);
|
||
|
map.path = buf.Mid(pos, pos1 - pos);
|
||
|
|
||
|
pos = pos1;
|
||
|
pos1 = buf.find(_T(','), ++pos);
|
||
|
if (pos1 == CString::npos)
|
||
|
{
|
||
|
map.flags = StrToInt(buf.Right(len - pos));
|
||
|
map.verbs.LoadString(_Module.GetResourceInstance(), IDS_ALL);
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
map.flags = StrToInt(buf.Mid(pos, pos1 - pos));
|
||
|
map.verbs = buf.Right(len - pos1 - 1);
|
||
|
}
|
||
|
insert(begin(), value_type(map.ext, map));
|
||
|
}
|
||
|
}
|
||
|
return hr;
|
||
|
}
|
||
|
|
||
|
HRESULT
|
||
|
CMappings::Save(CMetaKey * pKey)
|
||
|
{
|
||
|
CStringListEx listData;
|
||
|
CMappings::iterator i;
|
||
|
Mapping map;
|
||
|
TCHAR buf[MAX_PATH * 2];
|
||
|
TCHAR num[12];
|
||
|
for (i = begin(); i != end(); i++)
|
||
|
{
|
||
|
map = (*i).second;
|
||
|
StrCpy(buf, map.ext);
|
||
|
StrCat(buf, _T(","));
|
||
|
StrCat(buf, map.path);
|
||
|
StrCat(buf, _T(","));
|
||
|
wsprintf(num, _T("%u"), map.flags);
|
||
|
StrCat(buf, num);
|
||
|
if (!map.verbs.IsEmpty())
|
||
|
{
|
||
|
StrCat(buf, _T(","));
|
||
|
StrCat(buf, map.verbs);
|
||
|
}
|
||
|
listData.PushBack(buf);
|
||
|
buf[0] = 0;
|
||
|
}
|
||
|
HRESULT hr;
|
||
|
VERIFY(SUCCEEDED(hr = pKey->SetValue(MD_SCRIPT_MAPS, listData)));
|
||
|
return hr;
|
||
|
}
|
||
|
|
||
|
HRESULT
|
||
|
CAppData::Load()
|
||
|
{
|
||
|
ASSERT(!m_MetaPath.IsEmpty());
|
||
|
CComAuthInfo auth(m_ServerName, m_UserName, m_UserPassword);
|
||
|
CMetaKey mk(&auth, m_MetaPath, METADATA_PERMISSION_READ);
|
||
|
HRESULT hr = mk.QueryResult();
|
||
|
if (FAILED(hr))
|
||
|
return hr;
|
||
|
do
|
||
|
{
|
||
|
CString buf;
|
||
|
if (FAILED(hr = mk.QueryValue(MD_APP_ISOLATED, m_AppIsolated)))
|
||
|
break;
|
||
|
if (FAILED(hr = mk.QueryValue(MD_ASP_ALLOWSESSIONSTATE, m_EnableSession)))
|
||
|
break;
|
||
|
if (FAILED(hr = mk.QueryValue(MD_ASP_BUFFERINGON, m_EnableBuffering)))
|
||
|
break;
|
||
|
if (FAILED(hr = mk.QueryValue(MD_ASP_ENABLEPARENTPATHS, m_EnableParents)))
|
||
|
break;
|
||
|
if (FAILED(hr = mk.QueryValue(MD_ASP_SESSIONTIMEOUT, m_SessionTimeout)))
|
||
|
break;
|
||
|
if (FAILED(hr = mk.QueryValue(MD_ASP_SCRIPTTIMEOUT, m_ScriptTimeout)))
|
||
|
break;
|
||
|
if (FAILED(hr = mk.QueryValue(MD_ASP_SCRIPTLANGUAGE, buf)))
|
||
|
break;
|
||
|
StrCpy(m_Languages, buf);
|
||
|
//
|
||
|
if (FAILED(hr = mk.QueryValue(MD_ASP_ENABLESERVERDEBUG, m_ServerDebug)))
|
||
|
break;
|
||
|
if (FAILED(hr = mk.QueryValue(MD_ASP_ENABLECLIENTDEBUG, m_ClientDebug)))
|
||
|
break;
|
||
|
if (FAILED(hr = mk.QueryValue(MD_ASP_SCRIPTERRORSSENTTOBROWSER, m_SendAspError)))
|
||
|
break;
|
||
|
if (FAILED(hr = mk.QueryValue(MD_ASP_SCRIPTERRORMESSAGE, buf)))
|
||
|
break;
|
||
|
StrCpy(m_DefaultError, buf);
|
||
|
//
|
||
|
if (FAILED(hr = m_Mappings.Load(&mk)))
|
||
|
break;
|
||
|
if (FAILED(hr = mk.QueryValue(MD_CACHE_EXTENSIONS, m_CacheISAPI)))
|
||
|
break;
|
||
|
//
|
||
|
if (FAILED(hr = mk.QueryValue(MD_ASP_LOGERRORREQUESTS, m_LogFailures)))
|
||
|
break;
|
||
|
if (FAILED(hr = mk.QueryValue(MD_ASP_EXCEPTIONCATCHENABLE, m_DebugExcept)))
|
||
|
break;
|
||
|
if (FAILED(hr = mk.QueryValue(MD_SCRIPT_TIMEOUT, m_CgiTimeout)))
|
||
|
break;
|
||
|
//
|
||
|
if (FAILED(hr = mk.QueryValue(MD_APP_PERIODIC_RESTART_TIME, m_Timespan)))
|
||
|
{
|
||
|
m_Timespan = 0;
|
||
|
hr = S_OK;
|
||
|
// break;
|
||
|
}
|
||
|
m_RecycleTimespan = (m_Timespan != 0);
|
||
|
if (FAILED(hr = mk.QueryValue(MD_APP_PERIODIC_RESTART_REQUESTS, m_Requests)))
|
||
|
{
|
||
|
m_Requests = 0;
|
||
|
hr = S_OK;
|
||
|
// break;
|
||
|
}
|
||
|
m_RecycleRequest = (m_Requests != 0);
|
||
|
if (FAILED(hr = mk.QueryValue(MD_APP_PERIODIC_RESTART_SCHEDULE, m_Timers)))
|
||
|
{
|
||
|
hr = S_OK;
|
||
|
// break;
|
||
|
}
|
||
|
m_RecycleTimer = (m_Timers.size() != 0);
|
||
|
//
|
||
|
if (FAILED(hr = mk.QueryValue(MD_ASP_DISKTEMPLATECACHEDIRECTORY, buf)))
|
||
|
{
|
||
|
VERIFY(0 != ExpandEnvironmentStrings(
|
||
|
_T("%windir%\\system32\\inetsrv\\ASP Compiled Templates"),
|
||
|
m_DiskCacheDir, MAX_PATH));
|
||
|
hr = S_OK;
|
||
|
}
|
||
|
else
|
||
|
StrCpy(m_DiskCacheDir, buf);
|
||
|
if (FAILED(hr = mk.QueryValue(MD_ASP_SCRIPTENGINECACHEMAX, m_ScriptEngCacheMax)))
|
||
|
break;
|
||
|
m_NoCache = m_UnlimCache = m_LimCache = FALSE;
|
||
|
if (FAILED(hr = mk.QueryValue(MD_ASP_MAXDISKTEMPLATECACHEFILES, m_TotalCacheSize)))
|
||
|
{
|
||
|
m_TotalCacheSize = -1;
|
||
|
break;
|
||
|
}
|
||
|
if (m_TotalCacheSize == -1)
|
||
|
{
|
||
|
m_UnlimCache = TRUE;
|
||
|
if (FAILED(hr = mk.QueryValue(MD_ASP_SCRIPTFILECACHESIZE, m_UnlimCacheInMemorySize)))
|
||
|
{
|
||
|
// m_UnlimCacheInMemorySize = 250;
|
||
|
break;
|
||
|
}
|
||
|
m_LimCacheInMemorySize = 250;
|
||
|
}
|
||
|
else if (m_TotalCacheSize == 0)
|
||
|
{
|
||
|
m_NoCache = TRUE;
|
||
|
m_UnlimCacheInMemorySize = 250;
|
||
|
m_LimCacheInMemorySize = 0;
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
m_LimCache = TRUE;
|
||
|
if (FAILED(hr = mk.QueryValue(MD_ASP_SCRIPTFILECACHESIZE, m_LimCacheInMemorySize)))
|
||
|
{
|
||
|
// m_LimCacheInMemorySize = 250;
|
||
|
break;
|
||
|
}
|
||
|
m_UnlimCacheInMemorySize = 250;
|
||
|
}
|
||
|
//
|
||
|
m_MetaPath = mk.QueryMetaPath();
|
||
|
} while (FALSE);
|
||
|
return hr;
|
||
|
}
|
||
|
|
||
|
HRESULT
|
||
|
CAppData::Save()
|
||
|
{
|
||
|
ASSERT(!m_MetaPath.IsEmpty());
|
||
|
CComAuthInfo auth(m_ServerName, m_UserName, m_UserPassword);
|
||
|
CMetaKey mk(&auth, m_MetaPath, METADATA_PERMISSION_WRITE);
|
||
|
HRESULT hr = mk.QueryResult();
|
||
|
if (FAILED(hr))
|
||
|
return hr;
|
||
|
do
|
||
|
{
|
||
|
CString buf;
|
||
|
if (FAILED(hr = mk.SetValue(MD_ASP_ALLOWSESSIONSTATE, m_EnableSession)))
|
||
|
break;
|
||
|
if (FAILED(hr = mk.SetValue(MD_ASP_BUFFERINGON, m_EnableBuffering)))
|
||
|
break;
|
||
|
if (FAILED(hr = mk.SetValue(MD_ASP_ENABLEPARENTPATHS, m_EnableParents)))
|
||
|
break;
|
||
|
if (FAILED(hr = mk.SetValue(MD_ASP_SESSIONTIMEOUT, m_SessionTimeout)))
|
||
|
break;
|
||
|
if (FAILED(hr = mk.SetValue(MD_ASP_SCRIPTTIMEOUT, m_ScriptTimeout)))
|
||
|
break;
|
||
|
buf = m_Languages;
|
||
|
if (FAILED(hr = mk.SetValue(MD_ASP_SCRIPTLANGUAGE, buf)))
|
||
|
break;
|
||
|
//
|
||
|
if (FAILED(hr = mk.SetValue(MD_ASP_ENABLESERVERDEBUG, m_ServerDebug)))
|
||
|
break;
|
||
|
if (FAILED(hr = mk.SetValue(MD_ASP_ENABLECLIENTDEBUG, m_ClientDebug)))
|
||
|
break;
|
||
|
if (FAILED(hr = mk.SetValue(MD_ASP_SCRIPTERRORSSENTTOBROWSER, m_SendAspError)))
|
||
|
break;
|
||
|
buf = m_DefaultError;
|
||
|
if (FAILED(hr = mk.SetValue(MD_ASP_SCRIPTERRORMESSAGE, buf)))
|
||
|
break;
|
||
|
//
|
||
|
if (FAILED(hr = m_Mappings.Save(&mk)))
|
||
|
break;
|
||
|
if (FAILED(hr = mk.SetValue(MD_CACHE_EXTENSIONS, m_CacheISAPI)))
|
||
|
break;
|
||
|
//
|
||
|
if (FAILED(hr = mk.SetValue(MD_ASP_LOGERRORREQUESTS, m_LogFailures)))
|
||
|
break;
|
||
|
if (FAILED(hr = mk.SetValue(MD_ASP_EXCEPTIONCATCHENABLE, m_DebugExcept)))
|
||
|
break;
|
||
|
if (FAILED(hr = mk.SetValue(MD_SCRIPT_TIMEOUT, m_CgiTimeout)))
|
||
|
break;
|
||
|
//
|
||
|
if (m_RecycleTimespan && m_Timespan > 0)
|
||
|
{
|
||
|
if (FAILED(hr = mk.SetValue(MD_APP_PERIODIC_RESTART_TIME, m_Timespan)))
|
||
|
break;
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
if (FAILED(hr = mk.SetValue(MD_APP_PERIODIC_RESTART_TIME, 0)))
|
||
|
break;
|
||
|
}
|
||
|
if (m_RecycleRequest && m_Requests > 0)
|
||
|
{
|
||
|
if (FAILED(hr = mk.SetValue(MD_APP_PERIODIC_RESTART_REQUESTS, m_Requests)))
|
||
|
break;
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
if (FAILED(hr = mk.SetValue(MD_APP_PERIODIC_RESTART_REQUESTS, 0)))
|
||
|
break;
|
||
|
}
|
||
|
if (!m_RecycleTimer)
|
||
|
{
|
||
|
m_Timers.clear();
|
||
|
}
|
||
|
if (FAILED(hr = mk.SetValue(MD_APP_PERIODIC_RESTART_SCHEDULE, m_Timers)))
|
||
|
break;
|
||
|
//
|
||
|
buf = m_DiskCacheDir;
|
||
|
if (FAILED(hr = mk.SetValue(MD_ASP_DISKTEMPLATECACHEDIRECTORY, buf)))
|
||
|
break;
|
||
|
if (FAILED(hr = mk.SetValue(MD_ASP_SCRIPTENGINECACHEMAX, m_ScriptEngCacheMax)))
|
||
|
break;
|
||
|
int inmem = 0;
|
||
|
if (m_NoCache)
|
||
|
{
|
||
|
m_TotalCacheSize = 0;
|
||
|
}
|
||
|
else if (m_UnlimCache)
|
||
|
{
|
||
|
m_TotalCacheSize = -1;
|
||
|
inmem = m_UnlimCacheInMemorySize;
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
inmem = m_LimCacheInMemorySize;
|
||
|
}
|
||
|
if (FAILED(hr = mk.SetValue(MD_ASP_MAXDISKTEMPLATECACHEFILES, m_TotalCacheSize)))
|
||
|
break;
|
||
|
if (FAILED(hr = mk.SetValue(MD_ASP_SCRIPTFILECACHESIZE, inmem)))
|
||
|
break;
|
||
|
} while (FALSE);
|
||
|
return hr;
|
||
|
}
|
||
|
|
||
|
BOOL
|
||
|
CAppData::IsMasterInstance()
|
||
|
{
|
||
|
return CMetabasePath::IsMasterInstance(m_MetaPath);
|
||
|
}
|
||
|
|
||
|
CAppPropSheet::CAppPropSheet()
|
||
|
{
|
||
|
static TCHAR title[256];
|
||
|
|
||
|
::LoadString(_Module.GetResourceInstance(), IDS_SHEET_TITLE, title, 256);
|
||
|
m_psh.pszCaption = title;
|
||
|
|
||
|
}
|
||
|
|
||
|
LRESULT
|
||
|
CAppPropSheet::OnInitDialog(HWND hDlg, LPARAM)
|
||
|
{
|
||
|
return 0;
|
||
|
}
|
||
|
|
||
|
void
|
||
|
CAppPropSheet::OnKeyDown(UINT nChar, UINT nRepCount, UINT nFlags)
|
||
|
{
|
||
|
}
|