]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/modules/m_sslinfo.cpp
m_httpd: use http_response_str() instead of Response().
[user/henk/code/inspircd.git] / src / modules / m_sslinfo.cpp
index d3514eac6acc4ccf1e254b517fbce2ad839e1578..21857b3d955455e5b2150c60dc25a6bbd49a954c 100644 (file)
@@ -188,6 +188,11 @@ class ModuleSSLInfo
  private:
        CommandSSLInfo cmd;
 
+       bool MatchFP(ssl_cert* const cert, const std::string& fp) const
+       {
+               return irc::spacesepstream(fp).Contains(cert->GetFingerprint());
+       }
+
  public:
        ModuleSSLInfo()
                : WebIRC::EventListener(this)
@@ -231,7 +236,7 @@ class ModuleSSLInfo
                                }
 
                                std::string fingerprint;
-                               if (ifo->oper_block->readString("fingerprint", fingerprint) && (!cert || cert->GetFingerprint() != fingerprint))
+                               if (ifo->oper_block->readString("fingerprint", fingerprint) && (!cert || !MatchFP(cert, fingerprint)))
                                {
                                        user->WriteNumeric(ERR_NOOPERHOST, "This oper login requires a matching SSL certificate fingerprint.");
                                        user->CommandFloodPenalty += 10000;
@@ -275,7 +280,7 @@ class ModuleSSLInfo
                {
                        OperInfo* ifo = i->second;
                        std::string fp = ifo->oper_block->getString("fingerprint");
-                       if (fp == cert->fingerprint && ifo->oper_block->getBool("autologin"))
+                       if (MatchFP(cert, fp) && ifo->oper_block->getBool("autologin"))
                                user->Oper(ifo);
                }
        }