]> jfr.im git - irc/charybdis-ircd/charybdis.git/commitdiff
extensions/extb_ssl.c: add support for matching by certificate fingerprint
authorEllenor Malik <redacted>
Fri, 16 Jun 2017 01:48:30 +0000 (01:48 +0000)
committerAaron Jones <redacted>
Fri, 16 Jun 2017 01:51:38 +0000 (01:51 +0000)
extensions/extb_ssl.c
help/opers/extban

index 73e835b15564bd9ed8ab90dc889385f313e97627..fcc0ba22e1d0de568f4bd2f9dcee0da8df5e7273 100644 (file)
@@ -1,5 +1,9 @@
 /* SSL extban type: matches ssl users */
 
+/* This file is available under the same conditions as the rest of
+   https://github.com/asterIRC/ircd-chatd, and by extension, the rest
+   of Charybdis. */
+
 #include "stdinc.h"
 #include "modules.h"
 #include "client.h"
@@ -9,7 +13,7 @@ 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_AV1(extb_ssl, _modinit, _moddeinit, NULL, NULL, NULL, "$Revision$");
+DECLARE_MODULE_AV1(extb_ssl, _modinit, _moddeinit, NULL, NULL, NULL, "1.05");
 
 static int
 _modinit(void)
@@ -26,12 +30,19 @@ _moddeinit(void)
 }
 
 static int eb_ssl(const char *data, struct Client *client_p,
-               struct Channel *chptr, long mode_type)
+                  struct Channel *chptr, long mode_type)
 {
 
        (void)chptr;
        (void)mode_type;
+
        if (data != NULL)
-               return EXTBAN_INVALID;
+       {
+               if (EmptyString(client_p->certfp))
+                       return EXTBAN_NOMATCH;
+
+               return !irccmp(data, client_p->certfp) ? EXTBAN_MATCH : EXTBAN_NOMATCH;
+       }
+
        return IsSSLClient(client_p) ? EXTBAN_MATCH : EXTBAN_NOMATCH;
 }
index 5a0e8e68b18e0bedf74cb9d15fd31046786506ab..a7af800e7761d3ae160aa5fd6d772042dca3c183 100644 (file)
@@ -28,4 +28,5 @@ Unless noted below, all types can be used with +b, +q, +e and +I.
               channel
   $x:<mask> - Bans all users with matching nick!user@host#gecos
      $z     - Matches all SSL users
+  $z:<data> - Matches all SSL users with a fingerprint matching the data