|
|
//+-------------------------------------------------------------------------
//
// Microsoft Windows
// Copyright (C) Microsoft Corporation, 1992 - 2000
//
// File: gettable.cpp
//
// Contents: Defines Table DSGet
//
// History: 13-Oct-2000 JeffJon Created
//
//
//--------------------------------------------------------------------------
#include "pch.h"
#include "cstrings.h"
#include "gettable.h"
#include "display.h"
#include "usage.h"
//+--------------------------------------------------------------------------
//
// Member: CDSGetDisplayInfo::AddValue
//
// Synopsis: Adds a value to the value array and allocates more space
// if necessary.
//
// Arguments: [pszValue IN] : new value to be added
//
// Returns: HRESULT : E_OUTOFMEMORY if we failed to allocate space
// S_OK if we succeeded in setting the password
//
// History: 23-Oct-2000 JeffJon Created
//
//---------------------------------------------------------------------------
HRESULT CDSGetDisplayInfo::AddValue(PCWSTR pszValue) { ENTER_FUNCTION_HR(LEVEL8_LOGGING, CDSGetDisplayInfo::AddValue, hr); do // false loop
{ //
// Verify parameters
//
if (!pszValue) { ASSERT(pszValue); hr = E_INVALIDARG; break; }
if (m_dwAttributeValueCount == m_dwAttributeValueSize) { DWORD dwNewSize = m_dwAttributeValueSize + 5;
//
// Allocate a new array with more space
//
PWSTR* ppszNewArray = new PWSTR[dwNewSize]; if (!ppszNewArray) { hr = E_OUTOFMEMORY; break; }
m_dwAttributeValueSize = dwNewSize;
//
// Copy the old values
//
memcpy(ppszNewArray, m_ppszAttributeStringValue, m_dwAttributeValueCount * sizeof(PWSTR));
//
// Delete the old array
//
if (m_ppszAttributeStringValue) { delete[] m_ppszAttributeStringValue; } m_ppszAttributeStringValue = ppszNewArray; }
//
// Add the new value to the end of the array
//
m_ppszAttributeStringValue[m_dwAttributeValueCount] = new WCHAR[wcslen(pszValue) + 1]; if (!m_ppszAttributeStringValue[m_dwAttributeValueCount]) { hr = E_OUTOFMEMORY; break; }
wcscpy(m_ppszAttributeStringValue[m_dwAttributeValueCount], pszValue); m_dwAttributeValueCount++;
} while (false);
return hr; }
//+-------------------------------------------------------------------------
// Parser table
//--------------------------------------------------------------------------
ARG_RECORD DSGET_COMMON_COMMANDS[] = { #ifdef DBG
//
// -debug, -debug
//
0,(LPWSTR)c_sz_arg1_com_debug, 0,NULL, ARG_TYPE_DEBUG, ARG_FLAG_OPTIONAL|ARG_FLAG_HIDDEN, NULL, 0, NULL, #endif
//
// h, ?
//
0,(LPWSTR)c_sz_arg1_com_help, 0,(LPWSTR)c_sz_arg2_com_help, ARG_TYPE_HELP, ARG_FLAG_OPTIONAL, NULL, 0, NULL,
//
// objecttype
//
0,(LPWSTR)c_sz_arg1_com_objecttype, 0,NULL, ARG_TYPE_STR, ARG_FLAG_REQUIRED|ARG_FLAG_NOFLAG, 0, 0, NULL,
//
// s,server
//
0,(LPWSTR)c_sz_arg1_com_server, 0,(LPWSTR)c_sz_arg2_com_server, ARG_TYPE_STR, ARG_FLAG_OPTIONAL, NULL, 0, NULL,
//
// d,domain
//
0,(LPWSTR)c_sz_arg1_com_domain, 0,(LPWSTR)c_sz_arg2_com_domain, ARG_TYPE_STR, ARG_FLAG_OPTIONAL, NULL, 0, NULL,
//
// u, username
//
0,(LPWSTR)c_sz_arg1_com_username, 0,(LPWSTR)c_sz_arg2_com_username, ARG_TYPE_STR, ARG_FLAG_OPTIONAL, NULL, 0, NULL,
//
// w, password
//
0,(LPWSTR)c_sz_arg1_com_password, 0,(LPWSTR)c_sz_arg2_com_password, ARG_TYPE_STR, ARG_FLAG_OPTIONAL, NULL, 0, ValidateAdminPassword,
//
// c Continue
//
0,(PWSTR)c_sz_arg1_com_continue, ID_ARG2_NULL, NULL, ARG_TYPE_BOOL, ARG_FLAG_OPTIONAL, (CMD_TYPE)_T(""), 0, NULL,
//
// q,q
//
0,(LPWSTR)c_sz_arg1_com_quiet, 0,NULL, ARG_TYPE_BOOL, ARG_FLAG_OPTIONAL, NULL, 0, NULL,
//
// l List
//
0,(LPWSTR)c_sz_arg1_com_listformat, 0,NULL, ARG_TYPE_BOOL, ARG_FLAG_OPTIONAL, 0, 0, NULL,
//
// objectDN
//
0,(LPWSTR)c_sz_arg1_com_objectDN, ID_ARG2_NULL,NULL, ARG_TYPE_MSZ, ARG_FLAG_REQUIRED|ARG_FLAG_NOFLAG|ARG_FLAG_STDIN|ARG_FLAG_DN, 0, 0, NULL,
//
// dn
//
0, (PWSTR)g_pszArg1UserDN, ID_ARG2_NULL, NULL, ARG_TYPE_BOOL, ARG_FLAG_OPTIONAL, 0, 0, NULL,
//
// description
//
0, (PWSTR)c_sz_arg1_com_description, ID_ARG2_NULL, NULL, ARG_TYPE_BOOL, ARG_FLAG_OPTIONAL, 0, 0, NULL,
ARG_TERMINATOR
};
ARG_RECORD DSGET_USER_COMMANDS[]= { //
// SamID
//
0, (PWSTR)g_pszArg1UserSAMID, ID_ARG2_NULL, NULL, ARG_TYPE_BOOL, ARG_FLAG_OPTIONAL, 0, 0, NULL,
//
// sid
//
0, (PWSTR)g_pszArg1UserSID, ID_ARG2_NULL, NULL, ARG_TYPE_BOOL, ARG_FLAG_OPTIONAL, 0, 0, NULL,
//
// upn
//
0, (PWSTR)g_pszArg1UserUPN, ID_ARG2_NULL, NULL, ARG_TYPE_BOOL, ARG_FLAG_OPTIONAL, 0, 0, NULL,
//
// fn. FirstName
//
0, (PWSTR)g_pszArg1UserFirstName, ID_ARG2_NULL, NULL, ARG_TYPE_BOOL, ARG_FLAG_OPTIONAL, 0, 0, NULL,
//
// mi Middle Initial
//
0, (PWSTR)g_pszArg1UserMiddleInitial, ID_ARG2_NULL, NULL, ARG_TYPE_BOOL, ARG_FLAG_OPTIONAL, 0, 0, NULL,
//
// ln LastName
//
0, (PWSTR)g_pszArg1UserLastName, ID_ARG2_NULL, NULL, ARG_TYPE_BOOL, ARG_FLAG_OPTIONAL, 0, 0, NULL,
//
// display DisplayName
//
0, (PWSTR)g_pszArg1UserDisplayName, ID_ARG2_NULL, NULL, ARG_TYPE_BOOL, ARG_FLAG_OPTIONAL, 0, 0, NULL,
//
// empid Employee ID
//
0, (PWSTR)g_pszArg1UserEmployeeID, ID_ARG2_NULL, NULL, ARG_TYPE_BOOL, ARG_FLAG_OPTIONAL, 0, 0, NULL,
//
// office Office Location
//
0, (PWSTR)g_pszArg1UserOffice, ID_ARG2_NULL, NULL, ARG_TYPE_BOOL, ARG_FLAG_OPTIONAL, 0, 0, NULL,
//
// tel Telephone
//
0, (PWSTR)g_pszArg1UserTelephone, ID_ARG2_NULL, NULL, ARG_TYPE_BOOL, ARG_FLAG_OPTIONAL, 0, 0, NULL,
//
// email E-mail
//
0, (PWSTR)g_pszArg1UserEmail, ID_ARG2_NULL, NULL, ARG_TYPE_BOOL, ARG_FLAG_OPTIONAL, 0, 0, NULL,
//
// hometel Home Telephone
//
0, (PWSTR)g_pszArg1UserHomeTelephone, ID_ARG2_NULL, NULL, ARG_TYPE_BOOL, ARG_FLAG_OPTIONAL, 0, 0, NULL,
//
// pager Pager number
//
0, (PWSTR)g_pszArg1UserPagerNumber, ID_ARG2_NULL, NULL, ARG_TYPE_BOOL, ARG_FLAG_OPTIONAL, 0, 0, NULL,
//
// mobile Mobile Telephone Number
//
0, (PWSTR)g_pszArg1UserMobileNumber, ID_ARG2_NULL, NULL, ARG_TYPE_BOOL, ARG_FLAG_OPTIONAL, 0, 0, NULL,
//
// fax Fax Number
//
0, (PWSTR)g_pszArg1UserFaxNumber, ID_ARG2_NULL, NULL, ARG_TYPE_BOOL, ARG_FLAG_OPTIONAL, 0, 0, NULL,
//
// iptel IP phone#
//
0, (PWSTR)g_pszArg1UserIPTel, ID_ARG2_NULL, NULL, ARG_TYPE_BOOL, ARG_FLAG_OPTIONAL, 0, 0, NULL,
//
// webpg Web Page
//
0, (PWSTR)g_pszArg1UserWebPage, ID_ARG2_NULL, NULL, ARG_TYPE_BOOL, ARG_FLAG_OPTIONAL, 0, 0, NULL,
//
// title Title
//
0, (PWSTR)g_pszArg1UserTitle, ID_ARG2_NULL, NULL, ARG_TYPE_BOOL, ARG_FLAG_OPTIONAL, 0, 0, NULL,
//
// dept Department
//
0, (PWSTR)g_pszArg1UserDepartment, ID_ARG2_NULL, NULL, ARG_TYPE_BOOL, ARG_FLAG_OPTIONAL, 0, 0, NULL,
//
// company Company
//
0, (PWSTR)g_pszArg1UserCompany, ID_ARG2_NULL, NULL, ARG_TYPE_BOOL, ARG_FLAG_OPTIONAL, 0, 0, NULL,
//
// mgr Manager
//
0, (PWSTR)g_pszArg1UserManager, ID_ARG2_NULL, NULL, ARG_TYPE_BOOL, ARG_FLAG_OPTIONAL, 0, 0, NULL,
//
// hmdir Home Directory
//
0, (PWSTR)g_pszArg1UserHomeDirectory, ID_ARG2_NULL, NULL, ARG_TYPE_BOOL, ARG_FLAG_OPTIONAL, 0, 0, NULL,
//
// hmdrv Home Drive
//
0, (PWSTR)g_pszArg1UserHomeDrive, ID_ARG2_NULL, NULL, ARG_TYPE_BOOL, ARG_FLAG_OPTIONAL, 0, 0, NULL,
//
// profile Profile
//
0, (PWSTR)g_pszArg1UserProfile, ID_ARG2_NULL, NULL, ARG_TYPE_BOOL, ARG_FLAG_OPTIONAL, 0, 0, NULL,
//
// loscr Logon Script
//
0, (PWSTR)g_pszArg1UserLogonScript, ID_ARG2_NULL, NULL, ARG_TYPE_BOOL, ARG_FLAG_OPTIONAL, 0, 0, NULL,
//
// mustchpwd Must Change Password at next logon
//
0, (PWSTR)g_pszArg1UserMustChangePwd, ID_ARG2_NULL, NULL, ARG_TYPE_BOOL, ARG_FLAG_OPTIONAL, 0, 0, NULL,
//
// canchpwd Can Change Password
//
0, (PWSTR)g_pszArg1UserCanChangePwd, ID_ARG2_NULL, NULL, ARG_TYPE_BOOL, ARG_FLAG_OPTIONAL, 0, 0, NULL, //
// pwdneverexpires Password never expires
//
0, (PWSTR)g_pszArg1UserPwdNeverExpires, ID_ARG2_NULL, NULL, ARG_TYPE_BOOL, ARG_FLAG_OPTIONAL, 0, 0, NULL, //
// disabled Disable Account
//
0, (PWSTR)g_pszArg1UserDisableAccount, ID_ARG2_NULL, NULL, ARG_TYPE_BOOL, ARG_FLAG_OPTIONAL, 0, 0, NULL,
//
// acctexpires Account Expires
//
0, (PWSTR)g_pszArg1UserAcctExpires, ID_ARG2_NULL, NULL, ARG_TYPE_BOOL, ARG_FLAG_OPTIONAL, 0, 0, NULL,
//
// reversiblepwd Password stored with reversible encryption
//
0, (PWSTR)g_pszArg1UserReversiblePwd, ID_ARG2_NULL, NULL, ARG_TYPE_BOOL, ARG_FLAG_OPTIONAL, 0, 0, NULL,
//
// memberof Member of group
//
0, (PWSTR)g_pszArg1UserMemberOf, ID_ARG2_NULL, NULL, ARG_TYPE_BOOL, ARG_FLAG_OPTIONAL, 0, 0, NULL,
//
// expand Recursively expand group membership
//
0, (PWSTR)g_pszArg1UserExpand, ID_ARG2_NULL, NULL, ARG_TYPE_BOOL, ARG_FLAG_OPTIONAL, 0, 0, NULL,
ARG_TERMINATOR };
ARG_RECORD DSGET_COMPUTER_COMMANDS[]= { //
// SamID
//
0, (PWSTR)g_pszArg1ComputerSAMID, ID_ARG2_NULL, NULL, ARG_TYPE_BOOL, ARG_FLAG_OPTIONAL, 0, 0, NULL,
//
// sid
//
0, (PWSTR)g_pszArg1ComputerSID, ID_ARG2_NULL, NULL, ARG_TYPE_BOOL, ARG_FLAG_OPTIONAL, 0, 0, NULL,
//
// loc
//
0, (PWSTR)g_pszArg1ComputerLoc, ID_ARG2_NULL, NULL, ARG_TYPE_BOOL, ARG_FLAG_OPTIONAL, 0, 0, NULL,
//
// disabled Disable Account
//
0, (PWSTR)g_pszArg1ComputerDisableAccount, ID_ARG2_NULL, NULL, ARG_TYPE_BOOL, ARG_FLAG_OPTIONAL, 0, 0, NULL,
//
// memberof Member of group
//
0, (PWSTR)g_pszArg1ComputerMemberOf, ID_ARG2_NULL, NULL, ARG_TYPE_BOOL, ARG_FLAG_OPTIONAL, 0, 0, NULL,
//
// expand Recursively expand group membership
//
0, (PWSTR)g_pszArg1ComputerExpand, ID_ARG2_NULL, NULL, ARG_TYPE_BOOL, ARG_FLAG_OPTIONAL, (CMD_TYPE)_T(""), 0, NULL,
ARG_TERMINATOR, };
ARG_RECORD DSGET_GROUP_COMMANDS[]= { //
// samname
//
0, (PWSTR)g_pszArg1GroupSamid, ID_ARG2_NULL, NULL, ARG_TYPE_BOOL, ARG_FLAG_OPTIONAL, 0, 0, NULL,
//
// sid
//
0, (PWSTR)g_pszArg1GroupSID, ID_ARG2_NULL, NULL, ARG_TYPE_BOOL, ARG_FLAG_OPTIONAL, 0, 0, NULL,
//
// secgrp Security enabled
//
0, (PWSTR)g_pszArg1GroupSecGrp, ID_ARG2_NULL, NULL, ARG_TYPE_BOOL, ARG_FLAG_OPTIONAL, 0, 0, NULL,
//
// scope Group scope (local/global/universal)
//
0, (PWSTR)g_pszArg1GroupScope, ID_ARG2_NULL, NULL, ARG_TYPE_BOOL, ARG_FLAG_OPTIONAL, 0, 0, NULL,
//
// memberof Member of groups
//
0, (PWSTR)g_pszArg1GroupMemberOf, ID_ARG2_NULL, NULL, ARG_TYPE_BOOL, ARG_FLAG_OPTIONAL, 0, 0, NULL,
//
// members Contains members
//
0, (PWSTR)g_pszArg1GroupMembers, ID_ARG2_NULL, NULL, ARG_TYPE_BOOL, ARG_FLAG_OPTIONAL, 0, 0, NULL,
//
// expand Recursively expand group membership
//
0, (PWSTR)g_pszArg1GroupExpand, ID_ARG2_NULL, NULL, ARG_TYPE_BOOL, ARG_FLAG_OPTIONAL, 0, 0, NULL,
ARG_TERMINATOR, };
ARG_RECORD DSGET_CONTACT_COMMANDS[]= { //
// fn. FirstName
//
0, (PWSTR)g_pszArg1UserFirstName, ID_ARG2_NULL, NULL, ARG_TYPE_BOOL, ARG_FLAG_OPTIONAL, 0, 0, NULL,
//
// mi Middle Initial
//
0, (PWSTR)g_pszArg1UserMiddleInitial, ID_ARG2_NULL, NULL, ARG_TYPE_BOOL, ARG_FLAG_OPTIONAL, 0, 0, NULL,
//
// ln LastName
//
0, (PWSTR)g_pszArg1UserLastName, ID_ARG2_NULL, NULL, ARG_TYPE_BOOL, ARG_FLAG_OPTIONAL, 0, 0, NULL,
//
// display DisplayName
//
0, (PWSTR)g_pszArg1UserDisplayName, ID_ARG2_NULL, NULL, ARG_TYPE_BOOL, ARG_FLAG_OPTIONAL, 0, 0, NULL,
//
// office Office Location
//
0, (PWSTR)g_pszArg1UserOffice, ID_ARG2_NULL, NULL, ARG_TYPE_BOOL, ARG_FLAG_OPTIONAL, 0, 0, NULL,
//
// tel Telephone
//
0, (PWSTR)g_pszArg1UserTelephone, ID_ARG2_NULL, NULL, ARG_TYPE_BOOL, ARG_FLAG_OPTIONAL, 0, 0, NULL,
//
// email E-mail
//
0, (PWSTR)g_pszArg1UserEmail, ID_ARG2_NULL, NULL, ARG_TYPE_BOOL, ARG_FLAG_OPTIONAL, 0, 0, NULL,
//
// hometel Home Telephone
//
0, (PWSTR)g_pszArg1UserHomeTelephone, ID_ARG2_NULL, NULL, ARG_TYPE_BOOL, ARG_FLAG_OPTIONAL, 0, 0, NULL,
//
// pager Pager number
//
0, (PWSTR)g_pszArg1UserPagerNumber, ID_ARG2_NULL, NULL, ARG_TYPE_BOOL, ARG_FLAG_OPTIONAL, 0, 0, NULL,
//
// mobile Mobile Telephone Number
//
0, (PWSTR)g_pszArg1UserMobileNumber, ID_ARG2_NULL, NULL, ARG_TYPE_BOOL, ARG_FLAG_OPTIONAL, 0, 0, NULL,
//
// fax Fax Number
//
0, (PWSTR)g_pszArg1UserFaxNumber, ID_ARG2_NULL, NULL, ARG_TYPE_BOOL, ARG_FLAG_OPTIONAL, 0, 0, NULL,
//
// title Title
//
0, (PWSTR)g_pszArg1UserTitle, ID_ARG2_NULL, NULL, ARG_TYPE_BOOL, ARG_FLAG_OPTIONAL, 0, 0, NULL,
//
// dept Department
//
0, (PWSTR)g_pszArg1UserDepartment, ID_ARG2_NULL, NULL, ARG_TYPE_BOOL, ARG_FLAG_OPTIONAL, 0, 0, NULL,
//
// company Company
//
0, (PWSTR)g_pszArg1UserCompany, ID_ARG2_NULL, NULL, ARG_TYPE_BOOL, ARG_FLAG_OPTIONAL, 0, 0, NULL,
ARG_TERMINATOR,
};
ARG_RECORD DSGET_SERVER_COMMANDS[]= { //
// dnsname dnsHostName
//
0, (PWSTR)g_pszArg1ServerDnsName, ID_ARG2_NULL, NULL, ARG_TYPE_BOOL, ARG_FLAG_OPTIONAL, 0, 0, NULL,
//
// site
//
0, (PWSTR)g_pszArg1ServerSite, ID_ARG2_NULL, NULL, ARG_TYPE_BOOL, ARG_FLAG_OPTIONAL, 0, 0, NULL,
//
// isGC
//
0, (PWSTR)g_pszArg1ServerIsGC, ID_ARG2_NULL, NULL, ARG_TYPE_BOOL, ARG_FLAG_OPTIONAL, 0, 0, NULL,
ARG_TERMINATOR, };
ARG_RECORD DSGET_SITE_COMMANDS[]= { //
// dnsname dnsHostName
//
0, (PWSTR)g_pszArg1SiteAutotopology, ID_ARG2_NULL, NULL, ARG_TYPE_BOOL, ARG_FLAG_OPTIONAL, 0, 0, NULL,
//
// site
//
0, (PWSTR)g_pszArg1SiteCacheGroups, ID_ARG2_NULL, NULL, ARG_TYPE_BOOL, ARG_FLAG_OPTIONAL, 0, 0, NULL,
//
// isGC
//
0, (PWSTR)g_pszArg1SitePrefGCSite, ID_ARG2_NULL, NULL, ARG_TYPE_BOOL, ARG_FLAG_OPTIONAL, 0, 0, NULL,
ARG_TERMINATOR, };
ARG_RECORD DSGET_SUBNET_COMMANDS[]= { //
// loc Location
//
0, (PWSTR)g_pszArg1SubnetLocation, ID_ARG2_NULL, NULL, ARG_TYPE_BOOL, ARG_FLAG_OPTIONAL, 0, 0, NULL,
//
// site
//
0, (PWSTR)g_pszArg1SubnetSite, ID_ARG2_NULL, NULL, ARG_TYPE_BOOL, ARG_FLAG_OPTIONAL, 0, 0, NULL,
ARG_TERMINATOR, };
//+-------------------------------------------------------------------------
// Attributes
//--------------------------------------------------------------------------
//
// Description
//
DSGET_ATTR_TABLE_ENTRY descriptionEntry = { c_sz_arg1_com_description, L"description", eCommDescription, CommonDisplayStringFunc, };
//
// SamID
//
DSGET_ATTR_TABLE_ENTRY UserSAMEntry = { g_pszArg1UserSAMID, L"sAMAccountName", eUserSamID, CommonDisplayStringFunc, };
//
// SamID
//
DSGET_ATTR_TABLE_ENTRY ComputerSAMEntry = { g_pszArg1ComputerSAMID, L"sAMAccountName", eComputerSamID, CommonDisplayStringFunc, };
//
// SID
//
DSGET_ATTR_TABLE_ENTRY UserSIDEntry = { g_pszArg1UserSID, L"objectSID", eUserSID, CommonDisplayStringFunc, };
//
// SID
//
DSGET_ATTR_TABLE_ENTRY ComputerSIDEntry = { g_pszArg1ComputerSID, L"objectSID", eComputerSID, CommonDisplayStringFunc, };
//
// SID
//
DSGET_ATTR_TABLE_ENTRY GroupSIDEntry = { g_pszArg1GroupSID, L"objectSID", eGroupSID, CommonDisplayStringFunc, };
//
// UPN
//
DSGET_ATTR_TABLE_ENTRY UserUPNEntry = { g_pszArg1UserUPN, L"userPrincipalName", eUserUpn, CommonDisplayStringFunc, };
//
// First name
//
DSGET_ATTR_TABLE_ENTRY firstNameUserEntry = { g_pszArg1UserFirstName, L"givenName", eUserFn, CommonDisplayStringFunc, };
DSGET_ATTR_TABLE_ENTRY firstNameContactEntry = { g_pszArg1UserFirstName, L"givenName", eContactFn, CommonDisplayStringFunc, };
//
// Middle Initial
//
DSGET_ATTR_TABLE_ENTRY middleInitialUserEntry = { g_pszArg1UserMiddleInitial, L"initials", eUserMi, CommonDisplayStringFunc, };
DSGET_ATTR_TABLE_ENTRY middleInitialContactEntry = { g_pszArg1UserMiddleInitial, L"initials", eContactMi, CommonDisplayStringFunc, };
//
// Last name
//
DSGET_ATTR_TABLE_ENTRY lastNameUserEntry = { g_pszArg1UserLastName, L"sn", eUserLn, CommonDisplayStringFunc, };
DSGET_ATTR_TABLE_ENTRY lastNameContactEntry = { g_pszArg1UserLastName, L"sn", eContactLn, CommonDisplayStringFunc, };
//
// Display name
//
DSGET_ATTR_TABLE_ENTRY displayNameUserEntry = { g_pszArg1UserDisplayName, L"displayName", eUserDisplay, CommonDisplayStringFunc, };
//
// Employee ID
//
DSGET_ATTR_TABLE_ENTRY employeeIDUserEntry = { g_pszArg1UserEmployeeID, L"employeeID", eUserEmpID, CommonDisplayStringFunc, };
DSGET_ATTR_TABLE_ENTRY displayNameContactEntry = { g_pszArg1UserDisplayName, L"displayName", eContactDisplay, CommonDisplayStringFunc, };
//
// Office
//
DSGET_ATTR_TABLE_ENTRY officeUserEntry = { g_pszArg1UserOffice, L"physicalDeliveryOfficeName", eUserOffice, CommonDisplayStringFunc, };
DSGET_ATTR_TABLE_ENTRY officeContactEntry = { g_pszArg1UserOffice, L"physicalDeliveryOfficeName", eContactOffice, CommonDisplayStringFunc, };
//
// Telephone
//
DSGET_ATTR_TABLE_ENTRY telephoneUserEntry = { g_pszArg1UserTelephone, L"telephoneNumber", eUserTel, CommonDisplayStringFunc, };
DSGET_ATTR_TABLE_ENTRY telephoneContactEntry = { g_pszArg1UserTelephone, L"telephoneNumber", eContactTel, CommonDisplayStringFunc, };
//
// Email
//
DSGET_ATTR_TABLE_ENTRY emailUserEntry = { g_pszArg1UserEmail, L"mail", eUserEmail, CommonDisplayStringFunc, };
DSGET_ATTR_TABLE_ENTRY emailContactEntry = { g_pszArg1UserEmail, L"mail", eContactEmail, CommonDisplayStringFunc, };
//
// Home Telephone
//
DSGET_ATTR_TABLE_ENTRY homeTelephoneUserEntry = { g_pszArg1UserHomeTelephone, L"homePhone", eUserHometel, CommonDisplayStringFunc, };
DSGET_ATTR_TABLE_ENTRY homeTelephoneContactEntry = { g_pszArg1UserHomeTelephone, L"homePhone", eContactHometel, CommonDisplayStringFunc, };
//
// Pager
//
DSGET_ATTR_TABLE_ENTRY pagerUserEntry = { g_pszArg1UserPagerNumber, L"pager", eUserPager, CommonDisplayStringFunc, };
DSGET_ATTR_TABLE_ENTRY pagerContactEntry = { g_pszArg1UserPagerNumber, L"pager", eContactPager, CommonDisplayStringFunc, };
//
// Mobile phone
//
DSGET_ATTR_TABLE_ENTRY mobileUserEntry = { g_pszArg1UserMobileNumber, L"mobile", eUserMobile, CommonDisplayStringFunc, };
DSGET_ATTR_TABLE_ENTRY mobileContactEntry = { g_pszArg1UserMobileNumber, L"mobile", eContactMobile, CommonDisplayStringFunc, };
//
// Fax
//
DSGET_ATTR_TABLE_ENTRY faxUserEntry = { g_pszArg1UserFaxNumber, L"facsimileTelephoneNumber", eUserFax, CommonDisplayStringFunc, };
DSGET_ATTR_TABLE_ENTRY faxContactEntry = { g_pszArg1UserFaxNumber, L"facsimileTelephoneNumber", eContactFax, CommonDisplayStringFunc, };
//
// IP phone #
//
DSGET_ATTR_TABLE_ENTRY ipPhoneUserEntry = { g_pszArg1UserIPTel, L"ipPhones", eUserIPTel, CommonDisplayStringFunc, };
//
// Web Page
//
DSGET_ATTR_TABLE_ENTRY webPageUserEntry = { g_pszArg1UserWebPage, L"wWWHomePage", eUserWebPage, CommonDisplayStringFunc, };
//
// Title
//
DSGET_ATTR_TABLE_ENTRY titleUserEntry = { g_pszArg1UserTitle, L"title", eUserTitle, CommonDisplayStringFunc, };
DSGET_ATTR_TABLE_ENTRY titleContactEntry = { g_pszArg1UserTitle, L"title", eContactTitle, CommonDisplayStringFunc, };
//
// Department
//
DSGET_ATTR_TABLE_ENTRY departmentUserEntry = { g_pszArg1UserDepartment, L"department", eUserDept, CommonDisplayStringFunc, };
DSGET_ATTR_TABLE_ENTRY departmentContactEntry = { g_pszArg1UserDepartment, L"department", eContactDept, CommonDisplayStringFunc, };
//
// Company
//
DSGET_ATTR_TABLE_ENTRY companyUserEntry = { g_pszArg1UserCompany, L"company", eUserCompany, CommonDisplayStringFunc, };
DSGET_ATTR_TABLE_ENTRY companyContactEntry = { g_pszArg1UserCompany, L"company", eContactCompany, CommonDisplayStringFunc, };
//
// Manager
//
DSGET_ATTR_TABLE_ENTRY managerUserEntry = { g_pszArg1UserManager, L"manager", eUserManager, CommonDisplayStringFunc, };
//
// Home directory
//
DSGET_ATTR_TABLE_ENTRY homeDirectoryUserEntry = { g_pszArg1UserHomeDirectory, L"homeDirectory", eUserHomeDirectory, CommonDisplayStringFunc, };
//
// Home drive
//
DSGET_ATTR_TABLE_ENTRY homeDriveUserEntry = { g_pszArg1UserHomeDrive, L"homeDrive", eUserHomeDrive, CommonDisplayStringFunc, };
//
// Profile path
//
DSGET_ATTR_TABLE_ENTRY profilePathUserEntry = { g_pszArg1UserProfile, L"profilePath", eUserProfilePath, CommonDisplayStringFunc, };
//
// Logon script
//
DSGET_ATTR_TABLE_ENTRY logonScriptUserEntry = { g_pszArg1UserLogonScript, L"scriptPath", eUserLogonScript, CommonDisplayStringFunc, };
//
// pwdLastSet
//
DSGET_ATTR_TABLE_ENTRY mustChangePwdUserEntry = { g_pszArg1UserMustChangePwd, L"pwdLastSet", eUserMustchpwd, DisplayMustChangePassword, };
//
// user account control
//
DSGET_ATTR_TABLE_ENTRY disableUserEntry = { g_pszArg1UserDisableAccount, L"userAccountControl", eUserDisabled, DisplayAccountDisabled };
DSGET_ATTR_TABLE_ENTRY disableComputerEntry = { g_pszArg1ComputerDisableAccount, L"userAccountControl", eComputerDisabled, DisplayAccountDisabled };
DSGET_ATTR_TABLE_ENTRY pwdNeverExpiresUserEntry = { g_pszArg1UserPwdNeverExpires, L"userAccountControl", eUserPwdneverexpires, DisplayPasswordNeverExpires };
DSGET_ATTR_TABLE_ENTRY reverisblePwdUserEntry = { g_pszArg1UserReversiblePwd, L"userAccountControl", eUserReversiblePwd, DisplayReversiblePassword };
//
// Account expires
//
DSGET_ATTR_TABLE_ENTRY accountExpiresUserEntry = { g_pszArg1UserAcctExpires, L"accountExpires", eUserAcctExpires, DisplayAccountExpires, };
//
// SAM Account Name
//
DSGET_ATTR_TABLE_ENTRY samNameGroupEntry = { g_pszArg1GroupSamid, L"sAMAccountName", eGroupSamname, CommonDisplayStringFunc, };
//
// Group Type
//
DSGET_ATTR_TABLE_ENTRY groupScopeTypeEntry = { g_pszArg1GroupScope, L"groupType", eGroupScope, DisplayGroupScope };
DSGET_ATTR_TABLE_ENTRY groupSecurityTypeEntry = { g_pszArg1GroupSecGrp, L"groupType", eGroupSecgrp, DisplayGroupSecurityEnabled };
//
// Group Members
//
DSGET_ATTR_TABLE_ENTRY membersGroupEntry = { g_pszArg1GroupMembers, L"member", eGroupMembers, CommonDisplayStringFunc };
//
// MemberOf
//
DSGET_ATTR_TABLE_ENTRY memberOfUserEntry = { L"Member of", L"memberOf", eUserMemberOf, DisplayUserMemberOf };
DSGET_ATTR_TABLE_ENTRY memberOfComputerEntry = { g_pszArg1UserMemberOf, L"memberOf", eComputerMemberOf, DisplayComputerMemberOf };
DSGET_ATTR_TABLE_ENTRY memberOfGroupEntry = { g_pszArg1GroupMemberOf, L"memberOf", eGroupMemberOf, DisplayGroupMemberOf };
//
// User Can Change Password
//
DSGET_ATTR_TABLE_ENTRY canChangePwdUserEntry = { g_pszArg1UserCanChangePwd, NULL, eUserCanchpwd, DisplayCanChangePassword };
//
// Server entries
//
DSGET_ATTR_TABLE_ENTRY dnsNameServerEntry = { g_pszArg1ServerDnsName, L"dnsHostName", eServerDnsName, CommonDisplayStringFunc };
DSGET_ATTR_TABLE_ENTRY siteServerEntry = { g_pszArg1ServerSite, NULL, eServerSite, DisplayGrandparentRDN };
DSGET_ATTR_TABLE_ENTRY isGCServerEntry = { g_pszArg1ServerIsGC, NULL, eServerIsGC, IsServerGCDisplay };
//
// Site entries
//
DSGET_ATTR_TABLE_ENTRY autoTopSiteEntry = { g_pszArg1SiteAutotopology, NULL, eSiteAutoTop, IsAutotopologyEnabledSite };
DSGET_ATTR_TABLE_ENTRY cacheGroupsSiteEntry = { g_pszArg1SiteCacheGroups, NULL, eSiteCacheGroups, IsCacheGroupsEnabledSite };
DSGET_ATTR_TABLE_ENTRY prefGCSiteEntry = { g_pszArg1SitePrefGCSite, NULL, eSitePrefGC, DisplayPreferredGC };
// Computer entries
DSGET_ATTR_TABLE_ENTRY locComputerEntry = { g_pszArg1ComputerLoc, L"location", eComputerLoc, CommonDisplayStringFunc };
//
// Subnet entries
//
DSGET_ATTR_TABLE_ENTRY locSubnetEntry = { g_pszArg1SubnetLocation, L"location", eSubnetLocation, CommonDisplayStringFunc };
DSGET_ATTR_TABLE_ENTRY siteSubnetEntry = { g_pszArg1SubnetSite, L"siteObject", eSubnetSite, CommonDisplayStringFunc };
//
//Attribute Table entries and ObjectTableEntries
//
//
// User
//
PDSGET_ATTR_TABLE_ENTRY UserAttributeTable[] = { &descriptionEntry, &UserSAMEntry, &UserSIDEntry, &UserUPNEntry, &firstNameUserEntry, &middleInitialUserEntry, &lastNameUserEntry, &displayNameUserEntry, &employeeIDUserEntry, &officeUserEntry, &telephoneUserEntry, &emailUserEntry, &homeTelephoneUserEntry, &pagerUserEntry, &mobileUserEntry, &faxUserEntry, &ipPhoneUserEntry, &webPageUserEntry, &titleUserEntry, &departmentUserEntry, &companyUserEntry, &managerUserEntry, &homeDirectoryUserEntry, &homeDriveUserEntry, &profilePathUserEntry, &logonScriptUserEntry, &mustChangePwdUserEntry, &canChangePwdUserEntry, &reverisblePwdUserEntry, &pwdNeverExpiresUserEntry, &accountExpiresUserEntry, &disableUserEntry, &memberOfUserEntry };
DSGetObjectTableEntry g_UserObjectEntry = { L"user", g_pszUser, DSGET_USER_COMMANDS, USAGE_DSGET_USER, sizeof(UserAttributeTable)/sizeof(PDSATTRIBUTETABLEENTRY), UserAttributeTable, };
//
// Contact
//
PDSGET_ATTR_TABLE_ENTRY ContactAttributeTable[] = { &descriptionEntry, &firstNameContactEntry, &middleInitialContactEntry, &lastNameContactEntry, &displayNameContactEntry, &officeContactEntry, &telephoneContactEntry, &emailContactEntry, &homeTelephoneContactEntry, &pagerContactEntry, &mobileContactEntry, &faxContactEntry, &titleContactEntry, &departmentContactEntry, &companyContactEntry, };
DSGetObjectTableEntry g_ContactObjectEntry = { L"contact", g_pszContact, DSGET_CONTACT_COMMANDS, USAGE_DSGET_CONTACT, sizeof(ContactAttributeTable)/sizeof(PDSATTRIBUTETABLEENTRY), ContactAttributeTable, };
//
// Computer
//
PDSGET_ATTR_TABLE_ENTRY ComputerAttributeTable[] = { &descriptionEntry, &ComputerSAMEntry, &ComputerSIDEntry, &locComputerEntry, &disableComputerEntry, &memberOfComputerEntry, };
DSGetObjectTableEntry g_ComputerObjectEntry = { L"computer", g_pszComputer, DSGET_COMPUTER_COMMANDS, USAGE_DSGET_COMPUTER, sizeof(ComputerAttributeTable)/sizeof(PDSATTRIBUTETABLEENTRY), ComputerAttributeTable, };
//
// Group
//
PDSGET_ATTR_TABLE_ENTRY GroupAttributeTable[] = { &descriptionEntry, &samNameGroupEntry, &GroupSIDEntry, &groupScopeTypeEntry, &groupSecurityTypeEntry, &memberOfGroupEntry, &membersGroupEntry, };
DSGetObjectTableEntry g_GroupObjectEntry = { L"group", g_pszGroup, DSGET_GROUP_COMMANDS, USAGE_DSGET_GROUP, sizeof(GroupAttributeTable)/sizeof(PDSATTRIBUTETABLEENTRY), GroupAttributeTable, };
//
// OU
//
PDSGET_ATTR_TABLE_ENTRY OUAttributeTable[] = { &descriptionEntry };
DSGetObjectTableEntry g_OUObjectEntry = { L"ou", g_pszOU, NULL, USAGE_DSGET_OU, sizeof(OUAttributeTable)/sizeof(PDSATTRIBUTETABLEENTRY), OUAttributeTable, };
//
// Server
//
PDSGET_ATTR_TABLE_ENTRY ServerAttributeTable[] = { &dnsNameServerEntry, &siteServerEntry, &isGCServerEntry };
DSGetObjectTableEntry g_ServerObjectEntry = { L"server", g_pszServer, DSGET_SERVER_COMMANDS, USAGE_DSGET_SERVER, sizeof(ServerAttributeTable)/sizeof(PDSATTRIBUTETABLEENTRY), ServerAttributeTable, };
//
// Site
//
PDSGET_ATTR_TABLE_ENTRY SiteAttributeTable[] = { &autoTopSiteEntry, &cacheGroupsSiteEntry, &prefGCSiteEntry };
DSGetObjectTableEntry g_SiteObjectEntry = { L"site", g_pszSite, DSGET_SITE_COMMANDS, USAGE_DSGET_SITE, sizeof(SiteAttributeTable)/sizeof(PDSATTRIBUTETABLEENTRY), SiteAttributeTable, };
//
// Subnet
//
PDSGET_ATTR_TABLE_ENTRY SubnetAttributeTable[] = { &descriptionEntry, &locSubnetEntry, &siteSubnetEntry };
DSGetObjectTableEntry g_SubnetObjectEntry = { L"subnet", g_pszSubnet, DSGET_SUBNET_COMMANDS, USAGE_DSGET_SUBNET, sizeof(SubnetAttributeTable)/sizeof(PDSATTRIBUTETABLEENTRY), SubnetAttributeTable, };
//+-------------------------------------------------------------------------
// Object Table
//--------------------------------------------------------------------------
PDSGetObjectTableEntry g_DSObjectTable[] = { &g_OUObjectEntry, &g_UserObjectEntry, &g_ContactObjectEntry, &g_ComputerObjectEntry, &g_GroupObjectEntry, &g_ServerObjectEntry, &g_SiteObjectEntry, &g_SubnetObjectEntry, NULL };
|