e433824f46514e6ed863eb6b95c70038331c8c24Nicolas Capponi * CDDL HEADER START
e433824f46514e6ed863eb6b95c70038331c8c24Nicolas Capponi * The contents of this file are subject to the terms of the
e433824f46514e6ed863eb6b95c70038331c8c24Nicolas Capponi * Common Development and Distribution License, Version 1.0 only
e433824f46514e6ed863eb6b95c70038331c8c24Nicolas Capponi * (the "License"). You may not use this file except in compliance
e433824f46514e6ed863eb6b95c70038331c8c24Nicolas Capponi * with the License.
e433824f46514e6ed863eb6b95c70038331c8c24Nicolas Capponi * You can obtain a copy of the license at legal-notices/CDDLv1_0.txt
e433824f46514e6ed863eb6b95c70038331c8c24Nicolas Capponi * or http://forgerock.org/license/CDDLv1.0.html.
e433824f46514e6ed863eb6b95c70038331c8c24Nicolas Capponi * See the License for the specific language governing permissions
e433824f46514e6ed863eb6b95c70038331c8c24Nicolas Capponi * and limitations under the License.
e433824f46514e6ed863eb6b95c70038331c8c24Nicolas Capponi * When distributing Covered Code, include this CDDL HEADER in each
e433824f46514e6ed863eb6b95c70038331c8c24Nicolas Capponi * file and include the License file at legal-notices/CDDLv1_0.txt.
e433824f46514e6ed863eb6b95c70038331c8c24Nicolas Capponi * If applicable, add the following below this CDDL HEADER, with the
e433824f46514e6ed863eb6b95c70038331c8c24Nicolas Capponi * fields enclosed by brackets "[]" replaced with your own identifying
e433824f46514e6ed863eb6b95c70038331c8c24Nicolas Capponi * information:
e433824f46514e6ed863eb6b95c70038331c8c24Nicolas Capponi * Portions Copyright [yyyy] [name of copyright owner]
e433824f46514e6ed863eb6b95c70038331c8c24Nicolas Capponi * CDDL HEADER END
e433824f46514e6ed863eb6b95c70038331c8c24Nicolas Capponi * Copyright 2015 ForgeRock AS
e433824f46514e6ed863eb6b95c70038331c8c24Nicolas Capponiimport static org.forgerock.json.JsonValue.*;
e433824f46514e6ed863eb6b95c70038331c8c24Nicolas Capponiimport org.forgerock.audit.events.AccessAuditEventBuilder;
de7a38699a83cd9ee7c35143d8986fa05ebdd3d9Nicolas Capponiimport org.forgerock.i18n.LocalizableMessage;
e433824f46514e6ed863eb6b95c70038331c8c24Nicolas Capponiimport org.forgerock.i18n.LocalizableMessageBuilder;
e433824f46514e6ed863eb6b95c70038331c8c24Nicolas Capponiimport org.opends.server.core.ModifyDNOperation;
e433824f46514e6ed863eb6b95c70038331c8c24Nicolas Capponiimport org.opends.server.core.SearchOperation;
e433824f46514e6ed863eb6b95c70038331c8c24Nicolas Capponiimport org.opends.server.types.AdditionalLogItem;
de7a38699a83cd9ee7c35143d8986fa05ebdd3d9Nicolas Capponiimport org.opends.server.types.DisconnectReason;
e433824f46514e6ed863eb6b95c70038331c8c24Nicolas Capponi * Builder for /audit/access events specific to OpenDJ. This builder add LDAP
e433824f46514e6ed863eb6b95c70038331c8c24Nicolas Capponi * specific fields to the common fields defined in AccessAuditEventBuilder.
e433824f46514e6ed863eb6b95c70038331c8c24Nicolas Capponi * This builder.
e433824f46514e6ed863eb6b95c70038331c8c24Nicolas Capponiclass OpenDJAccessAuditEventBuilder<T extends OpenDJAccessAuditEventBuilder<T>> extends AccessAuditEventBuilder<T>
e433824f46514e6ed863eb6b95c70038331c8c24Nicolas Capponi public static <T> OpenDJAccessAuditEventBuilder<?> openDJAccessEvent()
e433824f46514e6ed863eb6b95c70038331c8c24Nicolas Capponi String items = getAdditionalItemsAsString(op);
e433824f46514e6ed863eb6b95c70038331c8c24Nicolas Capponi List<Control> requestControls = operation.getRequestControls();
e433824f46514e6ed863eb6b95c70038331c8c24Nicolas Capponi ldapValue.put("reqControls", getControlsAsString(requestControls));
e433824f46514e6ed863eb6b95c70038331c8c24Nicolas Capponi List<Control> responseControls = operation.getResponseControls();
e433824f46514e6ed863eb6b95c70038331c8c24Nicolas Capponi ldapValue.put("respControls", getControlsAsString(responseControls));
e433824f46514e6ed863eb6b95c70038331c8c24Nicolas Capponi ldapValue.put("connId", op.getConnectionID());
e433824f46514e6ed863eb6b95c70038331c8c24Nicolas Capponi public T ldapMaskedResultAndMessage(Operation operation)
e433824f46514e6ed863eb6b95c70038331c8c24Nicolas Capponi if (operation.getMaskedResultCode() != null)
e433824f46514e6ed863eb6b95c70038331c8c24Nicolas Capponi ldapValue.put("maskedResult", operation.getMaskedResultCode().intValue());
e433824f46514e6ed863eb6b95c70038331c8c24Nicolas Capponi final LocalizableMessageBuilder maskedMsg = operation.getMaskedErrorMessage();
e433824f46514e6ed863eb6b95c70038331c8c24Nicolas Capponi if (maskedMsg != null && maskedMsg.length() > 0)
e433824f46514e6ed863eb6b95c70038331c8c24Nicolas Capponi ldapValue.put("maskedMessage", maskedMsg.toString());
de7a38699a83cd9ee7c35143d8986fa05ebdd3d9Nicolas Capponi public T ldapMessage(LocalizableMessage msg)
de7a38699a83cd9ee7c35143d8986fa05ebdd3d9Nicolas Capponi getLdapValue().put("message", msg.toString());
e433824f46514e6ed863eb6b95c70038331c8c24Nicolas Capponi public T ldapModifyDN(ModifyDNOperation modifyDNOperation)
e433824f46514e6ed863eb6b95c70038331c8c24Nicolas Capponi ldapValue.put("newRDN", modifyDNOperation.getRawNewRDN().toString());
e433824f46514e6ed863eb6b95c70038331c8c24Nicolas Capponi ldapValue.put("newSup", modifyDNOperation.getRawNewSuperior().toString());
e433824f46514e6ed863eb6b95c70038331c8c24Nicolas Capponi ldapValue.put("deleteOldRDN", modifyDNOperation.deleteOldRDN());
e433824f46514e6ed863eb6b95c70038331c8c24Nicolas Capponi public T ldapProtocolVersion(String version)
de7a38699a83cd9ee7c35143d8986fa05ebdd3d9Nicolas Capponi public T ldapReason(DisconnectReason reason)
de7a38699a83cd9ee7c35143d8986fa05ebdd3d9Nicolas Capponi getLdapValue().put("reason", reason.toString());
e433824f46514e6ed863eb6b95c70038331c8c24Nicolas Capponi public T ldapSearch(SearchOperation searchOperation)
e433824f46514e6ed863eb6b95c70038331c8c24Nicolas Capponi // for search base, re-uses the "dn" field
e433824f46514e6ed863eb6b95c70038331c8c24Nicolas Capponi ldapValue.put("dn", searchOperation.getRawBaseDN().toString());
e433824f46514e6ed863eb6b95c70038331c8c24Nicolas Capponi ldapValue.put("scope", searchOperation.getScope().toString());
e433824f46514e6ed863eb6b95c70038331c8c24Nicolas Capponi ldapValue.put("filter", searchOperation.getRawFilter().toString());
e433824f46514e6ed863eb6b95c70038331c8c24Nicolas Capponi final Set<String> attrs = searchOperation.getAttributes();
e433824f46514e6ed863eb6b95c70038331c8c24Nicolas Capponi ldapValue.put("attrs", Arrays.asList("ALL"));
e433824f46514e6ed863eb6b95c70038331c8c24Nicolas Capponi ldapValue.put("attrs", new ArrayList<>(attrs));
e433824f46514e6ed863eb6b95c70038331c8c24Nicolas Capponi private List<String> getControlsAsString(List<Control> controls)
e433824f46514e6ed863eb6b95c70038331c8c24Nicolas Capponi private String getAdditionalItemsAsString(Operation operation)