summaryrefslogtreecommitdiff
path: root/src/modules
diff options
context:
space:
mode:
authorlinuxdaemon <linuxdaemon@snoonet.org>2019-03-12 12:43:34 -0500
committerPeter Powell <petpow@saberuk.com>2019-03-12 18:36:23 +0000
commitf808b2db7515f735e61267ffdf25c17c03eb8521 (patch)
tree277323b75b0923e193fc1c3263bb2ab22f70ed05 /src/modules
parent1003c593bfd455734a8f39f137d4ce68e7e87ca8 (diff)
Add SSL flag to WHO response
Diffstat (limited to 'src/modules')
-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))