org.jivesoftware.openfire.audit.AuditManager Maven / Gradle / Ivy
/*
* Copyright (C) 2004-2008 Jive Software. All rights reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.jivesoftware.openfire.audit;
import java.util.Collection;
import java.util.Iterator;
/**
* Manages and directs server message auditing behavior. Turning on
* all auditing options can produce copious amounts of data and
* significantly slow the server as it saves the data to persistent storage.
*
* Auditing currently saves audit data to a raw XML file
* which can later be processed and mined for information.
*
* @author Iain Shigeoka
*/
public interface AuditManager {
// Presence transitions
int PRESENCE_UNAVAILABLE_AVAILABLE = 1;
int PRESENCE_AVAILABLE_AVAILABLE = 2;
int PRESENCE_AVAILABLE_UNAVAILABLE = 4;
int PRESENCE_UNAVAILABLE_UNAVAILABLE = 8;
/**
* Determines if auditing is enabled at all.
*
* @return true if auditing is enabled, false indicates no auditing will occur
*/
boolean isEnabled();
/**
* Turns auditing off or on for the manager as a whole.
*
* @param enabled true if auditing is enabled, false indicates no auditing will occur.
*/
void setEnabled(boolean enabled);
/**
* Factory method for creating auditors that are configured by this
* audit manager.
*
* @return a new auditor that will obey the configuration of the audit manager.
*/
Auditor getAuditor();
/**
* Returns the maximum size in megabytes that all audit log files may have. When the
* limit is reached oldest audit log files will be removed until total size is under
* the limit.
*
* @return the maximum size of all audit logs in megabytes.
*/
int getMaxTotalSize();
/**
* Sets the maximum size in megabytes that all audit log files may have. When the
* limit is reached oldest audit log files will be removed until total size is under
* the limit.
*
* @param size the maximum size of all audit logs in megabytes.
*/
void setMaxTotalSize(int size);
/**
* Obtain the maximum size of audit log files in megabytes.
* Logs that exceed the max size will be rolled over to another
* file.
*
* @return the maximum size of an audit log in megabytes.
*/
int getMaxFileSize();
/**
* Set the maximum size of audit log files in megabytes.
*
* @param size the maximum audit log file size in megabytes.
*/
void setMaxFileSize(int size);
/**
* Returns the maximum number of days to keep audit information. Once the limit
* has been reached audit files that contain information that exceed the limit
* will be deleted.
*
* @return the maximum number of days to keep audit information
* or -1 for unlimited
*/
int getMaxDays();
/**
* Set the the maximum number of days to keep audit information.
*
* @param count the maximum number of days to keep audit information
* or -1 for unlimited
*/
void setMaxDays(int count);
/**
* Returns the time in milliseconds between successive executions of the task that will save
* the queued audited packets to a permanent store.
*
* @return the time in milliseconds between successive executions of the task that will save
* the queued audited packets to a permanent store.
*/
int getLogTimeout();
/**
* Sets the time in milliseconds between successive executions of the task that will save
* the queued audited packets to a permanent store.
*
* @param logTimeout the time in milliseconds between successive executions of the task that will save
* the queued audited packets to a permanent store.
*/
void setLogTimeout(int logTimeout);
/**
* Returns the absolute path to the directory where the audit log files will be saved.
*
* @return the absolute path to the directory where the audit log files will be saved.
*/
String getLogDir();
/**
* Sets the absolute path to the directory where the audit log files will be saved.
*
* @param logDir the absolute path to the directory where the audit log files will be saved.
*/
void setLogDir(String logDir);
/**
*
Determines if the server will audit all message packets.
* This is a speed optimization and convenience for logging all message packets
* rather than using an XPath expression.
*
* @return true if all messages are to be audited
*/
boolean isAuditMessage();
/**
* Enables or disables the server auditing of all message packets.
* This is a speed optimization and convenience for logging all message packets
* rather than using an XPath expression.
*
* @param enabled True if all messages are to be audited
*/
void setAuditMessage(boolean enabled);
/**
* Determines if the server will audit all presence packets.
* This is a speed optimization and convenience for logging all presence packets
* rather than using an XPath expression.
*
* @return True if all presence are to be audited
*/
boolean isAuditPresence();
/**
* Enables or disables the server auditing of all presence packets.
* This is a speed optimization and convenience for logging all presence packets
* rather than using an XPath expression.
*
* @param enabled True if all presence are to be audited
*/
void setAuditPresence(boolean enabled);
/**
* Determines if the server will audit all iq packets.
* This is a speed optimization and convenience for logging all iq packets
* rather than using an XPath expression.
*
* @return True if all iq are to be audited
*/
boolean isAuditIQ();
/**
* Enables or disables the server auditing of all iq packets.
* This is a speed optimization and convenience for logging all iq packets
* rather than using an XPath expression.
*
* @param enabled true if all iq are to be audited.
*/
void setAuditIQ(boolean enabled);
/**
* Determines if the server will audit packets using XPath expressions.
* XPath expressions provide a lot of power in specifying what is logged.
* However, it is much more compute intensive than other techniques and requires
* all packets be transformed into DOM objects (which can be computationally expensive).
*
* @return true if XPath expressions should be audited.
*/
boolean isAuditXPath();
/**
* Enables/disables server auditing of packets using XPath expressions.
* XPath expressions provide a lot of power in specifying what is logged.
* However, it is much more compute intensive than other techniques and requires
* all packets be transformed into DOM objects (which can be computationally expensive).
*
* @param enabled true if XPath expressions should be audited
*/
void setAuditXPath(boolean enabled);
/**
* Adds an XPath expression to be used for filtering packets to be audited.
* XPath expressions aren't evaluated or used for filtering unless isAuditXPath()
* returns true.
*
* @param xpathExpression the xpath expression to add to the list of auditing filters.
*/
void addXPath(String xpathExpression);
/**
* Removes the XPath expression from the set being used for filtering packets to be audited.
* XPath expressions aren't evaluated or used for filtering unless isAuditXPath()
* returns true.
*
* @param xpathExpression The xpath expression to remove from the list of auditing filters
*/
void removeXPath(String xpathExpression);
/**
* Obtain an iterator over the XPath expressions (Strings) currently registered
* with the audit manager.
* XPath expressions aren't evaluated or used for filtering unless isAuditXPath()
* returns true.
*
* @return An iterator of all XPath expressions the audit manager is using
*/
Iterator getXPathFilters();
/**
* Sets the list of usernames that won't be audited. Packets sent or received by any of
* these users will be ignored by the auditor.
*
* @param usernames the list of usernames that won't be audited.
*/
void setIgnoreList(Collection usernames);
/**
* Returns the list of usernames that won't be audited. Packets sent or received by any of
* these users will be ignored by the auditor.
*
* @return the list of usernames that won't be audited.
*/
Collection getIgnoreList();
}