Added validateAccess method

This commit is contained in:
Simon 2016-07-10 17:32:00 +01:00
parent e5f7012998
commit 10feb892b4
2 changed files with 23 additions and 0 deletions

View file

@ -14,6 +14,7 @@
*/
#include "DMRAccessControl.h"
#include "Log.h"
#include <algorithm>
#include <vector>
@ -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;
}

View file

@ -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<unsigned int>& DstIdBlacklistSlot1, const std::vector<unsigned int>& DstIdWhitelistSlot1, const std::vector<unsigned int>& DstIdBlacklistSlot2, const std::vector<unsigned int>& DstIdWhitelistSlot2, const std::vector<unsigned int>& SrcIdBlacklist, bool selfOnly, const std::vector<unsigned int>& prefixes,unsigned int id);