X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=servers%2Fslapd%2Foverlays%2Fauditlog.c;h=974b7a4ad3959a18ae78ab19223ae43cd6c6c006;hb=a255e44bf0fcb703a3a5ac58117fd54a00727fd1;hp=3dff229f4bdca31ac264ff9b99dd2b38021520d9;hpb=54231dd13f5d6416692d398c34df7f6afab2afd1;p=openldap diff --git a/servers/slapd/overlays/auditlog.c b/servers/slapd/overlays/auditlog.c index 3dff229f4b..974b7a4ad3 100644 --- a/servers/slapd/overlays/auditlog.c +++ b/servers/slapd/overlays/auditlog.c @@ -2,7 +2,7 @@ /* $OpenLDAP$ */ /* This work is part of OpenLDAP Software . * - * Copyright 2005-2006 The OpenLDAP Foundation. + * Copyright 2005-2012 The OpenLDAP Foundation. * Portions copyright 2004-2005 Symas Corporation. * All rights reserved. * @@ -72,9 +72,9 @@ static int auditlog_response(Operation *op, SlapReply *rs) { FILE *f; Attribute *a; Modifications *m; - struct berval *b, *who = NULL; - char *what, *suffix; - long stamp = slap_get_time(); + struct berval *b, *who = NULL, peername; + char *what, *whatm, *suffix; + time_t stamp; int i; if ( rs->sr_err != LDAP_SUCCESS ) return SLAP_CB_CONTINUE; @@ -119,14 +119,17 @@ static int auditlog_response(Operation *op, SlapReply *rs) { if ( !who ) who = &op->o_dn; + peername = op->o_conn->c_peer_name; ldap_pvt_thread_mutex_lock(&ad->ad_mutex); if((f = fopen(ad->ad_logfile, "a")) == NULL) { ldap_pvt_thread_mutex_unlock(&ad->ad_mutex); return SLAP_CB_CONTINUE; } - fprintf(f, "# %s %ld %s%s%s\n", - what, stamp, suffix, who ? " " : "", who ? who->bv_val : ""); + stamp = slap_get_time(); + fprintf(f, "# %s %ld %s%s%s %s conn=%ld\n", + what, (long)stamp, suffix, who ? " " : "", who ? who->bv_val : "", + peername.bv_val ? peername.bv_val: "", op->o_conn->c_connid); if ( !BER_BVISEMPTY( &op->o_conn->c_dn ) && (!who || !dn_match( who, &op->o_conn->c_dn ))) @@ -146,15 +149,15 @@ static int auditlog_response(Operation *op, SlapReply *rs) { case LDAP_REQ_MODIFY: for(m = op->orm_modlist; m; m = m->sml_next) { switch(m->sml_op & LDAP_MOD_OP) { - case LDAP_MOD_ADD: what = "add"; break; - case LDAP_MOD_REPLACE: what = "replace"; break; - case LDAP_MOD_DELETE: what = "delete"; break; - case LDAP_MOD_INCREMENT: what = "increment"; break; + case LDAP_MOD_ADD: whatm = "add"; break; + case LDAP_MOD_REPLACE: whatm = "replace"; break; + case LDAP_MOD_DELETE: whatm = "delete"; break; + case LDAP_MOD_INCREMENT: whatm = "increment"; break; default: fprintf(f, "# MOD_TYPE_UNKNOWN:%02x\n", m->sml_op & LDAP_MOD_OP); continue; } - fprintf(f, "%s: %s\n", what, m->sml_desc->ad_cname.bv_val); + fprintf(f, "%s: %s\n", whatm, m->sml_desc->ad_cname.bv_val); if((b = m->sml_values) != NULL) for(i = 0; b[i].bv_val; i++) fprint_ldif(f, m->sml_desc->ad_cname.bv_val, b[i].bv_val, b[i].bv_len); @@ -173,7 +176,7 @@ static int auditlog_response(Operation *op, SlapReply *rs) { break; } - fprintf(f, "# end %s %ld\n\n", what, stamp); + fprintf(f, "# end %s %ld\n\n", what, (long)stamp); fclose(f); ldap_pvt_thread_mutex_unlock(&ad->ad_mutex); @@ -184,11 +187,12 @@ static slap_overinst auditlog; static int auditlog_db_init( - BackendDB *be + BackendDB *be, + ConfigReply *cr ) { slap_overinst *on = (slap_overinst *)be->bd_info; - auditlog_data *ad = ch_malloc(sizeof(auditlog_data)); + auditlog_data *ad = ch_calloc(1, sizeof(auditlog_data)); on->on_bi.bi_private = ad; ldap_pvt_thread_mutex_init( &ad->ad_mutex ); @@ -197,7 +201,8 @@ auditlog_db_init( static int auditlog_db_close( - BackendDB *be + BackendDB *be, + ConfigReply *cr ) { slap_overinst *on = (slap_overinst *)be->bd_info; @@ -210,7 +215,8 @@ auditlog_db_close( static int auditlog_db_destroy( - BackendDB *be + BackendDB *be, + ConfigReply *cr ) { slap_overinst *on = (slap_overinst *)be->bd_info; @@ -221,32 +227,6 @@ auditlog_db_destroy( return 0; } -static int -auditlog_config( - BackendDB *be, - const char *fname, - int lineno, - int argc, - char **argv -) -{ - slap_overinst *on = (slap_overinst *) be->bd_info; - auditlog_data *ad = on->on_bi.bi_private; - - /* history log file */ - if ( strcasecmp( argv[0], "auditlog" ) == 0 ) { - if ( argc < 2 ) { - Debug( LDAP_DEBUG_ANY, - "%s: line %d: missing filename in \"auditlog \" line\n", - fname, lineno, 0 ); - return( 1 ); - } - ad->ad_logfile = ch_strdup( argv[1] ); - return 0; - } - return SLAP_CONF_UNKNOWN; -} - int auditlog_initialize() { int rc;