Add support of "-H uri"

This commit is contained in:
Kurt Zeilenga 2000-08-25 05:31:29 +00:00
parent 3844db4404
commit e97cdfb7a9
5 changed files with 206 additions and 31 deletions

View File

@ -23,6 +23,7 @@
static char *prog; static char *prog;
static char *binddn = NULL; static char *binddn = NULL;
static struct berval passwd = { 0, NULL }; static struct berval passwd = { 0, NULL };
static char *ldapuri = NULL;
static char *ldaphost = NULL; static char *ldaphost = NULL;
static int ldapport = 0; static int ldapport = 0;
static int prune = 0; static int prune = 0;
@ -36,7 +37,7 @@ static char *sasl_secprops = NULL;
#endif #endif
static int use_tls = 0; static int use_tls = 0;
static int not, verbose, contoper; static int not, verbose, contoper;
static LDAP *ld; static LDAP *ld = NULL;
static int dodelete LDAP_P(( static int dodelete LDAP_P((
LDAP *ld, LDAP *ld,
@ -100,7 +101,7 @@ main( int argc, char **argv )
prog = (prog = strrchr(argv[0], *LDAP_DIRSEP)) == NULL ? argv[0] : prog + 1; 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 ) { switch( i ) {
/* Delete Specific Options */ /* Delete Specific Options */
case 'c': /* continuous operation mode */ case 'c': /* continuous operation mode */
@ -135,12 +136,31 @@ main( int argc, char **argv )
binddn = strdup( optarg ); binddn = strdup( optarg );
break; break;
case 'h': /* ldap host */ case 'h': /* ldap host */
if( ldapuri != NULL ) {
fprintf( stderr, "%s: -h incompatible with -H\n" );
return EXIT_FAILURE;
}
if( ldaphost != NULL ) { if( ldaphost != NULL ) {
fprintf( stderr, "%s: -h previously specified\n" ); fprintf( stderr, "%s: -h previously specified\n" );
return EXIT_FAILURE; return EXIT_FAILURE;
} }
ldaphost = strdup( optarg ); ldaphost = strdup( optarg );
break; 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': case 'I':
#ifdef HAVE_CYRUS_SASL #ifdef HAVE_CYRUS_SASL
if( version == LDAP_VERSION2 ) { if( version == LDAP_VERSION2 ) {
@ -472,9 +492,25 @@ main( int argc, char **argv )
(void) SIGNAL( SIGPIPE, SIG_IGN ); (void) SIGNAL( SIGPIPE, SIG_IGN );
#endif #endif
if (( ld = ldap_init( ldaphost, ldapport )) == NULL ) { if( ( ldaphost != NULL || ldapport ) && ( ldapuri == NULL ) ) {
perror( "ldap_init" ); if ( verbose ) {
return( EXIT_FAILURE ); 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;
} }
{ {

View File

@ -36,6 +36,7 @@
static char *prog; static char *prog;
static char *binddn = NULL; static char *binddn = NULL;
static struct berval passwd = { 0, NULL }; static struct berval passwd = { 0, NULL };
static char *ldapuri = NULL;
static char *ldaphost = NULL; static char *ldaphost = NULL;
static int ldapport = 0; static int ldapport = 0;
#ifdef HAVE_CYRUS_SASL #ifdef HAVE_CYRUS_SASL
@ -48,7 +49,7 @@ static char *sasl_secprops = NULL;
#endif #endif
static int use_tls = 0; static int use_tls = 0;
static int ldapadd, replace, not, verbose, contoper, force; static int ldapadd, replace, not, verbose, contoper, force;
static LDAP *ld; static LDAP *ld = NULL;
#define LDAPMOD_MAXLINE 4096 #define LDAPMOD_MAXLINE 4096
@ -157,7 +158,7 @@ main( int argc, char **argv )
authmethod = -1; authmethod = -1;
version = -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 ) { switch( i ) {
/* Modify Options */ /* Modify Options */
case 'a': /* add */ case 'a': /* add */
@ -195,12 +196,31 @@ main( int argc, char **argv )
binddn = strdup( optarg ); binddn = strdup( optarg );
break; break;
case 'h': /* ldap host */ case 'h': /* ldap host */
if( ldapuri != NULL ) {
fprintf( stderr, "%s: -h incompatible with -H\n" );
return EXIT_FAILURE;
}
if( ldaphost != NULL ) { if( ldaphost != NULL ) {
fprintf( stderr, "%s: -h previously specified\n" ); fprintf( stderr, "%s: -h previously specified\n" );
return EXIT_FAILURE; return EXIT_FAILURE;
} }
ldaphost = strdup( optarg ); ldaphost = strdup( optarg );
break; 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': case 'I':
#ifdef HAVE_CYRUS_SASL #ifdef HAVE_CYRUS_SASL
if( version == LDAP_VERSION2 ) { if( version == LDAP_VERSION2 ) {
@ -539,9 +559,25 @@ main( int argc, char **argv )
#endif #endif
if ( !not ) { if ( !not ) {
if (( ld = ldap_init( ldaphost, ldapport )) == NULL ) { if( ( ldaphost != NULL || ldapport ) && ( ldapuri == NULL ) ) {
perror( "ldap_init" ); if ( verbose ) {
return( EXIT_FAILURE ); 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 */ /* referrals */

View File

@ -35,6 +35,7 @@
static char *prog = NULL; static char *prog = NULL;
static char *binddn = NULL; static char *binddn = NULL;
static struct berval passwd = { 0, NULL }; static struct berval passwd = { 0, NULL };
static char *ldapuri = NULL;
static char *ldaphost = NULL; static char *ldaphost = NULL;
static int ldapport = 0; static int ldapport = 0;
#ifdef HAVE_CYRUS_SASL #ifdef HAVE_CYRUS_SASL
@ -47,7 +48,7 @@ static char *sasl_secprops = NULL;
#endif #endif
static int use_tls = 0; static int use_tls = 0;
static int not, verbose, contoper; static int not, verbose, contoper;
static LDAP *ld; static LDAP *ld = NULL;
static int domodrdn( static int domodrdn(
LDAP *ld, LDAP *ld,
@ -116,7 +117,7 @@ main(int argc, char **argv)
prog = (prog = strrchr(argv[0], *LDAP_DIRSEP)) == NULL ? argv[0] : prog + 1; 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 ) { switch( i ) {
/* Modrdn Options */ /* Modrdn Options */
case 'c': case 'c':
@ -157,12 +158,31 @@ main(int argc, char **argv)
binddn = strdup( optarg ); binddn = strdup( optarg );
break; break;
case 'h': /* ldap host */ case 'h': /* ldap host */
if( ldapuri != NULL ) {
fprintf( stderr, "%s: -h incompatible with -H\n" );
return EXIT_FAILURE;
}
if( ldaphost != NULL ) { if( ldaphost != NULL ) {
fprintf( stderr, "%s: -h previously specified\n" ); fprintf( stderr, "%s: -h previously specified\n" );
return EXIT_FAILURE; return EXIT_FAILURE;
} }
ldaphost = strdup( optarg ); ldaphost = strdup( optarg );
break; 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': case 'I':
#ifdef HAVE_CYRUS_SASL #ifdef HAVE_CYRUS_SASL
if( version == LDAP_VERSION2 ) { if( version == LDAP_VERSION2 ) {
@ -515,9 +535,25 @@ main(int argc, char **argv)
(void) SIGNAL( SIGPIPE, SIG_IGN ); (void) SIGNAL( SIGPIPE, SIG_IGN );
#endif #endif
if (( ld = ldap_init( ldaphost, ldapport )) == NULL ) { if( ( ldaphost != NULL || ldapport ) && ( ldapuri == NULL ) ) {
perror( "ldap_init" ); if ( verbose ) {
return( EXIT_FAILURE ); 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 */ /* referrals */

View File

@ -41,7 +41,8 @@ usage(const char *s)
" -d level set LDAP debugging level to `level'\n" " -d level set LDAP debugging level to `level'\n"
" -D binddn bind DN\n" " -D binddn bind DN\n"
" -f file read operations from `file'\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" " -I use SASL Interactive mode\n"
" -n show what would be done but don't actually search\n" " -n show what would be done but don't actually search\n"
" -O props SASL security properties\n" " -O props SASL security properties\n"
@ -67,6 +68,7 @@ main( int argc, char *argv[] )
int rc; int rc;
char *prog = NULL; char *prog = NULL;
char *ldaphost = NULL; char *ldaphost = NULL;
char *ldapuri = NULL;
char *dn = NULL; char *dn = NULL;
char *binddn = NULL; char *binddn = NULL;
@ -96,7 +98,7 @@ main( int argc, char *argv[] )
#endif #endif
int use_tls = 0; int use_tls = 0;
int referrals = 0; int referrals = 0;
LDAP *ld; LDAP *ld = NULL;
struct berval *bv = NULL; struct berval *bv = NULL;
int id, code; int id, code;
@ -111,7 +113,7 @@ main( int argc, char *argv[] )
usage (argv[0]); usage (argv[0]);
while( (i = getopt( argc, argv, 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) { switch (i) {
/* Password Options */ /* Password Options */
@ -161,12 +163,31 @@ main( int argc, char *argv[] )
binddn = strdup( optarg ); binddn = strdup( optarg );
break; break;
case 'h': /* ldap host */ case 'h': /* ldap host */
if( ldapuri != NULL ) {
fprintf( stderr, "%s: -h incompatible with -H\n" );
return EXIT_FAILURE;
}
if( ldaphost != NULL ) { if( ldaphost != NULL ) {
fprintf( stderr, "%s: -h previously specified\n" ); fprintf( stderr, "%s: -h previously specified\n" );
return EXIT_FAILURE; return EXIT_FAILURE;
} }
ldaphost = strdup( optarg ); ldaphost = strdup( optarg );
break; 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': case 'I':
#ifdef HAVE_CYRUS_SASL #ifdef HAVE_CYRUS_SASL
if( version == LDAP_VERSION2 ) { if( version == LDAP_VERSION2 ) {
@ -542,8 +563,24 @@ main( int argc, char *argv[] )
#endif #endif
/* connect to server */ /* connect to server */
if ((ld = ldap_init( ldaphost, ldapport )) == NULL) { if( ( ldaphost != NULL || ldapport ) && ( ldapuri == NULL ) ) {
perror("ldap_init"); 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; return EXIT_FAILURE;
} }

View File

@ -145,6 +145,7 @@ static char *binddn = NULL;
static struct berval passwd = { 0, NULL }; static struct berval passwd = { 0, NULL };
static char *base = NULL; static char *base = NULL;
static char *ldaphost = NULL; static char *ldaphost = NULL;
static char *ldapuri = NULL;
static int ldapport = 0; static int ldapport = 0;
#ifdef HAVE_CYRUS_SASL #ifdef HAVE_CYRUS_SASL
static unsigned sasl_flags = LDAP_SASL_AUTOMATIC; static unsigned sasl_flags = LDAP_SASL_AUTOMATIC;
@ -166,7 +167,7 @@ main( int argc, char **argv )
int rc, i, first, scope, deref, attrsonly, manageDSAit; int rc, i, first, scope, deref, attrsonly, manageDSAit;
int referrals, timelimit, sizelimit, debug; int referrals, timelimit, sizelimit, debug;
int authmethod, version, want_bindpw; int authmethod, version, want_bindpw;
LDAP *ld; LDAP *ld = NULL;
infile = NULL; infile = NULL;
debug = verbose = not = vals2tmp = referrals = debug = verbose = not = vals2tmp = referrals =
@ -180,7 +181,7 @@ main( int argc, char **argv )
prog = (prog = strrchr(argv[0], *LDAP_DIRSEP)) == NULL ? argv[0] : prog + 1; prog = (prog = strrchr(argv[0], *LDAP_DIRSEP)) == NULL ? argv[0] : prog + 1;
while (( i = getopt( argc, argv, 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 ) { switch( i ) {
/* Search Options */ /* Search Options */
@ -265,12 +266,31 @@ main( int argc, char **argv )
binddn = strdup( optarg ); binddn = strdup( optarg );
break; break;
case 'h': /* ldap host */ case 'h': /* ldap host */
if( ldapuri != NULL ) {
fprintf( stderr, "%s: -h incompatible with -H\n" );
return EXIT_FAILURE;
}
if( ldaphost != NULL ) { if( ldaphost != NULL ) {
fprintf( stderr, "%s: -h previously specified\n" ); fprintf( stderr, "%s: -h previously specified\n" );
return EXIT_FAILURE; return EXIT_FAILURE;
} }
ldaphost = strdup( optarg ); ldaphost = strdup( optarg );
break; 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': case 'I':
#ifdef HAVE_CYRUS_SASL #ifdef HAVE_CYRUS_SASL
if( version == LDAP_VERSION2 ) { if( version == LDAP_VERSION2 ) {
@ -642,15 +662,25 @@ main( int argc, char **argv )
(void) SIGNAL( SIGPIPE, SIG_IGN ); (void) SIGNAL( SIGPIPE, SIG_IGN );
#endif #endif
if( ( ldaphost != NULL || ldapport ) && ( ldapuri == NULL ) ) {
if ( verbose ) { if ( verbose ) {
fprintf( stderr, fprintf( stderr, "ldap_init( %s, %d )\n",
(ldapport ? "ldap_init( %s, %d )\n" : "ldap_init( %s, <DEFAULT> )\n"), ldaphost != NULL ? ldaphost : "<DEFAULT>",
(ldaphost != NULL) ? ldaphost : "<DEFAULT>",
ldapport ); ldapport );
} }
ld = ldap_init( ldaphost, ldapport );
if (( ld = ldap_init( ldaphost, ldapport )) == NULL ) { } else {
perror( "ldap_init" ); 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; return EXIT_FAILURE;
} }