]> git.sur5r.net Git - openldap/commitdiff
Add support of "-H uri"
authorKurt Zeilenga <kurt@openldap.org>
Fri, 25 Aug 2000 05:31:29 +0000 (05:31 +0000)
committerKurt Zeilenga <kurt@openldap.org>
Fri, 25 Aug 2000 05:31:29 +0000 (05:31 +0000)
clients/tools/ldapdelete.c
clients/tools/ldapmodify.c
clients/tools/ldapmodrdn.c
clients/tools/ldappasswd.c
clients/tools/ldapsearch.c

index f512bd3b1ff368e7221d185dd2fb250829276a2f..bb2d1278633b80b3754f2fb4e29f915d8ec0beca 100644 (file)
@@ -23,6 +23,7 @@
 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;
@@ -36,7 +37,7 @@ static char   *sasl_secprops = NULL;
 #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,
@@ -100,7 +101,7 @@ main( int argc, char **argv )
 
     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 */
@@ -135,12 +136,31 @@ main( int argc, char **argv )
            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 ) {
@@ -472,10 +492,26 @@ main( int argc, char **argv )
        (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 */
index b8245cce2d960cc1dde52904f02b3c0839246ec7..ed89f35270e101457c43a3e21bf86f92c913190e 100644 (file)
@@ -36,6 +36,7 @@
 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
@@ -48,7 +49,7 @@ static char   *sasl_secprops = NULL;
 #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
 
@@ -157,7 +158,7 @@ main( int argc, char **argv )
     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 */
@@ -195,12 +196,31 @@ main( int argc, char **argv )
            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 ) {
@@ -539,9 +559,25 @@ main( int argc, char **argv )
 #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 */
index 6642dd5fc4614a0b98fdc1264474432ad65d6735..8782d1c077e7ba5d2a31861ed8ff0693a8005a2c 100644 (file)
@@ -35,6 +35,7 @@
 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
@@ -47,7 +48,7 @@ static char   *sasl_secprops = NULL;
 #endif
 static int     use_tls = 0;
 static int     not, verbose, contoper;
-static LDAP    *ld;
+static LDAP    *ld = NULL;
 
 static int domodrdn(
     LDAP       *ld,
@@ -116,7 +117,7 @@ main(int argc, char **argv)
 
     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':
@@ -157,12 +158,31 @@ main(int argc, char **argv)
            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 ) {
@@ -515,10 +535,26 @@ main(int argc, char **argv)
        (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,
index 578463598c4601e2e66d934ef02756a7c40fc996..6564b6161afc24567733136f384887543bada331 100644 (file)
@@ -41,7 +41,8 @@ usage(const char *s)
 "  -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"
@@ -67,6 +68,7 @@ main( int argc, char *argv[] )
        int rc;
        char    *prog = NULL;
        char    *ldaphost = NULL;
+       char    *ldapuri = NULL;
 
        char    *dn = NULL;
        char    *binddn = NULL;
@@ -96,7 +98,7 @@ main( int argc, char *argv[] )
 #endif
        int             use_tls = 0;
        int             referrals = 0;
-       LDAP           *ld;
+       LDAP           *ld = NULL;
        struct berval *bv = NULL;
 
        int id, code;
@@ -111,7 +113,7 @@ main( int argc, char *argv[] )
                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 */
@@ -161,12 +163,31 @@ main( int argc, char *argv[] )
            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 ) {
@@ -542,8 +563,24 @@ main( int argc, char *argv[] )
 #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;
        }
 
index 7d1b27e3acffffdebef489124c8b0c29e5032e25..f105ec0438a5b776f36eb7af773a2cbf4b1d64a8 100644 (file)
@@ -145,6 +145,7 @@ static char *binddn = NULL;
 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;
@@ -166,7 +167,7 @@ main( int argc, char **argv )
        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 =
@@ -180,7 +181,7 @@ main( int argc, char **argv )
     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 */
@@ -265,12 +266,31 @@ main( int argc, char **argv )
            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 ) {
@@ -642,15 +662,25 @@ main( int argc, char **argv )
        (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;
        }