1
0
mirror of https://github.com/anope/anope.git synced 2026-07-03 05:33:13 +02:00

Refactor mask/entry code, allow full matching (against users real host/ip) if their displayed host is their real real host. Also match against cloaked host even if full matching is not being done

This commit is contained in:
Adam
2013-03-13 14:40:49 -05:00
parent 1d16629a6d
commit 1ff7a7c1f1
7 changed files with 92 additions and 122 deletions
+3 -17
View File
@@ -393,28 +393,14 @@ class CoreExport ModeManager
static void UpdateDefaultMLock(ServerConfig *config);
};
/** Entry flags
*/
enum EntryType
{
ENTRYTYPE_CIDR,
ENTRYTYPE_NICK_WILD,
ENTRYTYPE_NICK,
ENTRYTYPE_USER_WILD,
ENTRYTYPE_USER,
ENTRYTYPE_HOST_WILD,
ENTRYTYPE_HOST
};
/** Represents a mask set on a channel (b/e/I)
*/
class CoreExport Entry
{
Anope::string name;
public:
std::set<EntryType> types;
unsigned char cidr_len;
Anope::string mask;
public:
unsigned short cidr_len;
Anope::string nick, user, host;
/** Constructor
@@ -426,7 +412,7 @@ class CoreExport Entry
/** Get the banned mask for this entry
* @return The mask
*/
const Anope::string GetMask();
const Anope::string GetMask() const;
/** Check if this entry matches a user
* @param u The user
+2 -2
View File
@@ -85,12 +85,12 @@ class CoreExport cidr
{
sockaddrs addr;
Anope::string cidr_ip;
unsigned char cidr_len;
unsigned short cidr_len;
public:
cidr(const Anope::string &ip);
cidr(const Anope::string &ip, unsigned char len);
Anope::string mask() const;
bool match(sockaddrs &other);
bool match(const sockaddrs &other);
bool operator<(const cidr &other) const;
bool operator==(const cidr &other) const;