summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/modules/sasl.h40
-rw-r--r--modules/m_sasl.cpp42
2 files changed, 41 insertions, 41 deletions
diff --git a/include/modules/sasl.h b/include/modules/sasl.h
index f997ead76..a7c440110 100644
--- a/include/modules/sasl.h
+++ b/include/modules/sasl.h
@@ -72,4 +72,44 @@ namespace SASL
sasl->DeleteSessions(this, true);
}
};
+
+ class IdentifyRequest : public ::IdentifyRequest
+ {
+ Anope::string uid;
+
+ public:
+ IdentifyRequest(Module *m, const Anope::string &id, const Anope::string &acc, const Anope::string &pass) : ::IdentifyRequest(m, acc, pass), uid(id) { }
+
+ void OnSuccess() anope_override
+ {
+ if (!sasl)
+ return;
+
+ NickAlias *na = NickAlias::Find(GetAccount());
+ if (!na)
+ return OnFail();
+
+ Session *s = sasl->GetSession(uid);
+ if (s)
+ {
+ sasl->Succeed(s, na->nc);
+ delete s;
+ }
+ }
+
+ void OnFail() anope_override
+ {
+ if (!sasl)
+ return;
+
+ Session *s = sasl->GetSession(uid);
+ if (s)
+ {
+ sasl->Fail(s);
+ delete s;
+ }
+
+ Log(Config->GetClient("NickServ")) << "A user failed to identify for account " << this->GetAccount() << " using SASL";
+ }
+ };
}
diff --git a/modules/m_sasl.cpp b/modules/m_sasl.cpp
index 83ac85938..c99f052ae 100644
--- a/modules/m_sasl.cpp
+++ b/modules/m_sasl.cpp
@@ -14,46 +14,6 @@ using namespace SASL;
class Plain : public Mechanism
{
- class IdentifyRequest : public ::IdentifyRequest
- {
- Anope::string uid;
-
- public:
- IdentifyRequest(Module *m, const Anope::string &id, const Anope::string &acc, const Anope::string &pass) : ::IdentifyRequest(m, acc, pass), uid(id) { }
-
- void OnSuccess() anope_override
- {
- if (!sasl)
- return;
-
- NickAlias *na = NickAlias::Find(GetAccount());
- if (!na)
- return OnFail();
-
- Session *s = sasl->GetSession(uid);
- if (s)
- {
- sasl->Succeed(s, na->nc);
- delete s;
- }
- }
-
- void OnFail() anope_override
- {
- if (!sasl)
- return;
-
- Session *s = sasl->GetSession(uid);
- if (s)
- {
- sasl->Fail(s);
- delete s;
- }
-
- Log(Config->GetClient("NickServ")) << "A user failed to identify for account " << this->GetAccount() << " using SASL";
- }
- };
-
public:
Plain(Module *o) : Mechanism(o, "PLAIN") { }
@@ -83,7 +43,7 @@ class Plain : public Mechanism
if (acc.empty() || pass.empty())
return;
- IdentifyRequest *req = new IdentifyRequest(this->owner, m.source, acc, pass);
+ SASL::IdentifyRequest *req = new SASL::IdentifyRequest(this->owner, m.source, acc, pass);
FOREACH_MOD(OnCheckAuthentication, (NULL, req));
req->Dispatch();
}