From 43f7706c49fc2782ee96854b50cf8ad6ac88e78d Mon Sep 17 00:00:00 2001 From: Pierangelo Masarati Date: Sat, 23 Sep 2006 11:44:16 +0000 Subject: [PATCH] add URL parsing test tool --- libraries/libldap/Makefile.in | 4 +- libraries/libldap/urltest.c | 126 ++++++++++++++++++++++++++++++++++ 2 files changed, 129 insertions(+), 1 deletion(-) create mode 100644 libraries/libldap/urltest.c diff --git a/libraries/libldap/Makefile.in b/libraries/libldap/Makefile.in index 25d48cf7db..950d54c9c8 100644 --- a/libraries/libldap/Makefile.in +++ b/libraries/libldap/Makefile.in @@ -15,7 +15,7 @@ LIBRARY = libldap.la -PROGRAMS = apitest dntest ftest ltest +PROGRAMS = apitest dntest ftest ltest urltest SRCS = bind.c open.c result.c error.c compare.c search.c \ controls.c messages.c references.c extended.c cyrus.c \ @@ -57,6 +57,8 @@ ftest: $(XLIBS) ftest.o $(LTLINK) -o $@ ftest.o $(LIBS) ltest: $(XLIBS) test.o $(LTLINK) -o $@ test.o $(LIBS) +urltest: $(XLIBS) urltest.o + $(LTLINK) -o $@ urltest.o $(LIBS) CFFILES=ldap.conf diff --git a/libraries/libldap/urltest.c b/libraries/libldap/urltest.c new file mode 100644 index 0000000000..8012cfc020 --- /dev/null +++ b/libraries/libldap/urltest.c @@ -0,0 +1,126 @@ +/* urltest.c -- OpenLDAP URL API Test Program */ +/* $OpenLDAP$ */ +/* This work is part of OpenLDAP Software . + * + * Copyright 1998-2006 The OpenLDAP Foundation. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted only as authorized by the OpenLDAP + * Public License. + * + * A copy of this license is available in the file LICENSE in the + * top-level directory of the distribution or, alternatively, at + * . + */ +/* ACKNOWLEDGEMENT: + * This program was initially developed by Pierangelo Masarati + * for inclusion in OpenLDAP Software. + */ + +/* + * This program is designed to test the ldap_url_* functions + */ + +#include "portable.h" + +#include + +#include +#include +#include + +#include + +#include "ldap-int.h" + +#include "ldap_defaults.h" + +int +main(int argc, char *argv[]) +{ + const char *url, + *scope = NULL; + LDAPURLDesc *lud; + enum { + IS_LDAP = 0, + IS_LDAPS, + IS_LDAPI + } type = IS_LDAP; + int rc; + + if ( argc != 2 ) { + fprintf( stderr, "usage: urltest \n" ); + exit( EXIT_FAILURE ); + } + + url = argv[ 1 ]; + + if ( ldap_is_ldaps_url( url ) ) { + fprintf( stdout, "LDAPS url\n" ); + type = IS_LDAPS; + + } else if ( ldap_is_ldapi_url( url ) ) { + fprintf( stdout, "LDAPI url\n" ); + type = IS_LDAPI; + + } else if ( ldap_is_ldap_url( url ) ) { + fprintf( stdout, "generic LDAP url\n" ); + + } else { + fprintf( stderr, "Need a valid LDAP url\n" ); + exit( EXIT_FAILURE ); + } + + rc = ldap_url_parse( url, &lud ); + if ( rc != LDAP_URL_SUCCESS ) { + fprintf( stderr, "ldap_url_parse(%s) failed (%d)\n", url, rc ); + exit( EXIT_FAILURE ); + } + + fprintf( stdout, "PROTO: %s\n", lud->lud_scheme ); + switch ( type ) { + case IS_LDAPI: + fprintf( stdout, "PATH: %s\n", lud->lud_host ); + break; + + default: + fprintf( stdout, "HOST: %s\n", lud->lud_host ); + if ( lud->lud_port != 0 ) { + fprintf( stdout, "PORT: %d\n", lud->lud_port ); + } + } + + if ( lud->lud_dn && lud->lud_dn[ 0 ] ) { + fprintf( stdout, "DN: %s\n", lud->lud_dn ); + } + + if ( lud->lud_attrs ) { + int i; + + fprintf( stdout, "ATTRS:\n" ); + for ( i = 0; lud->lud_attrs[ i ]; i++ ) { + fprintf( stdout, "\t%s\n", lud->lud_attrs[ i ] ); + } + } + + scope = ldap_pvt_scope2str( lud->lud_scope ); + if ( scope ) { + fprintf( stdout, "SCOPE: %s\n", scope ); + } + + if ( lud->lud_filter ) { + fprintf( stdout, "FILTER: %s\n", lud->lud_filter ); + } + + if ( lud->lud_exts ) { + int i; + + fprintf( stdout, "EXTS:\n" ); + for ( i = 0; lud->lud_exts[ i ]; i++ ) { + fprintf( stdout, "\t%s\n", lud->lud_exts[ i ] ); + } + } + + return EXIT_SUCCESS; +} -- 2.39.5