]> jfr.im git - solanum.git/blobdiff - extensions/extb_ssl.c
extensions/umode_hide_idle_time: mask times for hidden sources (#373)
[solanum.git] / extensions / extb_ssl.c
index 20e187865a210ef8bdc396a9c3b773591ec260c0..627e5439256f4a47082401b56a1bc48de037e716 100644 (file)
@@ -5,11 +5,13 @@
 #include "client.h"
 #include "ircd.h"
 
+static const char extb_desc[] = "SSL/TLS ($z) extban type";
+
 static int _modinit(void);
 static void _moddeinit(void);
 static int eb_ssl(const char *data, struct Client *client_p, struct Channel *chptr, long mode_type);
 
-DECLARE_MODULE_AV2(extb_ssl, _modinit, _moddeinit, NULL, NULL, NULL, NULL, NULL, NULL);
+DECLARE_MODULE_AV2(extb_ssl, _modinit, _moddeinit, NULL, NULL, NULL, NULL, NULL, extb_desc);
 
 static int
 _modinit(void)
@@ -31,7 +33,18 @@ static int eb_ssl(const char *data, struct Client *client_p,
 
        (void)chptr;
        (void)mode_type;
+
+       if (!IsSecureClient(client_p))
+               return EXTBAN_NOMATCH;
+
        if (data != NULL)
-               return EXTBAN_INVALID;
-       return IsSSLClient(client_p) ? EXTBAN_MATCH : EXTBAN_NOMATCH;
+       {
+               if (EmptyString(client_p->certfp))
+                       return EXTBAN_NOMATCH;
+
+               if (irccmp(data, client_p->certfp) != 0)
+                       return EXTBAN_NOMATCH;
+       }
+
+       return EXTBAN_MATCH;
 }