X-Git-Url: https://jfr.im/git/solanum.git/blobdiff_plain/04f832b7783aa1973717135a04aaa89d62b12e25..1548c140218b956485b3fd5c386447a2add59864:/extensions/extb_ssl.c diff --git a/extensions/extb_ssl.c b/extensions/extb_ssl.c index 20e18786..627e5439 100644 --- a/extensions/extb_ssl.c +++ b/extensions/extb_ssl.c @@ -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; }