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