Diff for /servers/slapd/overlays/accesslog.c between versions 1.2.2.4 and 1.2.2.5

version 1.2.2.4, 2005/08/29 18:26:11 version 1.2.2.5, 2005/09/28 00:30:35
Line 1 Line 1
 /* accesslog.c - log operations for audit/history purposes */  /* accesslog.c - log operations for audit/history purposes */
 /* $OpenLDAP: pkg/ldap/servers/slapd/overlays/accesslog.c,v 1.9 2005/08/26 01:35:42 hyc Exp $ */  /* $OpenLDAP: pkg/ldap/servers/slapd/overlays/accesslog.c,v 1.13 2005/09/26 07:49:03 hyc Exp $ */
 /* This work is part of OpenLDAP Software <http://www.openldap.org/>.  /* This work is part of OpenLDAP Software <http://www.openldap.org/>.
  *   *
  * Copyright 2005 The OpenLDAP Foundation.   * Copyright 2005 The OpenLDAP Foundation.
Line 57  typedef struct log_info { Line 57  typedef struct log_info {
         int li_age;          int li_age;
         int li_cycle;          int li_cycle;
         struct re_s *li_task;          struct re_s *li_task;
           int li_success;
 } log_info;  } log_info;
   
 static ConfigDriver log_cf_gen;  static ConfigDriver log_cf_gen;
Line 64  static ConfigDriver log_cf_gen; Line 65  static ConfigDriver log_cf_gen;
 enum {  enum {
         LOG_DB = 1,          LOG_DB = 1,
         LOG_OPS,          LOG_OPS,
         LOG_PURGE          LOG_PURGE,
           LOG_SUCCESS
 };  };
   
 static ConfigTable log_cfats[] = {  static ConfigTable log_cfats[] = {
Line 82  static ConfigTable log_cfats[] = { Line 84  static ConfigTable log_cfats[] = {
                 log_cf_gen, "( OLcfgOvAt:4.3 NAME 'olcAccessLogPurge' "                  log_cf_gen, "( OLcfgOvAt:4.3 NAME 'olcAccessLogPurge' "
                         "DESC 'Log cleanup parameters' "                          "DESC 'Log cleanup parameters' "
                         "SYNTAX OMsDirectoryString SINGLE-VALUE )", NULL, NULL },                          "SYNTAX OMsDirectoryString SINGLE-VALUE )", NULL, NULL },
           { "logsuccess", NULL, 2, 2, 0, ARG_MAGIC|ARG_ON_OFF|LOG_SUCCESS,
                   log_cf_gen, "( OLcfgOvAt:4.4 NAME 'olcAccessLogSuccess' "
                           "DESC 'Log successful ops only' "
                           "SYNTAX OMsBoolean SINGLE-VALUE )", NULL, NULL },
         { NULL }          { NULL }
 };  };
   
Line 91  static ConfigOCs log_cfocs[] = { Line 97  static ConfigOCs log_cfocs[] = {
                 "DESC 'Access log configuration' "                  "DESC 'Access log configuration' "
                 "SUP olcOverlayConfig "                  "SUP olcOverlayConfig "
                 "MUST olcAccessLogDB "                  "MUST olcAccessLogDB "
                 "MAY ( olcAccessLogOps $ olcAccessLogPurge ) )",                  "MAY ( olcAccessLogOps $ olcAccessLogPurge $ olcAccessLogSuccess ) )",
                         Cft_Overlay, log_cfats },                          Cft_Overlay, log_cfats },
         { NULL }          { NULL }
 };  };
Line 188  static struct { Line 194  static struct {
                 "SYNTAX OMsInteger "                  "SYNTAX OMsInteger "
                 "SINGLE-VALUE )", &ad_reqResult },                  "SINGLE-VALUE )", &ad_reqResult },
         { "( " LOG_SCHEMA_AT ".7 NAME 'reqAuthzID' "          { "( " LOG_SCHEMA_AT ".7 NAME 'reqAuthzID' "
                 "DESC 'AUthorization ID of requestor' "                  "DESC 'Authorization ID of requestor' "
                 "EQUALITY distinguishedNameMatch "                  "EQUALITY distinguishedNameMatch "
                 "SYNTAX OMsDN "                  "SYNTAX OMsDN "
                 "SINGLE-VALUE )", &ad_reqAuthzID },                  "SINGLE-VALUE )", &ad_reqAuthzID },
Line 556  log_cf_gen(ConfigArgs *c) Line 562  log_cf_gen(ConfigArgs *c)
                         agebv.bv_len += cyclebv.bv_len;                          agebv.bv_len += cyclebv.bv_len;
                         value_add_one( &c->rvalue_vals, &agebv );                          value_add_one( &c->rvalue_vals, &agebv );
                         break;                          break;
                   case LOG_SUCCESS:
                           if ( li->li_success )
                                   c->value_int = li->li_success;
                           else
                                   rc = 1;
                           break;
                 }                  }
                 break;                  break;
         case LDAP_MOD_DELETE:          case LDAP_MOD_DELETE:
Line 583  log_cf_gen(ConfigArgs *c) Line 595  log_cf_gen(ConfigArgs *c)
                         li->li_age = 0;                          li->li_age = 0;
                         li->li_cycle = 0;                          li->li_cycle = 0;
                         break;                          break;
                   case LOG_SUCCESS:
                           li->li_success = 0;
                           break;
                 }                  }
                 break;                  break;
         default:          default:
Line 625  log_cf_gen(ConfigArgs *c) Line 640  log_cf_gen(ConfigArgs *c)
                                 }                                  }
                         }                          }
                         break;                          break;
                   case LOG_SUCCESS:
                           li->li_success = c->value_int;
                           break;
                 }                  }
                 break;                  break;
         }          }
Line 714  static int accesslog_response(Operation Line 732  static int accesslog_response(Operation
         struct berval bv;          struct berval bv;
         char *ptr;          char *ptr;
         BerVarray vals;          BerVarray vals;
         Operation op2;          Operation op2 = {0};
         SlapReply rs2 = {REP_RESULT};          SlapReply rs2 = {REP_RESULT};
   
         if ( rs->sr_type != REP_RESULT && rs->sr_type != REP_EXTENDED )          if ( rs->sr_type != REP_RESULT && rs->sr_type != REP_EXTENDED )
                 return SLAP_CB_CONTINUE;                  return SLAP_CB_CONTINUE;
   
           if ( li->li_success && rs->sr_err != LDAP_SUCCESS )
                   return SLAP_CB_CONTINUE;
   
         switch ( op->o_tag ) {          switch ( op->o_tag ) {
         case LDAP_REQ_ADD:              logop = LOG_EN_ADD; break;          case LDAP_REQ_ADD:              logop = LOG_EN_ADD; break;
         case LDAP_REQ_DELETE:   logop = LOG_EN_DELETE; break;          case LDAP_REQ_DELETE:   logop = LOG_EN_DELETE; break;
Line 948  static int accesslog_response(Operation Line 969  static int accesslog_response(Operation
         op2.ora_e = e;          op2.ora_e = e;
         op2.o_callback = &nullsc;          op2.o_callback = &nullsc;
   
           if ( lo->mask & LOG_OP_WRITES ) {
                   slap_get_commit_csn( op, NULL, &bv );
                   attr_merge_one( e, slap_schema.si_ad_entryCSN, &bv, NULL );
                   slap_queue_csn( &op2, &bv );
           }
   
         op2.o_bd->be_add( &op2, &rs2 );          op2.o_bd->be_add( &op2, &rs2 );
           slap_graduate_commit_csn( &op2 );
         entry_free( e );          entry_free( e );
   
         return SLAP_CB_CONTINUE;          return SLAP_CB_CONTINUE;
Line 967  accesslog_unbind( Operation *op, SlapRep Line 995  accesslog_unbind( Operation *op, SlapRep
                 SlapReply rs2 = {REP_RESULT};                  SlapReply rs2 = {REP_RESULT};
                 Entry *e;                  Entry *e;
   
                   if ( !( li->li_ops & LOG_OP_UNBIND ))
                           return SLAP_CB_CONTINUE;
   
                 e = accesslog_entry( op, LOG_EN_UNBIND );                  e = accesslog_entry( op, LOG_EN_UNBIND );
                 op2.o_hdr = op->o_hdr;                  op2.o_hdr = op->o_hdr;
                 op2.o_tag = LDAP_REQ_ADD;                  op2.o_tag = LDAP_REQ_ADD;
Line 997  accesslog_abandon( Operation *op, SlapRe Line 1028  accesslog_abandon( Operation *op, SlapRe
         char buf[64];          char buf[64];
         struct berval bv;          struct berval bv;
   
         if ( !op->o_time )          if ( !op->o_time || !( li->li_ops & LOG_OP_ABANDON ))
                 return SLAP_CB_CONTINUE;                  return SLAP_CB_CONTINUE;
   
         e = accesslog_entry( op, LOG_EN_ABANDON );          e = accesslog_entry( op, LOG_EN_ABANDON );

Removed from v.1.2.2.4  
changed lines
  Added in v.1.2.2.5


______________
© Copyright 1998-2020, OpenLDAP Foundation, info@OpenLDAP.org