mirror of
https://github.com/g4klx/MMDVMHost
synced 2025-12-22 16:25:45 +08:00
Added validateAccess method
This commit is contained in:
@@ -14,6 +14,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include "DMRAccessControl.h"
|
#include "DMRAccessControl.h"
|
||||||
|
#include "Log.h"
|
||||||
|
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
#include <vector>
|
#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();
|
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;
|
||||||
|
|
||||||
|
}
|
||||||
|
|||||||
@@ -24,6 +24,8 @@ public:
|
|||||||
|
|
||||||
static bool validateSrcId(unsigned int id);
|
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);
|
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);
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user