summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobby- <robby@chat.be>2014-03-22 21:14:02 +0100
committerRobby- <robby@chat.be>2014-03-22 21:14:02 +0100
commit45878bf182f814af07f75f36cf083848e12196e6 (patch)
tree4cfcd8cf3cb0209a4e1e21ce27b909ca2c9716d0
parentf1bec3999d34bcac01bbc4a6920882b0b8345dc0 (diff)
SASL: Also disallow suspended nicks to login using EXTERNAL mechanism. Improve the log message for failed logins.
-rw-r--r--include/modules/sasl.h9
-rw-r--r--modules/m_sasl.cpp2
2 files changed, 9 insertions, 2 deletions
diff --git a/include/modules/sasl.h b/include/modules/sasl.h
index 23337ebe8..ec6d741ca 100644
--- a/include/modules/sasl.h
+++ b/include/modules/sasl.h
@@ -110,7 +110,14 @@ namespace SASL
delete s;
}
- Log(Config->GetClient("NickServ")) << "A user failed to identify for account " << this->GetAccount() << " using SASL";
+ Anope::string accountstatus;
+ NickAlias *na = NickAlias::Find(GetAccount());
+ if (!na)
+ accountstatus = "nonexistent ";
+ else if (na->nc->HasExt("NS_SUSPENDED"))
+ accountstatus = "suspended ";
+
+ Log(Config->GetClient("NickServ")) << "A user failed to identify for " << accountstatus << "account " << this->GetAccount() << " using SASL";
}
};
}
diff --git a/modules/m_sasl.cpp b/modules/m_sasl.cpp
index c976ef2f8..969e5b985 100644
--- a/modules/m_sasl.cpp
+++ b/modules/m_sasl.cpp
@@ -93,7 +93,7 @@ class External : public Mechanism
}
NickCore *nc = certs->FindAccountFromCert(mysess->cert);
- if (!nc)
+ if (!nc || nc->HasExt("NS_SUSPENDED"))
{
sasl->Fail(sess);
delete sess;