From 3c06c1b73800cefc74e9e86f471d01289454fc5c Mon Sep 17 00:00:00 2001 From: Les De Ridder Date: Wed, 14 Oct 2020 05:59:33 +0200 Subject: [PATCH] Ignore command case (non-strict) --- source/ircd/connection.d | 5 ++++- source/ircd/server.d | 4 ++-- source/ircd/versions.d | 3 +++ 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/source/ircd/connection.d b/source/ircd/connection.d index 3687b34..53c1049 100644 --- a/source/ircd/connection.d +++ b/source/ircd/connection.d @@ -158,7 +158,10 @@ class Connection continue; } - //TODO: If RFC-strictness is off, ignore command case + version (BasicFixes) + { + message.command = message.command.map!toUpper.to!string; + } //NOTE: The RFCs don't specify what 'being idle' means // We assume that it's sending any message that isn't a PING/PONG. diff --git a/source/ircd/server.d b/source/ircd/server.d index 42aa76a..6578b53 100644 --- a/source/ircd/server.d +++ b/source/ircd/server.d @@ -229,8 +229,8 @@ class Server { foreach (c; connections.filter!(c => c.visibleTo(origin)) .filter!(c => !operatorsOnly || c.isOperator) - .filter!(c => [c.hostname, c.servername, c.realname, - c.nick].any!(n => wildcardMatch(n, mask)))) + .filter!(c => [c.hostname, c.servername, c.realname, c.nick] + .any!(n => wildcardMatch(n, mask)))) { //TODO: Don't leak secret/private channels if RFC-strictness is off (the RFCs don't seem to say anything about it?) auto channelName = c.channels.empty ? "*" : c.channels.array[0].name; diff --git a/source/ircd/versions.d b/source/ircd/versions.d index 099f800..988e99a 100644 --- a/source/ircd/versions.d +++ b/source/ircd/versions.d @@ -11,6 +11,9 @@ module ircd.versions; (* NotStrict: enabled when any versions are enabled that disable RFC-strictness, i.e. any of the above) +/ +//TODO: Implement 'SupportTLS' +//TODO: Implement 'MaxNickLengthConfigurable' + version (Modern) { version = SupportTLS;