windows-nt/Source/XPSP1/NT/ds/security/tools/delegate/delegate.h

224 lines
4 KiB
C
Raw Permalink Normal View History

2020-09-26 03:20:57 -05:00
/*++
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
);