From 0443d88397c7d18e516ae332db00eb1489f30184 Mon Sep 17 00:00:00 2001
From: Yannick Lecaillez <yannick.lecaillez@forgerock.com>
Date: Fri, 03 Jun 2016 14:09:09 +0000
Subject: [PATCH] OPENDJ-3031: HTTP access logger does not log failed requests

---
 opendj-server-legacy/src/main/java/org/opends/server/protocols/http/HTTPClientConnection.java |  115 ++-------------------------------------------------------
 1 files changed, 4 insertions(+), 111 deletions(-)

diff --git a/opendj-server-legacy/src/main/java/org/opends/server/protocols/http/HTTPClientConnection.java b/opendj-server-legacy/src/main/java/org/opends/server/protocols/http/HTTPClientConnection.java
index a5c5cef..fdd2482 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/protocols/http/HTTPClientConnection.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/protocols/http/HTTPClientConnection.java
@@ -19,26 +19,22 @@
 import static org.forgerock.opendj.adapter.server3x.Converters.getResponseResult;
 import static org.forgerock.opendj.ldap.LdapException.newLdapException;
 import static org.opends.messages.ProtocolMessages.WARN_CLIENT_DISCONNECT_IN_PROGRESS;
-import static org.opends.server.loggers.CommonAudit.DEFAULT_TRANSACTION_ID;
 import static org.opends.server.loggers.AccessLogger.logDisconnect;
 
 import java.net.InetAddress;
-import java.net.URI;
 import java.net.UnknownHostException;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Map;
 import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.atomic.AtomicInteger;
 import java.util.concurrent.atomic.AtomicLong;
 
 import org.forgerock.http.MutableUri;
-import org.forgerock.http.header.MalformedHeaderException;
-import org.forgerock.http.header.TransactionIdHeader;
 import org.forgerock.http.protocol.Request;
 import org.forgerock.i18n.LocalizableMessage;
 import org.forgerock.i18n.LocalizableMessageBuilder;
 import org.forgerock.i18n.slf4j.LocalizedLogger;
+import org.forgerock.opendj.ldap.DN;
 import org.forgerock.opendj.ldap.LdapException;
 import org.forgerock.opendj.ldap.ResultCode;
 import org.forgerock.opendj.ldap.SearchResultHandler;
@@ -58,8 +54,6 @@
 import org.opends.server.core.ModifyOperation;
 import org.opends.server.core.SearchOperation;
 import org.opends.server.core.ServerContext;
-import org.opends.server.loggers.HTTPAccessLogger;
-import org.opends.server.loggers.HTTPRequestInfo;
 import org.opends.server.protocols.ldap.AddResponseProtocolOp;
 import org.opends.server.protocols.ldap.BindResponseProtocolOp;
 import org.opends.server.protocols.ldap.CompareResponseProtocolOp;
@@ -74,7 +68,6 @@
 import org.opends.server.protocols.ldap.SearchResultReferenceProtocolOp;
 import org.opends.server.types.CancelRequest;
 import org.opends.server.types.CancelResult;
-import org.forgerock.opendj.ldap.DN;
 import org.opends.server.types.DirectoryException;
 import org.opends.server.types.DisconnectReason;
 import org.opends.server.types.IntermediateResponse;
@@ -88,7 +81,7 @@
  * connection that will be accepted by an instance of the HTTP connection
  * handler.
  */
-final class HTTPClientConnection extends ClientConnection implements HTTPRequestInfo
+final class HTTPClientConnection extends ClientConnection
 {
 
   // TODO JNR Confirm with Matt that persistent searches are inapplicable to Rest2LDAP.
@@ -197,16 +190,6 @@
   private final String method;
   /** The URI issued by the client. */
   private final MutableUri uri;
-  /** The user agent used by the client. */
-  private final String userAgent;
-
-  /** The username that was used to authenticate. */
-  private String authUser;
-  /**
-   * The HTTP status code returned to the client. Using 0 to say no status code
-   * was set since it is not .
-   */
-  private final AtomicInteger statusCode = new AtomicInteger(0);
 
   /** The client (remote) address. */
   private final String clientAddress;
@@ -232,9 +215,6 @@
   /** Security-Strength Factor extracted from the request attribute. */
   private final int securityStrengthFactor;
 
-  /** TransactionId for tracking of ForgeRock stack transactions. */
-  private final String transactionId;
-
   /**
    * Constructs an instance of this class.
    * @param serverContext
@@ -263,7 +243,6 @@
             context.asContext(AttributesContext.class).getAttributes().get(SERVLET_SSF_CONSTANT));
     this.method = request.getMethod();
     this.protocol = request.getVersion();
-    this.userAgent = clientCtx.getUserAgent();
 
     this.statTracker = this.connectionHandler.getStatTracker();
 
@@ -273,31 +252,8 @@
       this.statTracker.updateConnect();
       this.useNanoTime = DirectoryServer.getUseNanoTime();
     }
-    this.transactionId = getTransactionId(serverContext, request);
     this.connectionID = DirectoryServer.newConnectionAccepted(this);
-  }
-
-  private String getTransactionId(ServerContext serverContext, Request request)
-  {
-    if (serverContext.getCommonAudit().shouldTrustTransactionIds())
-    {
-      try
-      {
-        TransactionIdHeader txHeader = request.getHeaders().get(TransactionIdHeader.class);
-        return txHeader == null ? DEFAULT_TRANSACTION_ID :  txHeader.getTransactionId().getValue();
-      }
-      catch (MalformedHeaderException e)
-      {
-        // ignore it
-      }
-    }
-    return DEFAULT_TRANSACTION_ID;
-  }
-
-  @Override
-  public String getAuthUser()
-  {
-    return this.authUser;
+    context.asContext(HttpLogContext.class).setConnectionID(connectionID);
   }
 
   @Override
@@ -313,12 +269,6 @@
   }
 
   @Override
-  public long getTotalProcessingTime()
-  {
-    return totalProcessingTime.get();
-  }
-
-  @Override
   public String getProtocol()
   {
     return protocol;
@@ -331,12 +281,6 @@
   }
 
   @Override
-  public String getClientHost()
-  {
-    return clientAddress; // Avoid reverse lookups.
-  }
-
-  @Override
   public int getClientPort()
   {
     return clientPort;
@@ -349,12 +293,6 @@
   }
 
   @Override
-  public String getServerHost()
-  {
-    return serverAddress; // Avoid reverse lookups.
-  }
-
-  @Override
   public int getServerPort()
   {
     return serverPort;
@@ -373,12 +311,6 @@
   }
 
   @Override
-  public String getTransactionId()
-  {
-    return transactionId;
-  }
-
-  @Override
   public boolean isSecure()
   {
     return isSecure;
@@ -392,7 +324,7 @@
 
     if (keepStats)
     {
-      this.statTracker.updateRequestMonitoringData(getMethod(), time);
+      this.statTracker.updateRequestMonitoringData(method, time);
       this.statTracker.updateOperationMonitoringData(operation.getOperationType(), time);
     }
 
@@ -510,12 +442,6 @@
     throw new RuntimeException("Not implemented");
   }
 
-  @Override
-  public void setAuthUser(String authUser)
-  {
-    this.authUser = authUser;
-  }
-
   /**
    * {@inheritDoc}
    *
@@ -572,30 +498,6 @@
   }
 
   @Override
-  public String getMethod()
-  {
-    return this.method;
-  }
-
-  @Override
-  public URI getUri()
-  {
-    return this.uri.asURI();
-  }
-
-  @Override
-  public int getStatusCode()
-  {
-    return this.statusCode.get();
-  }
-
-  @Override
-  public String getUserAgent()
-  {
-    return this.userAgent;
-  }
-
-  @Override
   public Collection<Operation> getOperationsInProgress()
   {
     Collection<OperationWithPromise> values = operationsInProgress.values();
@@ -832,13 +734,4 @@
   {
     return true;
   }
-
-  @Override
-  public void log(int statusCode)
-  {
-    if (this.statusCode.compareAndSet(0, statusCode))
-    { // This request was not logged before
-      HTTPAccessLogger.logRequestInfo(this);
-    }
-  }
 }

--
Gitblit v1.10.0