]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/wildcard.cpp
Rename <options:moronbanner> to <options:xlinemessage>.
[user/henk/code/inspircd.git] / src / wildcard.cpp
index eb9151293d8e185747de8ba4a3caaa729a5b1588..345c822d2d3bb58f4823d5623def24be6b670d45 100644 (file)
@@ -19,8 +19,6 @@
  */
 
 
-/* $Core */
-
 #include "inspircd.h"
 #include "hashcomp.h"
 #include "inspstring.h"
@@ -78,7 +76,7 @@ static bool match_internal(const unsigned char *str, const unsigned char *mask,
  * Below here is all wrappers around match_internal
  ********************************************************************/
 
-CoreExport bool InspIRCd::Match(const std::string &str, const std::string &mask, unsigned const char *map)
+bool InspIRCd::Match(const std::string &str, const std::string &mask, unsigned const char *map)
 {
        if (!map)
                map = national_case_insensitive_map;
@@ -86,14 +84,14 @@ CoreExport bool InspIRCd::Match(const std::string &str, const std::string &mask,
        return match_internal((const unsigned char *)str.c_str(), (const unsigned char *)mask.c_str(), map);
 }
 
-CoreExport bool InspIRCd::Match(const  char *str, const char *mask, unsigned const char *map)
+bool InspIRCd::Match(const char *str, const char *mask, unsigned const char *map)
 {
        if (!map)
                map = national_case_insensitive_map;
        return match_internal((const unsigned char *)str, (const unsigned char *)mask, map);
 }
 
-CoreExport bool InspIRCd::MatchCIDR(const std::string &str, const std::string &mask, unsigned const char *map)
+bool InspIRCd::MatchCIDR(const std::string &str, const std::string &mask, unsigned const char *map)
 {
        if (irc::sockets::MatchCIDR(str, mask, true))
                return true;
@@ -105,7 +103,7 @@ CoreExport bool InspIRCd::MatchCIDR(const std::string &str, const std::string &m
        return InspIRCd::Match(str, mask, map);
 }
 
-CoreExport bool InspIRCd::MatchCIDR(const  char *str, const char *mask, unsigned const char *map)
+bool InspIRCd::MatchCIDR(const char *str, const char *mask, unsigned const char *map)
 {
        if (irc::sockets::MatchCIDR(str, mask, true))
                return true;
@@ -117,3 +115,17 @@ CoreExport bool InspIRCd::MatchCIDR(const  char *str, const char *mask, unsigned
        return InspIRCd::Match(str, mask, map);
 }
 
+bool InspIRCd::MatchMask(const std::string& masks, const std::string& hostname, const std::string& ipaddr)
+{
+       std::stringstream masklist(masks);
+       std::string mask;
+       while (masklist >> mask)
+       {
+               if (InspIRCd::Match(hostname, mask, ascii_case_insensitive_map) || 
+                       InspIRCd::MatchCIDR(ipaddr, mask, ascii_case_insensitive_map))
+               {
+                       return true;
+               }
+       }
+       return false;
+}