X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;ds=sidebyside;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;