summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/modules/m_sslinfo.cpp16
1 files changed, 16 insertions, 0 deletions
diff --git a/src/modules/m_sslinfo.cpp b/src/modules/m_sslinfo.cpp
index 21857b3d9..1b1ce9eaa 100644
--- a/src/modules/m_sslinfo.cpp
+++ b/src/modules/m_sslinfo.cpp
@@ -21,6 +21,7 @@
#include "modules/ssl.h"
#include "modules/webirc.h"
#include "modules/whois.h"
+#include "modules/who.h"
enum
{
@@ -184,6 +185,7 @@ class ModuleSSLInfo
: public Module
, public WebIRC::EventListener
, public Whois::EventListener
+ , public Who::EventListener
{
private:
CommandSSLInfo cmd;
@@ -197,6 +199,7 @@ class ModuleSSLInfo
ModuleSSLInfo()
: WebIRC::EventListener(this)
, Whois::EventListener(this)
+ , Who::EventListener(this)
, cmd(this)
{
}
@@ -218,6 +221,19 @@ class ModuleSSLInfo
}
}
+ ModResult OnWhoLine(const Who::Request& request, LocalUser* source, User* user, Membership* memb, Numeric::Numeric& numeric) CXX11_OVERRIDE
+ {
+ size_t flag_index;
+ if (!request.GetFieldIndex('f', flag_index))
+ return MOD_RES_PASSTHRU;
+
+ ssl_cert* cert = cmd.sslapi.GetCertificate(user);
+ if (cert)
+ numeric.GetParams()[flag_index].push_back('s');
+
+ return MOD_RES_PASSTHRU;
+ }
+
ModResult OnPreCommand(std::string& command, CommandBase::Params& parameters, LocalUser* user, bool validated) CXX11_OVERRIDE
{
if ((command == "OPER") && (validated))