From 96befc58f073b4f96771b57d728b16742294c2fe Mon Sep 17 00:00:00 2001 From: Sadie Powell Date: Tue, 22 Dec 2020 03:53:00 +0000 Subject: Send RPL_SAVENICK from irc2 when renaming a user to their UUID. --- src/modules/m_codepage.cpp | 3 +++ 1 file changed, 3 insertions(+) (limited to 'src/modules/m_codepage.cpp') diff --git a/src/modules/m_codepage.cpp b/src/modules/m_codepage.cpp index 7a20e6e52..4054c72c1 100644 --- a/src/modules/m_codepage.cpp +++ b/src/modules/m_codepage.cpp @@ -83,7 +83,10 @@ class ModuleCodepage { LocalUser* user = *iter; if (user->nick != user->uuid && !ServerInstance->IsNick(user->nick)) + { + user->WriteNumeric(RPL_SAVENICK, user->uuid, "Your nickname is no longer valid."); user->ChangeNick(user->uuid); + } } } -- cgit v1.3.1-10-gc9f91 From 79cc3caeb8f485ab0bdc405ab4ead54a25ab097c Mon Sep 17 00:00:00 2001 From: Sadie Powell Date: Tue, 22 Dec 2020 04:10:07 +0000 Subject: After changing the codepage rename duplicate users to their UUID. --- src/modules/m_codepage.cpp | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'src/modules/m_codepage.cpp') diff --git a/src/modules/m_codepage.cpp b/src/modules/m_codepage.cpp index 4054c72c1..45fdb3d83 100644 --- a/src/modules/m_codepage.cpp +++ b/src/modules/m_codepage.cpp @@ -76,6 +76,21 @@ class ModuleCodepage hashmap.swap(newhash); } + void CheckDuplicateNick() + { + insp::flat_set duplicates; + const UserManager::LocalList& list = ServerInstance->Users.GetLocalUsers(); + for (UserManager::LocalList::const_iterator iter = list.begin(); iter != list.end(); ++iter) + { + LocalUser* user = *iter; + if (user->nick != user->uuid && !duplicates.insert(user->nick).second) + { + user->WriteNumeric(RPL_SAVENICK, user->uuid, "Your nickname is no longer available."); + user->ChangeNick(user->uuid); + } + } + } + void CheckInvalidNick() { const UserManager::LocalList& list = ServerInstance->Users.GetLocalUsers(); @@ -115,6 +130,7 @@ class ModuleCodepage ServerInstance->Config->CaseMapping = origcasemapname; national_case_insensitive_map = origcasemap; + CheckDuplicateNick(); CheckRehash(casemap); ServerInstance->ISupport.Build(); -- cgit v1.3.1-10-gc9f91