mirror of
https://git.openldap.org/openldap/openldap.git
synced 2025-01-30 13:30:57 +08:00
streamline server control requests
This commit is contained in:
parent
282f5638ed
commit
ade9272561
@ -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" );
|
||||||
|
@ -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 );
|
||||||
|
@ -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 ] );
|
||||||
|
|
||||||
|
@ -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;
|
||||||
|
@ -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;
|
||||||
|
@ -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)
|
||||||
|
@ -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") : "",
|
||||||
|
@ -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 );
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user