ext_ad_group_acl.cc File Reference
#include "squid.h"
#include "helper/protocol_defines.h"
#include "include/util.h"
#include <cassert>
#include <cctype>
#include <cstring>
#include <windows.h>
#include <objbase.h>
#include <initguid.h>
#include <adsiid.h>
#include <iads.h>
#include <adshlp.h>
#include <adserr.h>
#include <lm.h>
#include <dsrole.h>
#include <sddl.h>
Include dependency graph for ext_ad_group_acl.cc:

Go to the source code of this file.

Enumerations

enum  ADSI_PATH {
  LDAP_MODE ,
  GC_MODE
}
 

Functions

wchar_t * My_NameTranslate (wchar_t *, int, int)
 
char * Get_WIN32_ErrorMessage (HRESULT)
 
void CloseCOM (void)
 
HRESULT GetLPBYTEtoOctetString (VARIANT *pVar, LPBYTE *ppByte)
 
wchar_t * Get_primaryGroup (IADs *pUser)
 
wchar_t * GetLDAPPath (wchar_t *Base_DN, int query_mode)
 
char * GetDomainName (void)
 
int add_User_Group (wchar_t *Group)
 
static int wccmparray (const wchar_t *str, const wchar_t **array)
 
static int wcstrcmparray (const wchar_t *str, const char **array)
 
HRESULT Recursive_Memberof (IADs *pObj)
 
static wchar_t ** build_groups_DN_array (const char **array, char *userdomain)
 
int Valid_Local_Groups (char *UserName, const char **Groups)
 
int Valid_Global_Groups (char *UserName, const char **Groups)
 
static void usage (const char *program)
 
void process_options (int argc, char *argv[])
 
int main (int argc, char *argv[])
 

Variables

enum ADSI_PATH ADSI_Path
 
int use_global = 0
 
char * program_name
 
pid_t mypid
 
char * machinedomain
 
int use_case_insensitive_compare = 0
 
char * DefaultDomain = nullptr
 
const char NTV_VALID_DOMAIN_SEPARATOR [] = "\\/"
 
int numberofgroups = 0
 
int WIN32_COM_initialized = 0
 
char * WIN32_ErrorMessage = nullptr
 
wchar_t ** User_Groups
 
int User_Groups_Count = 0
 

Enumeration Type Documentation

◆ ADSI_PATH

enum ADSI_PATH
Enumerator
LDAP_MODE 
GC_MODE 

Definition at line 95 of file ext_ad_group_acl.cc.

Function Documentation

◆ add_User_Group()

int add_User_Group ( wchar_t *  Group)

Definition at line 347 of file ext_ad_group_acl.cc.

References User_Groups, User_Groups_Count, xmalloc, and xrealloc().

Referenced by Recursive_Memberof(), and Valid_Global_Groups().

◆ build_groups_DN_array()

static wchar_t ** build_groups_DN_array ( const char **  array,
char *  userdomain 
)
static

Definition at line 481 of file ext_ad_group_acl.cc.

References debug(), My_NameTranslate(), NULL, numberofgroups, safe_free, and xmalloc.

Referenced by Valid_Global_Groups().

◆ CloseCOM()

void CloseCOM ( void  )

Definition at line 117 of file ext_ad_group_acl.cc.

References WIN32_COM_initialized.

Referenced by main().

◆ Get_primaryGroup()

wchar_t * Get_primaryGroup ( IADs *  pUser)

◆ Get_WIN32_ErrorMessage()

char * Get_WIN32_ErrorMessage ( HRESULT  hr)

◆ GetDomainName()

char * GetDomainName ( void  )

Definition at line 297 of file ext_ad_group_acl.cc.

References debug(), Get_WIN32_ErrorMessage(), NULL, safe_free, and xmalloc.

Referenced by main().

◆ GetLDAPPath()

wchar_t * GetLDAPPath ( wchar_t *  Base_DN,
int  query_mode 
)

Definition at line 281 of file ext_ad_group_acl.cc.

References LDAP_MODE, and xmalloc.

Referenced by Recursive_Memberof(), and Valid_Global_Groups().

◆ GetLPBYTEtoOctetString()

HRESULT GetLPBYTEtoOctetString ( VARIANT *  pVar,
LPBYTE *  ppByte 
)

Definition at line 124 of file ext_ad_group_acl.cc.

Referenced by Get_primaryGroup().

◆ main()

◆ My_NameTranslate()

wchar_t * My_NameTranslate ( wchar_t *  name,
int  in_format,
int  out_format 
)

◆ process_options()

void process_options ( int  argc,
char *  argv[] 
)

◆ Recursive_Memberof()

HRESULT Recursive_Memberof ( IADs *  pObj)

◆ usage()

static void usage ( const char *  program)
static

Definition at line 722 of file ext_ad_group_acl.cc.

Referenced by process_options().

◆ Valid_Global_Groups()

◆ Valid_Local_Groups()

int Valid_Local_Groups ( char *  UserName,
const char **  Groups 
)

Definition at line 524 of file ext_ad_group_acl.cc.

References assert, debug(), Get_WIN32_ErrorMessage(), NULL, and wcstrcmparray().

Referenced by main().

◆ wccmparray()

static int wccmparray ( const wchar_t *  str,
const wchar_t **  array 
)
static

Definition at line 373 of file ext_ad_group_acl.cc.

References debug().

Referenced by Valid_Global_Groups().

◆ wcstrcmparray()

static int wcstrcmparray ( const wchar_t *  str,
const char **  array 
)
static

Definition at line 386 of file ext_ad_group_acl.cc.

References debug(), and use_case_insensitive_compare.

Referenced by Valid_Local_Groups().

Variable Documentation

◆ ADSI_Path

enum ADSI_PATH ADSI_Path

◆ DefaultDomain

char* DefaultDomain = nullptr

Definition at line 105 of file ext_ad_group_acl.cc.

Referenced by main(), process_options(), and Valid_Global_Groups().

◆ machinedomain

char* machinedomain

Definition at line 103 of file ext_ad_group_acl.cc.

Referenced by main().

◆ mypid

pid_t mypid

Definition at line 102 of file ext_ad_group_acl.cc.

Referenced by main().

◆ NTV_VALID_DOMAIN_SEPARATOR

const char NTV_VALID_DOMAIN_SEPARATOR[] = "\\/"

Definition at line 106 of file ext_ad_group_acl.cc.

Referenced by Valid_Global_Groups().

◆ numberofgroups

int numberofgroups = 0

Definition at line 107 of file ext_ad_group_acl.cc.

Referenced by build_groups_DN_array(), and main().

◆ program_name

char* program_name

Definition at line 101 of file ext_ad_group_acl.cc.

Referenced by main(), process_options(), and usage().

◆ use_case_insensitive_compare

int use_case_insensitive_compare = 0

Definition at line 104 of file ext_ad_group_acl.cc.

Referenced by main(), process_options(), and wcstrcmparray().

◆ use_global

int use_global = 0

Definition at line 100 of file ext_ad_group_acl.cc.

Referenced by main(), and process_options().

◆ User_Groups

wchar_t** User_Groups

Definition at line 110 of file ext_ad_group_acl.cc.

Referenced by add_User_Group(), and Valid_Global_Groups().

◆ User_Groups_Count

int User_Groups_Count = 0

Definition at line 111 of file ext_ad_group_acl.cc.

Referenced by add_User_Group(), and Valid_Global_Groups().

◆ WIN32_COM_initialized

int WIN32_COM_initialized = 0

Definition at line 108 of file ext_ad_group_acl.cc.

Referenced by CloseCOM(), and My_NameTranslate().

◆ WIN32_ErrorMessage

char* WIN32_ErrorMessage = nullptr

Definition at line 109 of file ext_ad_group_acl.cc.

Referenced by Get_WIN32_ErrorMessage().

 

Introduction

Documentation

Support

Miscellaneous

Web Site Translations

Mirrors