WindowsXP-SP1/admin/dscmd/dsget/gettable.cpp
2020-09-30 16:53:49 +02:00

1772 lines
32 KiB
C++

//+-------------------------------------------------------------------------
//
// 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
};