diff options
Diffstat (limited to 'cpp/src/qpid/acl')
| -rw-r--r-- | cpp/src/qpid/acl/Acl.cpp | 29 | ||||
| -rw-r--r-- | cpp/src/qpid/acl/Acl.h | 3 | ||||
| -rw-r--r-- | cpp/src/qpid/acl/management-schema.xml | 42 |
3 files changed, 39 insertions, 35 deletions
diff --git a/cpp/src/qpid/acl/Acl.cpp b/cpp/src/qpid/acl/Acl.cpp index 0a793c88e0..bc932d836c 100644 --- a/cpp/src/qpid/acl/Acl.cpp +++ b/cpp/src/qpid/acl/Acl.cpp @@ -25,6 +25,10 @@ #include "qpid/shared_ptr.h" #include "qpid/log/Logger.h" #include "qmf/org/apache/qpid/acl/Package.h" +#include "qmf/org/apache/qpid/acl/EventAllow.h" +#include "qmf/org/apache/qpid/acl/EventDeny.h" +#include "qmf/org/apache/qpid/acl/EventFileLoaded.h" +#include "qmf/org/apache/qpid/acl/EventFileLoadFailed.h" #include <map> @@ -41,7 +45,7 @@ namespace _qmf = qmf::org::apache::qpid::acl; Acl::Acl (AclValues& av, broker::Broker& b): aclValues(av), broker(&b), transferAcl(false) { - ManagementAgent* agent = ManagementAgent::Singleton::getInstance(); + agent = ManagementAgent::Singleton::getInstance(); if (agent != 0){ _qmf::Package packageInit(agent); @@ -86,7 +90,11 @@ Acl::Acl (AclValues& av, broker::Broker& b): aclValues(av), broker(&b), transfer switch (aclreslt) { case ALLOWLOG: - QPID_LOG(info, "ACL Allow id:" << id <<" action:" << AclHelper::getActionStr(action) << " ObjectType:" << AclHelper::getObjectTypeStr(objType) << " Name:" << name ); + QPID_LOG(info, "ACL Allow id:" << id <<" action:" << AclHelper::getActionStr(action) << + " ObjectType:" << AclHelper::getObjectTypeStr(objType) << " Name:" << name ); + agent->raiseEvent(_qmf::EventAllow(id, AclHelper::getActionStr(action), + AclHelper::getObjectTypeStr(objType), + name, framing::FieldTable())); case ALLOW: return true; case DENY: @@ -94,13 +102,12 @@ Acl::Acl (AclValues& av, broker::Broker& b): aclValues(av), broker(&b), transfer return false; case DENYLOG: if (mgmtObject!=0) mgmtObject->inc_aclDenyCount(); - default: - QPID_LOG(info, "ACL Deny id:" << id << " action:" << AclHelper::getActionStr(action) << " ObjectType:" << AclHelper::getObjectTypeStr(objType) << " Name:" << name); - if (mgmtObject!=0){ - framing::FieldTable _params; - mgmtObject->event_aclEvent(1, id, AclHelper::getActionStr(action),AclHelper::getObjectTypeStr(objType),name, _params); - } - return false; + default: + QPID_LOG(info, "ACL Deny id:" << id << " action:" << AclHelper::getActionStr(action) << " ObjectType:" << AclHelper::getObjectTypeStr(objType) << " Name:" << name); + agent->raiseEvent(_qmf::EventDeny(id, AclHelper::getActionStr(action), + AclHelper::getObjectTypeStr(objType), + name, framing::FieldTable())); + return false; } return false; } @@ -115,7 +122,7 @@ Acl::Acl (AclValues& av, broker::Broker& b): aclValues(av), broker(&b), transfer boost::shared_ptr<AclData> d(new AclData); AclReader ar; if (ar.read(aclFile, d)){ - mgmtObject->event_fileNotLoaded("","See log for file load reason failure"); + agent->raiseEvent(_qmf::EventFileLoadFailed("", "See log for file load reason failure")); return false; } @@ -127,7 +134,7 @@ Acl::Acl (AclValues& av, broker::Broker& b): aclValues(av), broker(&b), transfer sys::AbsTime now = sys::AbsTime::now(); int64_t ns = sys::Duration(now); mgmtObject->set_lastAclLoad(ns); - mgmtObject->event_fileLoaded(""); + agent->raiseEvent(_qmf::EventFileLoaded("")); } return true; } diff --git a/cpp/src/qpid/acl/Acl.h b/cpp/src/qpid/acl/Acl.h index fe1c1500bb..8a3825f683 100644 --- a/cpp/src/qpid/acl/Acl.h +++ b/cpp/src/qpid/acl/Acl.h @@ -27,6 +27,7 @@ #include "qpid/RefCounted.h" #include "qpid/broker/AclModule.h" #include "qpid/management/Manageable.h" +#include "qpid/agent/ManagementAgent.h" #include "qmf/org/apache/qpid/acl/Acl.h" #include <map> @@ -57,7 +58,7 @@ private: bool transferAcl; boost::shared_ptr<AclData> data; qmf::org::apache::qpid::acl::Acl* mgmtObject; // mgnt owns lifecycle - + qpid::management::ManagementAgent* agent; public: Acl (AclValues& av, broker::Broker& b); diff --git a/cpp/src/qpid/acl/management-schema.xml b/cpp/src/qpid/acl/management-schema.xml index 7d20353755..f362561356 100644 --- a/cpp/src/qpid/acl/management-schema.xml +++ b/cpp/src/qpid/acl/management-schema.xml @@ -17,32 +17,28 @@ --> <class name="acl"> - <property name="brokerRef" type="objId" references="qpid.Broker" access="RO" index="y" parentRef="y"/> - <property name="policyFile" type="sstr" access="RO" desc="Name of the policy file"/> - <property name="enforcingAcl" type="bool" access="RO" desc="Currently Enforcing ACL"/> - <property name="transferAcl" type="bool" access="RO" desc="Any transfer ACL rules in force"/> - <property name="lastAclLoad" type="absTime" access="RO" desc="Timestamp of last successful load of ACL"/> - <statistic name="aclDenyCount" type="count64" unit="record" desc="Number of ACL requests denied"/> + <property name="brokerRef" type="objId" references="org.apache.qpid.broker:Broker" access="RO" index="y" parentRef="y"/> + <property name="policyFile" type="sstr" access="RO" desc="Name of the policy file"/> + <property name="enforcingAcl" type="bool" access="RO" desc="Currently Enforcing ACL"/> + <property name="transferAcl" type="bool" access="RO" desc="Any transfer ACL rules in force"/> + <property name="lastAclLoad" type="absTime" access="RO" desc="Timestamp of last successful load of ACL"/> + <statistic name="aclDenyCount" type="count64" unit="request" desc="Number of ACL requests denied"/> <method name="reloadACLFile" desc="Reload the ACL file"/> + </class> - <event name="aclEvent" defaultSeverity="info" desc="Event generated by the ACL policy"> - <arg name="denied" type="bool"/> - <arg name="authId" type="sstr"/> - <arg name="action" type="sstr"/> - <arg name="objType" type="sstr"/> - <arg name="name" type="sstr"/> - <arg name="params" type="map"/> - </event> - - <event name="fileLoaded" defaultSeverity="warning" desc="ACL file successfully loaded - New policy in effect"> - <arg name="authId" type="sstr" desc="Name of user who initiated the file load"/> - </event> + <eventArguments> + <arg name="action" type="sstr"/> + <arg name="arguments" type="map"/> + <arg name="objectName" type="sstr"/> + <arg name="objectType" type="sstr"/> + <arg name="reason" type="sstr"/> + <arg name="userId" type="sstr"/> + </eventArguments> - <event name="fileNotLoaded" defaultSeverity="error" desc="Replacement ACL file could not be loaded"> - <arg name="authId" type="sstr" desc="Name of user who initiated the file load"/> - <arg name="reason" type="sstr" desc="Reason for failure"/> - </event> - </class> + <event name="allow" args="userId, action, objectType, objectName, arguments"/> + <event name="deny" args="userId, action, objectType, objectName, arguments"/> + <event name="fileLoaded" args="userId"/> + <event name="fileLoadFailed" args="userId, reason"/> </schema> |
