mirror of
https://github.com/anope/anope.git
synced 2026-06-12 19:14:47 +02:00
Merge the SASL data and ext parameters.
There might be more than this so its better to just store it in a 1+ parameter vector.
This commit is contained in:
@@ -15,8 +15,7 @@ namespace SASL
|
||||
Anope::string source;
|
||||
Anope::string target;
|
||||
Anope::string type;
|
||||
Anope::string data;
|
||||
Anope::string ext;
|
||||
std::vector<Anope::string> data;
|
||||
};
|
||||
|
||||
class Mechanism;
|
||||
|
||||
@@ -606,10 +606,9 @@ public:
|
||||
|
||||
void SendSASLMessage(const SASL::Message &message) override
|
||||
{
|
||||
if (message.ext.empty())
|
||||
Uplink::Send("ENCAP", message.target.substr(0, 3), "SASL", message.source, message.target, message.type, message.data);
|
||||
else
|
||||
Uplink::Send("ENCAP", message.target.substr(0, 3), "SASL", message.source, message.target, message.type, message.data, message.ext);
|
||||
auto newparams = message.data;
|
||||
newparams.insert(newparams.begin(), { message.target.substr(0, 3), "SASL", message.source, message.target, message.type });
|
||||
Uplink::SendInternal({}, Me, "ENCAP", newparams);
|
||||
}
|
||||
|
||||
void SendSVSLogin(const Anope::string &uid, NickAlias *na) override
|
||||
@@ -1797,8 +1796,7 @@ struct IRCDMessageSASL final
|
||||
m.source = params[0];
|
||||
m.target = params[1];
|
||||
m.type = params[2];
|
||||
m.data = params[3];
|
||||
m.ext = params.size() > 4 ? params[4] : "";
|
||||
m.data.assign(params.begin() + 3, params.end());
|
||||
SASL::sasl->ProcessMessage(m);
|
||||
}
|
||||
};
|
||||
|
||||
@@ -178,10 +178,10 @@ public:
|
||||
{
|
||||
Server *s = Server::Find(message.target.substr(0, 3));
|
||||
auto target = s ? s->GetName() : message.target.substr(0, 3);
|
||||
if (message.ext.empty())
|
||||
Uplink::Send("ENCAP", target, "SASL", message.source, message.target, message.type, message.data);
|
||||
else
|
||||
Uplink::Send("ENCAP", target, "SASL", message.source, message.target, message.type, message.data, message.ext);
|
||||
|
||||
auto newparams = message.data;
|
||||
newparams.insert(newparams.begin(), { target, "SASL", message.source, message.target, message.type });
|
||||
Uplink::SendInternal({}, Me, "ENCAP", newparams);
|
||||
}
|
||||
|
||||
void SendSVSLogin(const Anope::string &uid, NickAlias *na) override
|
||||
@@ -251,9 +251,7 @@ struct IRCDMessageEncap final
|
||||
m.source = params[2];
|
||||
m.target = params[3];
|
||||
m.type = params[4];
|
||||
m.data = params[5];
|
||||
m.ext = params.size() > 6 ? params[6] : "";
|
||||
|
||||
m.data.assign(params.begin() + 5, params.end());
|
||||
SASL::sasl->ProcessMessage(m);
|
||||
}
|
||||
|
||||
|
||||
@@ -154,10 +154,10 @@ public:
|
||||
{
|
||||
Server *s = Server::Find(message.target.substr(0, 3));
|
||||
auto target = s ? s->GetName() : message.target.substr(0, 3);
|
||||
if (message.ext.empty())
|
||||
Uplink::Send("ENCAP", target, "SASL", message.source, message.target, message.type, message.data);
|
||||
else
|
||||
Uplink::Send("ENCAP", target, "SASL", message.source, message.target, message.type, message.data, message.ext);
|
||||
|
||||
auto newparams = message.data;
|
||||
newparams.insert(newparams.begin(), { target, "SASL", message.source, message.target, message.type });
|
||||
Uplink::SendInternal({}, Me, "ENCAP", newparams);
|
||||
}
|
||||
|
||||
void SendSVSLogin(const Anope::string &uid, NickAlias *na) override
|
||||
@@ -221,9 +221,7 @@ struct IRCDMessageEncap final
|
||||
m.source = params[2];
|
||||
m.target = params[3];
|
||||
m.type = params[4];
|
||||
m.data = params[5];
|
||||
m.ext = params.size() > 6 ? params[6] : "";
|
||||
|
||||
m.data.assign(params.begin() + 5, params.end());
|
||||
SASL::sasl->ProcessMessage(m);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -401,10 +401,9 @@ private:
|
||||
distmask = message.target.substr(0, p);
|
||||
}
|
||||
|
||||
if (message.ext.empty())
|
||||
Uplink::Send(BotInfo::Find(message.source), "SASL", distmask, message.target, message.type, message.data);
|
||||
else
|
||||
Uplink::Send(BotInfo::Find(message.source), "SASL", distmask, message.target, message.type, message.data, message.ext);
|
||||
auto newparams = message.data;
|
||||
newparams.insert(newparams.begin(), { distmask, message.target, message.type });
|
||||
Uplink::SendInternal({}, BotInfo::Find(message.source), "ENCAP", newparams);
|
||||
}
|
||||
|
||||
void SendSVSLogin(const Anope::string &uid, NickAlias *na) override
|
||||
@@ -1307,9 +1306,7 @@ struct IRCDMessageSASL final
|
||||
m.source = params[1];
|
||||
m.target = params[0];
|
||||
m.type = params[2];
|
||||
m.data = params[3];
|
||||
m.ext = params.size() > 4 ? params[4] : "";
|
||||
|
||||
m.data.assign(params.begin() + 3, params.end());
|
||||
SASL::sasl->ProcessMessage(m);
|
||||
}
|
||||
};
|
||||
|
||||
+10
-7
@@ -28,7 +28,7 @@ public:
|
||||
{
|
||||
// message = [authzid] UTF8NUL authcid UTF8NUL passwd
|
||||
Anope::string message;
|
||||
Anope::B64Decode(m.data, message);
|
||||
Anope::B64Decode(m.data[0], message);
|
||||
|
||||
size_t zcsep = message.find('\0');
|
||||
if (zcsep == Anope::string::npos)
|
||||
@@ -89,7 +89,7 @@ public:
|
||||
|
||||
if (m.type == "S")
|
||||
{
|
||||
mysess->cert = m.ext;
|
||||
mysess->cert = m.data.size() > 1 ? "" : m.data[1];
|
||||
|
||||
sasl->SendMessage(sess, "C", "+");
|
||||
}
|
||||
@@ -132,7 +132,7 @@ public:
|
||||
else if (m.type == "C")
|
||||
{
|
||||
Anope::string decoded;
|
||||
Anope::B64Decode(m.data, decoded);
|
||||
Anope::B64Decode(m.data[0], decoded);
|
||||
|
||||
Anope::string user = "A user";
|
||||
if (!sess->hostname.empty() && !sess->ip.empty())
|
||||
@@ -168,6 +168,9 @@ public:
|
||||
|
||||
void ProcessMessage(const SASL::Message &m) override
|
||||
{
|
||||
if (m.data.empty())
|
||||
return; // Malformed.
|
||||
|
||||
if (m.target != "*")
|
||||
{
|
||||
Server *s = Server::Find(m.target);
|
||||
@@ -183,7 +186,7 @@ public:
|
||||
|
||||
if (m.type == "S")
|
||||
{
|
||||
ServiceReference<Mechanism> mech("SASL::Mechanism", m.data);
|
||||
ServiceReference<Mechanism> mech("SASL::Mechanism", m.data[0]);
|
||||
if (!mech)
|
||||
{
|
||||
Session tmp(NULL, m.source);
|
||||
@@ -223,8 +226,8 @@ public:
|
||||
session = new Session(NULL, m.source);
|
||||
sessions[m.source] = session;
|
||||
}
|
||||
session->hostname = m.data;
|
||||
session->ip = m.ext;
|
||||
session->hostname = m.data[0];
|
||||
session->ip = m.data.size() > 1 ? m.data[1] : "";
|
||||
}
|
||||
|
||||
if (session && session->mech)
|
||||
@@ -279,7 +282,7 @@ public:
|
||||
msg.source = this->GetAgent();
|
||||
msg.target = session->uid;
|
||||
msg.type = mtype;
|
||||
msg.data = data;
|
||||
msg.data.push_back(data);
|
||||
|
||||
IRCD->SendSASLMessage(msg);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user