/*
* JBoss, Home of Professional Open Source.
* Copyright 2011, Red Hat, Inc., and individual contributors
* as indicated by the @author tags. See the copyright.txt file in the
* distribution for a full listing of individual contributors.
*
* This is free software; you can redistribute it and/or modify it
* under the terms of the GNU Lesser General Public License as
* published by the Free Software Foundation; either version 2.1 of
* the License, or (at your option) any later version.
*
* This software is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this software; if not, write to the Free
* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
*/
package org.jboss.as.controller.audit;
import java.net.InetAddress;
import java.util.List;
import org.jboss.as.controller.OperationContext;
import org.jboss.as.controller.PathAddress;
import org.jboss.as.controller.audit.SyslogAuditLogHandler.Facility;
import org.jboss.as.controller.registry.Resource;
import org.jboss.as.core.security.AccessMechanism;
import org.jboss.dmr.ModelNode;
/**
* @author John Bailey
* @author Kabir Khan
*/
public interface AuditLogger {
enum Status {
/** The logger is queueing log messages in memory until it is switched to status {@link #LOGGING} or status {@link #DISABLED} */
QUEUEING,
/** The logger is actively logging messages to an external store */
LOGGING,
/**
* The logger will log one more record, after which it will switch to status {@link #DISABLED}.
* This status is set by an operation that is disabling logging, as a means of ensuring that operation
* is itself logged.
*/
DISABLE_NEXT,
/** The logger is discarding any log requests, and any {@link #QUEUEING queued} requests have been discarded */
DISABLED
}
void log(boolean readOnly, OperationContext.ResultAction resultAction, String userId, String domainUUID,
AccessMechanism accessMechanism, InetAddress remoteAddress, final Resource resultantModel, List<ModelNode> operations);
void logJmxMethodAccess(final boolean readOnly, final String userId, final String domainUUID, final AccessMechanism accessMechanism, InetAddress remoteAddress,
final String methodName, final String[] methodSignature, final Object[] methodParams, final Throwable error);
/**
* An audit logger that doesn't log.
*/
ManagedAuditLogger NO_OP_LOGGER = new ManagedAuditLogger() {
@Override
public boolean isLogReadOnly() {
return false;
}
@Override
public void setLogReadOnly(boolean logReadOnly) {
}
@Override
public boolean isLogBoot() {
return false;
}
@Override
public void setLogBoot(boolean logBoot) {
}
public Status getLoggerStatus() {
return Status.DISABLED;
}
@Override
public void log(boolean readOnly, OperationContext.ResultAction resultAction, String userId, String domainUUID, AccessMechanism accessMechanism, InetAddress remoteAddress, Resource resultantModel, List<ModelNode> operations) {
}
@Override
public void logJmxMethodAccess(boolean readOnly, String userId, String domainUUID, AccessMechanism accessMechanism, InetAddress remoteAddress, String methodName, String[] methodSignature, Object[] methodParams, Throwable error) {
}
@Override
public void setLoggerStatus(Status newStatus) {
}
@Override
public void removeFormatter(String name) {
}
@Override
public void addFormatter(AuditLogItemFormatter formatter) {
}
@Override
public JsonAuditLogItemFormatter getJsonFormatter(String name) {
return null;
}
@Override
public AuditLogHandlerUpdater getUpdater() {
return new ManagedAuditLogger.AuditLogHandlerUpdater(){
@Override
public void addHandler(AuditLogHandler handler) {
}
@Override
public void updateHandler(AuditLogHandler handler) {
}
@Override
public void removeHandler(String name) {
}
@Override
public void addHandlerReference(PathAddress referenceAddress) {
}
@Override
public void removeHandlerReference(PathAddress referenceAddress) {
}
@Override
public void rollbackChanges() {
}
@Override
public void applyChanges() {
}
};
}
@Override
public ManagedAuditLogger createNewConfiguration(boolean manualCommit) {
return this;
}
@Override
public void updateHandlerFormatter(String name, String formatterName) {
}
@Override
public void recycleHandler(String name) {
}
@Override
public int getHandlerFailureCount(String name) {
return 0;
}
@Override
public boolean getHandlerDisabledDueToFailure(String name) {
return false;
}
@Override
public void updateHandlerMaxFailureCount(String name, int count) {
}
@Override
public void bootDone() {
}
@Override
public void startBoot() {
}
@Override
public void updateSyslogHandlerFacility(String name, Facility facility) {
}
@Override
public void updateSyslogHandlerAppName(String name, String appName) {
}
@Override
public void updateSyslogHandlerReconnectTimeout(String name, int reconnectTimeout) {
}
@Override
public void updateInMemoryHandlerMaxHistory(String name, int maxHistory) {
}
};
}