|
|
/*++
Copyright (c) 1994-1998 Microsoft Corporation
Module Name :
authent.cpp
Abstract:
WWW Authentication Dialog
Author:
Ronald Meijer (ronaldm)
Project:
Internet Services Manager
Revision History:
--*/
//
// Include Files
//
#include "stdafx.h"
#include "w3scfg.h"
#include "certmap.h"
#include "basdom.h"
#include "anondlg.h"
#include "authent.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__; #endif
CAuthenticationDlg::CAuthenticationDlg( IN LPCTSTR lpstrServerName, IN DWORD dwInstance, IN CString & strBasicDomain, IN DWORD & dwAuthFlags, IN DWORD & dwAccessPermissions, IN CString & strUserName, IN CString & strPassword, IN BOOL & fPasswordSync, IN BOOL fAdminAccess, IN BOOL fHasDigest, IN CWnd * pParent OPTIONAL ) /*++
Routine Description:
Authentication dialog constructor
Arguments:
LPCTSTR lpstrServerName : Server name DWORD dwInstance : Instance number CString & strBasicDomain : Basic domain name DWORD & dwAuthFlags : Authorization flags DWORD & dwAccessPermissions : Access permissions CString & strUserName : Anonymous user name CString & strPassword : Anonymous user pwd BOOL & fPasswordSync : Password sync setting BOOL fAdminAccess : TRUE if user has admin access BOOL fHasDigest : TRUE if machine supports digest auth. CWnd * pParent : Optional parent window
Return Value:
N/A
--*/ : CDialog(CAuthenticationDlg::IDD, pParent), m_strServerName(lpstrServerName), m_strBasicDomain(strBasicDomain), m_strUserName(strUserName), m_strPassword(strPassword), m_dwInstance(dwInstance), m_dwAuthFlags(dwAuthFlags), m_dwAccessPermissions(dwAccessPermissions), m_fAdminAccess(fAdminAccess), m_fHasDigest(fHasDigest), m_fPasswordSync(fPasswordSync) { #if 0 // Class Wizard happy
//{{AFX_DATA_INIT(CAuthenticationDlg)
m_fClearText = FALSE; m_fDigest = FALSE; m_fChallengeResponse = FALSE; m_fUUEncoded = FALSE; //}}AFX_DATA_INIT
#endif // 0
m_fClearText = IS_FLAG_SET(m_dwAuthFlags, MD_AUTH_BASIC); m_fDigest = IS_FLAG_SET(m_dwAuthFlags, MD_AUTH_MD5); m_fChallengeResponse = IS_FLAG_SET(m_dwAuthFlags, MD_AUTH_NT); m_fUUEncoded = IS_FLAG_SET(m_dwAuthFlags, MD_AUTH_ANONYMOUS); }
void CAuthenticationDlg::DoDataExchange( IN CDataExchange * pDX ) /*++
Routine Description:
Initialise/Store control data
Arguments:
CDataExchange * pDX - DDX/DDV control structure
Return Value:
None
--*/ { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CAuthenticationDlg)
DDX_Check(pDX, IDC_CHECK_CLEAR_TEXT, m_fClearText); DDX_Check(pDX, IDC_CHECK_DIGEST, m_fDigest); DDX_Check(pDX, IDC_CHECK_NT_CHALLENGE_RESPONSE, m_fChallengeResponse); DDX_Check(pDX, IDC_CHECK_UUENCODED, m_fUUEncoded); DDX_Control(pDX, IDC_CHECK_UUENCODED, m_check_UUEncoded); DDX_Control(pDX, IDC_CHECK_NT_CHALLENGE_RESPONSE, m_check_ChallengeResponse); DDX_Control(pDX, IDC_CHECK_DIGEST, m_check_Digest); DDX_Control(pDX, IDC_CHECK_CLEAR_TEXT, m_check_ClearText); DDX_Control(pDX, IDC_BUTTON_EDIT_ANONYMOUS, m_button_EditAnonymous); DDX_Control(pDX, IDC_BUTTON_EDIT, m_button_Edit); //}}AFX_DATA_MAP
}
//
// Message Map
//
BEGIN_MESSAGE_MAP(CAuthenticationDlg, CDialog) //{{AFX_MSG_MAP(CAuthenticationDlg)
ON_BN_CLICKED(IDC_CHECK_CLEAR_TEXT, OnCheckClearText) ON_BN_CLICKED(IDC_CHECK_UUENCODED, OnCheckUuencoded) ON_BN_CLICKED(IDC_CHECK_DIGEST, OnCheckDigest) ON_BN_CLICKED(IDC_BUTTON_EDIT, OnButtonEdit) ON_BN_CLICKED(IDC_BUTTON_EDIT_ANONYMOUS, OnButtonEditAnonymous) //}}AFX_MSG_MAP
END_MESSAGE_MAP()
void CAuthenticationDlg::SetControlStates() /*++
Routine Description:
Set control states depending on current data in the dialog
Arguments:
None
Return Value:
None
--*/ { m_button_Edit.EnableWindow(m_fClearText); m_button_EditAnonymous.EnableWindow(m_fUUEncoded && m_fAdminAccess); }
BOOL CAuthenticationDlg::OnInitDialog() /*++
Routine Description:
WM_INITDIALOG handler. Initialize the dialog.
Arguments:
None.
Return Value:
TRUE if no focus is to be set automatically, FALSE if the focus is already set.
--*/ { CDialog::OnInitDialog(); SetControlStates();
//
// Ensure compatibility with downlevel
//
m_check_Digest.EnableWindow(m_fHasDigest);
return TRUE; }
void CAuthenticationDlg::OnCheckClearText() /*++
Routine Description:
Clear text checkbox handler
Arguments:
None
Return Value:
None
--*/ { if (m_check_ClearText.GetCheck() == 1) { CClearTxtDlg dlg; if (dlg.DoModal() != IDOK) { m_check_ClearText.SetCheck(0); return; } }
m_fClearText = !m_fClearText; SetControlStates(); }
void CAuthenticationDlg::OnCheckDigest() /*++
Routine Description:
'Digest' checkbox handler
Arguments:
None
Return Value:
None
--*/ { ASSERT(m_fHasDigest);
if (m_check_Digest.GetCheck() == 1) { if (!NoYesMessageBox(IDS_WRN_DIGEST)) { m_check_Digest.SetCheck(0); return; } }
m_fDigest = !m_fDigest; SetControlStates(); }
void CAuthenticationDlg::OnCheckUuencoded() /*++
Routine Description:
UU Encoding checkbox been pressed.
Arguments:
None
Return Value:
None
--*/ { m_fUUEncoded = !m_fUUEncoded; SetControlStates(); }
void CAuthenticationDlg::OnButtonEditAnonymous() /*++
Routine Description:
'Edit anonymous' button handler
Arguments:
None
Return Value:
None
--*/ { CAnonymousDlg dlg( m_strServerName, m_strUserName, m_strPassword, m_fPasswordSync, this );
if (dlg.DoModal() == IDOK) { m_strUserName = dlg.GetUserName(); m_strPassword = dlg.GetPassword(); m_fPasswordSync = dlg.GetPasswordSync(); } }
void CAuthenticationDlg::OnButtonEdit() /*++
Routine Description:
'Edit default basic domain dialog' button handler
Arguments:
None
Return Value:
None
--*/ { CBasDomainDlg dlg(m_strBasicDomain); if (dlg.DoModal() == IDOK) { m_strBasicDomain = dlg.GetBasicDomain(); } }
void CAuthenticationDlg::OnOK() /*++
Routine Description:
OK button handler, save information
Arguments:
None
Return Value:
None
--*/ { if (UpdateData(TRUE)) { SET_FLAG_IF(m_fClearText, m_dwAuthFlags, MD_AUTH_BASIC); SET_FLAG_IF(m_fChallengeResponse, m_dwAuthFlags, MD_AUTH_NT); SET_FLAG_IF(m_fUUEncoded, m_dwAuthFlags, MD_AUTH_ANONYMOUS); SET_FLAG_IF(m_fDigest, m_dwAuthFlags, MD_AUTH_MD5);
//
// Provide warning if no authentication is selected
//
if (!m_dwAuthFlags && !m_dwAccessPermissions && !NoYesMessageBox(IDS_WRN_NO_AUTH) ) { //
// Don't dismiss the dialog
//
return; }
CDialog::OnOK(); } }
|