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

2146 lines
37 KiB
C++

//+-------------------------------------------------------------------------
//
// Microsoft Windows
// Copyright (C) Microsoft Corporation, 1992 - 2000
//
// File: modtable.cpp
//
// Contents: Defines a table which contains the object types on which
// a modification can occur and the attributes that can be changed
//
// History: 07-Sep-2000 JeffJon Created
//
//
//--------------------------------------------------------------------------
#include "pch.h"
#include "cstrings.h"
#include "modtable.h"
#include "usage.h"
//+-------------------------------------------------------------------------
// Parser table
//--------------------------------------------------------------------------
ARG_RECORD DSMOD_COMMON_COMMANDS[] =
{
#ifdef DBG
//
// -debug, -debug
//
0,(LPWSTR)c_sz_arg1_com_debug,
ID_ARG2_NULL,NULL,
ARG_TYPE_DEBUG, ARG_FLAG_OPTIONAL|ARG_FLAG_HIDDEN,
(CMD_TYPE)0,
0, NULL,
#endif
//
// h, ?
//
0,(LPWSTR)c_sz_arg1_com_help,
0,(LPWSTR)c_sz_arg2_com_help,
ARG_TYPE_HELP, ARG_FLAG_OPTIONAL,
(CMD_TYPE)FALSE,
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,
(CMD_TYPE)_T(""),
0, ValidateAdminPassword,
//
// q,q
//
0,(LPWSTR)c_sz_arg1_com_quiet,
ID_ARG2_NULL,NULL,
ARG_TYPE_BOOL, ARG_FLAG_OPTIONAL,
(CMD_TYPE)_T(""),
0, NULL,
//
// c Continue
//
0,(PWSTR)c_sz_arg1_com_continue,
ID_ARG2_NULL, NULL,
ARG_TYPE_BOOL, ARG_FLAG_OPTIONAL,
(CMD_TYPE)_T(""),
0, NULL,
//
// objecttype
//
0,(LPWSTR)c_sz_arg1_com_objecttype,
ID_ARG2_NULL,NULL,
ARG_TYPE_STR, ARG_FLAG_REQUIRED|ARG_FLAG_NOFLAG|ARG_FLAG_STDIN,
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,
//
// description
//
0, (PWSTR)c_sz_arg1_com_description,
ID_ARG2_NULL, NULL,
ARG_TYPE_STR, ARG_FLAG_OPTIONAL|ARG_FLAG_ATLEASTONE,
0,
0, NULL,
ARG_TERMINATOR
};
ARG_RECORD DSMOD_USER_COMMANDS[]=
{
//
// upn
//
0, (PWSTR)g_pszArg1UserUPN,
ID_ARG2_NULL, NULL,
ARG_TYPE_STR, ARG_FLAG_OPTIONAL|ARG_FLAG_ATLEASTONE,
0,
0, NULL,
//
// fn. FirstName
//
0, (PWSTR)g_pszArg1UserFirstName,
ID_ARG2_NULL, NULL,
ARG_TYPE_STR, ARG_FLAG_OPTIONAL|ARG_FLAG_ATLEASTONE,
0,
0, NULL,
//
// mi Middle Initial
//
0, (PWSTR)g_pszArg1UserMiddleInitial,
ID_ARG2_NULL, NULL,
ARG_TYPE_STR, ARG_FLAG_OPTIONAL|ARG_FLAG_ATLEASTONE,
0,
0, NULL,
//
// ln LastName
//
0, (PWSTR)g_pszArg1UserLastName,
ID_ARG2_NULL, NULL,
ARG_TYPE_STR, ARG_FLAG_OPTIONAL|ARG_FLAG_ATLEASTONE,
0,
0, NULL,
//
// display DisplayName
//
0, (PWSTR)g_pszArg1UserDisplayName,
ID_ARG2_NULL, NULL,
ARG_TYPE_STR, ARG_FLAG_OPTIONAL|ARG_FLAG_ATLEASTONE,
0,
0, NULL,
//
// empid Employee ID
//
0, (PWSTR)g_pszArg1UserEmpID,
ID_ARG2_NULL, NULL,
ARG_TYPE_STR, ARG_FLAG_OPTIONAL|ARG_FLAG_ATLEASTONE,
0,
0, NULL,
//
// pwd Password
//
0, (PWSTR)g_pszArg1UserPassword,
ID_ARG2_NULL, NULL,
ARG_TYPE_STR, ARG_FLAG_OPTIONAL|ARG_FLAG_ATLEASTONE,
0,
0, ValidateUserPassword,
//
// office Office Location
//
0, (PWSTR)g_pszArg1UserOffice,
ID_ARG2_NULL, NULL,
ARG_TYPE_STR, ARG_FLAG_OPTIONAL|ARG_FLAG_ATLEASTONE,
0,
0, NULL,
//
// tel Telephone
//
0, (PWSTR)g_pszArg1UserTelephone,
ID_ARG2_NULL, NULL,
ARG_TYPE_STR, ARG_FLAG_OPTIONAL|ARG_FLAG_ATLEASTONE,
0,
0, NULL,
//
// email E-mail
//
0, (PWSTR)g_pszArg1UserEmail,
ID_ARG2_NULL, NULL,
ARG_TYPE_STR, ARG_FLAG_OPTIONAL|ARG_FLAG_ATLEASTONE,
0,
0, NULL,
//
// hometel Home Telephone
//
0, (PWSTR)g_pszArg1UserHomeTelephone,
ID_ARG2_NULL, NULL,
ARG_TYPE_STR, ARG_FLAG_OPTIONAL|ARG_FLAG_ATLEASTONE,
0,
0, NULL,
//
// pager Pager number
//
0, (PWSTR)g_pszArg1UserPagerNumber,
ID_ARG2_NULL, NULL,
ARG_TYPE_STR, ARG_FLAG_OPTIONAL|ARG_FLAG_ATLEASTONE,
0,
0, NULL,
//
// mobile Mobile Telephone Number
//
0, (PWSTR)g_pszArg1UserMobileNumber,
ID_ARG2_NULL, NULL,
ARG_TYPE_STR, ARG_FLAG_OPTIONAL|ARG_FLAG_ATLEASTONE,
0,
0, NULL,
//
// fax Fax Number
//
0, (PWSTR)g_pszArg1UserFaxNumber,
ID_ARG2_NULL, NULL,
ARG_TYPE_STR, ARG_FLAG_OPTIONAL|ARG_FLAG_ATLEASTONE,
0,
0, NULL,
//
// iptel IP Telephone
//
0, (PWSTR)g_pszArg1UserIPTel,
ID_ARG2_NULL, NULL,
ARG_TYPE_STR, ARG_FLAG_OPTIONAL|ARG_FLAG_ATLEASTONE,
0,
0, NULL,
//
// webpg Web Page
//
0, (PWSTR)g_pszArg1UserWebPage,
ID_ARG2_NULL, NULL,
ARG_TYPE_STR, ARG_FLAG_OPTIONAL|ARG_FLAG_ATLEASTONE,
0,
0, NULL,
//
// title Title
//
0, (PWSTR)g_pszArg1UserTitle,
ID_ARG2_NULL, NULL,
ARG_TYPE_STR, ARG_FLAG_OPTIONAL|ARG_FLAG_ATLEASTONE,
0,
0, NULL,
//
// dept Department
//
0, (PWSTR)g_pszArg1UserDepartment,
ID_ARG2_NULL, NULL,
ARG_TYPE_STR, ARG_FLAG_OPTIONAL|ARG_FLAG_ATLEASTONE,
0,
0, NULL,
//
// company Company
//
0, (PWSTR)g_pszArg1UserCompany,
ID_ARG2_NULL, NULL,
ARG_TYPE_STR, ARG_FLAG_OPTIONAL|ARG_FLAG_ATLEASTONE,
0,
0, NULL,
//
// mgr Manager
//
0, (PWSTR)g_pszArg1UserManager,
ID_ARG2_NULL, NULL,
ARG_TYPE_STR, ARG_FLAG_OPTIONAL|ARG_FLAG_ATLEASTONE|ARG_FLAG_DN,
0,
0, NULL,
//
// hmdir Home Directory
//
0, (PWSTR)g_pszArg1UserHomeDirectory,
ID_ARG2_NULL, NULL,
ARG_TYPE_STR, ARG_FLAG_OPTIONAL|ARG_FLAG_ATLEASTONE,
0,
0, NULL,
//
// hmdrv Home Drive
//
0, (PWSTR)g_pszArg1UserHomeDrive,
ID_ARG2_NULL, NULL,
ARG_TYPE_STR, ARG_FLAG_OPTIONAL|ARG_FLAG_ATLEASTONE,
0,
0, NULL,
//
// profile Profile path
//
0, (PWSTR)g_pszArg1UserProfilePath,
ID_ARG2_NULL, NULL,
ARG_TYPE_STR, ARG_FLAG_OPTIONAL|ARG_FLAG_ATLEASTONE,
0,
0, NULL,
//
// loscr Script path
//
0, (PWSTR)g_pszArg1UserScriptPath,
ID_ARG2_NULL, NULL,
ARG_TYPE_STR, ARG_FLAG_OPTIONAL|ARG_FLAG_ATLEASTONE,
0,
0, NULL,
//
// mustchpwd Must Change Password at next logon
//
0, (PWSTR)g_pszArg1UserMustChangePwd,
ID_ARG2_NULL, NULL,
ARG_TYPE_STR, ARG_FLAG_OPTIONAL|ARG_FLAG_ATLEASTONE,
0,
0, ValidateYesNo,
//
// canchpwd Can Change Password
//
0, (PWSTR)g_pszArg1UserCanChangePwd,
ID_ARG2_NULL, NULL,
ARG_TYPE_STR, ARG_FLAG_OPTIONAL|ARG_FLAG_ATLEASTONE,
0,
0, ValidateYesNo,
//
// reversiblepwd Password stored with reversible encryption
//
0, (PWSTR)g_pszArg1UserReversiblePwd,
ID_ARG2_NULL, NULL,
ARG_TYPE_STR, ARG_FLAG_OPTIONAL|ARG_FLAG_ATLEASTONE,
0,
0, ValidateYesNo,
//
// pwdneverexpires Password never expires
//
0, (PWSTR)g_pszArg1UserPwdNeverExpires,
ID_ARG2_NULL, NULL,
ARG_TYPE_STR, ARG_FLAG_OPTIONAL|ARG_FLAG_ATLEASTONE,
0,
0, ValidateYesNo,
//
// acctexpires Account Expires
//
0, (PWSTR)g_pszArg1UserAccountExpires,
ID_ARG2_NULL, NULL,
ARG_TYPE_INTSTR, ARG_FLAG_OPTIONAL|ARG_FLAG_ATLEASTONE,
0,
0, ValidateNever,
//
// disabled Disable Account
//
0, (PWSTR)g_pszArg1UserDisableAccount,
ID_ARG2_NULL, NULL,
ARG_TYPE_STR, ARG_FLAG_OPTIONAL|ARG_FLAG_ATLEASTONE,
0,
0, ValidateYesNo,
ARG_TERMINATOR
};
ARG_RECORD DSMOD_COMPUTER_COMMANDS[]=
{
//
// loc Location
//
0, (PWSTR)g_pszArg1ComputerLocation,
ID_ARG2_NULL, NULL,
ARG_TYPE_STR, ARG_FLAG_OPTIONAL|ARG_FLAG_ATLEASTONE,
0,
0, NULL,
//
// disabled
//
0, (PWSTR)g_pszArg1ComputerDisabled,
ID_ARG2_NULL, NULL,
ARG_TYPE_STR, ARG_FLAG_OPTIONAL|ARG_FLAG_ATLEASTONE,
0,
0, ValidateYesNo,
//
//reset
//
0, (PWSTR)g_pszArg1ComputerReset,
ID_ARG2_NULL, NULL,
ARG_TYPE_BOOL, ARG_FLAG_OPTIONAL|ARG_FLAG_ATLEASTONE,
(CMD_TYPE)_T(""),
0, NULL,
ARG_TERMINATOR,
};
ARG_RECORD DSMOD_GROUP_COMMANDS[]=
{
//
// samname
//
0, (PWSTR)g_pszArg1GroupSAMName,
ID_ARG2_NULL, NULL,
ARG_TYPE_STR, ARG_FLAG_OPTIONAL|ARG_FLAG_ATLEASTONE,
0,
0, NULL,
//
// secgrp Security enabled
//
0, (PWSTR)g_pszArg1GroupSec,
ID_ARG2_NULL, NULL,
ARG_TYPE_STR, ARG_FLAG_OPTIONAL|ARG_FLAG_ATLEASTONE,
0,
0, ValidateYesNo,
//
// scope Group scope (local/global/universal)
//
0, (PWSTR)g_pszArg1GroupScope,
ID_ARG2_NULL, NULL,
ARG_TYPE_STR, ARG_FLAG_OPTIONAL|ARG_FLAG_ATLEASTONE,
0,
0, ValidateGroupScope,
//
// addmbr Add a member to the group
//
0, (PWSTR)g_pszArg1GroupAddMember,
ID_ARG2_NULL, NULL,
ARG_TYPE_MSZ, ARG_FLAG_OPTIONAL|ARG_FLAG_ATLEASTONE|ARG_FLAG_DN,
0,
0, NULL,
//
// rmmbr Remove a member from the group
//
0, (PWSTR)g_pszArg1GroupRemoveMember,
ID_ARG2_NULL, NULL,
ARG_TYPE_MSZ, ARG_FLAG_OPTIONAL|ARG_FLAG_ATLEASTONE|ARG_FLAG_DN,
0,
0, NULL,
//
// chmbr Change the entire membership list
//
0, (PWSTR)g_pszArg1GroupChangeMember,
ID_ARG2_NULL, NULL,
ARG_TYPE_MSZ, ARG_FLAG_OPTIONAL|ARG_FLAG_ATLEASTONE|ARG_FLAG_DN,
0,
0, NULL,
ARG_TERMINATOR,
};
ARG_RECORD DSMOD_CONTACT_COMMANDS[]=
{
//
// fn. FirstName
//
0, (PWSTR)g_pszArg1UserFirstName,
ID_ARG2_NULL, NULL,
ARG_TYPE_STR, ARG_FLAG_OPTIONAL|ARG_FLAG_ATLEASTONE,
0,
0, NULL,
//
// mi Middle Initial
//
0, (PWSTR)g_pszArg1UserMiddleInitial,
ID_ARG2_NULL, NULL,
ARG_TYPE_STR, ARG_FLAG_OPTIONAL|ARG_FLAG_ATLEASTONE,
0,
0, NULL,
//
// ln LastName
//
0, (PWSTR)g_pszArg1UserLastName,
ID_ARG2_NULL, NULL,
ARG_TYPE_STR, ARG_FLAG_OPTIONAL|ARG_FLAG_ATLEASTONE,
0,
0, NULL,
//
// display DisplayName
//
0, (PWSTR)g_pszArg1UserDisplayName,
ID_ARG2_NULL, NULL,
ARG_TYPE_STR, ARG_FLAG_OPTIONAL|ARG_FLAG_ATLEASTONE,
0,
0, NULL,
//
// office Office Location
//
0, (PWSTR)g_pszArg1UserOffice,
ID_ARG2_NULL, NULL,
ARG_TYPE_STR, ARG_FLAG_OPTIONAL|ARG_FLAG_ATLEASTONE,
0,
0, NULL,
//
// tel Telephone
//
0, (PWSTR)g_pszArg1UserTelephone,
ID_ARG2_NULL, NULL,
ARG_TYPE_STR, ARG_FLAG_OPTIONAL|ARG_FLAG_ATLEASTONE,
0,
0, NULL,
//
// email E-mail
//
0, (PWSTR)g_pszArg1UserEmail,
ID_ARG2_NULL, NULL,
ARG_TYPE_STR, ARG_FLAG_OPTIONAL|ARG_FLAG_ATLEASTONE,
0,
0, NULL,
//
// hometel Home Telephone
//
0, (PWSTR)g_pszArg1UserHomeTelephone,
ID_ARG2_NULL, NULL,
ARG_TYPE_STR, ARG_FLAG_OPTIONAL|ARG_FLAG_ATLEASTONE,
0,
0, NULL,
//
// pager Pager number
//
0, (PWSTR)g_pszArg1UserPagerNumber,
ID_ARG2_NULL, NULL,
ARG_TYPE_STR, ARG_FLAG_OPTIONAL|ARG_FLAG_ATLEASTONE,
0,
0, NULL,
//
// mobile Mobile Telephone Number
//
0, (PWSTR)g_pszArg1UserMobileNumber,
ID_ARG2_NULL, NULL,
ARG_TYPE_STR, ARG_FLAG_OPTIONAL|ARG_FLAG_ATLEASTONE,
0,
0, NULL,
//
// fax Fax Number
//
0, (PWSTR)g_pszArg1UserFaxNumber,
ID_ARG2_NULL, NULL,
ARG_TYPE_STR, ARG_FLAG_OPTIONAL|ARG_FLAG_ATLEASTONE,
0,
0, NULL,
//
// title Title
//
0, (PWSTR)g_pszArg1UserTitle,
ID_ARG2_NULL, NULL,
ARG_TYPE_STR, ARG_FLAG_OPTIONAL|ARG_FLAG_ATLEASTONE,
0,
0, NULL,
//
// dept Department
//
0, (PWSTR)g_pszArg1UserDepartment,
ID_ARG2_NULL, NULL,
ARG_TYPE_STR, ARG_FLAG_OPTIONAL|ARG_FLAG_ATLEASTONE,
0,
0, NULL,
//
// company Company
//
0, (PWSTR)g_pszArg1UserCompany,
ID_ARG2_NULL, NULL,
ARG_TYPE_STR, ARG_FLAG_OPTIONAL|ARG_FLAG_ATLEASTONE,
0,
0, NULL,
ARG_TERMINATOR,
};
/*
ARG_RECORD DSMOD_SUBNET_COMMANDS[]=
{
//name_or_objectdn
IDS_ARG1_SUBNET_NAME_OR_OBJECTDN, NULL,
ID_ARG2_NULL, NULL,
ARG_TYPE_MSZ, ARG_FLAG_REQUIRED|ARG_FLAG_NOFLAG,
0,
0, NULL,
//name
IDS_ARG1_SUBNET_NAME, NULL,
ID_ARG2_NULL, NULL,
ARG_TYPE_STR, ARG_FLAG_OPTIONAL,
0,
0, NULL,
//desc
IDS_ARG1_SUBNET_DESC, NULL,
ID_ARG2_NULL, NULL,
ARG_TYPE_STR, ARG_FLAG_OPTIONAL,
0,
0, NULL,
//site
IDS_ARG1_SUBNET_SITE, NULL,
ID_ARG2_NULL, NULL,
ARG_TYPE_STR, ARG_FLAG_OPTIONAL,
0,
0, NULL,
ARG_TERMINATOR,
};
ARG_RECORD DSMOD_SITE_COMMANDS[]=
{
//name_or_objectdn
IDS_ARG1_SITE_NAME_OR_OBJECTDN, NULL,
ID_ARG2_NULL, NULL,
ARG_TYPE_MSZ, ARG_FLAG_REQUIRED|ARG_FLAG_NOFLAG,
0,
0, NULL,
//name
IDS_ARG1_SITE_NAME, NULL,
ID_ARG2_NULL, NULL,
ARG_TYPE_STR, ARG_FLAG_OPTIONAL,
0,
0, NULL,
//desc
IDS_ARG1_SITE_DESC, NULL,
ID_ARG2_NULL, NULL,
ARG_TYPE_STR, ARG_FLAG_OPTIONAL,
0,
0, NULL,
//autotopology
IDS_ARG1_SITE_AUTOTOPOLOGY, NULL,
ID_ARG2_NULL, NULL,
ARG_TYPE_STR, ARG_FLAG_OPTIONAL,
0,
0, NULL,
ARG_TERMINATOR,
};
ARG_RECORD DSMOD_SLINK_COMMANDS[]=
{
//name_or_objectdn
IDS_ARG1_SLINK_NAME_OR_OBJECTDN, NULL,
ID_ARG2_NULL, NULL,
ARG_TYPE_MSZ, ARG_FLAG_REQUIRED|ARG_FLAG_NOFLAG,
0,
0, NULL,
//ip
IDS_ARG1_SLINK_IP, NULL,
ID_ARG2_NULL, NULL,
ARG_TYPE_STR, ARG_FLAG_OPTIONAL,
0,
0, NULL,
//smtp
IDS_ARG1_SLINK_SMTP, NULL,
ID_ARG2_NULL, NULL,
ARG_TYPE_STR, ARG_FLAG_OPTIONAL,
0,
0, NULL,
//name
IDS_ARG1_SLINK_NAME, NULL,
ID_ARG2_NULL, NULL,
ARG_TYPE_STR, ARG_FLAG_OPTIONAL,
0,
0, NULL,
//addsite
IDS_ARG1_SLINK_ADDSITE, NULL,
ID_ARG2_NULL, NULL,
ARG_TYPE_STR, ARG_FLAG_OPTIONAL,
0,
0, NULL,
//rmsite
IDS_ARG1_SLINK_RMSITE, NULL,
ID_ARG2_NULL, NULL,
ARG_TYPE_STR, ARG_FLAG_OPTIONAL,
0,
0, NULL,
//cost
IDS_ARG1_SLINK_COST, NULL,
ID_ARG2_NULL, NULL,
ARG_TYPE_STR, ARG_FLAG_OPTIONAL,
0,
0, NULL,
//repint
IDS_ARG1_SLINK_REPINT, NULL,
ID_ARG2_NULL, NULL,
ARG_TYPE_STR, ARG_FLAG_OPTIONAL,
0,
0, NULL,
//desc
IDS_ARG1_SLINK_DESC, NULL,
ID_ARG2_NULL, NULL,
ARG_TYPE_STR, ARG_FLAG_OPTIONAL,
0,
0, NULL,
//autobacksync
IDS_ARG1_SLINK_AUTOBACKSYNC, NULL,
ID_ARG2_NULL, NULL,
ARG_TYPE_STR, ARG_FLAG_OPTIONAL,
0,
0, NULL,
//notify
IDS_ARG1_SLINK_NOTIFY, NULL,
ID_ARG2_NULL, NULL,
ARG_TYPE_STR, ARG_FLAG_OPTIONAL,
0,
0, NULL,
ARG_TERMINATOR,
};
ARG_RECORD DSMOD_SLINKBR_COMMANDS[]=
{
//name_or_objectdn
IDS_ARG1_SLINKBR_NAME_OR_OBJECTDN, NULL,
ID_ARG2_NULL, NULL,
ARG_TYPE_MSZ, ARG_FLAG_REQUIRED|ARG_FLAG_NOFLAG,
0,
0, NULL,
//ip
IDS_ARG1_SLINKBR_IP, NULL,
ID_ARG2_NULL, NULL,
ARG_TYPE_STR, ARG_FLAG_OPTIONAL,
0,
0, NULL,
//smtp
IDS_ARG1_SLINKBR_SMTP, NULL,
ID_ARG2_NULL, NULL,
ARG_TYPE_STR, ARG_FLAG_OPTIONAL,
0,
0, NULL,
//name
IDS_ARG1_SLINKBR_NAME, NULL,
ID_ARG2_NULL, NULL,
ARG_TYPE_STR, ARG_FLAG_OPTIONAL,
0,
0, NULL,
//addslink
IDS_ARG1_SLINKBR_ADDSLINK, NULL,
ID_ARG2_NULL, NULL,
ARG_TYPE_STR, ARG_FLAG_OPTIONAL,
0,
0, NULL,
//rmslink
IDS_ARG1_SLINKBR_RMSLINK, NULL,
ID_ARG2_NULL, NULL,
ARG_TYPE_STR, ARG_FLAG_OPTIONAL,
0,
0, NULL,
//desc
IDS_ARG1_SLINKBR_DESC, NULL,
ID_ARG2_NULL, NULL,
ARG_TYPE_STR, ARG_FLAG_OPTIONAL,
0,
0, NULL,
ARG_TERMINATOR,
};
ARG_RECORD DSMOD_CONN_COMMANDS[]=
{
//name_or_objectdn
IDS_ARG1_CONN_NAME_OR_OBJECTDN, NULL,
ID_ARG2_NULL, NULL,
ARG_TYPE_MSZ, ARG_FLAG_REQUIRED|ARG_FLAG_NOFLAG,
0,
0, NULL,
//transport
IDS_ARG1_CONN_TRANSPORT, NULL,
ID_ARG2_NULL, NULL,
ARG_TYPE_STR, ARG_FLAG_OPTIONAL,
0,
0, NULL,
//enabled
IDS_ARG1_CONN_ENABLED, NULL,
ID_ARG2_NULL, NULL,
ARG_TYPE_STR, ARG_FLAG_OPTIONAL,
0,
0, NULL,
//desc
IDS_ARG1_CONN_DESC, NULL,
ID_ARG2_NULL, NULL,
ARG_TYPE_STR, ARG_FLAG_OPTIONAL,
0,
0, NULL,
//manual
IDS_ARG1_CONN_MANUAL, NULL,
ID_ARG2_NULL, NULL,
ARG_TYPE_STR, ARG_FLAG_OPTIONAL,
0,
0, NULL,
//autobacksync
IDS_ARG1_CONN_AUTOBACKSYNC, NULL,
ID_ARG2_NULL, NULL,
ARG_TYPE_STR, ARG_FLAG_OPTIONAL,
0,
0, NULL,
//notify
IDS_ARG1_CONN_NOTIFY, NULL,
ID_ARG2_NULL, NULL,
ARG_TYPE_STR, ARG_FLAG_OPTIONAL,
0,
0, NULL,
ARG_TERMINATOR,
};
*/
ARG_RECORD DSMOD_SERVER_COMMANDS[]=
{
//
// isGC
//
0, (PWSTR)g_pszArg1ServerIsGC,
ID_ARG2_NULL, NULL,
ARG_TYPE_STR, ARG_FLAG_OPTIONAL|ARG_FLAG_ATLEASTONE,
0,
0, ValidateYesNo,
ARG_TERMINATOR
};
//+-------------------------------------------------------------------------
// Attributes
//--------------------------------------------------------------------------
//
// Description
//
DSATTRIBUTEDESCRIPTION description =
{
{
L"description",
ADS_ATTR_UPDATE,
ADSTYPE_CASE_IGNORE_STRING,
NULL,
0
},
0
};
DSATTRIBUTETABLEENTRY descriptionEntry =
{
L"description",
eCommDescription,
0,
&description,
FillAttrInfoFromObjectEntry,
NULL
};
//
// UPN
//
DSATTRIBUTEDESCRIPTION upn =
{
{
L"userPrincipalName",
ADS_ATTR_UPDATE,
ADSTYPE_CASE_IGNORE_STRING,
NULL,
0
},
0
};
DSATTRIBUTETABLEENTRY upnUserEntry =
{
L"userPrincipalName",
eUserUpn,
0,
&upn,
FillAttrInfoFromObjectEntry,
NULL
};
//
// First name
//
DSATTRIBUTEDESCRIPTION firstName =
{
{
L"givenName",
ADS_ATTR_UPDATE,
ADSTYPE_CASE_IGNORE_STRING,
NULL,
0
},
0
};
DSATTRIBUTETABLEENTRY firstNameUserEntry =
{
L"givenName",
eUserFn,
0,
&firstName,
FillAttrInfoFromObjectEntry,
NULL
};
DSATTRIBUTETABLEENTRY firstNameContactEntry =
{
L"givenName",
eContactFn,
0,
&firstName,
FillAttrInfoFromObjectEntry,
NULL
};
//
// Middle Initial
//
DSATTRIBUTEDESCRIPTION middleInitial =
{
{
L"initials",
ADS_ATTR_UPDATE,
ADSTYPE_CASE_IGNORE_STRING,
NULL,
0
},
0
};
DSATTRIBUTETABLEENTRY middleInitialUserEntry =
{
L"initials",
eUserMi,
0,
&middleInitial,
FillAttrInfoFromObjectEntry,
NULL
};
DSATTRIBUTETABLEENTRY middleInitialContactEntry =
{
L"initials",
eContactMi,
0,
&middleInitial,
FillAttrInfoFromObjectEntry,
NULL
};
//
// Last name
//
DSATTRIBUTEDESCRIPTION lastName =
{
{
L"sn",
ADS_ATTR_UPDATE,
ADSTYPE_CASE_IGNORE_STRING,
NULL,
0
},
0
};
DSATTRIBUTETABLEENTRY lastNameUserEntry =
{
L"sn",
eUserLn,
0,
&lastName,
FillAttrInfoFromObjectEntry,
NULL
};
DSATTRIBUTETABLEENTRY lastNameContactEntry =
{
L"sn",
eContactLn,
0,
&lastName,
FillAttrInfoFromObjectEntry,
NULL
};
//
// Display name
//
DSATTRIBUTEDESCRIPTION displayName =
{
{
L"displayName",
ADS_ATTR_UPDATE,
ADSTYPE_CASE_IGNORE_STRING,
NULL,
0
},
0
};
DSATTRIBUTETABLEENTRY displayNameUserEntry =
{
L"displayName",
eUserDisplay,
0,
&displayName,
FillAttrInfoFromObjectEntry,
NULL
};
DSATTRIBUTETABLEENTRY displayNameContactEntry =
{
L"displayName",
eContactDisplay,
0,
&displayName,
FillAttrInfoFromObjectEntry,
NULL
};
//
// Employee ID
//
DSATTRIBUTEDESCRIPTION employeeID =
{
{
L"employeeID",
ADS_ATTR_UPDATE,
ADSTYPE_CASE_IGNORE_STRING,
NULL,
0
},
0
};
DSATTRIBUTETABLEENTRY employeeIDUserEntry =
{
L"employeeID",
eUserEmpID,
0,
&employeeID,
FillAttrInfoFromObjectEntry,
NULL
};
//
// Password
//
DSATTRIBUTEDESCRIPTION password =
{
{
NULL,
ADS_ATTR_UPDATE,
ADSTYPE_INVALID,
NULL,
0
},
0
};
DSATTRIBUTETABLEENTRY passwordUserEntry =
{
L"password",
eUserPwd,
0,
&password,
ResetUserPassword,
NULL
};
//
// Office
//
DSATTRIBUTEDESCRIPTION office =
{
{
L"physicalDeliveryOfficeName",
ADS_ATTR_UPDATE,
ADSTYPE_CASE_IGNORE_STRING,
NULL,
0
},
0
};
DSATTRIBUTETABLEENTRY officeUserEntry =
{
L"physicalDeliveryOfficeName",
eUserOffice,
0,
&office,
FillAttrInfoFromObjectEntry,
NULL
};
DSATTRIBUTETABLEENTRY officeContactEntry =
{
L"physicalDeliveryOfficeName",
eContactOffice,
0,
&office,
FillAttrInfoFromObjectEntry,
NULL
};
//
// Telephone
//
DSATTRIBUTEDESCRIPTION telephone =
{
{
L"telephoneNumber",
ADS_ATTR_UPDATE,
ADSTYPE_CASE_IGNORE_STRING,
NULL,
0
},
0
};
DSATTRIBUTETABLEENTRY telephoneUserEntry =
{
L"telephoneNumber",
eUserTel,
0,
&telephone,
FillAttrInfoFromObjectEntry,
NULL
};
DSATTRIBUTETABLEENTRY telephoneContactEntry =
{
L"telephoneNumber",
eContactTel,
0,
&telephone,
FillAttrInfoFromObjectEntry,
NULL
};
//
// Email
//
DSATTRIBUTEDESCRIPTION email =
{
{
L"mail",
ADS_ATTR_UPDATE,
ADSTYPE_CASE_IGNORE_STRING,
NULL,
0
},
0
};
DSATTRIBUTETABLEENTRY emailUserEntry =
{
L"mail",
eUserEmail,
DS_ATTRIBUTE_NOT_REUSABLE,
&email,
FillAttrInfoFromObjectEntryExpandUsername,
NULL
};
DSATTRIBUTETABLEENTRY emailContactEntry =
{
L"mail",
eContactEmail,
0,
&email,
FillAttrInfoFromObjectEntry,
NULL
};
//
// Home Telephone
//
DSATTRIBUTEDESCRIPTION homeTelephone =
{
{
L"homePhone",
ADS_ATTR_UPDATE,
ADSTYPE_CASE_IGNORE_STRING,
NULL,
0
},
0
};
DSATTRIBUTETABLEENTRY homeTelephoneUserEntry =
{
L"homePhone",
eUserHometel,
0,
&homeTelephone,
FillAttrInfoFromObjectEntry,
NULL
};
DSATTRIBUTETABLEENTRY homeTelephoneContactEntry =
{
L"homePhone",
eContactHometel,
0,
&homeTelephone,
FillAttrInfoFromObjectEntry,
NULL
};
//
// Pager
//
DSATTRIBUTEDESCRIPTION pager =
{
{
L"pager",
ADS_ATTR_UPDATE,
ADSTYPE_CASE_IGNORE_STRING,
NULL,
0
},
0
};
DSATTRIBUTETABLEENTRY pagerUserEntry =
{
L"pager",
eUserPager,
0,
&pager,
FillAttrInfoFromObjectEntry,
NULL
};
DSATTRIBUTETABLEENTRY pagerContactEntry =
{
L"pager",
eContactPager,
0,
&pager,
FillAttrInfoFromObjectEntry,
NULL
};
//
// Mobile phone
//
DSATTRIBUTEDESCRIPTION mobile =
{
{
L"mobile",
ADS_ATTR_UPDATE,
ADSTYPE_CASE_IGNORE_STRING,
NULL,
0
},
0
};
DSATTRIBUTETABLEENTRY mobileUserEntry =
{
L"mobile",
eUserMobile,
0,
&mobile,
FillAttrInfoFromObjectEntry,
NULL
};
DSATTRIBUTETABLEENTRY mobileContactEntry =
{
L"mobile",
eContactMobile,
0,
&mobile,
FillAttrInfoFromObjectEntry,
NULL
};
//
// Fax
//
DSATTRIBUTEDESCRIPTION fax =
{
{
L"facsimileTelephoneNumber",
ADS_ATTR_UPDATE,
ADSTYPE_CASE_IGNORE_STRING,
NULL,
0
},
0
};
DSATTRIBUTETABLEENTRY faxUserEntry =
{
L"facsimileTelephoneNumber",
eUserFax,
0,
&fax,
FillAttrInfoFromObjectEntry,
NULL
};
DSATTRIBUTETABLEENTRY faxContactEntry =
{
L"facsimileTelephoneNumber",
eContactFax,
0,
&fax,
FillAttrInfoFromObjectEntry,
NULL
};
//
// Title
//
DSATTRIBUTEDESCRIPTION title =
{
{
L"title",
ADS_ATTR_UPDATE,
ADSTYPE_CASE_IGNORE_STRING,
NULL,
0
},
0
};
DSATTRIBUTETABLEENTRY titleUserEntry =
{
L"title",
eUserTitle,
0,
&title,
FillAttrInfoFromObjectEntry,
NULL
};
DSATTRIBUTETABLEENTRY titleContactEntry =
{
L"title",
eContactTitle,
0,
&title,
FillAttrInfoFromObjectEntry,
NULL
};
//
// Department
//
DSATTRIBUTEDESCRIPTION department =
{
{
L"department",
ADS_ATTR_UPDATE,
ADSTYPE_CASE_IGNORE_STRING,
NULL,
0
},
0
};
DSATTRIBUTETABLEENTRY departmentUserEntry =
{
L"department",
eUserDept,
0,
&department,
FillAttrInfoFromObjectEntry,
NULL
};
DSATTRIBUTETABLEENTRY departmentContactEntry =
{
L"department",
eContactDept,
0,
&department,
FillAttrInfoFromObjectEntry,
NULL
};
//
// Company
//
DSATTRIBUTEDESCRIPTION company =
{
{
L"company",
ADS_ATTR_UPDATE,
ADSTYPE_CASE_IGNORE_STRING,
NULL,
0
},
0
};
DSATTRIBUTETABLEENTRY companyUserEntry =
{
L"company",
eUserCompany,
0,
&company,
FillAttrInfoFromObjectEntry,
NULL
};
DSATTRIBUTETABLEENTRY companyContactEntry =
{
L"company",
eContactCompany,
0,
&company,
FillAttrInfoFromObjectEntry,
NULL
};
//
// Web Page
//
DSATTRIBUTEDESCRIPTION webPage =
{
{
L"wwwHomePage",
ADS_ATTR_UPDATE,
ADSTYPE_CASE_IGNORE_STRING,
NULL,
0
},
0
};
DSATTRIBUTETABLEENTRY webPageUserEntry =
{
L"wwwHomePage",
eUserWebPage,
0,
&webPage,
FillAttrInfoFromObjectEntryExpandUsername,
NULL
};
//
// IP Phone
//
DSATTRIBUTEDESCRIPTION ipPhone =
{
{
L"ipPhone",
ADS_ATTR_UPDATE,
ADSTYPE_CASE_IGNORE_STRING,
NULL,
0
},
0
};
DSATTRIBUTETABLEENTRY ipPhoneUserEntry =
{
L"ipPhone",
eUserIPPhone,
0,
&ipPhone,
FillAttrInfoFromObjectEntry,
NULL
};
//
// Script Path
//
DSATTRIBUTEDESCRIPTION scriptPath =
{
{
L"scriptPath",
ADS_ATTR_UPDATE,
ADSTYPE_CASE_IGNORE_STRING,
NULL,
0
},
0
};
DSATTRIBUTETABLEENTRY scriptPathUserEntry =
{
L"scriptPath",
eUserScriptPath,
0,
&scriptPath,
FillAttrInfoFromObjectEntry,
NULL
};
//
// Home Directory
//
DSATTRIBUTEDESCRIPTION homeDirectory =
{
{
L"homeDirectory",
ADS_ATTR_UPDATE,
ADSTYPE_CASE_IGNORE_STRING,
NULL,
0
},
0
};
DSATTRIBUTETABLEENTRY homeDirectoryUserEntry =
{
L"homeDirectory",
eUserHomeDir,
DS_ATTRIBUTE_NOT_REUSABLE,
&homeDirectory,
FillAttrInfoFromObjectEntryExpandUsername,
NULL
};
//
// Home Drive
//
DSATTRIBUTEDESCRIPTION homeDrive =
{
{
L"homeDrive",
ADS_ATTR_UPDATE,
ADSTYPE_CASE_IGNORE_STRING,
NULL,
0
},
0
};
DSATTRIBUTETABLEENTRY homeDriveUserEntry =
{
L"homeDrive",
eUserHomeDrive,
0,
&homeDrive,
FillAttrInfoFromObjectEntry,
NULL
};
//
// Profile Path
//
DSATTRIBUTEDESCRIPTION profilePath =
{
{
L"profilePath",
ADS_ATTR_UPDATE,
ADSTYPE_CASE_IGNORE_STRING,
NULL,
0
},
0
};
DSATTRIBUTETABLEENTRY profilePathUserEntry =
{
L"profilePath",
eUserProfilePath,
DS_ATTRIBUTE_NOT_REUSABLE,
&profilePath,
FillAttrInfoFromObjectEntryExpandUsername,
NULL
};
//
// pwdLastSet
//
DSATTRIBUTEDESCRIPTION pwdLastSet =
{
{
L"pwdLastSet",
ADS_ATTR_UPDATE,
ADSTYPE_LARGE_INTEGER,
NULL,
0
},
0
};
DSATTRIBUTETABLEENTRY mustChangePwdUserEntry =
{
L"pwdLastSet",
eUserMustchpwd,
DS_ATTRIBUTE_NOT_REUSABLE | DS_ATTRIBUTE_POSTCREATE,
&pwdLastSet,
ChangeMustChangePwd,
NULL
};
//
// accountExpires
//
DSATTRIBUTEDESCRIPTION accountExpires =
{
{
L"accountExpires",
ADS_ATTR_UPDATE,
ADSTYPE_LARGE_INTEGER,
NULL,
0
},
0
};
DSATTRIBUTETABLEENTRY accountExpiresUserEntry =
{
L"accountExpires",
eUserAcctexpires,
0,
&accountExpires,
AccountExpires,
NULL
};
//
// user account control
//
DSATTRIBUTEDESCRIPTION userAccountControl =
{
{
L"userAccountControl",
ADS_ATTR_UPDATE,
ADSTYPE_INTEGER,
NULL,
0
},
0
};
DSATTRIBUTETABLEENTRY disableComputerEntry =
{
L"userAccountControl",
eComputerDisabled,
DS_ATTRIBUTE_NOT_REUSABLE,
&userAccountControl,
DisableAccount,
NULL
};
DSATTRIBUTETABLEENTRY disableUserEntry =
{
L"userAccountControl",
eUserDisabled,
DS_ATTRIBUTE_NOT_REUSABLE,
&userAccountControl,
DisableAccount,
NULL
};
DSATTRIBUTETABLEENTRY pwdNeverExpiresUserEntry =
{
L"userAccountControl",
eUserPwdneverexpires,
DS_ATTRIBUTE_NOT_REUSABLE,
&userAccountControl,
PwdNeverExpires,
NULL
};
DSATTRIBUTETABLEENTRY reverisblePwdUserEntry =
{
L"userAccountControl",
eUserReversiblePwd,
DS_ATTRIBUTE_NOT_REUSABLE,
&userAccountControl,
ReversiblePwd,
NULL
};
//
// SAM Account Name
//
DSATTRIBUTEDESCRIPTION samAccountName =
{
{
L"sAMAccountName",
ADS_ATTR_UPDATE,
ADSTYPE_CASE_IGNORE_STRING,
NULL,
0
},
0
};
DSATTRIBUTETABLEENTRY samNameGroupEntry =
{
L"sAMAccountName",
eGroupSamname,
0,
&samAccountName,
FillAttrInfoFromObjectEntry,
NULL
};
//
// Manager
//
DSATTRIBUTEDESCRIPTION manager =
{
{
L"manager",
ADS_ATTR_UPDATE,
ADSTYPE_CASE_IGNORE_STRING,
NULL,
0
},
0
};
DSATTRIBUTETABLEENTRY managerUserEntry =
{
L"manager",
eUserManager,
0,
&manager,
FillAttrInfoFromObjectEntry,
NULL
};
//
// Group Type
//
DSATTRIBUTEDESCRIPTION groupType =
{
{
L"groupType",
ADS_ATTR_UPDATE,
ADSTYPE_INTEGER,
NULL,
0
},
0
};
DSATTRIBUTETABLEENTRY groupScopeTypeEntry =
{
L"groupType",
eGroupScope,
0,
&groupType,
ChangeGroupScope,
NULL
};
DSATTRIBUTETABLEENTRY groupSecurityTypeEntry =
{
L"groupType",
eGroupSecgrp,
0,
&groupType,
ChangeGroupSecurity,
NULL
};
//
// Add Group Members
//
DSATTRIBUTEDESCRIPTION groupAddMember =
{
{
L"member",
ADS_ATTR_APPEND,
ADSTYPE_DN_STRING,
NULL,
0
},
0
};
DSATTRIBUTETABLEENTRY groupAddMemberEntry =
{
L"member",
eGroupAddMember,
DS_ATTRIBUTE_NOT_REUSABLE,
&groupAddMember,
ModifyGroupMembers,
NULL
};
//
// Remove Group Members
//
DSATTRIBUTEDESCRIPTION groupRemoveMember =
{
{
L"member",
ADS_ATTR_UPDATE,
ADSTYPE_DN_STRING,
NULL,
0
},
0
};
DSATTRIBUTETABLEENTRY groupRemoveMemberEntry =
{
L"member",
eGroupRemoveMember,
DS_ATTRIBUTE_NOT_REUSABLE,
&groupRemoveMember,
RemoveGroupMembers,
NULL
};
//
// Change Group Members
//
DSATTRIBUTEDESCRIPTION groupChangeMember =
{
{
L"member",
ADS_ATTR_UPDATE,
ADSTYPE_DN_STRING,
NULL,
0
},
0
};
DSATTRIBUTETABLEENTRY groupChangeMemberEntry =
{
L"member",
eGroupChangeMember,
0,
&groupChangeMember,
ModifyGroupMembers,
NULL
};
// Location
//
DSATTRIBUTEDESCRIPTION location =
{
{
L"location",
ADS_ATTR_UPDATE,
ADSTYPE_CASE_IGNORE_STRING,
NULL,
0
},
0
};
DSATTRIBUTETABLEENTRY locationComputerEntry =
{
L"location",
eComputerLocation,
DS_ATTRIBUTE_ONCREATE,
&location,
FillAttrInfoFromObjectEntry,
NULL
};
//
// Reset Computer account
//
DSATTRIBUTETABLEENTRY resetComputerEntry =
{
NULL,
eComputerReset,
DS_ATTRIBUTE_NOT_REUSABLE,
NULL,
ResetComputerAccount,
NULL
};
//
// User Can Change Password
//
DSATTRIBUTETABLEENTRY canChangePwdUserEntry =
{
NULL,
eUserCanchpwd,
DS_ATTRIBUTE_NOT_REUSABLE | DS_ATTRIBUTE_POSTCREATE,
NULL,
ChangeCanChangePassword,
NULL
};
//
// Server is GC
//
DSATTRIBUTEDESCRIPTION options =
{
{
L"options",
ADS_ATTR_UPDATE,
ADSTYPE_INTEGER,
NULL,
0
},
0
};
DSATTRIBUTETABLEENTRY serverIsGCEntry =
{
L"options",
eServerIsGC,
DS_ATTRIBUTE_NOT_REUSABLE | DS_ATTRIBUTE_POSTCREATE,
&options,
SetIsGC,
NULL
};
//+-------------------------------------------------------------------------
// Objects
//--------------------------------------------------------------------------
//
// Organizational Unit
//
PDSATTRIBUTETABLEENTRY OUAttributeTable[] =
{
&descriptionEntry
};
DSOBJECTTABLEENTRY g_OUObjectEntry =
{
L"organizationalUnit",
g_pszOU,
NULL, // Uses just the common switches
USAGE_DSMOD_OU,
sizeof(OUAttributeTable)/sizeof(PDSATTRIBUTETABLEENTRY),
OUAttributeTable
};
//
// User
//
PDSATTRIBUTETABLEENTRY UserAttributeTable[] =
{
&descriptionEntry,
&upnUserEntry,
&firstNameUserEntry,
&middleInitialUserEntry,
&lastNameUserEntry,
&displayNameUserEntry,
&employeeIDUserEntry,
&passwordUserEntry,
&officeUserEntry,
&telephoneUserEntry,
&emailUserEntry,
&homeTelephoneUserEntry,
&pagerUserEntry,
&mobileUserEntry,
&faxUserEntry,
&ipPhoneUserEntry,
&webPageUserEntry,
&titleUserEntry,
&departmentUserEntry,
&companyUserEntry,
&managerUserEntry,
&homeDirectoryUserEntry,
&homeDriveUserEntry,
&profilePathUserEntry,
&scriptPathUserEntry,
&mustChangePwdUserEntry,
&canChangePwdUserEntry,
&reverisblePwdUserEntry,
&pwdNeverExpiresUserEntry,
&accountExpiresUserEntry,
&disableUserEntry,
};
DSOBJECTTABLEENTRY g_UserObjectEntry =
{
L"user",
g_pszUser,
DSMOD_USER_COMMANDS,
USAGE_DSMOD_USER,
sizeof(UserAttributeTable)/sizeof(PDSATTRIBUTETABLEENTRY),
UserAttributeTable
};
//
// Contact
//
PDSATTRIBUTETABLEENTRY ContactAttributeTable[] =
{
&descriptionEntry,
&firstNameContactEntry,
&middleInitialContactEntry,
&lastNameContactEntry,
&displayNameContactEntry,
&officeContactEntry,
&telephoneContactEntry,
&emailContactEntry,
&homeTelephoneContactEntry,
&pagerContactEntry,
&mobileContactEntry,
&faxContactEntry,
&titleContactEntry,
&departmentContactEntry,
&companyContactEntry
};
DSOBJECTTABLEENTRY g_ContactObjectEntry =
{
L"contact",
g_pszContact,
DSMOD_CONTACT_COMMANDS,
USAGE_DSMOD_CONTACT,
sizeof(ContactAttributeTable)/sizeof(PDSATTRIBUTETABLEENTRY),
ContactAttributeTable
};
//
// Computer
//
PDSATTRIBUTETABLEENTRY ComputerAttributeTable[] =
{
&descriptionEntry,
&locationComputerEntry,
&disableComputerEntry,
&resetComputerEntry,
};
DSOBJECTTABLEENTRY g_ComputerObjectEntry =
{
L"computer",
g_pszComputer,
DSMOD_COMPUTER_COMMANDS,
USAGE_DSMOD_COMPUTER,
sizeof(ComputerAttributeTable)/sizeof(PDSATTRIBUTETABLEENTRY),
ComputerAttributeTable
};
//
// Group
//
PDSATTRIBUTETABLEENTRY GroupAttributeTable[] =
{
&descriptionEntry,
&samNameGroupEntry,
&groupScopeTypeEntry,
&groupSecurityTypeEntry,
&groupAddMemberEntry,
&groupRemoveMemberEntry,
&groupChangeMemberEntry
};
DSOBJECTTABLEENTRY g_GroupObjectEntry =
{
L"group",
g_pszGroup,
DSMOD_GROUP_COMMANDS,
USAGE_DSMOD_GROUP,
sizeof(GroupAttributeTable)/sizeof(PDSATTRIBUTETABLEENTRY),
GroupAttributeTable
};
//
// Server
//
PDSATTRIBUTETABLEENTRY ServerAttributeTable[] =
{
&descriptionEntry,
&serverIsGCEntry
};
DSOBJECTTABLEENTRY g_ServerObjectEntry =
{
L"server",
g_pszServer,
DSMOD_SERVER_COMMANDS,
USAGE_DSMOD_SERVER,
sizeof(ServerAttributeTable)/sizeof(PDSATTRIBUTETABLEENTRY),
ServerAttributeTable
};
//+-------------------------------------------------------------------------
// Object Table
//--------------------------------------------------------------------------
PDSOBJECTTABLEENTRY g_DSObjectTable[] =
{
&g_OUObjectEntry,
&g_UserObjectEntry,
&g_ContactObjectEntry,
&g_ComputerObjectEntry,
&g_GroupObjectEntry,
&g_ServerObjectEntry,
NULL
};