From 10feb892b4e3966eec881c3d765c4687db7cf0bc Mon Sep 17 00:00:00 2001 From: Simon Date: Sun, 10 Jul 2016 17:32:00 +0100 Subject: [PATCH] Added validateAccess method --- DMRAccessControl.cpp | 21 +++++++++++++++++++++ DMRAccessControl.h | 2 ++ 2 files changed, 23 insertions(+) diff --git a/DMRAccessControl.cpp b/DMRAccessControl.cpp index ea7667f..2e38481 100644 --- a/DMRAccessControl.cpp +++ b/DMRAccessControl.cpp @@ -14,6 +14,7 @@ */ #include "DMRAccessControl.h" +#include "Log.h" #include #include @@ -109,3 +110,23 @@ bool DMRAccessControl::validateSrcId(unsigned int id) return std::find(m_prefixes.begin(), m_prefixes.end(), prefix) != m_prefixes.end(); } } + +bool DMRAccessControl::validateAccess (unsigned int src_id, unsigned int dst_id, unsigned int slot) +{ + if (!DMRAccessControl::validateSrcId(src_id)) { + LogMessage("DMR Slot %u, invalid access attempt from %u (blacklisted)", slot, src_id); + return false; + + } + else if (DMRAccessControl::DstIdBlacklist(dst_id, slot)) { + LogMessage("DMR Slot %u, invalid access attempt to TG%u (TG blacklisted)", slot, dst_id); + return false; + } + else if (!DMRAccessControl::DstIdWhitelist(dst_id, slot, true)) { + LogMessage("DMR Slot %u, invalid access attempt to TG%u (TG not in whitelist)", slot, dst_id); + return false; + } + else + return true; + +} diff --git a/DMRAccessControl.h b/DMRAccessControl.h index cda5947..8bc1449 100644 --- a/DMRAccessControl.h +++ b/DMRAccessControl.h @@ -24,6 +24,8 @@ public: static bool validateSrcId(unsigned int id); + static bool validateAccess (unsigned int src_id, unsigned int dst_id, unsigned int slot); + static void init(const std::vector& DstIdBlacklistSlot1, const std::vector& DstIdWhitelistSlot1, const std::vector& DstIdBlacklistSlot2, const std::vector& DstIdWhitelistSlot2, const std::vector& SrcIdBlacklist, bool selfOnly, const std::vector& prefixes,unsigned int id);