mirror of https://github.com/tongzx/nt5src
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
168 lines
4.0 KiB
168 lines
4.0 KiB
#include <precomp.hxx>
|
|
#pragma hdrstop
|
|
|
|
#include "policy.h"
|
|
|
|
//
|
|
// Names of registry/INI file sections and values.
|
|
//
|
|
TCHAR CPolicy::SZ_REGINI_WATCHDOG[] = TEXT("DiskQuotaWatchDog");
|
|
TCHAR CPolicy::SZ_REGINI_SHOW_CLIENT_DIALOG[] = TEXT("ShowClientDialog");
|
|
TCHAR CPolicy::SZ_REGINI_SEND_USER_EMAIL[] = TEXT("SendUserEmail");
|
|
TCHAR CPolicy::SZ_REGINI_SEND_EMAIL_TO[] = TEXT("SendEmailTo");
|
|
TCHAR CPolicy::SZ_REGINI_SEND_EMAIL_CC[] = TEXT("SendEmailCc");
|
|
TCHAR CPolicy::SZ_REGINI_SEND_EMAIL_BCC[] = TEXT("SendEmailBcc");
|
|
|
|
|
|
BOOL CPolicy::I_REGINI_SEND_USER_EMAIL_DEFAULT = 1;
|
|
BOOL CPolicy::I_REGINI_SHOW_CLIENT_DIALOG_DEFAULT = 0;
|
|
TCHAR CPolicy::SZ_REGINI_SEND_EMAIL_TO_DEFAULT[] = TEXT("[email protected]");
|
|
TCHAR CPolicy::SZ_REGINI_SEND_EMAIL_CC_DEFAULT[] = TEXT("");
|
|
TCHAR CPolicy::SZ_REGINI_SEND_EMAIL_BCC_DEFAULT[] = TEXT("");
|
|
|
|
|
|
CPolicy::CPolicy(
|
|
VOID
|
|
) : m_bSendUserEmail(FALSE),
|
|
m_bShowClientDialog(FALSE)
|
|
{
|
|
|
|
}
|
|
|
|
|
|
CPolicy::~CPolicy(
|
|
VOID
|
|
)
|
|
{
|
|
//
|
|
// Nothing to do.
|
|
//
|
|
}
|
|
|
|
|
|
VOID
|
|
CPolicy::Reset(
|
|
VOID
|
|
)
|
|
{
|
|
m_bSendUserEmail = FALSE;
|
|
m_bShowClientDialog = FALSE;
|
|
|
|
m_strOtherEmailTo.Empty();
|
|
m_strOtherEmailCc.Empty();
|
|
m_strOtherEmailBcc.Empty();
|
|
}
|
|
|
|
|
|
HRESULT
|
|
CPolicy::Load(
|
|
LPCTSTR pszIniFile
|
|
)
|
|
{
|
|
//
|
|
// Clear out previous policy contents.
|
|
//
|
|
Reset();
|
|
|
|
//
|
|
// Load the contents of the INI file using appropriate defaults
|
|
// if any values are not found.
|
|
//
|
|
LoadString(pszIniFile,
|
|
SZ_REGINI_WATCHDOG,
|
|
SZ_REGINI_SEND_EMAIL_TO,
|
|
SZ_REGINI_SEND_EMAIL_TO_DEFAULT,
|
|
m_strOtherEmailTo);
|
|
|
|
LoadString(pszIniFile,
|
|
SZ_REGINI_WATCHDOG,
|
|
SZ_REGINI_SEND_EMAIL_CC,
|
|
SZ_REGINI_SEND_EMAIL_CC_DEFAULT,
|
|
m_strOtherEmailCc);
|
|
|
|
LoadString(pszIniFile,
|
|
SZ_REGINI_WATCHDOG,
|
|
SZ_REGINI_SEND_EMAIL_BCC,
|
|
SZ_REGINI_SEND_EMAIL_BCC_DEFAULT,
|
|
m_strOtherEmailBcc);
|
|
|
|
m_bShowClientDialog = GetPrivateProfileInt(SZ_REGINI_WATCHDOG,
|
|
SZ_REGINI_SHOW_CLIENT_DIALOG,
|
|
I_REGINI_SHOW_CLIENT_DIALOG_DEFAULT,
|
|
pszIniFile);
|
|
|
|
m_bSendUserEmail = GetPrivateProfileInt(SZ_REGINI_WATCHDOG,
|
|
SZ_REGINI_SEND_USER_EMAIL,
|
|
I_REGINI_SEND_USER_EMAIL_DEFAULT,
|
|
pszIniFile);
|
|
return NO_ERROR;
|
|
}
|
|
|
|
//
|
|
// Loads policy string. Handles proper sizing of the value buffer.
|
|
// Caller is responsible for calling delete[] on *ppsz.
|
|
//
|
|
HRESULT
|
|
CPolicy::LoadString(
|
|
LPCTSTR pszFile,
|
|
LPCTSTR pszSection,
|
|
LPCTSTR pszValueName,
|
|
LPCTSTR pszDefaultValue,
|
|
CString& strOut
|
|
)
|
|
{
|
|
HRESULT hr = E_OUTOFMEMORY;
|
|
INT cchIncr = MAX_PATH;
|
|
INT cchValue = 0;
|
|
INT cchRead = 0;
|
|
|
|
do
|
|
{
|
|
cchValue += cchIncr;
|
|
cchRead = GetPrivateProfileString(pszSection,
|
|
pszValueName,
|
|
pszDefaultValue,
|
|
strOut.GetBuffer(cchValue),
|
|
cchValue,
|
|
pszFile);
|
|
if (0 == cchRead)
|
|
{
|
|
hr = E_FAIL;
|
|
}
|
|
}
|
|
while(SUCCEEDED(hr) && cchRead == (cchValue - 1));
|
|
|
|
return hr;
|
|
}
|
|
|
|
|
|
|
|
HRESULT
|
|
CPolicy::Load(
|
|
HKEY hkeyReg
|
|
)
|
|
{
|
|
HRESULT hr = NO_ERROR;
|
|
//
|
|
// Clear out previous policy contents.
|
|
//
|
|
Reset();
|
|
|
|
return hr;
|
|
}
|
|
|
|
|
|
//
|
|
// Should we send any email?
|
|
//
|
|
BOOL
|
|
CPolicy::ShouldSendAnyEmail(
|
|
VOID
|
|
) const
|
|
{
|
|
return ShouldSendUserEmail() ||
|
|
0 != m_strOtherEmailTo.Length() ||
|
|
0 != m_strOtherEmailCc.Length() ||
|
|
0 != m_strOtherEmailBcc.Length();
|
|
}
|
|
|