⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 auditlogger.cpp

📁 Pegasus is an open-source implementationof the DMTF CIM and WBEM standards. It is designed to be por
💻 CPP
📖 第 1 页 / 共 2 页
字号:
//%2006//////////////////////////////////////////////////////////////////////////// Copyright (c) 2000, 2001, 2002 BMC Software; Hewlett-Packard Development// Company, L.P.; IBM Corp.; The Open Group; Tivoli Systems.// Copyright (c) 2003 BMC Software; Hewlett-Packard Development Company, L.P.;// IBM Corp.; EMC Corporation, The Open Group.// Copyright (c) 2004 BMC Software; Hewlett-Packard Development Company, L.P.;// IBM Corp.; EMC Corporation; VERITAS Software Corporation; The Open Group.// Copyright (c) 2005 Hewlett-Packard Development Company, L.P.; IBM Corp.;// EMC Corporation; VERITAS Software Corporation; The Open Group.// Copyright (c) 2006 Hewlett-Packard Development Company, L.P.; IBM Corp.;// EMC Corporation; Symantec Corporation; The Open Group.//// Permission is hereby granted, free of charge, to any person obtaining a copy// of this software and associated documentation files (the "Software"), to// deal in the Software without restriction, including without limitation the// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or// sell copies of the Software, and to permit persons to whom the Software is// furnished to do so, subject to the following conditions:// // THE ABOVE COPYRIGHT NOTICE AND THIS PERMISSION NOTICE SHALL BE INCLUDED IN// ALL COPIES OR SUBSTANTIAL PORTIONS OF THE SOFTWARE. THE SOFTWARE IS PROVIDED// "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT// LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR// PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.////==============================================================================////%/////////////////////////////////////////////////////////////////////////////#include <Pegasus/Common/Config.h>#include <Pegasus/Common/Constants.h>#include <Pegasus/Common/Logger.h>#include <Pegasus/Common/Formatter.h>#include <Pegasus/Common/CIMPropertyList.h>#include <Pegasus/Common/InternalException.h>#include <Pegasus/Common/AuditLogger.h>#ifdef PEGASUS_OS_DARWIN# include <crt_externs.h>#endif#ifndef PEGASUS_OS_TYPE_WINDOWS# include <unistd.h>#endif#ifdef PEGASUS_OS_VMS# include <unixlib.h>#endif#include <stdlib.h>#ifndef PEGASUS_DISABLE_AUDIT_LOGGERPEGASUS_USING_STD;PEGASUS_NAMESPACE_BEGINstatic const String providerModuleStatus [] = {    "Unknown", "Other", "OK", "Degraded",    "Stressed", "Predictive Failure", "Error", "Non-Recoverable Error",    "Starting", "Stopping", "Stopped", "In Service", "No Contact",    "Lost Communication"};Boolean AuditLogger::_auditLogFlag = false;AuditLogger::PEGASUS_AUDITLOGINITIALIZE_CALLBACK_T    AuditLogger::_auditLogInitializeCallback = 0;AuditLogger::PEGASUS_AUDITLOG_CALLBACK_T AuditLogger::_writeAuditMessageToFile =    AuditLogger::_writeAuditMessage;void AuditLogger::logCurrentConfig(    const Array<String> & propertyNames,    const Array<String> & propertyValues){    for (Uint32 i = 0; i < propertyNames.size(); i++)    {        String propertyStr = propertyNames[i] + "=" + propertyValues[i];        MessageLoaderParms msgParms("Common.AuditLogger.CURRENT_CONFIG",            "cimserver configuration $0", propertyStr);        _writeAuditMessageToFile(TYPE_CONFIGURATION,            SUBTYPE_CURRENT_CONFIGURATION,            EVENT_START_UP, Logger::INFORMATION, msgParms);    }}void AuditLogger::logCurrentRegProvider(    const Array < CIMInstance > & instances){    String moduleName;    Array<Uint16> moduleStatus;    String statusValue;    Uint32 pos;    // get all the registered provider module names and status    for (Uint32 i = 0; i <instances.size(); i++)    {        instances[i].getProperty(instances[i].findProperty(            _PROPERTY_PROVIDERMODULE_NAME)).getValue().get(moduleName);        pos = instances[i].findProperty(_PROPERTY_OPERATIONALSTATUS);        if (pos == PEG_NOT_FOUND)        {            moduleStatus.append(0);        }        else        {            CIMValue theValue = instances[i].getProperty(pos).getValue();            if (theValue.isNull())            {                moduleStatus.append(0);            }            else            {                theValue.get(moduleStatus);            }        }        statusValue = _getModuleStatusValue(moduleStatus);        MessageLoaderParms msgParms(            "Common.AuditLogger.CURRENT_PROVIDER_REGISTRATION",            "Provider module \"$0\" has status \"$1\".",            moduleName, statusValue);        _writeAuditMessageToFile(TYPE_CONFIGURATION,            SUBTYPE_CURRENT_PROVIDER_REGISTRATION,            EVENT_START_UP, Logger::INFORMATION, msgParms);    }}void AuditLogger::logCurrentEnvironmentVar(){#ifdef PEGASUS_OS_DARWIN    char** envp = *_NSGetEnviron();#else    char** envp = environ;#endif    Uint32 i = 0;    while (envp[i])    {        MessageLoaderParms msgParms("Common.AuditLogger.CURRENT_ENV",           "cimserver environment variable: $0", envp[i]);        _writeAuditMessageToFile(TYPE_CONFIGURATION,            SUBTYPE_CURRENT_ENVIRONMENT_VARIABLES,            EVENT_START_UP, Logger::INFORMATION, msgParms);        i++;    }}void AuditLogger::logSetConfigProperty(    const String & userName,    const String & propertyName,    const String & prePropertyValue,    const String & newPropertyValue,    Boolean isPlanned){    if (isPlanned)    {        MessageLoaderParms msgParms(            "Common.AuditLogger.SET_PLANNED_CONFIG_PROPERTY",            "The planned value of property \"$0\" is modified from "                "value \"$1\" to value \"$2\" by user \"$3\".",            propertyName, prePropertyValue, newPropertyValue, userName);        _writeAuditMessageToFile(TYPE_CONFIGURATION,            SUBTYPE_CONFIGURATION_CHANGE,            EVENT_UPDATE, Logger::INFORMATION, msgParms);    }    else    {        MessageLoaderParms msgParms(            "Common.AuditLogger.SET_CURRENT_CONFIG_PROPERTY",            "The current value of property \"$0\" is modified from "                "value \"$1\" to value \"$2\" by user \"$3\".",            propertyName, prePropertyValue, newPropertyValue, userName);        _writeAuditMessageToFile(TYPE_CONFIGURATION,            SUBTYPE_CONFIGURATION_CHANGE,            EVENT_UPDATE, Logger::INFORMATION, msgParms);    }}void AuditLogger::logUpdateClassOperation(    const char* cimMethodName,    AuditEvent eventType,    const String& userName,    const String& ipAddr,    const CIMNamespaceName& nameSpace,    const CIMName& className,    CIMStatusCode statusCode){    MessageLoaderParms msgParms(        "Common.AuditLogger.OPERATION_UPDATE_CLASS",        "A CIM $0 operation on class \"$1\" in namespace \"$2\" by user "            "\"$3\" connected from system \"$4\" resulted in status \"$5\".",        cimMethodName,        className.getString(),        nameSpace.getString(),        userName,        ipAddr,        cimStatusCodeToString(statusCode));    _writeAuditMessageToFile(TYPE_CIMOPERATION, SUBTYPE_SCHEMA_OPERATION,        eventType, Logger::INFORMATION, msgParms);}void AuditLogger::logUpdateQualifierOperation(    const char* cimMethodName,    AuditEvent eventType,    const String& userName,    const String& ipAddr,    const CIMNamespaceName& nameSpace,    const CIMName& className,    CIMStatusCode statusCode){    MessageLoaderParms msgParms(        "Common.AuditLogger.OPERATION_UPDATE_QUALIFIER",        "A CIM $0 operation on qualifier \"$1\" in namespace \"$2\" by user "            "\"$3\" connected from system \"$4\" resulted in status \"$5\".",        cimMethodName,        className.getString(),        nameSpace.getString(),        userName,        ipAddr,        cimStatusCodeToString(statusCode));    _writeAuditMessageToFile(TYPE_CIMOPERATION, SUBTYPE_SCHEMA_OPERATION,        eventType, Logger::INFORMATION, msgParms);}void AuditLogger::logUpdateInstanceOperation(    const char* cimMethodName,    AuditEvent eventType,    const String& userName,    const String& ipAddr,    const CIMNamespaceName& nameSpace,

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -