|
|
/******************************************************
IMNEXT.CPP
Contains definitions for global variables and functions used for Internet Mail and News setup.
* Microsoft Confidential * Copyright (c) Microsoft Corporation 1992-1996 * All rights reserved
9/30/96 valdonb Created
******************************************************/
#include "wizard.h"
#include "initguid.h" // Make DEFINE_GUID declare an instance of each GUID
#include "icwextsn.h"
#include "imnext.h"
#include "inetcfg.h"
#include <icwcfg.h>
IICWApprentice *gpImnApprentice = NULL; // Mail/News account manager object
//+----------------------------------------------------------------------------
//
// Function LoadAcctMgrUI
//
// Synopsis Loads in the Account Manager's apprentice pages for configuring
// accounts (mail, news, directory service/LDAP).
//
// If the UI has previously been loaded, the function will simply
// update the Next and Back pages for the apprentice.
//
// Uses global variable g_fAcctMgrUILoaded.
//
//
// Arguments hWizHWND -- HWND of main property sheet
// uPrevDlgID -- Dialog ID apprentice should go to when user leaves
// apprentice by clicking Back
// uNextDlgID -- Dialog ID apprentice should go to when user leaves
// apprentice by clicking Next
// dwFlags -- Flags variable that should be passed to
// IICWApprentice::AddWizardPages
//
//
// Returns TRUE if all went well
// FALSE otherwise
//
// History 4/23/97 jmazner created
//
//-----------------------------------------------------------------------------
BOOL LoadAcctMgrUI( HWND hWizHWND, UINT uPrevDlgID, UINT uNextDlgID, DWORD dwFlags ) { HRESULT hResult = E_NOTIMPL;
// If we should not run Internet Mail and New setup, then just return FALSE
if (gpWizardState->dwRunFlags & RSW_NOIMN) return FALSE; if( g_fAcctMgrUILoaded ) { ASSERT( g_pCICWExtension ); ASSERT( gpImnApprentice );
DEBUGMSG("LoadAcctMgrUI: UI already loaded, just reset first (%d) and last (%d) pages", uPrevDlgID, uNextDlgID);
// If We are ICW, the Mail account manager is our last page.
if (g_fIsICW) uNextDlgID = g_uExternUINext;
hResult = gpImnApprentice->SetPrevNextPage( uPrevDlgID, uNextDlgID ); goto LoadAcctMgrUIExit; }
if( !hWizHWND ) { DEBUGMSG("LoadAcctMgrUI got a NULL hWizHWND!"); return FALSE; }
if( gpImnApprentice ) { if( NULL == g_pCICWExtension ) { DEBUGMSG("Instantiating ICWExtension and using it to initialize Acct Mgr's IICWApprentice"); g_pCICWExtension = new( CICWExtension ); g_pCICWExtension->AddRef(); g_pCICWExtension->m_hWizardHWND = hWizHWND; gpImnApprentice->Initialize( g_pCICWExtension ); }
hResult = gpImnApprentice->AddWizardPages(dwFlags);
if( !SUCCEEDED(hResult) ) { goto LoadAcctMgrUIExit; }
// If We are ICW, the Mail account manager is our last page.
if (g_fIsICW) uNextDlgID = g_uExternUINext; hResult = gpImnApprentice->SetPrevNextPage( uPrevDlgID, uNextDlgID ); }
LoadAcctMgrUIExit: if( SUCCEEDED(hResult) ) { g_fAcctMgrUILoaded = TRUE; return TRUE; } else { DEBUGMSG("LoadAcctMgrUI failed with (hex) hresult %x", hResult); return FALSE; } }
/****
* * The rest of the functions in this file are no longer used since switching to * the apprentice/wizard model * * 4/23/97 jmazner Olympus #3136
/*****************************************************************
NAME: InitAccountList
SYNOPSIS: Fills a list box with the account names in the account list.
PARAMETERS:
hLB HWND to the list box to be filled pEnumAccts Pointer the the account list accttype Type of accounts in the account list
RETURN: none
*****************************************************************/ /**
VOID InitAccountList(HWND hLB, IImnEnumAccounts *pEnumAccts, ACCTTYPE accttype) { IImnAccount *pAcct = NULL; CHAR szDefAcct[CCHMAX_ACCOUNT_NAME+1]; CHAR szBuf[CCHMAX_ACCOUNT_NAME+1]; HRESULT hr; DWORD index; BOOL fSelected = FALSE;
ListBox_ResetContent(hLB);
if (NULL == pEnumAccts) return;
szDefAcct[0] = '\0';
// Get the default so we can highlight it in the list
gpImnAcctMgr->GetDefaultAccountName(accttype,szDefAcct,CCHMAX_ACCOUNT_NAME); // 2/20/97 jmazner Olympus #262
// Reset back to the first acct. so that when we walk through the GetNext loop,
// we're sure to get every account
pEnumAccts->Reset();
// Populate the account list box
while (SUCCEEDED(pEnumAccts->GetNext(&pAcct))) { hr = pAcct->GetPropSz(AP_ACCOUNT_NAME,szBuf,sizeof(szBuf)); if (SUCCEEDED(hr)) { index = ListBox_AddString(hLB,szBuf); if (!lstrcmp(szBuf,szDefAcct)) { fSelected = TRUE; ListBox_SetCurSel(hLB, index); } } pAcct->Release(); pAcct = NULL; }
// If nothing was selected as the default,
// select the first in the list
if (!fSelected) // oops, SetSel is for multiple choice list boxes
// we want SetCurSel
//ListBox_SetSel(hLB, TRUE, 0);
ListBox_SetCurSel(hLB, 0); } **/ /*****************************************************************
NAME: GetAccount
SYNOPSIS: Gets a mail or news account by name and sets the property information structure.
PARAMETERS:
szAcctName Name of the account to load accttype Type of account to load
RETURN: BOOL TRUE if account was found and loaded FALSE if not found
*****************************************************************/ /**
BOOL GetAccount(LPSTR szAcctName, ACCTTYPE accttype) { IImnAccount *pAcct = NULL; HRESULT hr; DWORD dwTemp = 0; DWORD dwServerTypes = 0; BOOL fRet = TRUE;
if (NULL == gpImnAcctMgr) return FALSE; // Get the account information and move it into our
// structure.
hr = gpImnAcctMgr->FindAccount(AP_ACCOUNT_NAME,szAcctName, &pAcct); if (FAILED(hr) || !pAcct) return FALSE;
// 12/3/96 jmazner Normandy #8504
// 2/7/96 jmazner Athena changed things around a bit
//pAcct->GetPropDw(AP_SERVER_TYPES, &dwServerTypes);
pAcct->GetServerTypes( &dwServerTypes );
// 2/17/96 jmazner Olympus #1063
// need to clearAccount before loading new stuff
ClearUserInfo( gpUserInfo, accttype);
switch( accttype ) { case ACCT_NEWS: // 12/16/96 jmazner This is not a valid assert; sometimes we'll load
// in an account for mail, and later check whether it also has news
// Also, the macro causes a GPF in retail builds...
//ASSERT( dwServerTypes & SRV_NNTP );
// 2/12/97 jmazner Athena changed things around in their build 0511;
// one of the changes is that now an account can only
// hold one ACCT type (see Normandy #13710)
if( !(SRV_NNTP & dwServerTypes) ) { fRet = FALSE; goto GetAccountExit; }
pAcct->GetPropSz(AP_NNTP_DISPLAY_NAME, gpUserInfo->inc.szNNTPName, MAX_EMAIL_NAME); pAcct->GetPropSz(AP_NNTP_EMAIL_ADDRESS, gpUserInfo->inc.szNNTPAddress, MAX_EMAIL_ADDRESS); pAcct->GetPropSz(AP_NNTP_USERNAME, gpUserInfo->inc.szNNTPLogonName, MAX_LOGON_NAME); pAcct->GetPropSz(AP_NNTP_PASSWORD, gpUserInfo->inc.szNNTPLogonPassword, MAX_LOGON_PASSWORD); pAcct->GetPropSz(AP_NNTP_SERVER, gpUserInfo->inc.szNNTPServer, MAX_SERVER_NAME); // 12/17/96 jmazner Normandy 12871
//pAcct->GetPropDw(AP_NNTP_USE_SICILY, &dwTemp);
//gpUserInfo->fNewsAccount = !(BOOL)dwTemp;
pAcct->GetPropDw(AP_NNTP_USE_SICILY, (DWORD *)&(gpUserInfo->inc.fNewsLogonSPA)); gpUserInfo->fNewsLogon = (gpUserInfo->inc.fNewsLogonSPA || gpUserInfo->inc.szNNTPLogonName[0]); break;
case ACCT_MAIL: if( !( (SRV_SMTP & dwServerTypes) || (SRV_POP3 & dwServerTypes) || (SRV_IMAP & dwServerTypes) )) { fRet = FALSE; goto GetAccountExit; }
pAcct->GetPropSz(AP_SMTP_SERVER, gpUserInfo->inc.szSMTPServer, MAX_SERVER_NAME); pAcct->GetPropSz(AP_SMTP_DISPLAY_NAME, gpUserInfo->inc.szEMailName, MAX_EMAIL_NAME); pAcct->GetPropSz(AP_SMTP_EMAIL_ADDRESS, gpUserInfo->inc.szEMailAddress, MAX_EMAIL_ADDRESS);
if( dwServerTypes & SRV_POP3 ) { pAcct->GetPropSz(AP_POP3_USERNAME, gpUserInfo->inc.szIncomingMailLogonName, MAX_LOGON_NAME); pAcct->GetPropSz(AP_POP3_PASSWORD, gpUserInfo->inc.szIncomingMailLogonPassword, MAX_LOGON_PASSWORD); pAcct->GetPropSz(AP_POP3_SERVER, gpUserInfo->inc.szIncomingMailServer, MAX_SERVER_NAME); pAcct->GetPropDw(AP_POP3_USE_SICILY, (DWORD *)&(gpUserInfo->inc.fMailLogonSPA));
gpUserInfo->inc.iIncomingProtocol = SRV_POP3; } else { pAcct->GetPropSz(AP_IMAP_USERNAME, gpUserInfo->inc.szIncomingMailLogonName, MAX_LOGON_NAME); pAcct->GetPropSz(AP_IMAP_PASSWORD, gpUserInfo->inc.szIncomingMailLogonPassword, MAX_LOGON_PASSWORD); pAcct->GetPropSz(AP_IMAP_SERVER, gpUserInfo->inc.szIncomingMailServer, MAX_SERVER_NAME); pAcct->GetPropDw(AP_IMAP_USE_SICILY, (DWORD *)&(gpUserInfo->inc.fMailLogonSPA));
gpUserInfo->inc.iIncomingProtocol = SRV_IMAP;
} break;
case ACCT_DIR_SERV: if( !(SRV_LDAP & dwServerTypes) ) { fRet = FALSE; goto GetAccountExit; } { DWORD dwLDAPAuth = 0; pAcct->GetPropDw(AP_LDAP_AUTHENTICATION, &dwLDAPAuth); switch( dwLDAPAuth ) { case LDAP_AUTH_ANONYMOUS: gpUserInfo->inc.fLDAPLogonSPA = FALSE; gpUserInfo->fLDAPLogon = FALSE; break; case LDAP_AUTH_MEMBER_SYSTEM: gpUserInfo->inc.fLDAPLogonSPA = TRUE; gpUserInfo->fLDAPLogon = TRUE; break; case LDAP_AUTH_PASSWORD: gpUserInfo->inc.fLDAPLogonSPA = FALSE; gpUserInfo->fLDAPLogon = TRUE; pAcct->GetPropSz(AP_LDAP_USERNAME, gpUserInfo->inc.szLDAPLogonName, MAX_LOGON_NAME); pAcct->GetPropSz(AP_LDAP_PASSWORD, gpUserInfo->inc.szLDAPLogonPassword, MAX_LOGON_PASSWORD); break; } }
pAcct->GetPropSz(AP_LDAP_SERVER, gpUserInfo->inc.szLDAPServer, MAX_SERVER_NAME); pAcct->GetPropDw(AP_LDAP_RESOLVE_FLAG, (DWORD *)&(gpUserInfo->inc.fLDAPResolve)); break;
default: fRet = FALSE; break;
}
GetAccountExit: pAcct->Release(); pAcct = NULL;
return fRet; } **/ /*****************************************************************
NAME: ValidateAccountName
SYNOPSIS: Validates that a string can be used as an account name. It will also check if the account exists and load the information by calling GetAccount.
PARAMETERS:
szAcctName String to use for the name of the account accttype Type of account
RETURN: DWORD 0 if successful Resource id of error string if an error occurs.
*****************************************************************/ /**
DWORD ValidateAccountName(LPSTR szAcctName, ACCTTYPE accttype) { LPSTR sz = szAcctName; BOOL fBlank = TRUE;
// Make sure the name is not blank and
// does not contain a backslash
while (*sz && '\\' != *sz) { if (' ' != *sz) fBlank = FALSE; sz++; }
// 12/17/96 jmazner Normandy #12851
// check for backslash first to correctly handle the string "\"
if ('\\' == *sz) return IDS_ERRInvalidAcctName; if (fBlank) return IDS_NEED_ACCTNAME;
// Check if this account already exists
// 2/10/97 jmazner Normandy #13710
// If the account already exists, notify the user and force a new acct name.
if ( AccountNameExists(szAcctName) ) { return IDS_DUP_ACCTNAME; }
return ERROR_SUCCESS; } **/ /*******************************************************************
NAME: SaveAccount
SYNOPSIS: Save the changes to the mail or news account.
PARAMETERS:
accttype Type of account to save (ACCT_SMTP or ACCT_NNTP) bSetAsDefault Set this account to be the default
RETURN: BOOL TRUE if changes saved FALSE if an error occured
********************************************************************/ /**
BOOL SaveAccount(ACCTTYPE accttype, BOOL fSetAsDefault) { IImnAccount *pAcct = NULL; LPSTR lpszAcctName = NULL; DWORD dwConnectionType; BOOL fRet = FALSE; HRESULT hr;
ASSERT (gpImnAcctMgr); if (NULL == gpImnAcctMgr) goto CommitAccountExit;
dwConnectionType = gpUserInfo->fConnectOverLAN ? 0L : 2L;
switch( accttype ) { case ACCT_NEWS: lpszAcctName = gpUserInfo->szNewsAcctName; break; case ACCT_MAIL: lpszAcctName = gpUserInfo->szMailAcctName; break; case ACCT_DIR_SERV: lpszAcctName = gpUserInfo->szDirServiceName; break; }
// lpszAcctName = gpUserInfo->szNewsAcctName;
//else
// lpszAcctName = gpUserInfo->szMailAcctName;
// First try and get existing account info to change
hr = gpImnAcctMgr->FindAccount(AP_ACCOUNT_NAME, lpszAcctName, &pAcct); if (FAILED(hr) || !pAcct) { // Create a new account
hr = gpImnAcctMgr->CreateAccountObject(accttype, &pAcct); if (FAILED(hr) || !pAcct) goto CommitAccountExit; }
// Fill in the account information that we have
pAcct->SetPropSz(AP_ACCOUNT_NAME, lpszAcctName); //pAcct->SetPropSz(AP_RAS_CONNECTOID, gpUserInfo->szISPName);
//pAcct->SetPropDw(AP_RAS_CONNECTION_TYPE, dwConnectionType);
switch( accttype ) { case ACCT_NEWS: pAcct->SetPropSz(AP_RAS_CONNECTOID, gpUserInfo->szISPName); pAcct->SetPropDw(AP_RAS_CONNECTION_TYPE, dwConnectionType);
pAcct->SetPropSz(AP_NNTP_DISPLAY_NAME, gpUserInfo->inc.szNNTPName); pAcct->SetPropSz(AP_NNTP_EMAIL_ADDRESS, gpUserInfo->inc.szNNTPAddress); // 12/17/96 jmazner Normandy #12871
//pAcct->SetPropDw(AP_NNTP_USE_SICILY, gpUserInfo->fNewsLogon && !gpUserInfo->fNewsAccount);
pAcct->SetPropDw(AP_NNTP_USE_SICILY, gpUserInfo->inc.fNewsLogonSPA); if (gpUserInfo->fNewsLogon && !gpUserInfo->inc.fNewsLogonSPA) { pAcct->SetPropSz(AP_NNTP_USERNAME, gpUserInfo->inc.szNNTPLogonName); pAcct->SetPropSz(AP_NNTP_PASSWORD, gpUserInfo->inc.szNNTPLogonPassword); } else { // 1/15/96 jmazner Normandy #13162
// clear out logon name and password, so that if we load in this account
// in the future, we won't be confused about whether to set fNewsLogon
pAcct->SetProp(AP_NNTP_USERNAME, NULL, 0); pAcct->SetProp(AP_NNTP_PASSWORD, NULL, 0); }
pAcct->SetPropSz(AP_NNTP_SERVER, gpUserInfo->inc.szNNTPServer); break;
case ACCT_MAIL: pAcct->SetPropSz(AP_RAS_CONNECTOID, gpUserInfo->szISPName); pAcct->SetPropDw(AP_RAS_CONNECTION_TYPE, dwConnectionType);
pAcct->SetPropSz(AP_SMTP_SERVER, gpUserInfo->inc.szSMTPServer); pAcct->SetPropSz(AP_SMTP_DISPLAY_NAME, gpUserInfo->inc.szEMailName); pAcct->SetPropSz(AP_SMTP_EMAIL_ADDRESS, gpUserInfo->inc.szEMailAddress);
// 12/3/96 jmazner Normandy #8504
if( SRV_POP3 == gpUserInfo->inc.iIncomingProtocol ) { pAcct->SetPropSz(AP_POP3_SERVER, gpUserInfo->inc.szIncomingMailServer); // 12/17/96 jmazner Normandy #12871
pAcct->SetPropDw(AP_POP3_USE_SICILY, gpUserInfo->inc.fMailLogonSPA); if( !gpUserInfo->inc.fMailLogonSPA ) { pAcct->SetPropSz(AP_POP3_USERNAME, gpUserInfo->inc.szIncomingMailLogonName); pAcct->SetPropSz(AP_POP3_PASSWORD, gpUserInfo->inc.szIncomingMailLogonPassword); }
pAcct->SetProp(AP_IMAP_USERNAME, NULL, 0); pAcct->SetProp(AP_IMAP_SERVER, NULL, 0); pAcct->SetProp(AP_IMAP_PASSWORD, NULL, 0);
} else { pAcct->SetPropSz(AP_IMAP_SERVER, gpUserInfo->inc.szIncomingMailServer); // 12/17/96 jmazner Normandy #12871
pAcct->SetPropDw(AP_IMAP_USE_SICILY, gpUserInfo->inc.fMailLogonSPA); if( !gpUserInfo->inc.fMailLogonSPA ) { pAcct->SetPropSz(AP_IMAP_USERNAME, gpUserInfo->inc.szIncomingMailLogonName); pAcct->SetPropSz(AP_IMAP_PASSWORD, gpUserInfo->inc.szIncomingMailLogonPassword); }
pAcct->SetProp(AP_POP3_USERNAME, NULL, 0); pAcct->SetProp(AP_POP3_SERVER, NULL, 0); pAcct->SetProp(AP_POP3_PASSWORD, NULL, 0); } break;
case ACCT_DIR_SERV: pAcct->SetPropSz(AP_LDAP_SERVER, gpUserInfo->inc.szLDAPServer); pAcct->SetPropDw(AP_LDAP_RESOLVE_FLAG, gpUserInfo->inc.fLDAPResolve);
if( gpUserInfo->inc.szLDAPLogonName[0] && gpUserInfo->fLDAPLogon ) { // if we have a user name, then we're using
// LDAP_AUTH_PASSWORD
ASSERT( !gpUserInfo->inc.fLDAPLogonSPA ); pAcct->SetPropSz(AP_LDAP_USERNAME, gpUserInfo->inc.szLDAPLogonName); pAcct->SetPropSz(AP_LDAP_PASSWORD, gpUserInfo->inc.szLDAPLogonPassword); pAcct->SetPropDw(AP_LDAP_AUTHENTICATION, LDAP_AUTH_PASSWORD); } else { //we know there's no username/password, so clear out those fields
pAcct->SetProp(AP_LDAP_USERNAME, NULL, 0); pAcct->SetProp(AP_LDAP_PASSWORD, NULL, 0);
//now determine whether there's no logon required, or if we're using SPA
if( gpUserInfo->inc.fLDAPLogonSPA ) { pAcct->SetPropDw(AP_LDAP_AUTHENTICATION, LDAP_AUTH_MEMBER_SYSTEM); } else { pAcct->SetPropDw(AP_LDAP_AUTHENTICATION, LDAP_AUTH_ANONYMOUS); } } break;
}
// Save the changes
hr = pAcct->SaveChanges(); if (FAILED(hr)) goto CommitAccountExit;
if (fSetAsDefault) { // Set this account as the default
// Ignore failure since it isn't fatal
pAcct->SetAsDefault(); }
// If we need to return the settings, put them in the global struct
if (gpMailNewsInfo && ( (ACCT_MAIL==accttype) || (ACCT_NEWS==accttype) ) ) { ASSERT(sizeof(*gpMailNewsInfo) == gpMailNewsInfo->dwSize); if (ACCT_NEWS == accttype) { lstrcpy(gpMailNewsInfo->szAccountName, gpUserInfo->szNewsAcctName); lstrcpy(gpMailNewsInfo->szUserName, gpUserInfo->inc.szNNTPLogonName); lstrcpy(gpMailNewsInfo->szPassword, gpUserInfo->inc.szNNTPLogonPassword); lstrcpy(gpMailNewsInfo->szNNTPServer, gpUserInfo->inc.szNNTPServer); lstrcpy(gpMailNewsInfo->szDisplayName, gpUserInfo->inc.szNNTPName); lstrcpy(gpMailNewsInfo->szEmailAddress, gpUserInfo->inc.szNNTPAddress);
// 12/17/96 jmazner Normandy #12871
// fNewsLogon and fNewsAccount flags have been superceeded by fNewsLogonSPA
//gpMailNewsInfo->fUseSicily = (gpUserInfo->fNewsLogon && !gpUserInfo->fNewsAccount);
gpMailNewsInfo->fUseSicily = (gpUserInfo->inc.fNewsLogonSPA); } else { lstrcpy(gpMailNewsInfo->szAccountName, gpUserInfo->szMailAcctName); lstrcpy(gpMailNewsInfo->szUserName, gpUserInfo->inc.szIncomingMailLogonName); lstrcpy(gpMailNewsInfo->szPassword, gpUserInfo->inc.szIncomingMailLogonPassword); lstrcpy(gpMailNewsInfo->szSMTPServer, gpUserInfo->inc.szSMTPServer);
if( SRV_POP3 == gpUserInfo->inc.iIncomingProtocol ) lstrcpy(gpMailNewsInfo->szPOP3Server, gpUserInfo->inc.szIncomingMailServer); else lstrcpy(gpMailNewsInfo->szIMAPServer, gpUserInfo->inc.szIncomingMailServer);
lstrcpy(gpMailNewsInfo->szDisplayName, gpUserInfo->inc.szEMailName); lstrcpy(gpMailNewsInfo->szEmailAddress, gpUserInfo->inc.szEMailAddress);
gpMailNewsInfo->fUseSicily = (gpUserInfo->inc.fMailLogonSPA); }
gpMailNewsInfo->dwConnectionType = dwConnectionType; lstrcpy(gpMailNewsInfo->szConnectoid, gpUserInfo->szISPName); } else if( gpDirServiceInfo && (ACCT_DIR_SERV == accttype) ) { ASSERT(sizeof(*gpDirServiceInfo) == gpDirServiceInfo->dwSize);
lstrcpy(gpDirServiceInfo->szServiceName, gpUserInfo->szDirServiceName); lstrcpy(gpDirServiceInfo->szUserName, gpUserInfo->inc.szLDAPLogonName); lstrcpy(gpDirServiceInfo->szPassword, gpUserInfo->inc.szLDAPLogonPassword); lstrcpy(gpDirServiceInfo->szLDAPServer, gpUserInfo->inc.szLDAPServer); gpDirServiceInfo->fUseSicily = (gpUserInfo->inc.fMailLogonSPA); gpDirServiceInfo->fLDAPResolve = (gpUserInfo->inc.fLDAPResolve); }
fRet = TRUE;
CommitAccountExit: if (pAcct) { pAcct->Release(); pAcct = NULL; }
return fRet; } **/
/*****************************************************************
NAME: IsStringWhiteSpaceOnly
SYNOPSIS: Checks whether a string has non space characters
PARAMETERS:
szString String to check
RETURN: BOOL TRUE if no characters other than ' ' FALSE otherwise
*****************************************************************/ /**
BOOL IsStringWhiteSpaceOnly(LPSTR szString) { LPSTR sz = szString;
while (*sz) { if (' ' != *sz) return FALSE; sz++; } return TRUE; } **/
/*****************************************************************
NAME: AccountNameExists
SYNOPSIS: Checks whether a given string is currently in use as an Account Manager (inetcomm) account name
PARAMETERS:
szAcctName Name of the account to load
RETURN: BOOL TRUE if account name is in use FALSE if not
HISTORY: 2/10/96 jmazner Created
*****************************************************************/ /**
BOOL AccountNameExists(LPSTR szAcctName) { IImnAccount *pAcct = NULL; HRESULT hr;
if (NULL == gpImnAcctMgr) return FALSE;
if (NULL == szAcctName) return FALSE;
hr = gpImnAcctMgr->FindAccount(AP_ACCOUNT_NAME,szAcctName, &pAcct); if (FAILED(hr) || !pAcct) { return FALSE; } else { pAcct->Release(); pAcct = NULL; return TRUE; } } **/ //+----------------------------------------------------------------------------
//
// Function ClearUserInfo
//
// Synopsis Sets the fields in a USERINFO struct to NULL.
//
// Arguments lpUserinfo - the struct to clear out.
// accttype - determines whether Mail or News fields are cleared out
//
// Returns TRUE if all went well
// FALSE otherwise
//
// History 1/21/96 jmazner created
//
//-----------------------------------------------------------------------------
/**
BOOL ClearUserInfo( USERINFO *lpUserInfo, ACCTTYPE accttype ) { if( NULL == lpUserInfo ) return FALSE;
switch( accttype ){ case ACCT_NEWS: //lpUserInfo->szNewsAcctName[0] = '\0';
lpUserInfo->inc.szNNTPLogonName[0] = '\0'; lpUserInfo->inc.szNNTPLogonPassword[0] = '\0'; lpUserInfo->inc.szNNTPServer[0] = '\0'; lpUserInfo->inc.szNNTPName[0] = '\0'; lpUserInfo->inc.szNNTPAddress[0] = '\0'; lpUserInfo->inc.fNewsLogonSPA = FALSE; lpUserInfo->fNewsLogon = FALSE; return TRUE; break; case ACCT_MAIL: //lpUserInfo->szMailAcctName[0] = '\0';
lpUserInfo->inc.szIncomingMailLogonName[0] = '\0'; lpUserInfo->inc.szIncomingMailLogonPassword[0] = '\0'; lpUserInfo->inc.szSMTPServer[0] = '\0'; lpUserInfo->inc.iIncomingProtocol = SRV_POP3; lpUserInfo->inc.szIncomingMailServer[0] = '\0'; lpUserInfo->inc.szEMailName[0] = '\0'; lpUserInfo->inc.szEMailAddress[0] = '\0'; lpUserInfo->inc.fMailLogonSPA = FALSE; return TRUE; break; case ACCT_DIR_SERV: //lpUserInfo->szDirServiceName[0] = '\0';
lpUserInfo->inc.szLDAPLogonName[0] = '\0'; lpUserInfo->inc.szLDAPLogonPassword[0] = '\0'; lpUserInfo->inc.szLDAPServer[0] = '\0'; lpUserInfo->inc.fLDAPResolve = FALSE; lpUserInfo->inc.fLDAPLogonSPA = FALSE; lpUserInfo->fLDAPLogon = FALSE;
default: return FALSE; break; } } **/
|