extensions/extb_ssl.c: add support for matching by certificate fingerprint
This commit is contained in:
parent
68ba8e8125
commit
e0f1c3b5bc
2 changed files with 15 additions and 3 deletions
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
Loading…
Reference in a new issue