ITS#2657: authzid (and assertion) should apply to most everything

(preliminary modify/incr client-side code)
This commit is contained in:
Kurt Zeilenga 2003-07-30 10:21:16 +00:00
parent 443d4c8999
commit afa2cd1893
8 changed files with 107 additions and 92 deletions

View file

@ -29,6 +29,7 @@ extern char *sasl_secprops;
#endif #endif
extern int use_tls; extern int use_tls;
extern char *assertion;
extern char *authzid; extern char *authzid;
extern int manageDSAit; extern int manageDSAit;
extern int noop; extern int noop;

View file

@ -172,8 +172,9 @@ main( int argc, char **argv )
tool_bind( ld ); tool_bind( ld );
if ( authzid || manageDSAit || noop ) if ( assertion || authzid || manageDSAit || noop ) {
tool_server_controls( ld, NULL, 0 ); tool_server_controls( ld, NULL, 0 );
}
if ( verbose ) { if ( verbose ) {
fprintf( stderr, _("DN:%s, attr:%s, value:%s\n"), fprintf( stderr, _("DN:%s, attr:%s, value:%s\n"),

View file

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

View file

@ -58,6 +58,7 @@ static LDAP *ld = NULL;
#define T_MODOPADDSTR "add" #define T_MODOPADDSTR "add"
#define T_MODOPREPLACESTR "replace" #define T_MODOPREPLACESTR "replace"
#define T_MODOPDELETESTR "delete" #define T_MODOPDELETESTR "delete"
#define T_MODOPINCREMENTSTR "increment"
#define T_MODSEPSTR "-" #define T_MODSEPSTR "-"
#define T_NEWRDNSTR "newrdn" #define T_NEWRDNSTR "newrdn"
#define T_DELETEOLDRDNSTR "deleteoldrdn" #define T_DELETEOLDRDNSTR "deleteoldrdn"
@ -185,8 +186,7 @@ main( int argc, char **argv )
tool_args( argc, argv ); tool_args( argc, argv );
if ( argc != optind ) if ( argc != optind ) usage();
usage();
if ( rejfile != NULL ) { if ( rejfile != NULL ) {
if (( rejfp = fopen( rejfile, "w" )) == NULL ) { if (( rejfp = fopen( rejfile, "w" )) == NULL ) {
@ -206,8 +206,7 @@ main( int argc, char **argv )
fp = stdin; fp = stdin;
} }
if ( debug ) if ( debug ) ldif_debug = debug;
ldif_debug = debug;
ld = tool_conn_setup( not, 0 ); ld = tool_conn_setup( not, 0 );
@ -221,19 +220,20 @@ main( int argc, char **argv )
passwd.bv_len = passwd.bv_val ? strlen( passwd.bv_val ) : 0; passwd.bv_len = passwd.bv_val ? strlen( passwd.bv_val ) : 0;
} }
} }
tool_bind( ld ); tool_bind( ld );
} }
rc = 0; rc = 0;
if ( authzid || manageDSAit || noop ) if ( assertion || authzid || manageDSAit || noop ) {
tool_server_controls( ld, NULL, 0 ); tool_server_controls( ld, NULL, 0 );
}
count = 0; count = 0;
retval = 0; retval = 0;
while (( rc == 0 || contoper ) && while (( rc == 0 || contoper ) &&
( rbuf = read_one_record( fp )) != NULL ) { ( rbuf = read_one_record( fp )) != NULL )
{
count++; count++;
start = rbuf; start = rbuf;
@ -249,30 +249,31 @@ main( int argc, char **argv )
rc = process_ldif_rec( start, count ); rc = process_ldif_rec( start, count );
if ( rc ) if ( rc ) retval = rc;
retval = rc;
if ( rc && rejfp ) { if ( rc && rejfp ) {
fprintf(rejfp, _("# Error: %s (%d)"), ldap_err2string(rc), rc); fprintf(rejfp, _("# Error: %s (%d)"), ldap_err2string(rc), rc);
matched_msg = NULL; matched_msg = NULL;
ldap_get_option(ld, LDAP_OPT_MATCHED_DN, &matched_msg); ldap_get_option(ld, LDAP_OPT_MATCHED_DN, &matched_msg);
if ( matched_msg != NULL ) { if ( matched_msg != NULL ) {
if ( *matched_msg != '\0' ) if ( *matched_msg != '\0' ) {
fprintf( rejfp, _(", matched DN: %s"), matched_msg ); fprintf( rejfp, _(", matched DN: %s"), matched_msg );
}
ldap_memfree( matched_msg ); ldap_memfree( matched_msg );
} }
error_msg = NULL; error_msg = NULL;
ldap_get_option(ld, LDAP_OPT_ERROR_STRING, &error_msg); ldap_get_option(ld, LDAP_OPT_ERROR_STRING, &error_msg);
if ( error_msg != NULL ) { if ( error_msg != NULL ) {
if ( *error_msg != '\0' ) if ( *error_msg != '\0' ) {
fprintf( rejfp, _(", additional info: %s"), error_msg ); fprintf( rejfp, _(", additional info: %s"), error_msg );
}
ldap_memfree( error_msg ); ldap_memfree( error_msg );
} }
fprintf( rejfp, "\n%s\n", rejbuf ); fprintf( rejfp, "\n%s\n", rejbuf );
} }
if (rejfp)
free( rejbuf ); if (rejfp) free( rejbuf );
free( rbuf ); free( rbuf );
} }
@ -461,6 +462,10 @@ process_ldif_rec( char *rbuf, int count )
modop = LDAP_MOD_DELETE; modop = LDAP_MOD_DELETE;
addmodifyop( &pmods, modop, val.bv_val, NULL ); addmodifyop( &pmods, modop, val.bv_val, NULL );
goto end_line; goto end_line;
} else if ( strcasecmp( type, T_MODOPINCREMENTSTR ) == 0 ) {
modop = LDAP_MOD_INCREMENT;
addmodifyop( &pmods, modop, val.bv_val, NULL );
goto end_line;
} else { /* no modify op: use default */ } else { /* no modify op: use default */
modop = ldapadd ? LDAP_MOD_ADD : LDAP_MOD_REPLACE; modop = ldapadd ? LDAP_MOD_ADD : LDAP_MOD_REPLACE;
} }
@ -829,8 +834,11 @@ domodify(
for ( i = 0; pmods[ i ] != NULL; ++i ) { for ( i = 0; pmods[ i ] != NULL; ++i ) {
op = pmods[ i ]->mod_op & ~LDAP_MOD_BVALUES; op = pmods[ i ]->mod_op & ~LDAP_MOD_BVALUES;
printf( "%s %s:\n", printf( "%s %s:\n",
op == LDAP_MOD_REPLACE ? _("replace") : op == LDAP_MOD_ADD op == LDAP_MOD_REPLACE ? _("replace") :
? _("add") : _("delete"), op == LDAP_MOD_ADD ? _("add") :
op == LDAP_MOD_INCREMENT ? _("increment") :
op == LDAP_MOD_DELETE ? _("delete") :
_("unknown"),
pmods[ i ]->mod_type ); pmods[ i ]->mod_type );
if ( pmods[ i ]->mod_bvalues != NULL ) { if ( pmods[ i ]->mod_bvalues != NULL ) {
for ( j = 0; pmods[ i ]->mod_bvalues[ j ] != NULL; ++j ) { for ( j = 0; pmods[ i ]->mod_bvalues[ j ] != NULL; ++j ) {

View file

@ -171,8 +171,9 @@ main(int argc, char **argv)
tool_bind( ld ); tool_bind( ld );
if ( authzid || manageDSAit || noop ) 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

@ -221,8 +221,9 @@ main( int argc, char *argv[] )
tool_bind( ld ); tool_bind( ld );
if ( authzid || manageDSAit || noop ) if ( assertion || authzid || manageDSAit || noop ) {
tool_server_controls( ld, NULL, 0 ); tool_server_controls( ld, NULL, 0 );
}
if( user != NULL || oldpw.bv_val != NULL || newpw.bv_val != NULL ) { if( user != NULL || oldpw.bv_val != NULL || newpw.bv_val != NULL ) {
/* build change password control */ /* build change password control */

View file

@ -548,7 +548,7 @@ main( int argc, char **argv )
tool_bind( ld ); tool_bind( ld );
getNextPage: getNextPage:
if ( manageDSAit || noop || subentries || valuesReturnFilter if ( assertion || authzid || manageDSAit || noop
#ifdef LDAP_CONTROL_X_DOMAIN_SCOPE #ifdef LDAP_CONTROL_X_DOMAIN_SCOPE
|| domainScope || domainScope
#endif #endif
@ -558,7 +558,8 @@ getNextPage:
#ifdef LDAP_SYNC #ifdef LDAP_SYNC
|| ldapsync || ldapsync
#endif #endif
) { || subentries || valuesReturnFilter )
{
int err; int err;
int i=0; int i=0;
LDAPControl c[6]; LDAPControl c[6];

View file

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