//
// This file is part of the OpenNMS(R) Application.
//
// OpenNMS(R) is Copyright (C) 2006 The OpenNMS Group, Inc. All rights
// reserved.
// OpenNMS(R) is a derivative work, containing both original code, included
// code and modified
// code that was published under the GNU General Public License. Copyrights
// for modified
// and included code are below.
//
// OpenNMS(R) is a registered trademark of The OpenNMS Group, Inc.
//
// Original code base Copyright (C) 1999-2001 Oculan Corp. All rights
// reserved.
//
// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation; either version 2 of the License, or
// (at your option) any later version.
//
// This program 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 General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
//
// For more information contact:
// OpenNMS Licensing <license@opennms.org>
// http://www.opennms.org/
// http://www.opennms.com/
//
package org.infosec.ismp.model.syslog;
import java.text.ParseException;
import java.util.Hashtable;
/**
*
* @author <a href="mailto:joed@opennms.org">Johan Edstrom</a>
*/
public class SyslogDefs {
public static final String RCS_ID = "$Id: SyslogDefs-OLD.java,v 1.1.1.1 1998/02/22 05:47:54 time Exp $";
public static final String RCS_REV = "$Revision: 1.1.1.1 $";
public static final String RCS_NAME = "$Name: $";
//
// SyslogLvl
//
public static final int LOG_EMERG = 0; /* system is unusable */
public static final int LOG_ALERT = 1; /*
* action must be taken
* immediately
*/
public static final int LOG_CRIT = 2; /* critical conditions */
public static final int LOG_ERR = 3; /* error conditions */
public static final int LOG_WARNING = 4; /* warning conditions */
public static final int LOG_NOTICE = 5; /*
* normal but significant
* condition
*/
public static final int LOG_INFO = 6; /* informational */
public static final int LOG_DEBUG = 7; /* debug-level messages */
public static final int LOG_ALL = 8; /* '*' in config, all levels */
//
// SyslogFac
//
public static final int LOG_KERN = 0; /* kernel messages */
public static final int LOG_USER = 1; /* random user-level messages */
public static final int LOG_MAIL = 2; /* mail system */
public static final int LOG_DAEMON = 3; /* system daemons */
public static final int LOG_AUTH = 4; /* security/authorization messages */
public static final int LOG_SYSLOG = 5; /*
* messages generated internally
* by syslogd
*/
public static final int LOG_LPR = 6; /* line printer subsystem */
public static final int LOG_NEWS = 7; /* network news subsystem */
public static final int LOG_UUCP = 8; /* UUCP subsystem */
public static final int LOG_CRON = 9; /* clock daemon */
/* other codes through 15 reserved for system use */
public static final int LOG_LOCAL0 = 16; /* reserved for local use */
public static final int LOG_LOCAL1 = 17; /* reserved for local use */
public static final int LOG_LOCAL2 = 18; /* reserved for local use */
public static final int LOG_LOCAL3 = 19; /* reserved for local use */
public static final int LOG_LOCAL4 = 20; /* reserved for local use */
public static final int LOG_LOCAL5 = 21; /* reserved for local use */
public static final int LOG_LOCAL6 = 22; /* reserved for local use */
public static final int LOG_LOCAL7 = 23; /* reserved for local use */
public static final int LOG_NFACILITIES = 24; /*
* current number of
* facilities
*/
public static final int LOG_PRIMASK = 0x07; /*
* mask to extract priority
* part (internal)
*/
public static final int LOG_FACMASK = 0x03F8; /*
* mask to extract
* facility part
*/
public static final int INTERNAL_NOPRI = 0x10; /*
* the "no priority"
* priority
*/
public static final int LOG_PID = 0x01; /* log the pid with each message */
public static final int LOG_CONS = 0x02; /*
* log on the console if
* errors in sending
*/
public static final int LOG_ODELAY = 0x04; /*
* delay open until first
* syslog() (default)
*/
public static final int LOG_NDELAY = 0x08; /* don't delay open */
public static final int LOG_NOWAIT = 0x10; /*
* don't wait for console
* forks: DEPRECATED
*/
public static final int LOG_PERROR = 0x20; /* log to stderr as well */
public static final int DEFAULT_PORT = 514;
static private Hashtable<String, Integer> facHash;
static private Hashtable<String, Integer> priHash;
static {
facHash = new Hashtable<String, Integer>(20);
facHash.put("KERN", SyslogDefs.LOG_KERN);
facHash.put("KERNEL", SyslogDefs.LOG_KERN);
facHash.put("USER", SyslogDefs.LOG_USER);
facHash.put("MAIL", SyslogDefs.LOG_MAIL);
facHash.put("DAEMON", SyslogDefs.LOG_DAEMON);
facHash.put("AUTH", SyslogDefs.LOG_AUTH);
facHash.put("SYSLOG", SyslogDefs.LOG_SYSLOG);
facHash.put("LPR", SyslogDefs.LOG_LPR);
facHash.put("NEWS", SyslogDefs.LOG_NEWS);
facHash.put("UUCP", SyslogDefs.LOG_UUCP);
facHash.put("CRON", SyslogDefs.LOG_CRON);
facHash.put("LOCAL0", SyslogDefs.LOG_LOCAL0);
facHash.put("LOCAL1", SyslogDefs.LOG_LOCAL1);
facHash.put("LOCAL2", SyslogDefs.LOG_LOCAL2);
facHash.put("LOCAL3", SyslogDefs.LOG_LOCAL3);
facHash.put("LOCAL4", SyslogDefs.LOG_LOCAL4);
facHash.put("LOCAL5", SyslogDefs.LOG_LOCAL5);
facHash.put("LOCAL6", SyslogDefs.LOG_LOCAL6);
facHash.put("LOCAL7", SyslogDefs.LOG_LOCAL7);
priHash = new Hashtable<String, Integer>(20);
priHash.put("EMERG", SyslogDefs.LOG_EMERG);
priHash.put("EMERGENCY", SyslogDefs.LOG_EMERG);
priHash.put("LOG_EMERG", SyslogDefs.LOG_EMERG);
priHash.put("ALERT", SyslogDefs.LOG_ALERT);
priHash.put("LOG_ALERT", SyslogDefs.LOG_ALERT);
priHash.put("CRIT", SyslogDefs.LOG_CRIT);
priHash.put("CRITICAL", SyslogDefs.LOG_CRIT);
priHash.put("LOG_CRIT", SyslogDefs.LOG_CRIT);
priHash.put("ERR", SyslogDefs.LOG_ERR);
priHash.put("ERROR", SyslogDefs.LOG_ERR);
priHash.put("LOG_ERR", SyslogDefs.LOG_ERR);
priHash.put("WARNING", SyslogDefs.LOG_WARNING);
priHash.put("LOG_WARNING", SyslogDefs.LOG_WARNING);
priHash.put("NOTICE", SyslogDefs.LOG_NOTICE);
priHash.put("LOG_NOTICE", SyslogDefs.LOG_NOTICE);
priHash.put("INFO", SyslogDefs.LOG_INFO);
priHash.put("LOG_INFO", SyslogDefs.LOG_INFO);
priHash.put("DEBUG", SyslogDefs.LOG_DEBUG);
priHash.put("LOG_DEBUG", SyslogDefs.LOG_DEBUG);
}
static public int extractFacility(int code) {
return ((code & SyslogDefs.LOG_FACMASK) >> 3);
}
static public int extractPriority(int code) {
return (code & SyslogDefs.LOG_PRIMASK);
}
static public int computeCode(int facility, int priority) {
return ((facility << 3) | priority);
}
/*
* Critical (red) This event means numerous devices on the network are
* affected by the event. Everyone who can should stop what they are doing
* and focus on fixing the problem. Major (orange) A device is completely
* down or in danger of going down. Attention needs to be paid to this
* problem immediately. Minor (yellow) A part of a device (a service, and
* interface, a power supply, etc.) has stopped functioning. The device
* needs attention. Warning (cyan) An event has occurred that may require
* action. This severity can also be used to indicate a condition that
* should be noted (logged) but does not require direct action. Normal
* (green) Informational message. No action required. Cleared (white) This
* event indicates that a prior error condition has been corrected and
* service is restored. Indeterminate (light blue) The severity of the
* event cannot be determined.
*/
static public String getPriorityName(int level) {
switch (level) {
case SyslogDefs.LOG_EMERG:
return "Emergency";
case SyslogDefs.LOG_ALERT:
return "Alert";
case SyslogDefs.LOG_CRIT:
return "Critical";
case SyslogDefs.LOG_ERR:
return "Error";
case SyslogDefs.LOG_WARNING:
return "Warning";
case SyslogDefs.LOG_NOTICE:
return "Notice";
case SyslogDefs.LOG_INFO:
return "Info";
case SyslogDefs.LOG_DEBUG:
return "Debug";
// This is a really lazy way of mapping syslog
// to OpenNMS, but it should conform to thinking...
/*
* case SyslogDefs.LOG_EMERG: return "1"; case
* SyslogDefs.LOG_ALERT: return "1"; case SyslogDefs.LOG_CRIT:
* return "2"; case SyslogDefs.LOG_ERR: return "2"; case
* SyslogDefs.LOG_WARNING: return "3"; case SyslogDefs.LOG_NOTICE:
* return "4"; case SyslogDefs.LOG_INFO: return "5"; case
* SyslogDefs.LOG_DEBUG: return "5";
*/
}
return "unknown level='" + level + "'";
}
static public String getFacilityName(int facility) {
switch (facility) {
case SyslogDefs.LOG_KERN:
return "kernel";
case SyslogDefs.LOG_USER:
return "user";
case SyslogDefs.LOG_MAIL:
return "mail";
case SyslogDefs.LOG_DAEMON:
return "daemon";
case SyslogDefs.LOG_AUTH:
return "auth";
case SyslogDefs.LOG_SYSLOG:
return "syslog";
case SyslogDefs.LOG_LPR:
return "lpr";
case SyslogDefs.LOG_NEWS:
return "news";
case SyslogDefs.LOG_UUCP:
return "uucp";
case SyslogDefs.LOG_CRON:
return "cron";
case SyslogDefs.LOG_LOCAL0:
return "local0";
case SyslogDefs.LOG_LOCAL1:
return "local1";
case SyslogDefs.LOG_LOCAL2:
return "local2";
case SyslogDefs.LOG_LOCAL3:
return "local3";
case SyslogDefs.LOG_LOCAL4:
return "local4";
case SyslogDefs.LOG_LOCAL5:
return "local5";
case SyslogDefs.LOG_LOCAL6:
return "local6";
case SyslogDefs.LOG_LOCAL7:
return "local7";
}
return "unknown facility='" + facility + "'";
}
static public String getPriority(String priority) throws ParseException {
String priKey = priority.toUpperCase();
String result = SyslogDefs.priHash.get(priKey).toString();
if (result == null) {
throw new ParseException("unknown priority '" + priority + "'", 0);
}
return result;
}
static public int getFacility(String facility) throws ParseException {
String facKey = facility.toUpperCase();
Integer result = SyslogDefs.facHash.get(facKey);
if (result == null) {
throw new ParseException("unknown facility '" + facility + "'", 0);
}
return result;
}
}