static char *prog;
static char *binddn = NULL;
static struct berval passwd = { 0, NULL };
+static char *ldapuri = NULL;
static char *ldaphost = NULL;
static int ldapport = 0;
static int prune = 0;
#endif
static int use_tls = 0;
static int not, verbose, contoper;
-static LDAP *ld;
+static LDAP *ld = NULL;
static int dodelete LDAP_P((
LDAP *ld,
prog = (prog = strrchr(argv[0], *LDAP_DIRSEP)) == NULL ? argv[0] : prog + 1;
- while (( i = getopt( argc, argv, "cf:r" "Cd:D:h:IkKMnO:p:P:QRU:vw:WxX:Y:Z" )) != EOF ) {
+ while (( i = getopt( argc, argv, "cf:r" "Cd:D:h:H:IkKMnO:p:P:QRU:vw:WxX:Y:Z" )) != EOF ) {
switch( i ) {
/* Delete Specific Options */
case 'c': /* continuous operation mode */
binddn = strdup( optarg );
break;
case 'h': /* ldap host */
+ if( ldapuri != NULL ) {
+ fprintf( stderr, "%s: -h incompatible with -H\n" );
+ return EXIT_FAILURE;
+ }
if( ldaphost != NULL ) {
fprintf( stderr, "%s: -h previously specified\n" );
return EXIT_FAILURE;
}
ldaphost = strdup( optarg );
break;
+ case 'H': /* ldap URI */
+ if( ldaphost != NULL ) {
+ fprintf( stderr, "%s: -H incompatible with -h\n" );
+ return EXIT_FAILURE;
+ }
+ if( ldapport ) {
+ fprintf( stderr, "%s: -H incompatible with -p\n" );
+ return EXIT_FAILURE;
+ }
+ if( ldapuri != NULL ) {
+ fprintf( stderr, "%s: -H previously specified\n" );
+ return EXIT_FAILURE;
+ }
+ ldapuri = strdup( optarg );
+ break;
case 'I':
#ifdef HAVE_CYRUS_SASL
if( version == LDAP_VERSION2 ) {
(void) SIGNAL( SIGPIPE, SIG_IGN );
#endif
- if (( ld = ldap_init( ldaphost, ldapport )) == NULL ) {
- perror( "ldap_init" );
- return( EXIT_FAILURE );
- }
+ if( ( ldaphost != NULL || ldapport ) && ( ldapuri == NULL ) ) {
+ if ( verbose ) {
+ fprintf( stderr, "ldap_init( %s, %d )\n",
+ ldaphost != NULL ? ldaphost : "<DEFAULT>",
+ ldapport );
+ }
+ ld = ldap_init( ldaphost, ldapport );
+
+ } else {
+ if ( verbose ) {
+ fprintf( stderr, "ldap_initialize( %s )\n",
+ ldapuri != NULL ? ldapuri : "<DEFAULT>" );
+ }
+ (void) ldap_initialize( &ld, ldapuri );
+ }
+
+ if( ld != NULL ) {
+ fprintf( stderr, "Could not create LDAP session handle (%d): %s\n", rc );
+ return EXIT_FAILURE;
+ }
{
/* this seems prudent for searches below */
static char *prog;
static char *binddn = NULL;
static struct berval passwd = { 0, NULL };
+static char *ldapuri = NULL;
static char *ldaphost = NULL;
static int ldapport = 0;
#ifdef HAVE_CYRUS_SASL
#endif
static int use_tls = 0;
static int ldapadd, replace, not, verbose, contoper, force;
-static LDAP *ld;
+static LDAP *ld = NULL;
#define LDAPMOD_MAXLINE 4096
authmethod = -1;
version = -1;
- while (( i = getopt( argc, argv, "acrf:F" "Cd:D:h:IkKMnO:p:P:QRU:vw:WxX:Y:Z" )) != EOF ) {
+ while (( i = getopt( argc, argv, "acrf:F" "Cd:D:h:H:IkKMnO:p:P:QRU:vw:WxX:Y:Z" )) != EOF ) {
switch( i ) {
/* Modify Options */
case 'a': /* add */
binddn = strdup( optarg );
break;
case 'h': /* ldap host */
+ if( ldapuri != NULL ) {
+ fprintf( stderr, "%s: -h incompatible with -H\n" );
+ return EXIT_FAILURE;
+ }
if( ldaphost != NULL ) {
fprintf( stderr, "%s: -h previously specified\n" );
return EXIT_FAILURE;
}
ldaphost = strdup( optarg );
break;
+ case 'H': /* ldap URI */
+ if( ldaphost != NULL ) {
+ fprintf( stderr, "%s: -H incompatible with -h\n" );
+ return EXIT_FAILURE;
+ }
+ if( ldapport ) {
+ fprintf( stderr, "%s: -H incompatible with -p\n" );
+ return EXIT_FAILURE;
+ }
+ if( ldapuri != NULL ) {
+ fprintf( stderr, "%s: -H previously specified\n" );
+ return EXIT_FAILURE;
+ }
+ ldapuri = strdup( optarg );
+ break;
case 'I':
#ifdef HAVE_CYRUS_SASL
if( version == LDAP_VERSION2 ) {
#endif
if ( !not ) {
- if (( ld = ldap_init( ldaphost, ldapport )) == NULL ) {
- perror( "ldap_init" );
- return( EXIT_FAILURE );
+ if( ( ldaphost != NULL || ldapport ) && ( ldapuri == NULL ) ) {
+ if ( verbose ) {
+ fprintf( stderr, "ldap_init( %s, %d )\n",
+ ldaphost != NULL ? ldaphost : "<DEFAULT>",
+ ldapport );
+ }
+ ld = ldap_init( ldaphost, ldapport );
+
+ } else {
+ if ( verbose ) {
+ fprintf( stderr, "ldap_initialize( %s )\n",
+ ldapuri != NULL ? ldapuri : "<DEFAULT>" );
+ }
+ (void) ldap_initialize( &ld, ldapuri );
+ }
+
+ if( ld != NULL ) {
+ fprintf( stderr, "Could not create LDAP session handle (%d): %s\n", rc );
+ return EXIT_FAILURE;
}
/* referrals */
static char *prog = NULL;
static char *binddn = NULL;
static struct berval passwd = { 0, NULL };
+static char *ldapuri = NULL;
static char *ldaphost = NULL;
static int ldapport = 0;
#ifdef HAVE_CYRUS_SASL
#endif
static int use_tls = 0;
static int not, verbose, contoper;
-static LDAP *ld;
+static LDAP *ld = NULL;
static int domodrdn(
LDAP *ld,
prog = (prog = strrchr(argv[0], *LDAP_DIRSEP)) == NULL ? argv[0] : prog + 1;
- while (( i = getopt( argc, argv, "cf:rs:" "Cd:D:h:IkKMnO:p:P:QRU:vw:WxX:Y:Z" )) != EOF ) {
+ while (( i = getopt( argc, argv, "cf:rs:" "Cd:D:h:H:IkKMnO:p:P:QRU:vw:WxX:Y:Z" )) != EOF ) {
switch( i ) {
/* Modrdn Options */
case 'c':
binddn = strdup( optarg );
break;
case 'h': /* ldap host */
+ if( ldapuri != NULL ) {
+ fprintf( stderr, "%s: -h incompatible with -H\n" );
+ return EXIT_FAILURE;
+ }
if( ldaphost != NULL ) {
fprintf( stderr, "%s: -h previously specified\n" );
return EXIT_FAILURE;
}
ldaphost = strdup( optarg );
break;
+ case 'H': /* ldap URI */
+ if( ldaphost != NULL ) {
+ fprintf( stderr, "%s: -H incompatible with -h\n" );
+ return EXIT_FAILURE;
+ }
+ if( ldapport ) {
+ fprintf( stderr, "%s: -H incompatible with -p\n" );
+ return EXIT_FAILURE;
+ }
+ if( ldapuri != NULL ) {
+ fprintf( stderr, "%s: -H previously specified\n" );
+ return EXIT_FAILURE;
+ }
+ ldapuri = strdup( optarg );
+ break;
case 'I':
#ifdef HAVE_CYRUS_SASL
if( version == LDAP_VERSION2 ) {
(void) SIGNAL( SIGPIPE, SIG_IGN );
#endif
- if (( ld = ldap_init( ldaphost, ldapport )) == NULL ) {
- perror( "ldap_init" );
- return( EXIT_FAILURE );
- }
+ if( ( ldaphost != NULL || ldapport ) && ( ldapuri == NULL ) ) {
+ if ( verbose ) {
+ fprintf( stderr, "ldap_init( %s, %d )\n",
+ ldaphost != NULL ? ldaphost : "<DEFAULT>",
+ ldapport );
+ }
+ ld = ldap_init( ldaphost, ldapport );
+
+ } else {
+ if ( verbose ) {
+ fprintf( stderr, "ldap_initialize( %s )\n",
+ ldapuri != NULL ? ldapuri : "<DEFAULT>" );
+ }
+ (void) ldap_initialize( &ld, ldapuri );
+ }
+
+ if( ld != NULL ) {
+ fprintf( stderr, "Could not create LDAP session handle (%d): %s\n", rc );
+ return EXIT_FAILURE;
+ }
/* referrals */
if( ldap_set_option( ld, LDAP_OPT_REFERRALS,
" -d level set LDAP debugging level to `level'\n"
" -D binddn bind DN\n"
" -f file read operations from `file'\n"
-" -h host LDAP server\n"
+" -h host LDAP server(s)\n"
+" -H URI LDAP Uniform Resource Indentifier(s)\n"
" -I use SASL Interactive mode\n"
" -n show what would be done but don't actually search\n"
" -O props SASL security properties\n"
int rc;
char *prog = NULL;
char *ldaphost = NULL;
+ char *ldapuri = NULL;
char *dn = NULL;
char *binddn = NULL;
#endif
int use_tls = 0;
int referrals = 0;
- LDAP *ld;
+ LDAP *ld = NULL;
struct berval *bv = NULL;
int id, code;
usage (argv[0]);
while( (i = getopt( argc, argv,
- "Aa:Ss:" "Cd:D:h:InO:p:QRU:vw:WxX:Y:Z" )) != EOF )
+ "Aa:Ss:" "Cd:D:h:H:InO:p:QRU:vw:WxX:Y:Z" )) != EOF )
{
switch (i) {
/* Password Options */
binddn = strdup( optarg );
break;
case 'h': /* ldap host */
+ if( ldapuri != NULL ) {
+ fprintf( stderr, "%s: -h incompatible with -H\n" );
+ return EXIT_FAILURE;
+ }
if( ldaphost != NULL ) {
fprintf( stderr, "%s: -h previously specified\n" );
return EXIT_FAILURE;
}
ldaphost = strdup( optarg );
break;
+ case 'H': /* ldap URI */
+ if( ldaphost != NULL ) {
+ fprintf( stderr, "%s: -H incompatible with -h\n" );
+ return EXIT_FAILURE;
+ }
+ if( ldapport ) {
+ fprintf( stderr, "%s: -H incompatible with -p\n" );
+ return EXIT_FAILURE;
+ }
+ if( ldapuri != NULL ) {
+ fprintf( stderr, "%s: -H previously specified\n" );
+ return EXIT_FAILURE;
+ }
+ ldapuri = strdup( optarg );
+ break;
case 'I':
#ifdef HAVE_CYRUS_SASL
if( version == LDAP_VERSION2 ) {
#endif
/* connect to server */
- if ((ld = ldap_init( ldaphost, ldapport )) == NULL) {
- perror("ldap_init");
+ if( ( ldaphost != NULL || ldapport ) && ( ldapuri == NULL ) ) {
+ if ( verbose ) {
+ fprintf( stderr, "ldap_init( %s, %d )\n",
+ ldaphost != NULL ? ldaphost : "<DEFAULT>",
+ ldapport );
+ }
+ ld = ldap_init( ldaphost, ldapport );
+
+ } else {
+ if ( verbose ) {
+ fprintf( stderr, "ldap_initialize( %s )\n",
+ ldapuri != NULL ? ldapuri : "<DEFAULT>" );
+ }
+ (void) ldap_initialize( &ld, ldapuri );
+ }
+
+ if( ld != NULL ) {
+ fprintf( stderr, "Could not create LDAP session handle (%d): %s\n", rc );
return EXIT_FAILURE;
}
static struct berval passwd = { 0, NULL };
static char *base = NULL;
static char *ldaphost = NULL;
+static char *ldapuri = NULL;
static int ldapport = 0;
#ifdef HAVE_CYRUS_SASL
static unsigned sasl_flags = LDAP_SASL_AUTOMATIC;
int rc, i, first, scope, deref, attrsonly, manageDSAit;
int referrals, timelimit, sizelimit, debug;
int authmethod, version, want_bindpw;
- LDAP *ld;
+ LDAP *ld = NULL;
infile = NULL;
debug = verbose = not = vals2tmp = referrals =
prog = (prog = strrchr(argv[0], *LDAP_DIRSEP)) == NULL ? argv[0] : prog + 1;
while (( i = getopt( argc, argv,
- "Aa:b:f:Ll:S:s:T:tuV:z:" "Cd:D:h:IkKMnO:p:P:QRU:vw:WxX:Y:Z")) != EOF )
+ "Aa:b:f:Ll:S:s:T:tuV:z:" "Cd:D:h:H:IkKMnO:p:P:QRU:vw:WxX:Y:Z")) != EOF )
{
switch( i ) {
/* Search Options */
binddn = strdup( optarg );
break;
case 'h': /* ldap host */
+ if( ldapuri != NULL ) {
+ fprintf( stderr, "%s: -h incompatible with -H\n" );
+ return EXIT_FAILURE;
+ }
if( ldaphost != NULL ) {
fprintf( stderr, "%s: -h previously specified\n" );
return EXIT_FAILURE;
}
ldaphost = strdup( optarg );
break;
+ case 'H': /* ldap URI */
+ if( ldaphost != NULL ) {
+ fprintf( stderr, "%s: -H incompatible with -h\n" );
+ return EXIT_FAILURE;
+ }
+ if( ldapport ) {
+ fprintf( stderr, "%s: -H incompatible with -p\n" );
+ return EXIT_FAILURE;
+ }
+ if( ldapuri != NULL ) {
+ fprintf( stderr, "%s: -H previously specified\n" );
+ return EXIT_FAILURE;
+ }
+ ldapuri = strdup( optarg );
+ break;
case 'I':
#ifdef HAVE_CYRUS_SASL
if( version == LDAP_VERSION2 ) {
(void) SIGNAL( SIGPIPE, SIG_IGN );
#endif
- if ( verbose ) {
- fprintf( stderr,
- (ldapport ? "ldap_init( %s, %d )\n" : "ldap_init( %s, <DEFAULT> )\n"),
- (ldaphost != NULL) ? ldaphost : "<DEFAULT>",
- ldapport );
+
+ if( ( ldaphost != NULL || ldapport ) && ( ldapuri == NULL ) ) {
+ if ( verbose ) {
+ fprintf( stderr, "ldap_init( %s, %d )\n",
+ ldaphost != NULL ? ldaphost : "<DEFAULT>",
+ ldapport );
+ }
+ ld = ldap_init( ldaphost, ldapport );
+
+ } else {
+ if ( verbose ) {
+ fprintf( stderr, "ldap_initialize( %s )\n",
+ ldapuri != NULL ? ldapuri : "<DEFAULT>" );
+ }
+ (void) ldap_initialize( &ld, ldapuri );
}
- if (( ld = ldap_init( ldaphost, ldapport )) == NULL ) {
- perror( "ldap_init" );
+ if( ld != NULL ) {
+ fprintf( stderr, "Could not create LDAP session handle (%d): %s\n", rc );
return EXIT_FAILURE;
}