]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/modules/m_sslinfo.cpp
m_callerid Route ACCEPT to the server of the target user only, do not send METADATA...
[user/henk/code/inspircd.git] / src / modules / m_sslinfo.cpp
index 5516af7ef04a7a000692e047722b4383fa966b47..edf3918e2144586d88f7df70488b61eba9224f48 100644 (file)
@@ -121,19 +121,37 @@ class CommandSSLInfo : public Command
        }
 };
 
+class UserCertificateAPIImpl : public UserCertificateAPIBase
+{
+       SSLCertExt& ext;
+
+ public:
+       UserCertificateAPIImpl(Module* mod, SSLCertExt& certext)
+               : UserCertificateAPIBase(mod), ext(certext)
+       {
+       }
+
+       ssl_cert* GetCertificate(User* user) CXX11_OVERRIDE
+       {
+               return ext.get(user);
+       }
+};
+
 class ModuleSSLInfo : public Module
 {
        CommandSSLInfo cmd;
+       UserCertificateAPIImpl APIImpl;
 
  public:
-       ModuleSSLInfo() : cmd(this)
+       ModuleSSLInfo()
+               : cmd(this), APIImpl(this, cmd.CertExt)
        {
        }
 
        void init() CXX11_OVERRIDE
        {
+               ServerInstance->Modules->AddService(APIImpl);
                ServerInstance->Modules->AddService(cmd);
-
                ServerInstance->Modules->AddService(cmd.CertExt);
 
                Implementation eventlist[] = { I_OnWhois, I_OnPreCommand, I_OnSetConnectClass, I_OnUserConnect, I_OnPostConnect };
@@ -228,15 +246,6 @@ class ModuleSSLInfo : public Module
                        return MOD_RES_DENY;
                return MOD_RES_PASSTHRU;
        }
-
-       void OnRequest(Request& request) CXX11_OVERRIDE
-       {
-               if (strcmp("GET_USER_CERT", request.id) == 0)
-               {
-                       UserCertificateRequest& req = static_cast<UserCertificateRequest&>(request);
-                       req.cert = cmd.CertExt.get(req.user);
-               }
-       }
 };
 
 MODULE_INIT(ModuleSSLInfo)