From 4893e6fa252c6524fc1834e1ed120899304b09e1 Mon Sep 17 00:00:00 2001
From: neil_a_wilson <neil_a_wilson@localhost>
Date: Fri, 04 May 2007 00:55:16 +0000
Subject: [PATCH] Update the default access logger to provide additional more information in some cases:

---
 opendj-sdk/opends/src/server/org/opends/server/loggers/TextAccessLogPublisher.java |  132 ++++++++++++++++++
 opendj-sdk/opends/src/server/org/opends/server/core/DeleteOperation.java           |   34 ++++
 opendj-sdk/opends/src/server/org/opends/server/core/ModifyDNOperation.java         |   37 ++++
 opendj-sdk/opends/src/server/org/opends/server/core/ModifyOperation.java           |   34 ++++
 opendj-sdk/opends/src/server/org/opends/server/core/AddOperation.java              |   58 ++++++-
 opendj-sdk/opends/src/server/org/opends/server/core/CompareOperation.java          |   59 ++++++-
 opendj-sdk/opends/src/server/org/opends/server/core/SearchOperation.java           |   34 ++++
 7 files changed, 361 insertions(+), 27 deletions(-)

diff --git a/opendj-sdk/opends/src/server/org/opends/server/core/AddOperation.java b/opendj-sdk/opends/src/server/org/opends/server/core/AddOperation.java
index 42af572..fd411d3 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/core/AddOperation.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/core/AddOperation.java
@@ -127,6 +127,9 @@
   // The processed DN of the entry to add.
   private DN entryDN;
 
+  // The proxied authorization target DN for this operation.
+  private DN proxiedAuthorizationDN;
+
   // The entry being added to the server.
   private Entry entry;
 
@@ -180,14 +183,15 @@
     this.rawEntryDN    = rawEntryDN;
     this.rawAttributes = rawAttributes;
 
-    responseControls      = new ArrayList<Control>();
-    cancelRequest         = null;
-    entry                 = null;
-    entryDN               = null;
-    userAttributes        = null;
-    operationalAttributes = null;
-    objectClasses         = null;
-    changeNumber          = -1;
+    responseControls       = new ArrayList<Control>();
+    cancelRequest          = null;
+    entry                  = null;
+    entryDN                = null;
+    userAttributes         = null;
+    operationalAttributes  = null;
+    objectClasses          = null;
+    proxiedAuthorizationDN = null;
+    changeNumber           = -1;
   }
 
 
@@ -252,9 +256,10 @@
       }
     }
 
-    responseControls = new ArrayList<Control>();
-    cancelRequest    = null;
-    changeNumber     = -1;
+    responseControls       = new ArrayList<Control>();
+    proxiedAuthorizationDN = null;
+    cancelRequest          = null;
+    changeNumber           = -1;
   }
 
 
@@ -697,6 +702,21 @@
 
 
   /**
+   * Retrieves the proxied authorization DN for this operation if proxied
+   * authorization has been requested.
+   *
+   * @return  The proxied authorization DN for this operation if proxied
+   *          authorization has been requested, or {@code null} if proxied
+   *          authorization has not been requested.
+   */
+  public DN getProxiedAuthorizationDN()
+  {
+    return proxiedAuthorizationDN;
+  }
+
+
+
+  /**
    * {@inheritDoc}
    */
   @Override()
@@ -1778,6 +1798,14 @@
                 break addProcessing;
               }
               setAuthorizationEntry(authorizationEntry);
+              if (authorizationEntry == null)
+              {
+                proxiedAuthorizationDN = DN.nullDN();
+              }
+              else
+              {
+                proxiedAuthorizationDN = authorizationEntry.getDN();
+              }
             }
             else if (oid.equals(OID_PROXIED_AUTH_V2))
             {
@@ -1848,6 +1876,14 @@
                 break addProcessing;
               }
               setAuthorizationEntry(authorizationEntry);
+              if (authorizationEntry == null)
+              {
+                proxiedAuthorizationDN = DN.nullDN();
+              }
+              else
+              {
+                proxiedAuthorizationDN = authorizationEntry.getDN();
+              }
             }
 
             // NYI -- Add support for additional controls.
diff --git a/opendj-sdk/opends/src/server/org/opends/server/core/CompareOperation.java b/opendj-sdk/opends/src/server/org/opends/server/core/CompareOperation.java
index 7ec40cf..8997a4a 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/core/CompareOperation.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/core/CompareOperation.java
@@ -88,9 +88,6 @@
        implements PreParseCompareOperation, PreOperationCompareOperation,
                   PostOperationCompareOperation, PostResponseCompareOperation
 {
-
-
-
   // The attribute type for this compare operation.
   private AttributeType attributeType;
 
@@ -106,6 +103,9 @@
   // The DN of the entry for the compare operation.
   private DN entryDN;
 
+  // The proxied authorization target DN for this operation.
+  private DN proxiedAuthorizationDN;
+
   // The entry to be compared.
   private Entry entry;
 
@@ -150,11 +150,12 @@
     this.rawAttributeType = rawAttributeType;
     this.assertionValue   = assertionValue;
 
-    responseControls = new ArrayList<Control>();
-    entry            = null;
-    entryDN          = null;
-    attributeType    = null;
-    cancelRequest    = null;
+    responseControls       = new ArrayList<Control>();
+    entry                  = null;
+    entryDN                = null;
+    attributeType          = null;
+    cancelRequest          = null;
+    proxiedAuthorizationDN = null;
   }
 
 
@@ -184,11 +185,12 @@
     this.attributeType  = attributeType;
     this.assertionValue = assertionValue;
 
-    responseControls = new ArrayList<Control>();
-    rawEntryDN       = new ASN1OctetString(entryDN.toString());
-    rawAttributeType = attributeType.getNameOrOID();
-    cancelRequest    = null;
-    entry            = null;
+    responseControls       = new ArrayList<Control>();
+    rawEntryDN             = new ASN1OctetString(entryDN.toString());
+    rawAttributeType       = attributeType.getNameOrOID();
+    cancelRequest          = null;
+    entry                  = null;
+    proxiedAuthorizationDN = null;
   }
 
 
@@ -473,6 +475,21 @@
 
 
   /**
+   * Retrieves the proxied authorization DN for this operation if proxied
+   * authorization has been requested.
+   *
+   * @return  The proxied authorization DN for this operation if proxied
+   *          authorization has been requested, or {@code null} if proxied
+   *          authorization has not been requested.
+   */
+  public DN getProxiedAuthorizationDN()
+  {
+    return proxiedAuthorizationDN;
+  }
+
+
+
+  /**
    * {@inheritDoc}
    */
   @Override()
@@ -837,6 +854,14 @@
                 break compareProcessing;
               }
               setAuthorizationEntry(authorizationEntry);
+              if (authorizationEntry == null)
+              {
+                proxiedAuthorizationDN = DN.nullDN();
+              }
+              else
+              {
+                proxiedAuthorizationDN = authorizationEntry.getDN();
+              }
             }
             else if (oid.equals(OID_PROXIED_AUTH_V2))
             {
@@ -907,6 +932,14 @@
                 break compareProcessing;
               }
               setAuthorizationEntry(authorizationEntry);
+              if (authorizationEntry == null)
+              {
+                proxiedAuthorizationDN = DN.nullDN();
+              }
+              else
+              {
+                proxiedAuthorizationDN = authorizationEntry.getDN();
+              }
             }
 
             // NYI -- Add support for additional controls.
diff --git a/opendj-sdk/opends/src/server/org/opends/server/core/DeleteOperation.java b/opendj-sdk/opends/src/server/org/opends/server/core/DeleteOperation.java
index d86dd24..fa4bad3 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/core/DeleteOperation.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/core/DeleteOperation.java
@@ -106,6 +106,9 @@
   // The DN of the entry for the delete operation.
   private DN entryDN;
 
+  // The proxied authorization target DN for this operation.
+  private DN proxiedAuthorizationDN;
+
   // The entry to be deleted.
   private Entry entry;
 
@@ -423,6 +426,21 @@
 
 
   /**
+   * Retrieves the proxied authorization DN for this operation if proxied
+   * authorization has been requested.
+   *
+   * @return  The proxied authorization DN for this operation if proxied
+   *          authorization has been requested, or {@code null} if proxied
+   *          authorization has not been requested.
+   */
+  public DN getProxiedAuthorizationDN()
+  {
+    return proxiedAuthorizationDN;
+  }
+
+
+
+  /**
    * {@inheritDoc}
    */
   @Override()
@@ -830,6 +848,14 @@
                 break deleteProcessing;
               }
               setAuthorizationEntry(authorizationEntry);
+              if (authorizationEntry == null)
+              {
+                proxiedAuthorizationDN = DN.nullDN();
+              }
+              else
+              {
+                proxiedAuthorizationDN = authorizationEntry.getDN();
+              }
             }
             else if (oid.equals(OID_PROXIED_AUTH_V2))
             {
@@ -900,6 +926,14 @@
               }
 
               setAuthorizationEntry(authorizationEntry);
+              if (authorizationEntry == null)
+              {
+                proxiedAuthorizationDN = DN.nullDN();
+              }
+              else
+              {
+                proxiedAuthorizationDN = authorizationEntry.getDN();
+              }
             }
 
             // NYI -- Add support for additional controls.
diff --git a/opendj-sdk/opends/src/server/org/opends/server/core/ModifyDNOperation.java b/opendj-sdk/opends/src/server/org/opends/server/core/ModifyDNOperation.java
index ad9a6a8..883c998 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/core/ModifyDNOperation.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/core/ModifyDNOperation.java
@@ -103,9 +103,6 @@
        implements PreParseModifyDNOperation, PreOperationModifyDNOperation,
                   PostOperationModifyDNOperation, PostResponseModifyDNOperation
 {
-
-
-
   // Indicates whether to delete the old RDN value from the entry.
   private boolean deleteOldRDN;
 
@@ -129,6 +126,9 @@
   // The new parent for the entry.
   private DN newSuperior;
 
+  // The proxied authorization target DN for this operation.
+  private DN proxiedAuthorizationDN;
+
   // The current entry, before it is renamed.
   private Entry currentEntry;
 
@@ -681,6 +681,21 @@
 
 
   /**
+   * Retrieves the proxied authorization DN for this operation if proxied
+   * authorization has been requested.
+   *
+   * @return  The proxied authorization DN for this operation if proxied
+   *          authorization has been requested, or {@code null} if proxied
+   *          authorization has not been requested.
+   */
+  public DN getProxiedAuthorizationDN()
+  {
+    return proxiedAuthorizationDN;
+  }
+
+
+
+  /**
    * {@inheritDoc}
    */
   @Override()
@@ -1290,6 +1305,14 @@
                 break modifyDNProcessing;
               }
               setAuthorizationEntry(authorizationEntry);
+              if (authorizationEntry == null)
+              {
+                proxiedAuthorizationDN = DN.nullDN();
+              }
+              else
+              {
+                proxiedAuthorizationDN = authorizationEntry.getDN();
+              }
             }
             else if (oid.equals(OID_PROXIED_AUTH_V2))
             {
@@ -1361,6 +1384,14 @@
 
 
               setAuthorizationEntry(authorizationEntry);
+              if (authorizationEntry == null)
+              {
+                proxiedAuthorizationDN = DN.nullDN();
+              }
+              else
+              {
+                proxiedAuthorizationDN = authorizationEntry.getDN();
+              }
             }
 
             // NYI -- Add support for additional controls.
diff --git a/opendj-sdk/opends/src/server/org/opends/server/core/ModifyOperation.java b/opendj-sdk/opends/src/server/org/opends/server/core/ModifyOperation.java
index 77b7222..abf4a3d 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/core/ModifyOperation.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/core/ModifyOperation.java
@@ -125,6 +125,9 @@
   // The DN of the entry for the modify operation.
   private DN entryDN;
 
+  // The proxied authorization target DN for this operation.
+  private DN proxiedAuthorizationDN;
+
   // The current entry, before any changes are applied.
   private Entry currentEntry;
 
@@ -613,6 +616,21 @@
 
 
   /**
+   * Retrieves the proxied authorization DN for this operation if proxied
+   * authorization has been requested.
+   *
+   * @return  The proxied authorization DN for this operation if proxied
+   *          authorization has been requested, or {@code null} if proxied
+   *          authorization has not been requested.
+   */
+  public DN getProxiedAuthorizationDN()
+  {
+    return proxiedAuthorizationDN;
+  }
+
+
+
+  /**
    * {@inheritDoc}
    */
   @Override()
@@ -1091,6 +1109,14 @@
               }
 
               setAuthorizationEntry(authorizationEntry);
+              if (authorizationEntry == null)
+              {
+                proxiedAuthorizationDN = DN.nullDN();
+              }
+              else
+              {
+                proxiedAuthorizationDN = authorizationEntry.getDN();
+              }
             }
             else if (oid.equals(OID_PROXIED_AUTH_V2))
             {
@@ -1161,6 +1187,14 @@
                 break modifyProcessing;
               }
               setAuthorizationEntry(authorizationEntry);
+              if (authorizationEntry == null)
+              {
+                proxiedAuthorizationDN = DN.nullDN();
+              }
+              else
+              {
+                proxiedAuthorizationDN = authorizationEntry.getDN();
+              }
             }
 
             // NYI -- Add support for additional controls.
diff --git a/opendj-sdk/opends/src/server/org/opends/server/core/SearchOperation.java b/opendj-sdk/opends/src/server/org/opends/server/core/SearchOperation.java
index 3998182..c6fdf1c 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/core/SearchOperation.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/core/SearchOperation.java
@@ -133,6 +133,9 @@
   // The base DN for the search operation.
   private DN baseDN;
 
+  // The proxied authorization target DN for this operation.
+  private DN proxiedAuthorizationDN;
+
   // The number of entries that have been sent to the client.
   private int entriesSent;
 
@@ -1438,6 +1441,21 @@
 
 
   /**
+   * Retrieves the proxied authorization DN for this operation if proxied
+   * authorization has been requested.
+   *
+   * @return  The proxied authorization DN for this operation if proxied
+   *          authorization has been requested, or {@code null} if proxied
+   *          authorization has not been requested.
+   */
+  public DN getProxiedAuthorizationDN()
+  {
+    return proxiedAuthorizationDN;
+  }
+
+
+
+  /**
    * {@inheritDoc}
    */
   @Override()
@@ -1766,6 +1784,14 @@
               break searchProcessing;
             }
             setAuthorizationEntry(authorizationEntry);
+            if (authorizationEntry == null)
+            {
+              proxiedAuthorizationDN = DN.nullDN();
+            }
+            else
+            {
+              proxiedAuthorizationDN = authorizationEntry.getDN();
+            }
           }
           else if (oid.equals(OID_PROXIED_AUTH_V2))
           {
@@ -1837,6 +1863,14 @@
             }
 
             setAuthorizationEntry(authorizationEntry);
+            if (authorizationEntry == null)
+            {
+              proxiedAuthorizationDN = DN.nullDN();
+            }
+            else
+            {
+              proxiedAuthorizationDN = authorizationEntry.getDN();
+            }
           }
           else if (oid.equals(OID_PERSISTENT_SEARCH))
           {
diff --git a/opendj-sdk/opends/src/server/org/opends/server/loggers/TextAccessLogPublisher.java b/opendj-sdk/opends/src/server/org/opends/server/loggers/TextAccessLogPublisher.java
index cc8ac75..06b3a6b 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/loggers/TextAccessLogPublisher.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/loggers/TextAccessLogPublisher.java
@@ -529,6 +529,14 @@
       buffer.append("\"");
     }
 
+    msg = abandonOperation.getAdditionalLogMessage();
+    if ((msg != null) && (msg.length() > 0))
+    {
+      buffer.append(" additionalInfo=\"");
+      buffer.append(msg);
+      buffer.append("\"");
+    }
+
     buffer.append(" etime=");
     buffer.append(abandonOperation.getProcessingTime());
 
@@ -602,6 +610,20 @@
       buffer.append(msg);
     }
 
+    msg = addOperation.getAdditionalLogMessage();
+    if ((msg != null) && (msg.length() > 0))
+    {
+      buffer.append("\" additionalInfo=\"");
+      buffer.append(msg);
+    }
+
+    DN proxiedAuthDN = addOperation.getProxiedAuthorizationDN();
+    if (proxiedAuthDN != null)
+    {
+      buffer.append("\" authzDN=\"");
+      proxiedAuthDN.toString(buffer);
+    }
+
     buffer.append("\" etime=");
     buffer.append(addOperation.getProcessingTime());
 
@@ -706,6 +728,37 @@
       }
     }
 
+    msg = bindOperation.getAdditionalLogMessage();
+    if ((msg != null) && (msg.length() > 0))
+    {
+      buffer.append("\" additionalInfo=\"");
+      buffer.append(msg);
+    }
+
+    if (bindOperation.getResultCode() == ResultCode.SUCCESS)
+    {
+      AuthenticationInfo authInfo = bindOperation.getAuthenticationInfo();
+      if (authInfo != null)
+      {
+        DN authDN = authInfo.getAuthenticationDN();
+        buffer.append("\" authDN=\"");
+        if (authDN != null)
+        {
+          authDN.toString(buffer);
+
+          DN authzDN = authInfo.getAuthorizationDN();
+          if (! authDN.equals(authzDN))
+          {
+            buffer.append("\" authzDN=\"");
+            if (authzDN != null)
+            {
+              authzDN.toString(buffer);
+            }
+          }
+        }
+      }
+    }
+
     buffer.append("\" etime=");
     buffer.append(bindOperation.getProcessingTime());
 
@@ -780,6 +833,20 @@
       buffer.append(msg);
     }
 
+    msg = compareOperation.getAdditionalLogMessage();
+    if ((msg != null) && (msg.length() > 0))
+    {
+      buffer.append("\" additionalInfo=\"");
+      buffer.append(msg);
+    }
+
+    DN proxiedAuthDN = compareOperation.getProxiedAuthorizationDN();
+    if (proxiedAuthDN != null)
+    {
+      buffer.append("\" authzDN=\"");
+      proxiedAuthDN.toString(buffer);
+    }
+
     buffer.append("\" etime=");
     buffer.append(compareOperation.getProcessingTime());
 
@@ -854,6 +921,20 @@
       buffer.append(msg);
     }
 
+    msg = deleteOperation.getAdditionalLogMessage();
+    if ((msg != null) && (msg.length() > 0))
+    {
+      buffer.append("\" additionalInfo=\"");
+      buffer.append(msg);
+    }
+
+    DN proxiedAuthDN = deleteOperation.getProxiedAuthorizationDN();
+    if (proxiedAuthDN != null)
+    {
+      buffer.append("\" authzDN=\"");
+      proxiedAuthDN.toString(buffer);
+    }
+
     buffer.append("\" etime=");
     buffer.append(deleteOperation.getProcessingTime());
 
@@ -938,6 +1019,13 @@
       buffer.append(msg);
     }
 
+    msg = extendedOperation.getAdditionalLogMessage();
+    if ((msg != null) && (msg.length() > 0))
+    {
+      buffer.append("\" additionalInfo=\"");
+      buffer.append(msg);
+    }
+
     buffer.append("\" etime=");
     buffer.append(extendedOperation.getProcessingTime());
 
@@ -1013,6 +1101,20 @@
       buffer.append(msg);
     }
 
+    msg = modifyOperation.getAdditionalLogMessage();
+    if ((msg != null) && (msg.length() > 0))
+    {
+      buffer.append("\" additionalInfo=\"");
+      buffer.append(msg);
+    }
+
+    DN proxiedAuthDN = modifyOperation.getProxiedAuthorizationDN();
+    if (proxiedAuthDN != null)
+    {
+      buffer.append("\" authzDN=\"");
+      proxiedAuthDN.toString(buffer);
+    }
+
     buffer.append("\" etime=");
     buffer.append(modifyOperation.getProcessingTime());
 
@@ -1099,6 +1201,20 @@
       buffer.append(msg);
     }
 
+    msg = modifyDNOperation.getAdditionalLogMessage();
+    if ((msg != null) && (msg.length() > 0))
+    {
+      buffer.append("\" additionalInfo=\"");
+      buffer.append(msg);
+    }
+
+    DN proxiedAuthDN = modifyDNOperation.getProxiedAuthorizationDN();
+    if (proxiedAuthDN != null)
+    {
+      buffer.append("\" authzDN=\"");
+      proxiedAuthDN.toString(buffer);
+    }
+
     buffer.append("\" etime=");
     buffer.append(modifyDNOperation.getProcessingTime());
 
@@ -1230,6 +1346,22 @@
 
     buffer.append("\" nentries=");
     buffer.append(searchOperation.getEntriesSent());
+
+    msg = searchOperation.getAdditionalLogMessage();
+    if ((msg != null) && (msg.length() > 0))
+    {
+      buffer.append(" additionalInfo=\"");
+      buffer.append(msg);
+      buffer.append("\"");
+    }
+
+    DN proxiedAuthDN = searchOperation.getProxiedAuthorizationDN();
+    if (proxiedAuthDN != null)
+    {
+      buffer.append("\" authzDN=\"");
+      proxiedAuthDN.toString(buffer);
+    }
+
     buffer.append(" etime=");
     buffer.append(searchOperation.getProcessingTime());
 

--
Gitblit v1.10.0