|
|
/*
+-------------------------------------------------------------------------+ | User Options Dialog | +-------------------------------------------------------------------------+ | (c) Copyright 1993-1994 | | Microsoft Corp. | | All rights reserved | | | | Program : [UserDlg.c] | | Programmer : Arthur Hanson | | Original Program Date : [Feb 15, 1993] | | Last Update : [Jun 16, 1994] | | | | Version: 1.00 | | | | Description: | | | | History: | | arth Jun 16, 1994 1.00 Original Version. | | | +-------------------------------------------------------------------------+ */
#include "globals.h"
#include <limits.h>
#include "nwconv.h"
#include "convapi.h"
#include "userdlg.h"
#include "transfer.h"
#include "ntnetapi.h"
#include "map.h"
#define togmap 1
// Utility Macros for Advanced >> button
#define SetStyleOn(hWnd, Style) SetWindowLong(hWnd, GWL_STYLE, Style | GetWindowLong(hWnd, GWL_STYLE));
#define SetStyleOff(hWnd, Style) SetWindowLong(hWnd, GWL_STYLE, ~Style & GetWindowLong(hWnd, GWL_STYLE));
static CONVERT_OPTIONS cvoDefault; static CONVERT_OPTIONS *CurrentConvertOptions; static LPTSTR SourceServ; static LPTSTR DestServ; static SOURCE_SERVER_BUFFER *SServ; static DEST_SERVER_BUFFER *DServ; static BOOL FPNWChk; static short TabSelection;
/*+-------------------------------------------------------------------------+
| UserOptionsDefaultsSet() | +-------------------------------------------------------------------------+*/ void UserOptionsDefaultsSet(void *cvto) { memcpy((void *) &cvoDefault, cvto, sizeof(CONVERT_OPTIONS));
} // UserOptionsDefaultsSet
/*+-------------------------------------------------------------------------+
| UserOptionsDefaultsReset() | +-------------------------------------------------------------------------+*/ void UserOptionsDefaultsReset() { memset(&cvoDefault, 0, sizeof(CONVERT_OPTIONS));
cvoDefault.TransferUserInfo = TRUE; cvoDefault.ForcePasswordChange = TRUE; cvoDefault.SupervisorDefaults = TRUE; cvoDefault.AdminAccounts = FALSE; cvoDefault.NetWareInfo = FALSE; cvoDefault.GroupNameOption = 1;
} // UserOptionsDefaultsReset
/*+-------------------------------------------------------------------------+
| UserOptionsInit() | +-------------------------------------------------------------------------+*/ void UserOptionsInit(void **lpcvto) { CONVERT_OPTIONS *cvto;
cvto = (CONVERT_OPTIONS *) *lpcvto;
// if we need to allocate space, do so
if (cvto == NULL) cvto = AllocMemory(sizeof(CONVERT_OPTIONS));
// make sure it was allocated
if (cvto == NULL) return;
memcpy(cvto, (void *) &cvoDefault, sizeof(CONVERT_OPTIONS)); *lpcvto = (void *) cvto;
} // UserOptionsInit
/*+-------------------------------------------------------------------------+
| UserOptionsLoad() | +-------------------------------------------------------------------------+*/ void UserOptionsLoad(HANDLE hFile, void **lpcvto) { CONVERT_OPTIONS *cvto; DWORD wrote;
cvto = (CONVERT_OPTIONS *) *lpcvto;
// if we need to allocate space, do so
if (cvto == NULL) cvto = AllocMemory(sizeof(CONVERT_OPTIONS));
// make sure it was allocated
if (cvto == NULL) return;
ReadFile(hFile, cvto, sizeof(CONVERT_OPTIONS), &wrote, NULL); *lpcvto = (void *) cvto;
} // UserOptionsLoad
/*+-------------------------------------------------------------------------+
| UserOptionsSave() | +-------------------------------------------------------------------------+*/ void UserOptionsSave(HANDLE hFile, void *pcvto) { CONVERT_OPTIONS *cvto; DWORD wrote; DOMAIN_BUFFER *Trusted;
cvto = (CONVERT_OPTIONS *) pcvto;
// if trusted domain then index the domain list and save off the old
// domain pointer so that we save the index instead.
if (cvto->UseTrustedDomain && (cvto->TrustedDomain != NULL)) { DomainListIndex(); Trusted = cvto->TrustedDomain; cvto->TrustedDomain = (DOMAIN_BUFFER *) cvto->TrustedDomain->Index; } else cvto->UseTrustedDomain = FALSE;
WriteFile(hFile, pcvto, sizeof(CONVERT_OPTIONS), &wrote, NULL);
// if we replaced the domain pointer, then restore it
if (cvto->UseTrustedDomain) cvto->TrustedDomain = Trusted;
} // UserOptionsSave
/*+-------------------------------------------------------------------------+
| Passwords_Toggle() | +-------------------------------------------------------------------------+*/ void Passwords_Toggle(HWND hDlg, BOOL Toggle) { HWND hCtrl; BOOL MainToggle = Toggle;
hCtrl = GetDlgItem(hDlg, IDC_CHKUSERS); if (SendMessage(hCtrl, BM_GETCHECK, 0, 0) == 0) MainToggle = FALSE;
hCtrl = GetDlgItem(hDlg, IDC_CHKPWFORCE); ShowWindow(hCtrl, Toggle); EnableWindow(hCtrl, MainToggle);
#ifdef togmap
hCtrl = GetDlgItem(hDlg, IDC_CHKMAPPING); if (SendMessage(hCtrl, BM_GETCHECK, 0, 0) == 1) MainToggle = FALSE; #endif
hCtrl = GetDlgItem(hDlg, IDC_RADIO1); ShowWindow(hCtrl, Toggle); EnableWindow(hCtrl, MainToggle);
hCtrl = GetDlgItem(hDlg, IDC_RADIO2); ShowWindow(hCtrl, Toggle); EnableWindow(hCtrl, MainToggle);
hCtrl = GetDlgItem(hDlg, IDC_RADIO3); ShowWindow(hCtrl, Toggle); EnableWindow(hCtrl, MainToggle);
hCtrl = GetDlgItem(hDlg, IDC_PWCONST); ShowWindow(hCtrl, Toggle); EnableWindow(hCtrl, MainToggle);
} // Passwords_Toggle
/*+-------------------------------------------------------------------------+
| DuplicateUsers_Toggle() | +-------------------------------------------------------------------------+*/ void DuplicateUsers_Toggle(HWND hDlg, BOOL Toggle) { HWND hCtrl; BOOL MainToggle = Toggle;
hCtrl = GetDlgItem(hDlg, IDC_CHKUSERS); if (SendMessage(hCtrl, BM_GETCHECK, 0, 0) == 0) MainToggle = FALSE;
#ifdef togmap
hCtrl = GetDlgItem(hDlg, IDC_CHKMAPPING); if (SendMessage(hCtrl, BM_GETCHECK, 0, 0) == 1) MainToggle = FALSE; #endif
hCtrl = GetDlgItem(hDlg, IDC_STATDUP); ShowWindow(hCtrl, Toggle);
hCtrl = GetDlgItem(hDlg, IDC_RADIO4); ShowWindow(hCtrl, Toggle); EnableWindow(hCtrl, MainToggle);
hCtrl = GetDlgItem(hDlg, IDC_RADIO5); ShowWindow(hCtrl, Toggle); EnableWindow(hCtrl, MainToggle);
hCtrl = GetDlgItem(hDlg, IDC_RADIO6); ShowWindow(hCtrl, Toggle); EnableWindow(hCtrl, MainToggle);
hCtrl = GetDlgItem(hDlg, IDC_RADIO7); ShowWindow(hCtrl, Toggle); EnableWindow(hCtrl, MainToggle);
hCtrl = GetDlgItem(hDlg, IDC_USERCONST); ShowWindow(hCtrl, Toggle); EnableWindow(hCtrl, MainToggle);
} // DuplicateUsers_Toggle
/*+-------------------------------------------------------------------------+
| DuplicateGroups_Toggle() | +-------------------------------------------------------------------------+*/ void DuplicateGroups_Toggle(HWND hDlg, BOOL Toggle) { HWND hCtrl; BOOL MainToggle = Toggle;
hCtrl = GetDlgItem(hDlg, IDC_CHKUSERS); if (SendMessage(hCtrl, BM_GETCHECK, 0, 0) == 0) MainToggle = FALSE;
#ifdef togmap
hCtrl = GetDlgItem(hDlg, IDC_CHKMAPPING); if (SendMessage(hCtrl, BM_GETCHECK, 0, 0) == 1) MainToggle = FALSE; #endif
hCtrl = GetDlgItem(hDlg, IDC_STATDUP); ShowWindow(hCtrl, Toggle);
hCtrl = GetDlgItem(hDlg, IDC_RADIO8); ShowWindow(hCtrl, Toggle); EnableWindow(hCtrl, MainToggle);
hCtrl = GetDlgItem(hDlg, IDC_RADIO9); ShowWindow(hCtrl, Toggle); EnableWindow(hCtrl, MainToggle);
hCtrl = GetDlgItem(hDlg, IDC_RADIO10); ShowWindow(hCtrl, Toggle); EnableWindow(hCtrl, MainToggle);
hCtrl = GetDlgItem(hDlg, IDC_GROUPCONST); ShowWindow(hCtrl, Toggle); EnableWindow(hCtrl, MainToggle);
} // DuplicateGroups_Toggle
/*+-------------------------------------------------------------------------+
| Defaults_Toggle() | +-------------------------------------------------------------------------+*/ void Defaults_Toggle(HWND hDlg, BOOL Toggle) { HWND hCtrl; BOOL MainToggle = Toggle;
hCtrl = GetDlgItem(hDlg, IDC_CHKUSERS); if (SendMessage(hCtrl, BM_GETCHECK, 0, 0) == 0) MainToggle = FALSE;
hCtrl = GetDlgItem(hDlg, IDC_CHKSUPER); EnableWindow(hCtrl, MainToggle); ShowWindow(hCtrl, Toggle);
hCtrl = GetDlgItem(hDlg, IDC_CHKADMIN); EnableWindow(hCtrl, MainToggle); ShowWindow(hCtrl, Toggle);
hCtrl = GetDlgItem(hDlg, IDC_CHKFPNW); if (FPNWChk) EnableWindow(hCtrl, MainToggle); else EnableWindow(hCtrl, FALSE);
ShowWindow(hCtrl, Toggle); } // Defaults_Toggle
/*+-------------------------------------------------------------------------+
| Mapping_Toggle() | +-------------------------------------------------------------------------+*/ void Mapping_Toggle(HWND hDlg, BOOL Toggle) { HWND hCtrl;
// These two are the reverse of the others...
hCtrl = GetDlgItem(hDlg, IDC_MAPPINGFILE); EnableWindow(hCtrl, !Toggle); hCtrl = GetDlgItem(hDlg, IDC_BTNMAPPINGFILE); EnableWindow(hCtrl, !Toggle); hCtrl = GetDlgItem(hDlg, IDC_BTNMAPPINGEDIT); EnableWindow(hCtrl, !Toggle);
#ifdef togmap
hCtrl = GetDlgItem(hDlg, IDC_RADIO1); EnableWindow(hCtrl, Toggle); hCtrl = GetDlgItem(hDlg, IDC_RADIO2); EnableWindow(hCtrl, Toggle); hCtrl = GetDlgItem(hDlg, IDC_RADIO3); EnableWindow(hCtrl, Toggle); hCtrl = GetDlgItem(hDlg, IDC_RADIO4); EnableWindow(hCtrl, Toggle); hCtrl = GetDlgItem(hDlg, IDC_RADIO5); EnableWindow(hCtrl, Toggle); hCtrl = GetDlgItem(hDlg, IDC_RADIO6); EnableWindow(hCtrl, Toggle); hCtrl = GetDlgItem(hDlg, IDC_RADIO7); EnableWindow(hCtrl, Toggle); hCtrl = GetDlgItem(hDlg, IDC_RADIO8); EnableWindow(hCtrl, Toggle); hCtrl = GetDlgItem(hDlg, IDC_RADIO9); EnableWindow(hCtrl, Toggle); hCtrl = GetDlgItem(hDlg, IDC_RADIO10); EnableWindow(hCtrl, Toggle); hCtrl = GetDlgItem(hDlg, IDC_CHKPWFORCE); EnableWindow(hCtrl, Toggle); hCtrl = GetDlgItem(hDlg, IDC_PWCONST); EnableWindow(hCtrl, Toggle); hCtrl = GetDlgItem(hDlg, IDC_USERCONST); EnableWindow(hCtrl, Toggle); hCtrl = GetDlgItem(hDlg, IDC_GROUPCONST); EnableWindow(hCtrl, Toggle); #endif
} // Mapping_Toggle
/*+-------------------------------------------------------------------------+
| UserDialogToggle() | +-------------------------------------------------------------------------+*/ void UserDialogToggle(HWND hDlg, BOOL Toggle) { HWND hCtrl;
hCtrl = GetDlgItem(hDlg, IDC_CHKMAPPING); EnableWindow(hCtrl, Toggle);
if (SendMessage(hCtrl, BM_GETCHECK, 0, 0) == 1) Mapping_Toggle(hDlg, FALSE); else Mapping_Toggle(hDlg, Toggle);
if (!Toggle) { hCtrl = GetDlgItem(hDlg, IDC_MAPPINGFILE); EnableWindow(hCtrl, Toggle); hCtrl = GetDlgItem(hDlg, IDC_BTNMAPPINGFILE); EnableWindow(hCtrl, Toggle); hCtrl = GetDlgItem(hDlg, IDC_BTNMAPPINGEDIT); EnableWindow(hCtrl, Toggle); }
hCtrl = GetDlgItem(hDlg, IDC_CHKSUPER); EnableWindow(hCtrl, Toggle); hCtrl = GetDlgItem(hDlg, IDC_CHKADMIN); EnableWindow(hCtrl, Toggle);
hCtrl = GetDlgItem(hDlg, IDC_CHKFPNW); if (FPNWChk) EnableWindow(hCtrl, Toggle); else EnableWindow(hCtrl, FALSE);
// Check the Advanced Trusted domain check and toggle controls appropriatly
hCtrl = GetDlgItem(hDlg, IDC_CHKTRUSTED);
if (SendMessage(hCtrl, BM_GETCHECK, 0, 0) == 1) { hCtrl = GetDlgItem(hDlg, IDC_TRUSTED); EnableWindow(hCtrl, Toggle);
} else { hCtrl = GetDlgItem(hDlg, IDC_TRUSTED); EnableWindow(hCtrl, FALSE);
}
// Now toggle the checkbox itself
hCtrl = GetDlgItem(hDlg, IDC_CHKTRUSTED); EnableWindow(hCtrl, Toggle);
} // UserDialogToggle
/*+-------------------------------------------------------------------------+
| UserDialogSave() | +-------------------------------------------------------------------------+*/ void UserDialogSave(HWND hDlg) { HWND hCtrl; DWORD_PTR dwIndex; TCHAR TrustedDomain[MAX_PATH + 1];
hCtrl = GetDlgItem(hDlg, IDC_CHKUSERS); if (SendMessage(hCtrl, BM_GETCHECK, 0, 0) == 1) CurrentConvertOptions->TransferUserInfo = TRUE; else CurrentConvertOptions->TransferUserInfo = FALSE;
hCtrl = GetDlgItem(hDlg, IDC_CHKMAPPING); if (SendMessage(hCtrl, BM_GETCHECK, 0, 0) == 1) CurrentConvertOptions->UseMappingFile = TRUE; else CurrentConvertOptions->UseMappingFile = FALSE;
// Mapping file is handled in Verify
// Password stuff--------------------------------------------------------
hCtrl = GetDlgItem(hDlg, IDC_RADIO1); if (SendMessage(hCtrl, BM_GETCHECK, 0, 0) == 1) CurrentConvertOptions->PasswordOption = 0;
hCtrl = GetDlgItem(hDlg, IDC_RADIO2); if (SendMessage(hCtrl, BM_GETCHECK, 0, 0) == 1) CurrentConvertOptions->PasswordOption = 1;
hCtrl = GetDlgItem(hDlg, IDC_RADIO3); if (SendMessage(hCtrl, BM_GETCHECK, 0, 0) == 1) CurrentConvertOptions->PasswordOption = 2;
hCtrl = GetDlgItem(hDlg, IDC_PWCONST); * (WORD *)CurrentConvertOptions->PasswordConstant = sizeof(CurrentConvertOptions->PasswordConstant); SendMessage(hCtrl, EM_GETLINE, 0, (LPARAM) CurrentConvertOptions->PasswordConstant);
hCtrl = GetDlgItem(hDlg, IDC_CHKPWFORCE); if (SendMessage(hCtrl, BM_GETCHECK, 0, 0) == 1) CurrentConvertOptions->ForcePasswordChange = TRUE; else CurrentConvertOptions->ForcePasswordChange = FALSE;
// Username stuff--------------------------------------------------------
hCtrl = GetDlgItem(hDlg, IDC_RADIO4); if (SendMessage(hCtrl, BM_GETCHECK, 0, 0) == 1) CurrentConvertOptions->UserNameOption = 0;
hCtrl = GetDlgItem(hDlg, IDC_RADIO5); if (SendMessage(hCtrl, BM_GETCHECK, 0, 0) == 1) CurrentConvertOptions->UserNameOption = 1;
hCtrl = GetDlgItem(hDlg, IDC_RADIO6); if (SendMessage(hCtrl, BM_GETCHECK, 0, 0) == 1) CurrentConvertOptions->UserNameOption = 2;
hCtrl = GetDlgItem(hDlg, IDC_RADIO7); if (SendMessage(hCtrl, BM_GETCHECK, 0, 0) == 1) CurrentConvertOptions->UserNameOption = 3;
hCtrl = GetDlgItem(hDlg, IDC_USERCONST); * (WORD *)CurrentConvertOptions->UserConstant = sizeof(CurrentConvertOptions->UserConstant); SendMessage(hCtrl, EM_GETLINE, 0, (LPARAM) CurrentConvertOptions->UserConstant);
// Group-name stuff--------------------------------------------------------
hCtrl = GetDlgItem(hDlg, IDC_RADIO8); if (SendMessage(hCtrl, BM_GETCHECK, 0, 0) == 1) CurrentConvertOptions->GroupNameOption = 0;
hCtrl = GetDlgItem(hDlg, IDC_RADIO9); if (SendMessage(hCtrl, BM_GETCHECK, 0, 0) == 1) CurrentConvertOptions->GroupNameOption = 1;
hCtrl = GetDlgItem(hDlg, IDC_RADIO10); if (SendMessage(hCtrl, BM_GETCHECK, 0, 0) == 1) CurrentConvertOptions->GroupNameOption = 2;
hCtrl = GetDlgItem(hDlg, IDC_GROUPCONST); * (WORD *)CurrentConvertOptions->GroupConstant = sizeof(CurrentConvertOptions->GroupConstant); SendMessage(hCtrl, EM_GETLINE, 0, (LPARAM) CurrentConvertOptions->GroupConstant);
// Defaults page stuff------------------------------------------------------
hCtrl = GetDlgItem(hDlg, IDC_CHKSUPER); if (SendMessage(hCtrl, BM_GETCHECK, 0, 0) == 1) CurrentConvertOptions->SupervisorDefaults = TRUE; else CurrentConvertOptions->SupervisorDefaults = FALSE;
hCtrl = GetDlgItem(hDlg, IDC_CHKADMIN); if (SendMessage(hCtrl, BM_GETCHECK, 0, 0) == 1) CurrentConvertOptions->AdminAccounts = TRUE; else CurrentConvertOptions->AdminAccounts = FALSE;
if (FPNWChk) { hCtrl = GetDlgItem(hDlg, IDC_CHKFPNW); if (SendMessage(hCtrl, BM_GETCHECK, 0, 0) == 1) CurrentConvertOptions->NetWareInfo = TRUE; else CurrentConvertOptions->NetWareInfo = FALSE; } else CurrentConvertOptions->NetWareInfo = FALSE;
// Advanced >> button stuff-------------------------------------------------
hCtrl = GetDlgItem(hDlg, IDC_CHKTRUSTED); if (SendMessage(hCtrl, BM_GETCHECK, 0, 0) == 1) { CurrentConvertOptions->UseTrustedDomain = TRUE;
// if there is already a trusted domain selected - clear it out
if (CurrentConvertOptions->TrustedDomain != NULL) { DomainListDelete(CurrentConvertOptions->TrustedDomain); CurrentConvertOptions->TrustedDomain = NULL; }
hCtrl = GetDlgItem(hDlg, IDC_TRUSTED); dwIndex = SendMessage(hCtrl, CB_GETCURSEL, 0, 0);
if (dwIndex != CB_ERR) { // Get the domain name and then try to add it to our lists
SendMessage(hCtrl, CB_GETLBTEXT, (WPARAM) dwIndex, (LPARAM) TrustedDomain); CurrentConvertOptions->TrustedDomain = NTTrustedDomainSet(hDlg, DestServ, TrustedDomain); }
} else CurrentConvertOptions->UseTrustedDomain = FALSE;
// Set default values to new selections
UserOptionsDefaultsSet(CurrentConvertOptions);
} // UserDialogSave
/*+-------------------------------------------------------------------------+
| UserDialogVerify() | +-------------------------------------------------------------------------+*/ BOOL UserDialogVerify(HWND hDlg) { HWND hCtrl; static TCHAR MappingFile[MAX_PATH + 1]; static char FileNameA[MAX_PATH + 1]; static char CmdLine[MAX_PATH + 1 + 12]; // Editor + file
TCHAR drive[MAX_DRIVE + 1]; TCHAR dir[MAX_PATH + 1]; TCHAR fname[MAX_PATH + 1]; TCHAR ext[_MAX_EXT + 1]; HANDLE hFile;
// Check trusted domain...
// Check mapping file
hCtrl = GetDlgItem(hDlg, IDC_CHKUSERS); if (SendMessage(hCtrl, BM_GETCHECK, 0, 0) == 1) { hCtrl = GetDlgItem(hDlg, IDC_CHKMAPPING); if (SendMessage(hCtrl, BM_GETCHECK, 0, 0) == 1) { hCtrl = GetDlgItem(hDlg, IDC_MAPPINGFILE); * (WORD *)MappingFile = sizeof(MappingFile); SendMessage(hCtrl, EM_GETLINE, 0, (LPARAM) MappingFile); lsplitpath(MappingFile, drive, dir, fname, ext);
// Make sure a file name is specified
if (lstrlen(fname) == 0) { MessageBox(hDlg, Lids(IDS_NOREADMAP), Lids(IDS_TXTWARNING), MB_OK | MB_ICONEXCLAMATION); hCtrl = GetDlgItem(hDlg, IDC_MAPPINGFILE); SetFocus(hCtrl); return FALSE; }
if ((drive[0] == TEXT('\0')) && (dir[0] == TEXT('\0'))) lstrcpy(dir, ProgPath);
if (ext[0] == TEXT('\0')) lstrcpy(ext, Lids(IDS_S_36));
lmakepath(MappingFile, drive, dir, fname, ext);
lstrcpy(CurrentConvertOptions->MappingFile, MappingFile);
WideCharToMultiByte(CP_ACP, 0, MappingFile, -1, FileNameA, sizeof(FileNameA), NULL, NULL); hFile = CreateFileA( FileNameA, GENERIC_READ, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL );
if (hFile == INVALID_HANDLE_VALUE) { MessageBox(hDlg, Lids(IDS_NOREADMAP), Lids(IDS_TXTWARNING), MB_OK | MB_ICONEXCLAMATION); hCtrl = GetDlgItem(hDlg, IDC_MAPPINGFILE); SetFocus(hCtrl); return FALSE; } else CloseHandle(hFile);
} } // mapping file
return TRUE;
} // UserDialogVerify
/*+-------------------------------------------------------------------------+
| UserDialogSetup() | +-------------------------------------------------------------------------+*/ void UserDialogSetup(HWND hDlg) { HWND hCtrl;
// Main TransferUserCheckbox
hCtrl = GetDlgItem(hDlg, IDC_CHKUSERS); if (CurrentConvertOptions->TransferUserInfo) SendMessage(hCtrl, BM_SETCHECK, 1, 0); else SendMessage(hCtrl, BM_SETCHECK, 0, 0);
// Mapping file checkbox
hCtrl = GetDlgItem(hDlg, IDC_CHKMAPPING); if (CurrentConvertOptions->UseMappingFile) SendMessage(hCtrl, BM_SETCHECK, 1, 0); else SendMessage(hCtrl, BM_SETCHECK, 0, 0);
hCtrl = GetDlgItem(hDlg, IDC_MAPPINGFILE); PostMessage(hCtrl, EM_LIMITTEXT, (WPARAM) MAX_PATH, 0); SendMessage(hCtrl, WM_SETTEXT, 0, (LPARAM) CurrentConvertOptions->MappingFile);
// Force Password checkbox
hCtrl = GetDlgItem(hDlg, IDC_CHKPWFORCE); if (CurrentConvertOptions->ForcePasswordChange) SendMessage(hCtrl, BM_SETCHECK, 1, 0); else SendMessage(hCtrl, BM_SETCHECK, 0, 0);
// Set the text and limit the lengths of the edit fields...
hCtrl = GetDlgItem(hDlg, IDC_PWCONST); PostMessage(hCtrl, EM_LIMITTEXT, (WPARAM) MAX_PW_LEN, 0); SendMessage(hCtrl, WM_SETTEXT, 0, (LPARAM) CurrentConvertOptions->PasswordConstant);
hCtrl = GetDlgItem(hDlg, IDC_USERCONST); PostMessage(hCtrl, EM_LIMITTEXT, (WPARAM) MAX_UCONST_LEN, 0); SendMessage(hCtrl, WM_SETTEXT, 0, (LPARAM) CurrentConvertOptions->UserConstant);
hCtrl = GetDlgItem(hDlg, IDC_GROUPCONST); PostMessage(hCtrl, EM_LIMITTEXT, (WPARAM) MAX_UCONST_LEN, 0); SendMessage(hCtrl, WM_SETTEXT, 0, (LPARAM) CurrentConvertOptions->GroupConstant);
// Now init the radio buttons correctly
CheckRadioButton(hDlg, IDC_RADIO1, IDC_RADIO3, IDC_RADIO1 + CurrentConvertOptions->PasswordOption); CheckRadioButton(hDlg, IDC_RADIO4, IDC_RADIO7, IDC_RADIO4 + CurrentConvertOptions->UserNameOption); CheckRadioButton(hDlg, IDC_RADIO8, IDC_RADIO10, IDC_RADIO8 + CurrentConvertOptions->GroupNameOption);
// Do the controls in the defaults section
hCtrl = GetDlgItem(hDlg, IDC_CHKSUPER); if (CurrentConvertOptions->SupervisorDefaults) SendMessage(hCtrl, BM_SETCHECK, 1, 0); else SendMessage(hCtrl, BM_SETCHECK, 0, 0);
hCtrl = GetDlgItem(hDlg, IDC_CHKADMIN); if (CurrentConvertOptions->AdminAccounts) SendMessage(hCtrl, BM_SETCHECK, 1, 0); else SendMessage(hCtrl, BM_SETCHECK, 0, 0);
if (FPNWChk) { hCtrl = GetDlgItem(hDlg, IDC_CHKFPNW); if (CurrentConvertOptions->NetWareInfo) SendMessage(hCtrl, BM_SETCHECK, 1, 0); else SendMessage(hCtrl, BM_SETCHECK, 0, 0); } else SendMessage(hCtrl, BM_SETCHECK, 0, 0);
// Now for the Advanced >> area..
hCtrl = GetDlgItem(hDlg, IDC_CHKTRUSTED); if (CurrentConvertOptions->UseTrustedDomain) SendMessage(hCtrl, BM_SETCHECK, 1, 0); else SendMessage(hCtrl, BM_SETCHECK, 0, 0);
} // UserDialogSetup
/*+-------------------------------------------------------------------------+
| ShowArea() | +-------------------------------------------------------------------------+*/ void ShowArea(BOOL fShowDefAreaOnly, HWND hDlg, HWND hWndDefArea) { RECT rcDlg, rcDefArea; TCHAR szDlgDims[25]; char szaDlgDims[25]; HWND hWndChild; RECT rc;
// Save original width and height of dialog box
GetWindowRect(hDlg, &rcDlg);
// Retrieve coordinates for default area window.
GetWindowRect(hWndDefArea, &rcDefArea);
hWndChild = GetFirstChild(hDlg);
for (; hWndChild != NULL; hWndChild = GetNextSibling(hWndChild)) { // Calculate rectangle occupied by child window in sreen coordinates
GetWindowRect(hWndChild, &rc);
// Enable/Disable child if its:
// right edge is >= the right edge of hWndDefArea.
// bottom edge is >= the bottom edge of hWndDefArea.
if ((rc.right >= rcDefArea.right) || (rc.bottom >= rcDefArea.bottom)) EnableWindow(hWndChild, !fShowDefAreaOnly); }
if (fShowDefAreaOnly) { wsprintf(szDlgDims, TEXT("%05u %05u"), rcDlg.right - rcDlg.left, rcDlg.bottom - rcDlg.top);
SetStyleOff(hWndDefArea, SS_BLACKRECT); SetStyleOn(hWndDefArea, SS_LEFT); SetWindowText(hWndDefArea, szDlgDims);
// Resize dialog box to fit only default area.
SetWindowPos(hDlg, NULL, 0, 0, rcDefArea.right - rcDlg.left, rcDefArea.bottom - rcDlg.top, SWP_NOZORDER | SWP_NOMOVE);
// Make sure that the Default area box is hidden.
ShowWindow(hWndDefArea, SW_HIDE); } else { GetWindowText(hWndDefArea, szDlgDims, sizeof(szDlgDims));
WideCharToMultiByte( CP_ACP, 0, szDlgDims, -1, szaDlgDims, sizeof(szDlgDims), NULL, NULL );
// Restore dialog box to its original size.
SetWindowPos(hDlg, NULL, 0, 0, atoi(szaDlgDims), atoi(szaDlgDims + 6), SWP_NOZORDER | SWP_NOMOVE); }
} // ShowArea
/*+-------------------------------------------------------------------------+
| UserFileGet() | +-------------------------------------------------------------------------+*/ DWORD UserFileGet(HWND hwnd, LPTSTR FilePath) { OPENFILENAME ofn; TCHAR szDirName[MAX_PATH + 1]; TCHAR szFile[MAX_PATH + 1], szFileTitle[MAX_PATH + 1]; UINT i, cbString; TCHAR chReplace; TCHAR szFilter[256]; BOOL Found = FALSE; LPTSTR szExt; szExt = Lids(IDS_S_37);
lstrcpy(szDirName, ProgPath); lstrcpy(szFile, TEXT(""));
if ((cbString = LoadString(hInst, IDS_USERFILTERSTRING, szFilter, sizeof(szFilter))) == 0) { // Error occured
return 1L; }
chReplace = szFilter[cbString - 1]; // Retrieve wild character
for (i = 0; szFilter[i] != TEXT('\0'); i++) { if (szFilter[i] == chReplace) szFilter[i] = TEXT('\0'); }
// Set all structure members to zero
memset(&ofn, 0, sizeof(OPENFILENAME));
ofn.lStructSize = sizeof(OPENFILENAME); ofn.hwndOwner = hwnd; ofn.lpstrFilter = szFilter; ofn.nFilterIndex = 1; ofn.lpstrFile = szFile; ofn.nMaxFile = sizeof(szFile); ofn.lpstrFileTitle = szFileTitle; ofn.nMaxFileTitle = sizeof(szFileTitle); ofn.lpstrInitialDir = szDirName; ofn.lpstrDefExt = szExt; ofn.Flags = OFN_HIDEREADONLY | OFN_NOCHANGEDIR | OFN_PATHMUSTEXIST;
if (GetOpenFileName(&ofn)) { // Don't really need to open it yet - just copy the data
// If no path then append .
i = 0; while (!Found && (ofn.lpstrFile[i] != TEXT('\0'))) { if ((ofn.lpstrFile[i] == TEXT(':')) || (ofn.lpstrFile[i] == TEXT('\\'))) Found = TRUE; i++; }
lstrcpy(FilePath, TEXT(""));
if (!Found) lstrcpy(FilePath, TEXT(".\\"));
lstrcat(FilePath, ofn.lpstrFile); return 0L; } else { // Couldn't open the dang file
return 1L; }
} // UserFileGet
/*+-------------------------------------------------------------------------+
| DlgUsers_TrustedSetup() | +-------------------------------------------------------------------------+*/ void DlgUsers_TrustedSetup(HWND hDlg) { HWND hCtrl; ULONG i; static TRUSTED_DOMAIN_LIST *TList = NULL;
NTTrustedDomainsEnum(DestServ, &TList);
if (TList != NULL) { hCtrl = GetDlgItem(hDlg, IDC_TRUSTED);
for (i = 0; i < TList->Count; i++) SendMessage(hCtrl, CB_ADDSTRING, (WPARAM) 0, (LPARAM) TList->Name[i]);
}
EnableWindow(GetDlgItem(hDlg, IDC_ADVANCED), FALSE); ShowArea(FALSE, hDlg, GetDlgItem(hDlg, IDC_DEFAULTBOX));
// Toggle the advanced controls based on the main user toggle
hCtrl = GetDlgItem(hDlg, IDC_CHKUSERS); if (SendMessage(hCtrl, BM_GETCHECK, 0, 0) == 1) { hCtrl = GetDlgItem(hDlg, IDC_CHKTRUSTED); EnableWindow(hCtrl, TRUE);
hCtrl = GetDlgItem(hDlg, IDC_TRUSTED); EnableWindow(hCtrl, TRUE); SetFocus(GetDlgItem(hDlg, IDC_CHKTRUSTED)); } else { hCtrl = GetDlgItem(hDlg, IDC_CHKTRUSTED); EnableWindow(hCtrl, FALSE);
hCtrl = GetDlgItem(hDlg, IDC_TRUSTED); EnableWindow(hCtrl, FALSE); SetFocus(GetDlgItem(hDlg, IDHELP)); }
if ((TList == NULL) || (TList->Count = 0)) { EnableWindow(GetDlgItem(hDlg, IDC_CHKTRUSTED), FALSE); EnableWindow(GetDlgItem(hDlg, IDC_TRUSTED), FALSE); SetFocus(GetDlgItem(hDlg, IDHELP)); } else { // Select the trusted domain (or first one if none currently selected)
if (CurrentConvertOptions->TrustedDomain != NULL) SendMessage(GetDlgItem(hDlg, IDC_TRUSTED), CB_SELECTSTRING, (WPARAM) -1, (LPARAM) CurrentConvertOptions->TrustedDomain->Name); else SendMessage(GetDlgItem(hDlg, IDC_TRUSTED), CB_SETCURSEL, 0, 0);
// if the checkbox is set then enable the edit field
if (!CurrentConvertOptions->UseTrustedDomain) EnableWindow(GetDlgItem(hDlg, IDC_TRUSTED), FALSE);
}
// Free up the list as we don't need it anymore (it is in the combo-box)
if (TList) { FreeMemory(TList); TList = NULL; }
} // DlgUsers_TrustedSetup
/*+-------------------------------------------------------------------------+
| MappingFileEdit() | +-------------------------------------------------------------------------+*/ BOOL MappingFileEdit(HWND hDlg) { HWND hCtrl; static TCHAR MappingFile[MAX_PATH + 1]; static char FileNameA[MAX_PATH + 1]; static char CmdLine[MAX_PATH + 1 + 12]; // Editor + file
TCHAR drive[MAX_DRIVE + 1]; TCHAR dir[MAX_PATH + 1]; TCHAR fname[MAX_PATH + 1]; TCHAR ext[_MAX_EXT + 1]; HANDLE hFile; UINT uReturn; BOOL ret = TRUE; BOOL Browse = FALSE;
do { // First check filename
hCtrl = GetDlgItem(hDlg, IDC_MAPPINGFILE); * (WORD *)MappingFile = sizeof(MappingFile); SendMessage(hCtrl, EM_GETLINE, 0, (LPARAM) MappingFile); lsplitpath(MappingFile, drive, dir, fname, ext);
// Make sure a file name is specified
if (Browse || (lstrlen(fname) == 0)) { // No name was specified, so let the user browse for a file
if (!UserFileGet(hDlg, MappingFile)) { hCtrl = GetDlgItem(hDlg, IDC_MAPPINGFILE); SendMessage(hCtrl, WM_SETTEXT, 0, (LPARAM) MappingFile); SetFocus(hCtrl); lsplitpath(MappingFile, drive, dir, fname, ext); } else return FALSE; }
Browse = FALSE;
// remake path so it is fully qualified
if ((drive[0] == TEXT('\0')) && (dir[0] == TEXT('\0'))) lstrcpy(dir, ProgPath);
if (ext[0] == TEXT('\0')) lstrcpy(ext, Lids(IDS_S_36));
lmakepath(MappingFile, drive, dir, fname, ext);
// Now make sure the file exists and is accessible
WideCharToMultiByte(CP_ACP, 0, MappingFile, -1, FileNameA, sizeof(FileNameA), NULL, NULL);
hFile = CreateFileA( FileNameA, GENERIC_READ, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL );
if (hFile == INVALID_HANDLE_VALUE) { // Couldn't open the file, report to user
if (MessageBox(hDlg, Lids(IDS_NOEDITMAP), Lids(IDS_TXTWARNING), MB_YESNO | MB_ICONQUESTION) == IDYES) Browse = TRUE; else { // get out of loop as nothing more to do
hCtrl = GetDlgItem(hDlg, IDC_MAPPINGFILE); SetFocus(hCtrl); ret = FALSE; } } else { // Could create a new file so make the mapping file...
CloseHandle(hFile); CursorHourGlass(); wsprintfA(CmdLine, "Notepad %s", FileNameA); uReturn = WinExec(CmdLine, SW_SHOW); CursorNormal(); }
} while (Browse);
// Check mapping file check-box, if it's not check'd then do so
if (ret) { hCtrl = GetDlgItem(hDlg, IDC_CHKMAPPING); if (SendMessage(hCtrl, BM_GETCHECK, 0, 0) != 1) SendMessage(hCtrl, BM_SETCHECK, 1, 0); }
return ret;
} // MappingFileEdit
/*+-------------------------------------------------------------------------+
| DlgUsers() | +-------------------------------------------------------------------------+*/ LRESULT CALLBACK DlgUsers(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) { HWND hCtrl; int wmId, wmEvent; static short UserNameTab, GroupNameTab, PasswordsTab, DefaultsTab; static BOOL TrustedEnabled; TCHAR TrustedDomain[MAX_PATH + 1]; static TCHAR MappingFile[MAX_PATH + 1]; DWORD_PTR dwIndex;
switch (message) {
case WM_INITDIALOG: // Center the dialog over the application window
CenterWindow (hDlg, GetWindow (hDlg, GW_OWNER));
// Setup for Advanced >> button
ShowArea(TRUE, hDlg, GetDlgItem(hDlg, IDC_DEFAULTBOX)); TrustedEnabled = FALSE;
// Need to set the check and radio buttons to correct state...
UserDialogSetup(hDlg);
hCtrl = GetDlgItem( hDlg, IDC_TABUSERS );
PasswordsTab = BookTab_AddItem( hCtrl, Lids(IDS_S_38) ); BookTab_SetItemData( hCtrl, PasswordsTab, 1001 );
UserNameTab = BookTab_AddItem( hCtrl, Lids(IDS_S_39) ); BookTab_SetItemData( hCtrl, UserNameTab, 1002 );
GroupNameTab = BookTab_AddItem( hCtrl, Lids(IDS_S_40) ); BookTab_SetItemData( hCtrl, GroupNameTab, 1003 );
DefaultsTab = BookTab_AddItem( hCtrl, Lids(IDS_S_41) ); BookTab_SetItemData( hCtrl, DefaultsTab, 1004 );
BookTab_SetCurSel(hCtrl, PasswordsTab);
// now need to reset the Advanced button to the correct state and also the
// Advanced display area...
if (CurrentConvertOptions->UseTrustedDomain) { TrustedEnabled = TRUE; DlgUsers_TrustedSetup(hDlg); }
// Weirdness to initially enable controls on the tab control -
// looks like a bug in the tab control.
SetFocus(hCtrl); hCtrl = GetDlgItem( hDlg, IDOK ); SetFocus(hCtrl); PostMessage(hDlg, BTN_SELCHANGE, 0, 0);
return (TRUE);
case BTN_SELCHANGE:
hCtrl = GetDlgItem( hDlg, IDC_TABUSERS ); TabSelection = BookTab_GetCurSel(hCtrl);
if (TabSelection == UserNameTab) { Passwords_Toggle(hDlg, FALSE); Defaults_Toggle(hDlg, FALSE); DuplicateGroups_Toggle(hDlg, FALSE); DuplicateUsers_Toggle(hDlg, TRUE); }
if (TabSelection == GroupNameTab) { Passwords_Toggle(hDlg, FALSE); Defaults_Toggle(hDlg, FALSE); DuplicateUsers_Toggle(hDlg, FALSE); DuplicateGroups_Toggle(hDlg, TRUE); }
if (TabSelection == PasswordsTab) { DuplicateUsers_Toggle(hDlg, FALSE); Defaults_Toggle(hDlg, FALSE); DuplicateGroups_Toggle(hDlg, FALSE); Passwords_Toggle(hDlg, TRUE); }
if (TabSelection == DefaultsTab) { Passwords_Toggle(hDlg, FALSE); DuplicateUsers_Toggle(hDlg, FALSE); DuplicateGroups_Toggle(hDlg, FALSE); Defaults_Toggle(hDlg, TRUE); }
return (TRUE);
case WM_COMMAND: wmId = LOWORD(wParam); wmEvent = HIWORD(wParam);
switch (wmId) { case IDOK: if (UserDialogVerify(hDlg)) { UserDialogSave(hDlg); EndDialog(hDlg, 0); }
return (TRUE); break;
case IDCANCEL: EndDialog(hDlg, 0); return (TRUE); break;
case IDHELP: if (TrustedEnabled) WinHelp(hDlg, HELP_FILE, HELP_CONTEXT, (DWORD) IDC_HELP_USERADV); else WinHelp(hDlg, HELP_FILE, HELP_CONTEXT, (DWORD) IDC_HELP_USER);
return (TRUE); break;
case IDC_ADVANCED: TrustedEnabled = TRUE; DlgUsers_TrustedSetup(hDlg); return (TRUE); break;
case IDC_CHKUSERS: hCtrl = GetDlgItem(hDlg, IDC_CHKUSERS); if (SendMessage(hCtrl, BM_GETCHECK, 0, 0) == 1) UserDialogToggle(hDlg, TRUE); else UserDialogToggle(hDlg, FALSE);
PostMessage(hDlg, BTN_SELCHANGE, 0, 0); return (TRUE); break;
case IDC_CHKMAPPING: hCtrl = GetDlgItem(hDlg, IDC_CHKMAPPING); if (SendMessage(hCtrl, BM_GETCHECK, 0, 0) == 1) Mapping_Toggle(hDlg, FALSE); else Mapping_Toggle(hDlg, TRUE);
return (TRUE); break;
case IDC_CHKTRUSTED: hCtrl = GetDlgItem(hDlg, IDC_CHKTRUSTED); if (SendMessage(hCtrl, BM_GETCHECK, 0, 0) == 1) { hCtrl = GetDlgItem(hDlg, IDC_TRUSTED); EnableWindow(hCtrl, TRUE);
// Get trusted domain
dwIndex = SendMessage(hCtrl, CB_GETCURSEL, 0, 0); if (dwIndex != CB_ERR) { // Get the domain name and then try to add it to our lists
SendMessage(hCtrl, CB_GETLBTEXT, (WPARAM) dwIndex, (LPARAM) TrustedDomain); CurrentConvertOptions->TrustedDomain = NTTrustedDomainSet(hDlg, DestServ, TrustedDomain); CurrentConvertOptions->UseTrustedDomain = TRUE; } else CurrentConvertOptions->UseTrustedDomain = FALSE;
} else { hCtrl = GetDlgItem(hDlg, IDC_TRUSTED); EnableWindow(hCtrl, FALSE); CurrentConvertOptions->UseTrustedDomain = FALSE; }
// Toggled trust relationship so setup FPNW info accordingly
FPNWChk = IsFPNW(UserServerNameGet(DServ, CurrentConvertOptions)); if (TabSelection == DefaultsTab) Defaults_Toggle(hDlg, TRUE);
return (TRUE); break;
case IDC_TRUSTED: if (wmEvent == CBN_SELCHANGE) { // A new trusted domain was selected, update FPNW flag
hCtrl = GetDlgItem(hDlg, IDC_TRUSTED); EnableWindow(hCtrl, TRUE);
// Get trusted domain
dwIndex = SendMessage(hCtrl, CB_GETCURSEL, 0, 0); if (dwIndex != CB_ERR) { // Get the domain name and then try to add it to our lists
SendMessage(hCtrl, CB_GETLBTEXT, (WPARAM) dwIndex, (LPARAM) TrustedDomain); CurrentConvertOptions->TrustedDomain = NTTrustedDomainSet(hDlg, DestServ, TrustedDomain); CurrentConvertOptions->UseTrustedDomain = TRUE; } else CurrentConvertOptions->UseTrustedDomain = FALSE;
FPNWChk = IsFPNW(UserServerNameGet(DServ, CurrentConvertOptions)); CurrentConvertOptions->NetWareInfo = FPNWChk;
if (TabSelection == DefaultsTab) Defaults_Toggle(hDlg, TRUE);
} break;
case IDC_BTNMAPPINGFILE: // Get anything in the text box
hCtrl = GetDlgItem(hDlg, IDC_MAPPINGFILE); * (WORD *)MappingFile = sizeof(MappingFile); SendMessage(hCtrl, EM_GETLINE, 0, (LPARAM) MappingFile);
// invoke the creation routine
MapFileCreate(hDlg, MappingFile, SourceServ);
// reset edit-box to whatever the returned filename is
SendMessage(hCtrl, WM_SETTEXT, 0, (LPARAM) MappingFile); if (SendMessage(hCtrl, EM_LINELENGTH, 0, 0)) { hCtrl = GetDlgItem(hDlg, IDC_CHKMAPPING); SendMessage(hCtrl, BM_SETCHECK, 1, 0); } else { hCtrl = GetDlgItem(hDlg, IDC_CHKMAPPING); SendMessage(hCtrl, BM_SETCHECK, 0, 0); }
return (TRUE); break;
case IDC_BTNMAPPINGEDIT: MappingFileEdit(hDlg); return (TRUE); break;
case IDC_PWCONST:
if (wmEvent == EN_CHANGE) CheckRadioButton(hDlg, IDC_RADIO1, IDC_RADIO3, IDC_RADIO3);
break;
case IDC_USERCONST:
if (wmEvent == EN_CHANGE) CheckRadioButton(hDlg, IDC_RADIO4, IDC_RADIO7, IDC_RADIO7);
break;
case IDC_GROUPCONST:
if (wmEvent == EN_CHANGE) CheckRadioButton(hDlg, IDC_RADIO8, IDC_RADIO10, IDC_RADIO10);
break;
} break; }
return (FALSE); // Didn't process the message
lParam; } // DlgUsers
/*+-------------------------------------------------------------------------+
| UserOptions_Do() | +-------------------------------------------------------------------------+*/ void UserOptions_Do(HWND hDlg, void *ConvOptions, SOURCE_SERVER_BUFFER *SourceServer, DEST_SERVER_BUFFER *DestServer) { DLGPROC lpfnDlg;
SServ = SourceServer; DServ = DestServer; SourceServ = SourceServer->Name; DestServ = DestServer->Name;
FPNWChk = DServ->IsFPNW; CurrentConvertOptions = (CONVERT_OPTIONS *) ConvOptions; lpfnDlg = MakeProcInstance((DLGPROC)DlgUsers, hInst); DialogBox(hInst, TEXT("DlgNewUsers"), hDlg, lpfnDlg) ; FreeProcInstance(lpfnDlg); } // UserOptions_Do
|