Leaked source code of windows server 2003
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.
 
 
 
 
 
 

178 lines
3.4 KiB

// Copyright (C) 1997 Microsoft Corporation
//
// downlevel RAS server fixup page
//
// 11-23-98 sburns
#include "headers.hxx"
#include "rasfixup.hpp"
#include "resource.h"
#include "state.hpp"
RASFixupPage::RASFixupPage()
:
DCPromoWizardPage(
IDD_RAS_FIXUP,
IDS_RAS_FIXUP_PAGE_TITLE,
IDS_RAS_FIXUP_PAGE_SUBTITLE)
{
LOG_CTOR(RASFixupPage);
}
RASFixupPage::~RASFixupPage()
{
LOG_DTOR(RASFixupPage);
}
void
RASFixupPage::OnInit()
{
LOG_FUNCTION(RASFixupPage::OnInit);
State& state = State::GetInstance();
// If we're upgrading an NT 4 PDC, then the expectation is that the
// customer is more likely to have an app-compat problem, so we default to
// the allow-access option. Otherwise, we default to the more secure (but
// less compatible) option.
// NTRAID#NTBUG9-539263-2002/04/16-sburns
int defaultButton =
state.GetRunContext() == State::PDC_UPGRADE
? IDC_ALLOW_ANON_ACCESS
: IDC_DENY_ANON_ACCESS;
if (state.UsingAnswerFile())
{
String option =
state.GetAnswerFileOption(AnswerFile::OPTION_ALLOW_ANON_ACCESS);
int button = defaultButton;
if (option.icompare(AnswerFile::VALUE_YES) == 0)
{
button = IDC_ALLOW_ANON_ACCESS;
}
else if (option.icompare(AnswerFile::VALUE_NO) == 0)
{
button = IDC_DENY_ANON_ACCESS;
}
Win::CheckDlgButton(
hwnd,
button,
BST_CHECKED);
return;
}
Win::CheckDlgButton(hwnd, defaultButton, BST_CHECKED);
Win::PostMessage(
Win::GetParent(hwnd),
WM_NEXTDLGCTL,
(WPARAM) Win::GetDlgItem(hwnd, defaultButton),
TRUE);
}
bool
RASFixupPage::OnSetActive()
{
LOG_FUNCTION(RASFixupPage::OnSetActive);
State& state = State::GetInstance();
bool skip = true;
switch (state.GetOperation())
{
case State::FOREST:
case State::TREE:
case State::CHILD:
{
skip = false;
break;
}
case State::REPLICA:
case State::ABORT_BDC_UPGRADE:
case State::DEMOTE:
case State::NONE:
{
// do nothing: i.e. skip this page
break;
}
default:
{
ASSERT(false);
break;
}
}
if (state.RunHiddenUnattended() || skip) // 268231
{
LOG(L"planning to skip RAS fixup page");
Wizard& wizard = GetWizard();
if (wizard.IsBacktracking())
{
// backup once again
wizard.Backtrack(hwnd);
return true;
}
int nextPage = Validate();
if (nextPage != -1)
{
LOG(L"skipping RAS Fixup Page");
wizard.SetNextPageID(hwnd, nextPage);
return true;
}
state.ClearHiddenWhileUnattended();
}
Win::PropSheet_SetWizButtons(
Win::GetParent(hwnd),
PSWIZB_BACK | PSWIZB_NEXT);
return true;
}
int
RASFixupPage::Validate()
{
LOG_FUNCTION(RASFixupPage::Validate);
State& state = State::GetInstance();
if (Win::IsDlgButtonChecked(hwnd, IDC_ALLOW_ANON_ACCESS))
{
state.SetShouldAllowAnonymousAccess(true);
}
else
{
ASSERT(Win::IsDlgButtonChecked(hwnd, IDC_DENY_ANON_ACCESS));
state.SetShouldAllowAnonymousAccess(false);
}
return IDD_SAFE_MODE_PASSWORD;
}