|
|
/*++
Copyright (c) 1996 Microsoft Corporation
Module Name:
delegate.h
Abstract:
The main header file for the delegate tool
Author:
Mac McLain (MacM) 10-02-96
Environment:
User Mode
Revision History:
--*/
//
// Windows Headers
//
#include <windows.h>
#include <rpc.h>
#include <aclapi.h>
#include <aclapip.h>
#include <winldap.h>
#include <ntdsapi.h>
//
// C-Runtime Header
//
#include <stdio.h>
#include <stdlib.h>
//
// Macro to help determine if a given argument is a swith or not
//
#define IS_ARG_SWITCH(arg) (arg[0] == '/' || arg[0] == '-')
//
// Type of operation to perform
//
typedef enum _DELEGATE_OP { REVOKE = 0, GRANT, DENY } DELEGATE_OP;
//
// Type of object ID we're dealing with
//
typedef enum _DELEGATE_OBJ_ID { USER_ID = 0, GROUP_ID, PRINT_ID, VOLUME_ID, OU_ID, MEMBER_ID, PASSWD_ID, ACCTCTRL_ID, LOCALGRP_ID, UNKNOWN_ID // This ALWAYS has to be the last item in the enumeration
} DELEGATE_OBJ_ID, *PDELEGATE_OBJ_ID; #define MAX_DEF_ACCESS_ID OU_ID // Last item we need to get the
// default access for
//
// List of permissions to be granted/denied
//
#define D_ALL "All"
#define D_USER "User"
#define D_GROUP "Group"
#define D_PRINT "Print"
#define D_VOL "Volume"
#define D_OU "OU"
#define D_MEMBERS "Members"
#define D_PASSWD "Password"
#define D_ENABLE "EnableAccount"
//
// Options flags
//
#define D_REPLACE 0x00000001L
#define D_INHERIT 0x00000002L
#define D_PROTECT 0x00000004L
//
// Function prototypes (delegate.c)
//
VOID DumpAccess ( IN PWSTR pwszObject, IN PACTRL_ACCESSW pAccess, IN PWSTR *ppwszIDs );
VOID Usage ( );
DWORD ConvertStringAToStringW ( IN PSTR pszString, OUT PWSTR *ppwszString );
DWORD ConvertStringWToStringA ( IN PWSTR pwszString, OUT PSTR *ppszString );
DWORD InitializeIdAndAccessLists ( IN PWSTR pwszOU, IN PWSTR *ppwszObjIdList, IN PACTRL_ACCESS *ppDefObjAccessList );
VOID FreeIdAndAccessList ( IN PWSTR *ppwszObjIdList, IN PACTRL_ACCESS *ppDefObjAccessList );
DWORD ProcessCmdlineUsers ( IN PACTRL_ACCESSW pAccessList, IN CHAR *argv[], IN INT argc, IN DWORD iStart, IN DELEGATE_OP Op, IN ULONG fFlags, IN PWSTR *ppwszIDs, IN PACTRL_ACCESS *ppDefObjAccessList, OUT PDWORD pcUsed, OUT PACTRL_ACCESSW *ppNewAccess );
DWORD GetUserInfoFromCmdlineString ( IN PSTR pszUserInfo, OUT PWSTR *ppwszUser, OUT PSTR *ppszAccessStart );
DWORD AddAccessEntry ( IN PACTRL_ACCESSW pAccessList, IN PSTR pszAccess, IN PWSTR pwszTrustee, IN DELEGATE_OP Op, IN PWSTR *ppwszIDs, IN PACTRL_ACCESS *ppDefObjAccessList, IN ULONG fFlags, OUT PACTRL_ACCESSW *ppNewAccess );
DWORD IsPathOU ( IN PWSTR pwszOU, OUT PBOOL pfIsOU );
//
// Function prototypes (ldap.c)
//
DWORD LDAPReadAttribute ( IN PSTR pszOU, IN PSTR pszAttribute, IN PLDAP pLDAP, OUT PDWORD pcValues, OUT PSTR **pppszValues );
VOID LDAPFreeValues ( IN PSTR *ppszValues );
DWORD LDAPReadSchemaPath ( IN PWSTR pwszOU, OUT PSTR *ppszSchemaPath, OUT PLDAP *ppLDAP );
DWORD LDAPReadSecAndObjIdAsString ( IN PLDAP pLDAP, IN PSTR pszSchemaPath, IN PSTR pszObject, OUT PWSTR *ppwszObjIdAsString, OUT PACTRL_ACCESS *ppAccess );
DWORD LDAPBind ( IN PSTR pszObject, OUT PLDAP *ppLDAP );
VOID LDAPUnbind ( IN PLDAP pLDAP );
|