|
|
///////////////////////////////////////////////////////////////////////////////
//
// Copyright (c) 2000, Microsoft Corp. All rights reserved.
//
// FILE
//
// serverprop.cpp
//
// SYNOPSIS
//
// Defines the classes that make up the RADIUS Server property sheet.
//
// MODIFICATION HISTORY
//
// 02/27/2000 Original version.
// 04/19/2000 Marshall SDOs across apartments.
//
///////////////////////////////////////////////////////////////////////////////
#include <proxypch.h>
#include <serverprop.h>
#include <resolver.h>
// Fake secret used for populating the edit control.
const WCHAR FAKE_SECRET[] = L"\b\b\b\b\b\b\b\b";
ServerNamePage::ServerNamePage(Sdo& serverSdo) : SnapInPropertyPage(IDD_SERVER_NAME), server(serverSdo) { server.getValue(PROPERTY_RADIUSSERVER_ADDRESS, address, L""); }
void ServerNamePage::onResolve() { // Get the address.
getValue(IDC_EDIT_NAME, address);
// Pass it to the resolver.
Resolver resolver(address); if (resolver.DoModal() == IDOK) { // The user clicked OK, so save his choice.
setValue(IDC_EDIT_NAME, resolver.getChoice()); } }
void ServerNamePage::getData() { // Get the address.
getValue(IDC_EDIT_NAME, address);
// The address can't be empty.
if (address.Length() == 0) { fail(IDC_EDIT_NAME, IDS_SERVER_E_NAME_EMPTY); } }
void ServerNamePage::setData() { setValue(IDC_EDIT_NAME, address); }
void ServerNamePage::saveChanges() { server.setValue(PROPERTY_RADIUSSERVER_ADDRESS, address); }
BEGIN_MESSAGE_MAP(ServerNamePage, SnapInPropertyPage) ON_EN_CHANGE(IDC_EDIT_NAME, onChange) ON_BN_CLICKED(IDC_BUTTON_VERIFY, onResolve) END_MESSAGE_MAP()
ServerAuthPage::ServerAuthPage(Sdo& serverSdo) : SnapInPropertyPage(IDD_SERVER_AUTH), server(serverSdo), authSecretDirty(false), acctSecretDirty(false) { server.getValue(PROPERTY_RADIUSSERVER_AUTH_PORT, authPort, 1812); server.getValue(PROPERTY_RADIUSSERVER_AUTH_SECRET, authSecret, L""); server.getValue(PROPERTY_RADIUSSERVER_ACCT_PORT, acctPort, 1813); server.getValue(PROPERTY_RADIUSSERVER_ACCT_SECRET, acctSecret, NULL); useSameSecret = !acctSecret; server.getValue(PROPERTY_RADIUSSERVER_FORWARD_ACCT_ONOFF, acctOnOff, true); }
void ServerAuthPage::onChangeAuthSecret() { authSecretDirty = true; SetModified(); }
void ServerAuthPage::onChangeAcctSecret() { acctSecretDirty = true; SetModified(); }
void ServerAuthPage::onCheckSameSecret() { // Get the checkbox state.
getValue(IDC_CHECK_SAME_SECRET, useSameSecret);
// Update the edit box accordingly.
enableControl(IDC_EDIT_ACCT_SECRET1, !useSameSecret); enableControl(IDC_EDIT_ACCT_SECRET2, !useSameSecret);
// We've been modified.
SetModified(); }
void ServerAuthPage::getData() { getValue(IDC_EDIT_AUTH_PORT, authPort, IDS_SERVER_E_AUTH_PORT_EMPTY);
if (authSecretDirty) { // Get the authentication secret ...
getValue(IDC_EDIT_AUTH_SECRET1, authSecret, false);
// ... and make sure it matches the confirmation.
CComBSTR confirm; getValue(IDC_EDIT_AUTH_SECRET2, confirm, false); if (wcscmp(confirm, authSecret)) { fail(IDC_EDIT_AUTH_SECRET1, IDS_SERVER_E_SECRET_MATCH); }
authSecretDirty = false; }
getValue(IDC_EDIT_ACCT_PORT, acctPort, IDS_SERVER_E_ACCT_PORT_EMPTY);
getValue(IDC_CHECK_SAME_SECRET, useSameSecret);
if (!useSameSecret && acctSecretDirty) { // Get the accounting secret ...
getValue(IDC_EDIT_ACCT_SECRET1, acctSecret);
// ... and make sure it matches the confirmation.
CComBSTR confirm; getValue(IDC_EDIT_ACCT_SECRET2, confirm); if (wcscmp(confirm, acctSecret)) { fail(IDC_EDIT_ACCT_SECRET1, IDS_SERVER_E_SECRET_MATCH); }
acctSecretDirty = false; }
getValue(IDC_CHECK_ACCT_ONOFF, acctOnOff); }
void ServerAuthPage::setData() { setValue(IDC_EDIT_AUTH_PORT, authPort); setValue(IDC_EDIT_AUTH_SECRET1, FAKE_SECRET); setValue(IDC_EDIT_AUTH_SECRET2, FAKE_SECRET);
setValue(IDC_EDIT_ACCT_PORT, acctPort); setValue(IDC_CHECK_SAME_SECRET, useSameSecret); setValue(IDC_EDIT_ACCT_SECRET1, FAKE_SECRET); setValue(IDC_EDIT_ACCT_SECRET2, FAKE_SECRET); setValue(IDC_CHECK_ACCT_ONOFF, acctOnOff);
// Update the edit box state.
enableControl(IDC_EDIT_ACCT_SECRET1, !useSameSecret); enableControl(IDC_EDIT_ACCT_SECRET2, !useSameSecret); }
void ServerAuthPage::saveChanges() { server.setValue(PROPERTY_RADIUSSERVER_AUTH_PORT, authPort); server.setValue(PROPERTY_RADIUSSERVER_AUTH_SECRET, authSecret);
server.setValue(PROPERTY_RADIUSSERVER_ACCT_PORT, acctPort); if (useSameSecret) { server.clearValue(PROPERTY_RADIUSSERVER_ACCT_SECRET); } else { server.setValue(PROPERTY_RADIUSSERVER_ACCT_SECRET, acctSecret); } server.setValue(PROPERTY_RADIUSSERVER_FORWARD_ACCT_ONOFF, acctOnOff); }
BEGIN_MESSAGE_MAP(ServerAuthPage, SnapInPropertyPage) ON_EN_CHANGE(IDC_EDIT_AUTH_PORT, onChange) ON_EN_CHANGE(IDC_EDIT_AUTH_SECRET1, onChangeAuthSecret) ON_EN_CHANGE(IDC_EDIT_AUTH_SECRET2, onChangeAuthSecret) ON_BN_CLICKED(IDC_CHECK_SAME_SECRET, onCheckSameSecret) ON_BN_CLICKED(IDC_CHECK_ACCT_ONOFF, onChange) ON_EN_CHANGE(IDC_EDIT_ACCT_PORT, onChange) ON_EN_CHANGE(IDC_EDIT_ACCT_SECRET1, onChangeAcctSecret) ON_EN_CHANGE(IDC_EDIT_ACCT_SECRET2, onChangeAcctSecret) END_MESSAGE_MAP()
ServerFTLBPage::ServerFTLBPage(Sdo& serverSdo) : SnapInPropertyPage(IDD_SERVER_FTLB), server(serverSdo) { server.getValue(PROPERTY_RADIUSSERVER_PRIORITY, priority, 1); server.getValue(PROPERTY_RADIUSSERVER_WEIGHT, weight, 50); server.getValue(PROPERTY_RADIUSSERVER_TIMEOUT, timeout, 3); server.getValue(PROPERTY_RADIUSSERVER_MAX_LOST, maxLost, 5); server.getValue(PROPERTY_RADIUSSERVER_BLACKOUT, blackout, 10 * timeout); }
void ServerFTLBPage::getData() { getValue(IDC_EDIT_PRIORITY, priority, IDS_SERVER_E_PRIORITY_EMPTY); if (priority < 1 || priority > 65535) { fail(IDC_EDIT_PRIORITY, IDS_SERVER_E_PRIORITY_RANGE); }
getValue(IDC_EDIT_WEIGHT, weight, IDS_SERVER_E_WEIGHT_EMPTY); if (weight < 1 || weight > 65535) { fail(IDC_EDIT_WEIGHT, IDS_SERVER_E_WEIGHT_RANGE); }
getValue(IDC_EDIT_TIMEOUT, timeout, IDS_SERVER_E_TIMEOUT_EMPTY); if (timeout < 1) { fail(IDC_EDIT_TIMEOUT, IDS_SERVER_E_TIMEOUT_RANGE); }
getValue(IDC_EDIT_MAX_LOST, maxLost, IDS_SERVER_E_MAXLOST_EMPTY); if (maxLost < 1) { fail(IDC_EDIT_MAX_LOST, IDS_SERVER_E_MAXLOST_RANGE); }
getValue(IDC_EDIT_BLACKOUT, blackout, IDS_SERVER_E_BLACKOUT_EMPTY); if (blackout < timeout) { fail(IDC_EDIT_BLACKOUT, IDS_SERVER_E_BLACKOUT_RANGE); } }
void ServerFTLBPage::setData() { setValue(IDC_EDIT_PRIORITY, priority); setValue(IDC_EDIT_WEIGHT, weight); setValue(IDC_EDIT_TIMEOUT, timeout); setValue(IDC_EDIT_MAX_LOST, maxLost); setValue(IDC_EDIT_BLACKOUT, blackout); }
void ServerFTLBPage::saveChanges() { server.setValue(PROPERTY_RADIUSSERVER_PRIORITY, priority); server.setValue(PROPERTY_RADIUSSERVER_WEIGHT, weight); server.setValue(PROPERTY_RADIUSSERVER_TIMEOUT, timeout); server.setValue(PROPERTY_RADIUSSERVER_MAX_LOST, maxLost); server.setValue(PROPERTY_RADIUSSERVER_BLACKOUT, blackout); }
BEGIN_MESSAGE_MAP(ServerFTLBPage, SnapInPropertyPage) ON_EN_CHANGE(IDC_EDIT_PRIORITY, onChange) ON_EN_CHANGE(IDC_EDIT_WEIGHT, onChange) ON_EN_CHANGE(IDC_EDIT_TIMEOUT, onChange) ON_EN_CHANGE(IDC_EDIT_MAX_LOST, onChange) ON_EN_CHANGE(IDC_EDIT_BLACKOUT, onChange) END_MESSAGE_MAP()
ServerProperties::ServerProperties(Sdo& sdo, UINT nIDCaption, CWnd* parent) : CPropertySheet(nIDCaption, parent), server(sdo), serverStream(server), name(sdo), auth(sdo), ftlb(sdo) { // Add the property pages.
AddPage(&name); AddPage(&auth); AddPage(&ftlb); }
INT_PTR ServerProperties::DoModal() { CPropertySheet::DoModal();
if (name.hasApplied() || auth.hasApplied() || ftlb.hasApplied()) { return IDOK; } else { return IDCANCEL; } }
BOOL ServerProperties::OnInitDialog() { // Unmarshal the SDOs.
serverStream.get(server); BOOL bResult = CPropertySheet::OnInitDialog(); ModifyStyleEx(0, WS_EX_CONTEXTHELP); return bResult; }
|