ServerInstance->Extensions.Register(&cmd.CertExt);
- Implementation eventlist[] = { I_OnWhois, I_OnPreCommand };
- ServerInstance->Modules->Attach(eventlist, this, 2);
+ Implementation eventlist[] = { I_OnWhois, I_OnPreCommand, I_OnSetConnectClass };
+ ServerInstance->Modules->Attach(eventlist, this, 3);
}
Version GetVersion()
return false;
}
- ModResult OnPreCommand(std::string &command, std::vector<std::string> ¶meters, User *user, bool validated, const std::string &original_line)
+ ModResult OnPreCommand(std::string &command, std::vector<std::string> ¶meters, LocalUser *user, bool validated, const std::string &original_line)
{
irc::string pcmd = command.c_str();
if (ifo->oper_block->getBool("sslonly") && !cert)
{
user->WriteNumeric(491, "%s :This oper login requires an SSL connection.", user->nick.c_str());
- IS_LOCAL(user)->CommandFloodPenalty += 10000;
+ user->CommandFloodPenalty += 10000;
return MOD_RES_DENY;
}
if (ifo->oper_block->readString("fingerprint", fingerprint) && (!cert || cert->GetFingerprint() != fingerprint))
{
user->WriteNumeric(491, "%s :This oper login requires a matching SSL fingerprint.",user->nick.c_str());
- IS_LOCAL(user)->CommandFloodPenalty += 10000;
+ user->CommandFloodPenalty += 10000;
return MOD_RES_DENY;
}
}
return MOD_RES_PASSTHRU;
}
+ ModResult OnSetConnectClass(LocalUser* user, ConnectClass* myclass)
+ {
+ if (myclass->config->getBool("requiressl") && !cmd.CertExt.get(user))
+ return MOD_RES_DENY;
+ return MOD_RES_PASSTHRU;
+ }
+
void OnRequest(Request& request)
{
if (strcmp("GET_USER_CERT", request.id) == 0)