diff mod_block_registrations/mod_block_registrations.lua @ 6404:a1df76ba4f68

mod_block_registrations: Add username length requirements
author Kim Alvefur <zash@zash.se>
date Sat, 14 Feb 2026 12:57:22 +0100
parents f110bce35630
children
line wrap: on
line diff
--- a/mod_block_registrations/mod_block_registrations.lua	Wed Feb 11 09:40:30 2026 +0000
+++ b/mod_block_registrations/mod_block_registrations.lua	Sat Feb 14 12:57:22 2026 +0100
@@ -1,4 +1,5 @@
 local nodeprep = require "util.encodings".stringprep.nodeprep;
+local it = require "util.iterators";
 
 local normal = nodeprep;
 if module:get_option_boolean("block_registrations_confusable", true) then
@@ -26,11 +27,17 @@
 }) / normal;
 local block_patterns = module:get_option_set("block_registrations_matching", {});
 local require_pattern = module:get_option_string("block_registrations_require");
+local length_min = module:get_option_number("block_registrations_length_minimum", 1);
+local length_max = module:get_option_number("block_registrations_length_maximum", 255);
 
 function is_blocked(username)
 	-- Check if the username is simply blocked
 	if block_users:contains(username) then return true; end
 
+	-- Check how long the username is (Unicode characters)
+	local length = it.count(username:gmatch("[\000-\127\194-\253][\128-\191]*"));
+	if length < length_min or length > length_max then return true; end
+
 	local normalized_username = normal(username);
 	if block_users:contains(normalized_username) then return true; end