summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/modules/sasl.h22
-rw-r--r--modules/nickserv/ns_sasl.cpp96
-rw-r--r--modules/protocol/inspircd.cpp6
-rw-r--r--modules/protocol/plexus.cpp4
-rw-r--r--modules/protocol/solanum.cpp4
-rw-r--r--modules/protocol/unrealircd.cpp4
6 files changed, 73 insertions, 63 deletions
diff --git a/include/modules/sasl.h b/include/modules/sasl.h
index cbc773f5a..648287f79 100644
--- a/include/modules/sasl.h
+++ b/include/modules/sasl.h
@@ -42,7 +42,7 @@ namespace SASL
virtual void RemoveSession(Session *) = 0;
};
- static ServiceReference<SASL::Service> sasl("SASL::Service", "sasl");
+ static ServiceReference<SASL::Service> service("SASL::Service", "sasl");
struct Session
{
@@ -65,8 +65,8 @@ namespace SASL
virtual ~Session()
{
- if (sasl)
- sasl->RemoveSession(this);
+ if (service)
+ service->RemoveSession(this);
}
};
@@ -83,8 +83,8 @@ namespace SASL
virtual ~Mechanism()
{
- if (sasl)
- sasl->DeleteSessions(this, true);
+ if (service)
+ service->DeleteSessions(this, true);
}
};
@@ -114,7 +114,7 @@ namespace SASL
void OnSuccess() override
{
- if (!sasl)
+ if (!service)
return;
NickAlias *na = NickAlias::Find(GetAccount());
@@ -125,24 +125,24 @@ namespace SASL
if (maxlogins && na->nc->users.size() >= maxlogins)
return OnFail();
- Session *s = sasl->GetSession(uid);
+ Session *s = service->GetSession(uid);
if (s)
{
Log(this->GetOwner(), "sasl", Config->GetClient("NickServ")) << GetUserInfo() << " identified to account " << this->GetAccount() << " using SASL";
- sasl->Succeed(s, na->nc);
+ service->Succeed(s, na->nc);
delete s;
}
}
void OnFail() override
{
- if (!sasl)
+ if (!service)
return;
- Session *s = sasl->GetSession(uid);
+ Session *s = service->GetSession(uid);
if (s)
{
- sasl->Fail(s);
+ service->Fail(s);
delete s;
}
diff --git a/modules/nickserv/ns_sasl.cpp b/modules/nickserv/ns_sasl.cpp
index bbbdda696..3b08c9e7c 100644
--- a/modules/nickserv/ns_sasl.cpp
+++ b/modules/nickserv/ns_sasl.cpp
@@ -10,19 +10,20 @@
#include "modules/sasl.h"
#include "modules/ns_cert.h"
-using namespace SASL;
-
class Plain final
- : public Mechanism
+ : public SASL::Mechanism
{
public:
- Plain(Module *o) : Mechanism(o, "PLAIN") { }
+ Plain(Module *o)
+ : SASL::Mechanism(o, "PLAIN")
+ {
+ }
- bool ProcessMessage(Session *sess, const SASL::Message &m) override
+ bool ProcessMessage(SASL::Session *sess, const SASL::Message &m) override
{
if (m.type == "S")
{
- sasl->SendMessage(sess, "C", "+");
+ SASL::service->SendMessage(sess, "C", "+");
}
else if (m.type == "C")
{
@@ -59,8 +60,9 @@ public:
};
class External final
- : public Mechanism
+ : public SASL::Mechanism
{
+private:
ServiceReference<CertService> certs;
struct Session final
@@ -68,11 +70,13 @@ class External final
{
std::vector<Anope::string> certs;
- Session(Mechanism *m, const Anope::string &u) : SASL::Session(m, u) { }
+ Session(SASL::Mechanism *m, const Anope::string &u) : SASL::Session(m, u) { }
};
public:
- External(Module *o) : Mechanism(o, "EXTERNAL"), certs("CertService", "certs")
+ External(Module *o)
+ : SASL::Mechanism(o, "EXTERNAL")
+ , certs("CertService", "certs")
{
if (!IRCD || !IRCD->CanCertFP)
throw ModuleException("No CertFP");
@@ -91,7 +95,7 @@ public:
{
mysess->certs.assign(m.data.begin() + 1, m.data.end());
- sasl->SendMessage(sess, "C", "+");
+ SASL::service->SendMessage(sess, "C", "+");
}
else if (m.type == "C")
{
@@ -112,7 +116,7 @@ public:
}
Log(this->owner, "sasl", Config->GetClient("NickServ")) << sess->GetUserInfo() << " identified to account " << nc->display << " using SASL EXTERNAL";
- sasl->Succeed(sess, nc);
+ SASL::service->Succeed(sess, nc);
delete sess;
return true;
}
@@ -126,16 +130,19 @@ public:
};
class Anonymous final
- : public Mechanism
+ : public SASL::Mechanism
{
public:
- Anonymous(Module *o) : Mechanism(o, "ANONYMOUS") { }
+ Anonymous(Module *o)
+ : SASL::Mechanism(o, "ANONYMOUS")
+ {
+ }
- bool ProcessMessage(Session *sess, const SASL::Message &m) override
+ bool ProcessMessage(SASL::Session *sess, const SASL::Message &m) override
{
if (m.type == "S")
{
- sasl->SendMessage(sess, "C", "+");
+ SASL::service->SendMessage(sess, "C", "+");
}
else if (m.type == "C")
{
@@ -147,7 +154,7 @@ public:
user += " [" + decoded + "]";
Log(this->owner, "sasl", Config->GetClient("NickServ")) << user << " unidentified using SASL ANONYMOUS";
- sasl->Succeed(sess, nullptr);
+ SASL::service->Succeed(sess, nullptr);
}
return true;
}
@@ -165,8 +172,8 @@ public:
SASLService(Module *o)
: SASL::Service(o)
, Timer(o, 60, true)
- {
- }
+ {
+ }
~SASLService() override
{
@@ -190,17 +197,17 @@ public:
}
}
- Session *session = GetSession(m.source);
+ auto *session = GetSession(m.source);
if (m.type == "S")
{
- ServiceReference<Mechanism> mech("SASL::Mechanism", m.data[0]);
+ ServiceReference<SASL::Mechanism> mech("SASL::Mechanism", m.data[0]);
if (!mech)
{
- Session tmp(NULL, m.source);
+ SASL::Session tmp(NULL, m.source);
- sasl->SendMechs(&tmp);
- sasl->Fail(&tmp);
+ SASL::service->SendMechs(&tmp);
+ SASL::service->Fail(&tmp);
return;
}
@@ -231,7 +238,7 @@ public:
{
if (!session)
{
- session = new Session(NULL, m.source);
+ session = new SASL::Session(NULL, m.source);
sessions[m.source] = session;
}
session->hostname = m.data[0];
@@ -257,24 +264,24 @@ public:
return agent;
}
- Session *GetSession(const Anope::string &uid) override
+ SASL::Session *GetSession(const Anope::string &uid) override
{
- std::map<Anope::string, Session *>::iterator it = sessions.find(uid);
+ auto it = sessions.find(uid);
if (it != sessions.end())
return it->second;
return NULL;
}
- void RemoveSession(Session *sess) override
+ void RemoveSession(SASL::Session *sess) override
{
sessions.erase(sess->uid);
}
- void DeleteSessions(Mechanism *mech, bool da) override
+ void DeleteSessions(SASL::Mechanism *mech, bool da) override
{
- for (std::map<Anope::string, Session *>::iterator it = sessions.begin(); it != sessions.end();)
+ for (auto it = sessions.begin(); it != sessions.end();)
{
- std::map<Anope::string, Session *>::iterator del = it++;
+ auto del = it++;
if (*del->second->mech == mech)
{
if (da)
@@ -284,7 +291,7 @@ public:
}
}
- void SendMessage(Session *session, const Anope::string &mtype, const Anope::string &data) override
+ void SendMessage(SASL::Session *session, const Anope::string &mtype, const Anope::string &data) override
{
SASL::Message msg;
msg.source = this->GetAgent();
@@ -292,10 +299,10 @@ public:
msg.type = mtype;
msg.data.push_back(data);
- protocol_interface->SendSASLMessage(msg);
+ SASL::protocol_interface->SendSASLMessage(msg);
}
- void Succeed(Session *session, NickCore *nc) override
+ void Succeed(SASL::Session *session, NickCore *nc) override
{
// If the user is already introduced then we log them in now.
// Otherwise, we send an SVSLOGIN to log them in later.
@@ -310,12 +317,12 @@ public:
}
else
{
- protocol_interface->SendSVSLogin(session->uid, na);
+ SASL::protocol_interface->SendSVSLogin(session->uid, na);
}
this->SendMessage(session, "D", "S");
}
- void Fail(Session *session) override
+ void Fail(SASL::Session *session) override
{
this->SendMessage(session, "D", "F");
@@ -348,7 +355,7 @@ public:
}
}
- void SendMechs(Session *session) override
+ void SendMechs(SASL::Session *session) override
{
std::vector<Anope::string> mechs = Service::GetServiceKeys("SASL::Mechanism");
Anope::string buf;
@@ -397,21 +404,24 @@ class ModuleSASL final
void CheckMechs()
{
std::vector<Anope::string> newmechs = ::Service::GetServiceKeys("SASL::Mechanism");
- if (newmechs == mechs || !protocol_interface)
+ if (newmechs == mechs || !SASL::protocol_interface)
return;
mechs = newmechs;
// If we are connected to the network then broadcast the mechlist.
if (Me && Me->IsSynced())
- protocol_interface->SendSASLMechanisms(mechs);
+ SASL::protocol_interface->SendSASLMechanisms(mechs);
}
public:
- ModuleSASL(const Anope::string &modname, const Anope::string &creator) : Module(modname, creator, VENDOR),
- sasl(this), anonymous(this), plain(this)
+ ModuleSASL(const Anope::string &modname, const Anope::string &creator)
+ : Module(modname, creator, VENDOR)
+ , sasl(this)
+ , anonymous(this)
+ , plain(this)
{
- if (!protocol_interface)
+ if (!SASL::protocol_interface)
throw ModuleException("Your IRCd does not support SASL");
try
@@ -440,8 +450,8 @@ public:
void OnPreUplinkSync(Server *) override
{
// We have not yet sent a mechanism list so always do it here.
- if (!protocol_interface)
- protocol_interface->SendSASLMechanisms(mechs);
+ if (SASL::protocol_interface)
+ SASL::protocol_interface->SendSASLMechanisms(mechs);
}
};
diff --git a/modules/protocol/inspircd.cpp b/modules/protocol/inspircd.cpp
index 3f84adc28..56fae4ba9 100644
--- a/modules/protocol/inspircd.cpp
+++ b/modules/protocol/inspircd.cpp
@@ -1793,7 +1793,7 @@ struct IRCDMessageSASL final
void Run(MessageSource &source, const std::vector<Anope::string> &params, const Anope::map<Anope::string> &tags) override
{
- if (!SASL::sasl)
+ if (!SASL::service)
return;
SASL::Message m;
@@ -1801,7 +1801,7 @@ struct IRCDMessageSASL final
m.target = params[1];
m.type = params[2];
m.data.assign(params.begin() + 3, params.end());
- SASL::sasl->ProcessMessage(m);
+ SASL::service->ProcessMessage(m);
}
};
@@ -2396,7 +2396,7 @@ struct IRCDMessageUID final
auto ts = IRCD->ExtractTimestamp(params[1]);
NickAlias *na = NULL;
- if (SASL::sasl)
+ if (SASL::service)
for (std::list<SASLUser>::iterator it = saslusers.begin(); it != saslusers.end();)
{
SASLUser &u = *it;
diff --git a/modules/protocol/plexus.cpp b/modules/protocol/plexus.cpp
index 7bfcd4948..3570c45f7 100644
--- a/modules/protocol/plexus.cpp
+++ b/modules/protocol/plexus.cpp
@@ -248,14 +248,14 @@ struct IRCDMessageEncap final
}
}
- else if (params[1] == "SASL" && SASL::sasl && params.size() >= 6)
+ else if (params[1] == "SASL" && SASL::service && params.size() >= 6)
{
SASL::Message m;
m.source = params[2];
m.target = params[3];
m.type = params[4];
m.data.assign(params.begin() + 5, params.end());
- SASL::sasl->ProcessMessage(m);
+ SASL::service->ProcessMessage(m);
}
return;
diff --git a/modules/protocol/solanum.cpp b/modules/protocol/solanum.cpp
index ab2d71b25..c56f95402 100644
--- a/modules/protocol/solanum.cpp
+++ b/modules/protocol/solanum.cpp
@@ -217,14 +217,14 @@ struct IRCDMessageEncap final
*
* Solanum only accepts messages from SASL agents; these must have umode +S
*/
- else if (params[1] == "SASL" && SASL::sasl && params.size() >= 6)
+ else if (params[1] == "SASL" && SASL::service && params.size() >= 6)
{
SASL::Message m;
m.source = params[2];
m.target = params[3];
m.type = params[4];
m.data.assign(params.begin() + 5, params.end());
- SASL::sasl->ProcessMessage(m);
+ SASL::service->ProcessMessage(m);
}
}
};
diff --git a/modules/protocol/unrealircd.cpp b/modules/protocol/unrealircd.cpp
index 35df271d7..4d0a2df16 100644
--- a/modules/protocol/unrealircd.cpp
+++ b/modules/protocol/unrealircd.cpp
@@ -1301,7 +1301,7 @@ struct IRCDMessageSASL final
void Run(MessageSource &source, const std::vector<Anope::string> &params, const Anope::map<Anope::string> &tags) override
{
- if (!SASL::sasl)
+ if (!SASL::service)
return;
SASL::Message m;
@@ -1309,7 +1309,7 @@ struct IRCDMessageSASL final
m.target = params[0];
m.type = params[2];
m.data.assign(params.begin() + 3, params.end());
- SASL::sasl->ProcessMessage(m);
+ SASL::service->ProcessMessage(m);
}
};