streamline server control requests

This commit is contained in:
Pierangelo Masarati 2006-01-09 23:00:28 +00:00
parent 282f5638ed
commit ade9272561
8 changed files with 67 additions and 63 deletions

View File

@ -1119,6 +1119,21 @@ tool_server_controls( LDAP *ld, LDAPControl *extra_c, int count )
int i = 0, j, crit = 0, err; int i = 0, j, crit = 0, err;
LDAPControl c[10], **ctrls; LDAPControl c[10], **ctrls;
if ( ! ( assertctl
|| authzid
|| manageDIT
|| manageDSAit
|| noop
|| preread
|| postread
#ifdef LDAP_CONTROL_X_CHAINING_BEHAVIOR
|| chaining
#endif /* LDAP_CONTROL_X_CHAINING_BEHAVIOR */
|| count ) )
{
return;
}
ctrls = (LDAPControl**) malloc(sizeof(c) + (count+1)*sizeof(LDAPControl*)); ctrls = (LDAPControl**) malloc(sizeof(c) + (count+1)*sizeof(LDAPControl*));
if ( ctrls == NULL ) { if ( ctrls == NULL ) {
fprintf( stderr, "No memory\n" ); fprintf( stderr, "No memory\n" );

View File

@ -181,11 +181,14 @@ handle_private_option( int i )
int int
main( int argc, char **argv ) main( int argc, char **argv )
{ {
char *compdn = NULL, *attrs = NULL; char *compdn = NULL, *attrs = NULL;
char *sep; char *sep;
int rc; int rc;
LDAP *ld = NULL; LDAP *ld = NULL;
struct berval bvalue = { 0, NULL }; struct berval bvalue = { 0, NULL };
int i = 0;
LDAPControl c[1];
tool_init( TOOL_COMPARE ); tool_init( TOOL_COMPARE );
prog = lutil_progname( "ldapcompare", argc, argv ); prog = lutil_progname( "ldapcompare", argc, argv );
@ -238,16 +241,12 @@ main( int argc, char **argv )
tool_bind( ld ); tool_bind( ld );
if ( assertion || authzid || manageDSAit || noop if ( 0
#ifdef LDAP_CONTROL_DONTUSECOPY #ifdef LDAP_CONTROL_DONTUSECOPY
|| dontUseCopy || dontUseCopy
#endif #endif
) )
{ {
int err;
int i = 0;
LDAPControl c[1];
#ifdef LDAP_CONTROL_DONTUSECOPY #ifdef LDAP_CONTROL_DONTUSECOPY
if ( dontUseCopy ) { if ( dontUseCopy ) {
c[i].ldctl_oid = LDAP_CONTROL_DONTUSECOPY; c[i].ldctl_oid = LDAP_CONTROL_DONTUSECOPY;
@ -257,10 +256,10 @@ main( int argc, char **argv )
i++; i++;
} }
#endif #endif
tool_server_controls( ld, c, i );
} }
tool_server_controls( ld, c, i );
if ( verbose ) { if ( verbose ) {
fprintf( stderr, _("DN:%s, attr:%s, value:%s\n"), fprintf( stderr, _("DN:%s, attr:%s, value:%s\n"),
compdn, attrs, sep ); compdn, attrs, sep );

View File

@ -170,13 +170,11 @@ main( int argc, char **argv )
tool_bind( ld ); tool_bind( ld );
if ( assertion || authzid || manageDIT || manageDSAit || noop ) { tool_server_controls( ld, NULL, 0 );
tool_server_controls( ld, NULL, 0 );
}
retval = rc = 0; retval = rc = 0;
if ( fp == NULL ) { if ( fp == NULL ) {
for ( ; optind < argc; ++optind ) { for ( ; optind < argc; ++optind ) {
rc = dodelete( ld, argv[ optind ] ); rc = dodelete( ld, argv[ optind ] );

View File

@ -116,14 +116,7 @@ main( int argc, char *argv[] )
usage(); usage();
} }
if ( assertion || manageDSAit || noop ) { tool_server_controls( ld, NULL, 0 );
fprintf( stderr, _("controls incompatible with WhoAmI exop\n\n") );
usage();
}
if ( authzid ) {
tool_server_controls( ld, NULL, 0 );
}
rc = ldap_whoami( ld, NULL, NULL, &id ); rc = ldap_whoami( ld, NULL, NULL, &id );
if ( rc != LDAP_SUCCESS ) { if ( rc != LDAP_SUCCESS ) {
@ -156,7 +149,9 @@ main( int argc, char *argv[] )
} }
} else if ( strcasecmp( argv[ 0 ], "passwd" ) == 0 ) { } else if ( strcasecmp( argv[ 0 ], "passwd" ) == 0 ) {
/* do we need this? */ fprintf( stderr, "use ldappasswd(1) instead.\n\n", argv[ 0 ] );
usage();
/* TODO? */
} else if ( strcasecmp( argv[ 0 ], "refresh" ) == 0 ) { } else if ( strcasecmp( argv[ 0 ], "refresh" ) == 0 ) {
int ttl = 3600; int ttl = 3600;
@ -178,9 +173,7 @@ main( int argc, char *argv[] )
usage(); usage();
} }
if ( assertion || manageDSAit || noop || authzid ) { tool_server_controls( ld, NULL, 0 );
tool_server_controls( ld, NULL, 0 );
}
rc = ldap_refresh( ld, &dn, ttl, NULL, NULL, &id ); rc = ldap_refresh( ld, &dn, ttl, NULL, NULL, &id );
if ( rc != LDAP_SUCCESS ) { if ( rc != LDAP_SUCCESS ) {
@ -190,6 +183,9 @@ main( int argc, char *argv[] )
} }
} else if ( tool_is_oid( argv[ 0 ] ) ) { } else if ( tool_is_oid( argv[ 0 ] ) ) {
/* TODO */
fprintf( stderr, "exop \"%s\" not implemented yet.\n\n", argv[ 0 ] );
usage();
} else { } else {
fprintf( stderr, "unknown exop \"%s\"\n\n", argv[ 0 ] ); fprintf( stderr, "unknown exop \"%s\"\n\n", argv[ 0 ] );
@ -258,6 +254,7 @@ main( int argc, char *argv[] )
assert( 0 ); assert( 0 );
} else if ( strcasecmp( argv[ 0 ], "passwd" ) == 0 ) { } else if ( strcasecmp( argv[ 0 ], "passwd" ) == 0 ) {
/* TODO */
} else if ( strcasecmp( argv[ 0 ], "refresh" ) == 0 ) { } else if ( strcasecmp( argv[ 0 ], "refresh" ) == 0 ) {
int newttl; int newttl;

View File

@ -242,14 +242,17 @@ int
main( int argc, char **argv ) main( int argc, char **argv )
{ {
#ifdef LDAP_GROUP_TRANSACTION #ifdef LDAP_GROUP_TRANSACTION
BerElement *txnber; BerElement *txnber;
struct berval txnCookie = { 0, NULL }; struct berval txnCookie = { 0, NULL };
#endif #endif
char *rbuf, *start, *rejbuf = NULL; char *rbuf, *start, *rejbuf = NULL;
FILE *fp, *rejfp; FILE *fp, *rejfp;
char *matched_msg, *error_msg; char *matched_msg, *error_msg;
int rc, retval; int rc, retval;
int count, len; int count, len;
int i = 0;
LDAPControl c[1];
prog = lutil_progname( "ldapmodify", argc, argv ); prog = lutil_progname( "ldapmodify", argc, argv );
@ -311,15 +314,12 @@ main( int argc, char **argv )
} }
#endif #endif
if ( assertion || authzid || manageDIT || manageDSAit || noop if ( 0
#ifdef LDAP_GROUP_TRANSACTION #ifdef LDAP_GROUP_TRANSACTION
|| txn || txn
#endif #endif
|| preread || postread ) )
{ {
int i = 0;
LDAPControl c[1];
#ifdef LDAP_GROUP_TRANSACTION #ifdef LDAP_GROUP_TRANSACTION
if( txn ) { if( txn ) {
int err; int err;
@ -341,10 +341,10 @@ main( int argc, char **argv )
i++; i++;
} }
#endif #endif
tool_server_controls( ld, c, i );
} }
tool_server_controls( ld, c, i );
rc = 0; rc = 0;
count = 0; count = 0;
retval = 0; retval = 0;

View File

@ -198,9 +198,7 @@ main(int argc, char **argv)
tool_bind( ld ); tool_bind( ld );
if ( assertion || authzid || manageDSAit || noop ) { tool_server_controls( ld, NULL, 0 );
tool_server_controls( ld, NULL, 0 );
}
retval = rc = 0; retval = rc = 0;
if (havedn) if (havedn)

View File

@ -625,12 +625,13 @@ main( int argc, char **argv )
{ {
char *filtpattern, **attrs = NULL, line[BUFSIZ]; char *filtpattern, **attrs = NULL, line[BUFSIZ];
FILE *fp = NULL; FILE *fp = NULL;
int rc, i, first; int rc, i, first;
LDAP *ld = NULL; LDAP *ld = NULL;
BerElement *seber = NULL, *vrber = NULL; BerElement *seber = NULL, *vrber = NULL;
BerElement *syncber = NULL; BerElement *syncber = NULL;
struct berval *syncbvalp = NULL; struct berval *syncbvalp = NULL;
int err;
tool_init( TOOL_SEARCH ); tool_init( TOOL_SEARCH );
@ -724,20 +725,18 @@ main( int argc, char **argv )
tool_bind( ld ); tool_bind( ld );
getNextPage: getNextPage:
if ( nctrls > 0 || assertion || authzid || manageDSAit || noop save_nctrls = nctrls;
i = nctrls;
if ( nctrls > 0
#ifdef LDAP_CONTROL_DONTUSECOPY #ifdef LDAP_CONTROL_DONTUSECOPY
|| dontUseCopy || dontUseCopy
#endif #endif
|| domainScope || pagedResults || domainScope
#ifdef LDAP_CONTROL_X_CHAINING_BEHAVIOR || pagedResults
|| chaining
#endif /* LDAP_CONTROL_X_CHAINING_BEHAVIOR */
|| ldapsync || ldapsync
|| subentries || valuesReturnFilter ) || subentries
|| valuesReturnFilter )
{ {
int err;
int i = nctrls;
save_nctrls = nctrls;
#ifdef LDAP_CONTROL_DONTUSECOPY #ifdef LDAP_CONTROL_DONTUSECOPY
if ( dontUseCopy ) { if ( dontUseCopy ) {
@ -867,17 +866,17 @@ getNextPage:
c[i].ldctl_iscritical = pagedResults > 1; c[i].ldctl_iscritical = pagedResults > 1;
i++; i++;
} }
tool_server_controls( ld, c, i );
/* step back to the original number of controls, so that
* those set while parsing args are preserved */
nctrls = save_nctrls;
ber_free( seber, 1 );
ber_free( vrber, 1 );
} }
tool_server_controls( ld, c, i );
ber_free( seber, 1 );
ber_free( vrber, 1 );
/* step back to the original number of controls, so that
* those set while parsing args are preserved */
nctrls = save_nctrls;
if ( verbose ) { if ( verbose ) {
fprintf( stderr, _("filter%s: %s\nrequesting: "), fprintf( stderr, _("filter%s: %s\nrequesting: "),
infile != NULL ? _(" pattern") : "", infile != NULL ? _(" pattern") : "",

View File

@ -154,9 +154,7 @@ main( int argc, char *argv[] )
goto skip; goto skip;
} }
if ( assertion || authzid || manageDSAit || noop ) { tool_server_controls( ld, NULL, 0 );
tool_server_controls( ld, NULL, 0 );
}
rc = ldap_whoami( ld, NULL, NULL, &id ); rc = ldap_whoami( ld, NULL, NULL, &id );