#include "modules/ssl.h"
#include "modules/spanningtree.h"
+enum
+{
+ // From IRCv3 sasl-3.1
+ RPL_SASLSUCCESS = 903,
+ ERR_SASLFAIL = 904,
+ ERR_SASLABORTED = 906,
+ RPL_SASLMECHS = 908
+};
+
static std::string sasl_target;
class ServerTracker : public SpanningTreeEventListener
params.push_back(method);
LocalUser* localuser = IS_LOCAL(user);
- if (method == "EXTERNAL" && localuser)
+ if (localuser)
{
std::string fp = SSLClientCert::GetFingerprint(&localuser->eh);
this->result = this->GetSaslResult(msg[3]);
}
else if (msg[2] == "M")
- this->user->WriteNumeric(908, msg[3], "are available SASL mechanisms");
+ this->user->WriteNumeric(RPL_SASLMECHS, msg[3], "are available SASL mechanisms");
else
ServerInstance->Logs->Log(MODNAME, LOG_DEFAULT, "Services sent an unknown SASL message \"%s\" \"%s\"", msg[2].c_str(), msg[3].c_str());
switch (this->result)
{
case SASL_OK:
- this->user->WriteNumeric(903, "SASL authentication successful");
+ this->user->WriteNumeric(RPL_SASLSUCCESS, "SASL authentication successful");
break;
case SASL_ABORT:
- this->user->WriteNumeric(906, "SASL authentication aborted");
+ this->user->WriteNumeric(ERR_SASLABORTED, "SASL authentication aborted");
break;
case SASL_FAIL:
- this->user->WriteNumeric(904, "SASL authentication failed");
+ this->user->WriteNumeric(ERR_SASLFAIL, "SASL authentication failed");
break;
default:
break;
void init() CXX11_OVERRIDE
{
if (!ServerInstance->Modules->Find("m_services_account.so") || !ServerInstance->Modules->Find("m_cap.so"))
- ServerInstance->Logs->Log(MODNAME, LOG_DEFAULT, "WARNING: m_services_account.so and m_cap.so are not loaded! m_sasl.so will NOT function correctly until these two modules are loaded!");
+ ServerInstance->Logs->Log(MODNAME, LOG_DEFAULT, "WARNING: m_services_account and m_cap are not loaded! m_sasl will NOT function correctly until these two modules are loaded!");
}
void ReadConfig(ConfigStatus& status) CXX11_OVERRIDE