|
|
/**********************************************************************/ /** Microsoft Windows/NT **/ /** Copyright(c) Microsoft Corporation, 1997 - 2000 **/ /**********************************************************************/
/*
cred.cpp This file contains all of the prototypes for the credentials dialog used for DDNS.
FILE HISTORY: */
#include "stdafx.h"
#include "cred.h"
#include "lsa.h" // RtlEncodeW/RtlDecodeW
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__; #endif
/////////////////////////////////////////////////////////////////////////////
// CCredentials dialog
CCredentials::CCredentials(CWnd* pParent /*=NULL*/) : CBaseDialog(CCredentials::IDD, pParent) { //{{AFX_DATA_INIT(CCredentials)
// NOTE: the ClassWizard will add member initialization here
//}}AFX_DATA_INIT
}
void CCredentials::DoDataExchange(CDataExchange* pDX) { CBaseDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CCredentials)
DDX_Control(pDX, IDOK, m_buttonOk); DDX_Control(pDX, IDC_EDIT_CRED_USERNAME, m_editUsername); DDX_Control(pDX, IDC_EDIT_CRED_PASSWORD2, m_editPassword2); DDX_Control(pDX, IDC_EDIT_CRED_PASSWORD, m_editPassword); DDX_Control(pDX, IDC_EDIT_CRED_DOMAIN, m_editDomain); //}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CCredentials, CBaseDialog) //{{AFX_MSG_MAP(CCredentials)
ON_EN_CHANGE(IDC_EDIT_CRED_USERNAME, OnChangeEditCredUsername) ON_EN_CHANGE(IDC_EDIT_CRED_DOMAIN, OnChangeEditCredDomain) //}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CCredentials message handlers
BOOL CCredentials::OnInitDialog() { CBaseDialog::OnInitDialog(); CString strUsername, strDomain, dummyPasswd; LPTSTR pszUsername, pszDomain;
pszUsername = strUsername.GetBuffer(MAX_PATH); pszDomain = strDomain.GetBuffer(MAX_PATH);
// call the DHCP api to get the current username and domain
DWORD err = DhcpServerQueryDnsRegCredentials((LPWSTR) ((LPCTSTR) m_strServerIp), MAX_PATH, pszUsername, MAX_PATH, pszDomain);
strUsername.ReleaseBuffer(); strDomain.ReleaseBuffer();
if (err == ERROR_SUCCESS) { m_editUsername.SetWindowText(strUsername); m_editDomain.SetWindowText(strDomain);
// set the password fields to something
dummyPasswd = _T("xxxxxxxxxx"); m_editPassword.SetWindowText( dummyPasswd ); m_editPassword2.SetWindowText( dummyPasswd ); } else { ::DhcpMessageBox(err); }
m_fNewUsernameOrDomain = FALSE;
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CCredentials::OnOK() { CString strUsername, strDomain, strPassword1, strPassword2, dummyPasswd;
dummyPasswd = _T("xxxxxxxxxx");
// grab the username and domain
m_editUsername.GetWindowText(strUsername); m_editDomain.GetWindowText(strDomain);
// grab the passwords and make sure they match
m_editPassword.GetWindowText(strPassword1); m_editPassword2.GetWindowText(strPassword2);
if (strPassword1.Compare(strPassword2) != 0) { // passwords don't match
AfxMessageBox(IDS_PASSWORDS_DONT_MATCH); m_editPassword.SetFocus(); return; }
//
// run through the following code if user changed passwd.
//
if ( strPassword2 != dummyPasswd ) {
// encode the password
unsigned char ucSeed = DHCP_ENCODE_SEED; LPTSTR pszPassword = strPassword1.GetBuffer((strPassword1.GetLength() + 1) * sizeof(TCHAR));
RtlEncodeW(&ucSeed, pszPassword);
// send to the DHCP api.
DWORD err = ERROR_SUCCESS;
err = DhcpServerSetDnsRegCredentials((LPWSTR) ((LPCTSTR) m_strServerIp), (LPWSTR) ((LPCTSTR) strUsername), (LPWSTR) ((LPCTSTR) strDomain), (LPWSTR) ((LPCTSTR) pszPassword)); if (err != ERROR_SUCCESS) { // something failed, notify the user
::DhcpMessageBox(err); return; } } CBaseDialog::OnOK(); }
void CCredentials::OnChangeEditCredUsername() { if (!m_fNewUsernameOrDomain) { m_fNewUsernameOrDomain = TRUE;
m_editPassword.SetWindowText(_T("")); m_editPassword2.SetWindowText(_T("")); } }
void CCredentials::OnChangeEditCredDomain() { if (!m_fNewUsernameOrDomain) { m_fNewUsernameOrDomain = TRUE;
m_editPassword.SetWindowText(_T("")); m_editPassword2.SetWindowText(_T("")); } }
void CCredentials::SetServerIp(LPCTSTR pszServerIp) { m_strServerIp = pszServerIp; }
|