summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/xline.h14
-rw-r--r--src/users.cpp8
-rw-r--r--src/xline.cpp26
3 files changed, 24 insertions, 24 deletions
diff --git a/include/xline.h b/include/xline.h
index d9da09c0c..521035098 100644
--- a/include/xline.h
+++ b/include/xline.h
@@ -283,28 +283,28 @@ class XLineManager
char* matches_qline(const char* nick);
/** Check if a hostname matches a GLine
- * @return host The host to check against
+ * @param user The user to check against
* @return The reason for the line if there is a match, or NULL if there is no match
*/
- char* matches_gline(const char* host);
+ char* matches_gline(userrec* user);
/** Check if a IP matches a ZLine
- * @return ipaddr The IP to check against
+ * @param ipaddr The IP to check against
* @return The reason for the line if there is a match, or NULL if there is no match
*/
char* matches_zline(const char* ipaddr);
/** Check if a hostname matches a KLine
- * @return host The host to check against
+ * @param user The user to check against
* @return The reason for the line if there is a match, or NULL if there is no match
*/
- char* matches_kline(const char* host);
+ char* matches_kline(userrec* user);
/** Check if a hostname matches a ELine
- * @return host The host to check against
+ * @param user The user to check against
* @return The reason for the line if there is a match, or NULL if there is no match
*/
- char* matches_exception(const char* host);
+ char* matches_exception(userrec* user);
/** Expire any pending non-permenant lines
*/
diff --git a/src/users.cpp b/src/users.cpp
index 53d46ceb8..ee348fac4 100644
--- a/src/users.cpp
+++ b/src/users.cpp
@@ -973,7 +973,7 @@ void userrec::AddClient(InspIRCd* Instance, int socket, int port, bool iscached,
userrec::QuitUser(Instance, _new,"Server is full");
return;
}
- char* e = Instance->XLines->matches_exception(ipaddr);
+ char* e = Instance->XLines->matches_exception(_new);
if (!e)
{
char* r = Instance->XLines->matches_zline(ipaddr);
@@ -1070,11 +1070,11 @@ void userrec::FullConnect(CullList* Goners)
char match_against[MAXBUF];
snprintf(match_against,MAXBUF,"%s@%s", this->ident, this->host);
- char* e = ServerInstance->XLines->matches_exception(match_against);
+ char* e = ServerInstance->XLines->matches_exception(this);
if (!e)
{
- char* r = ServerInstance->XLines->matches_gline(match_against);
+ char* r = ServerInstance->XLines->matches_gline(this);
if (r)
{
@@ -1084,7 +1084,7 @@ void userrec::FullConnect(CullList* Goners)
return;
}
- r = ServerInstance->XLines->matches_kline(match_against);
+ r = ServerInstance->XLines->matches_kline(this);
if (r)
{
diff --git a/src/xline.cpp b/src/xline.cpp
index 2fd36bff5..2430283ce 100644
--- a/src/xline.cpp
+++ b/src/xline.cpp
@@ -381,30 +381,30 @@ char* XLineManager::matches_qline(const char* nick)
// returns a pointer to the reason if a host matches a gline, NULL if it didnt match
-char* XLineManager::matches_gline(const char* host)
+char* XLineManager::matches_gline(userrec* user)
{
if ((glines.empty()) && (pglines.empty()))
return NULL;
for (std::vector<GLine>::iterator i = glines.begin(); i != glines.end(); i++)
- if (match(host,i->hostmask, true))
+ if (match(user->host,i->hostmask, true) || (match(user->GetIPString(),i->hostmask, true)))
return i->reason;
for (std::vector<GLine>::iterator i = pglines.begin(); i != pglines.end(); i++)
- if (match(host,i->hostmask, true))
+ if (match(user->host,i->hostmask, true) || (match(user->GetIPString(),i->hostmask, true)))
return i->reason;
return NULL;
}
-char* XLineManager::matches_exception(const char* host)
+char* XLineManager::matches_exception(userrec* user)
{
if ((elines.empty()) && (pelines.empty()))
return NULL;
char host2[MAXBUF];
- snprintf(host2,MAXBUF,"*@%s",host);
+ snprintf(host2,MAXBUF,"*@%s",user->host);
for (std::vector<ELine>::iterator i = elines.begin(); i != elines.end(); i++)
- if ((match(host,i->hostmask)) || (match(host2,i->hostmask, true)))
+ if ((match(user->host,i->hostmask)) || (match(host2,i->hostmask, true)) || (match(user->GetIPString(),i->hostmask, true)))
return i->reason;
for (std::vector<ELine>::iterator i = pelines.begin(); i != pelines.end(); i++)
- if ((match(host,i->hostmask)) || (match(host2,i->hostmask, true)))
+ if ((match(user->host,i->hostmask)) || (match(host2,i->hostmask, true)) || (match(user->GetIPString(),i->hostmask, true)))
return i->reason;
return NULL;
}
@@ -511,15 +511,15 @@ char* XLineManager::matches_zline(const char* ipaddr)
// returns a pointer to the reason if a host matches a kline, NULL if it didnt match
-char* XLineManager::matches_kline(const char* host)
+char* XLineManager::matches_kline(userrec* user)
{
if ((klines.empty()) && (pklines.empty()))
return NULL;
for (std::vector<KLine>::iterator i = klines.begin(); i != klines.end(); i++)
- if (match(host,i->hostmask, true))
+ if ((match(user->host,i->hostmask, true)) || (match(user->GetIPString(),i->hostmask, true)))
return i->reason;
for (std::vector<KLine>::iterator i = pklines.begin(); i != pklines.end(); i++)
- if (match(host,i->hostmask, true))
+ if ((match(user->host,i->hostmask, true)) || (match(user->GetIPString(),i->hostmask, true)))
return i->reason;
return NULL;
}
@@ -617,12 +617,12 @@ void XLineManager::apply_lines(const int What)
if (elines.size() || pelines.size())
{
// ignore people matching exempts
- if (matches_exception(host))
+ if (matches_exception(u))
continue;
}
if ((What & APPLY_GLINES) && (glines.size() || pglines.size()))
{
- if ((check = matches_gline(host)))
+ if ((check = matches_gline(u)))
{
snprintf(reason,MAXBUF,"G-Lined: %s",check);
Goners->AddItem(u,reason);
@@ -630,7 +630,7 @@ void XLineManager::apply_lines(const int What)
}
if ((What & APPLY_KLINES) && (klines.size() || pklines.size()))
{
- if ((check = matches_kline(host)))
+ if ((check = matches_kline(u)))
{
snprintf(reason,MAXBUF,"K-Lined: %s",check);
Goners->AddItem(u,reason);