diff options
| author | 2025-03-23 07:42:47 +0000 | |
|---|---|---|
| committer | 2025-03-23 07:42:47 +0000 | |
| commit | fb219052c8a09bb8fa9635521756819482da2cdd (patch) | |
| tree | e6d6f5fb492c588969d8ac89e1ab312454c23047 /src/usermanager.cpp | |
| parent | Only include <sstream> from files that actually use it. (diff) | |
Move DefaultIsNick/DefaultIsUser/IsNick/IsUser to UserManager.
Diffstat (limited to 'src/usermanager.cpp')
| -rw-r--r-- | src/usermanager.cpp | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/src/usermanager.cpp b/src/usermanager.cpp index b8c355524..491cfdb71 100644 --- a/src/usermanager.cpp +++ b/src/usermanager.cpp @@ -465,3 +465,41 @@ User* UserManager::FindUUID(const std::string& uuid, bool fullyconnected) return user; } + +/* true for valid nickname, false else */ +bool UserManager::DefaultIsNick(const std::string_view& nick) +{ + if (nick.empty() || nick.length() > ServerInstance->Config->Limits.MaxNick) + return false; + + for (auto it = nick.cbegin(); it != nick.cend(); ++it) + { + const auto chr = *it; + if (chr >= 'A' && chr <= '}') + continue; // "A"-"}" can occur anywhere in a nickname. + + if (((chr >= '0' && chr <= '9') || (chr == '-')) && it != nick.begin()) + continue; // "0"-"9", "-" can occur anywhere BUT the first char of a nickname. + + return false; + } + return true; +} + +bool UserManager::DefaultIsUser(const std::string_view& user) +{ + if (user.empty()) + return false; + + for (const auto chr : user) + { + if (chr >= 'A' && chr <= '}') + continue; + + if ((chr >= '0' && chr <= '9') || chr == '-' || chr == '.') + continue; + + return false; + } + return true; +} |
