int rewrite_read( FILE *fin, struct rewrite_info *info ) { char buf[ 1024 ]; char *argv[11]; int argc, lineno; /* * Empty rule at the beginning of the context */ for ( lineno = 0; fgets( buf, sizeof( buf ), fin ); lineno++ ) { switch ( parse_line( argv, &argc, sizeof( argv ) - 1, buf ) ) { case -1: return REWRITE_ERR; case 0: break; case 1: if ( strncasecmp( argv[ 0 ], "rewrite", 7 ) == 0 ) { int rc; rc = rewrite_parse( info, "file", lineno, argc, argv ); if ( rc != REWRITE_SUCCESS ) { return rc; } } break; } } return REWRITE_SUCCESS; }
int rwm_suffix_massage_config( struct rewrite_info *info, struct berval *pvnc, struct berval *nvnc, struct berval *prnc, struct berval *nrnc ) { char *rargv[ 5 ]; int line = 0; rargv[ 0 ] = "rewriteEngine"; rargv[ 1 ] = "on"; rargv[ 2 ] = NULL; rewrite_parse( info, "<suffix massage>", ++line, 2, rargv ); rargv[ 0 ] = "rewriteContext"; rargv[ 1 ] = "default"; rargv[ 2 ] = NULL; rewrite_parse( info, "<suffix massage>", ++line, 2, rargv ); rargv[ 0 ] = "rewriteRule"; rargv[ 1 ] = rwm_suffix_massage_regexize( pvnc->bv_val ); rargv[ 2 ] = rwm_suffix_massage_patternize( pvnc->bv_val, prnc->bv_val ); rargv[ 3 ] = ":"; rargv[ 4 ] = NULL; rewrite_parse( info, "<suffix massage>", ++line, 4, rargv ); ch_free( rargv[ 1 ] ); ch_free( rargv[ 2 ] ); if ( BER_BVISEMPTY( pvnc ) ) { rargv[ 0 ] = "rewriteRule"; rargv[ 1 ] = "^$"; rargv[ 2 ] = prnc->bv_val; rargv[ 3 ] = ":"; rargv[ 4 ] = NULL; rewrite_parse( info, "<suffix massage>", ++line, 4, rargv ); } rargv[ 0 ] = "rewriteContext"; rargv[ 1 ] = "searchEntryDN"; rargv[ 2 ] = NULL; rewrite_parse( info, "<suffix massage>", ++line, 2, rargv ); rargv[ 0 ] = "rewriteRule"; rargv[ 1 ] = rwm_suffix_massage_regexize( prnc->bv_val ); rargv[ 2 ] = rwm_suffix_massage_patternize( prnc->bv_val, pvnc->bv_val ); rargv[ 3 ] = ":"; rargv[ 4 ] = NULL; rewrite_parse( info, "<suffix massage>", ++line, 4, rargv ); ch_free( rargv[ 1 ] ); ch_free( rargv[ 2 ] ); if ( BER_BVISEMPTY( prnc ) ) { rargv[ 0 ] = "rewriteRule"; rargv[ 1 ] = "^$"; rargv[ 2 ] = pvnc->bv_val; rargv[ 3 ] = ":"; rargv[ 4 ] = NULL; rewrite_parse( info, "<suffix massage>", ++line, 4, rargv ); } rargv[ 0 ] = "rewriteContext"; rargv[ 1 ] = "matchedDN"; rargv[ 2 ] = "alias"; rargv[ 3 ] = "searchEntryDN"; rargv[ 4 ] = NULL; rewrite_parse( info, "<suffix massage>", ++line, 4, rargv ); #ifdef RWM_REFERRAL_REWRITE /* FIXME: we don't want this on by default, do we? */ rargv[ 0 ] = "rewriteContext"; rargv[ 1 ] = "referralDN"; rargv[ 2 ] = "alias"; rargv[ 3 ] = "searchEntryDN"; rargv[ 4 ] = NULL; rewrite_parse( info, "<suffix massage>", ++line, 4, rargv ); #else /* ! RWM_REFERRAL_REWRITE */ rargv[ 0 ] = "rewriteContext"; rargv[ 1 ] = "referralAttrDN"; rargv[ 2 ] = NULL; rewrite_parse( info, "<suffix massage>", ++line, 2, rargv ); rargv[ 0 ] = "rewriteContext"; rargv[ 1 ] = "referralDN"; rargv[ 2 ] = NULL; rewrite_parse( info, "<suffix massage>", ++line, 2, rargv ); #endif /* ! RWM_REFERRAL_REWRITE */ rargv[ 0 ] = "rewriteContext"; rargv[ 1 ] = "searchAttrDN"; rargv[ 2 ] = "alias"; rargv[ 3 ] = "searchEntryDN"; rargv[ 4 ] = NULL; rewrite_parse( info, "<suffix massage>", ++line, 4, rargv ); return 0; }