X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2Fcoremods%2Fcore_user%2Fcmd_user.cpp;h=1a8b091f376622dd67ad8029a33abd3e736de64e;hb=abbf70b2a35edaf17631e43027828011296924ad;hp=d593d7f4b8f7974f6f2f341b5b1f8ff84b4b5d82;hpb=f62654a6859998f9d63eb22702c572d5ebcff15c;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/src/coremods/core_user/cmd_user.cpp b/src/coremods/core_user/cmd_user.cpp index d593d7f4b..1a8b091f3 100644 --- a/src/coremods/core_user/cmd_user.cpp +++ b/src/coremods/core_user/cmd_user.cpp @@ -21,43 +21,42 @@ #include "inspircd.h" #include "core_user.h" +enum +{ + // From ircu. + ERR_INVALIDUSERNAME = 468 +}; + CommandUser::CommandUser(Module* parent) : SplitCommand(parent, "USER", 4, 4) { + allow_empty_last_param = false; works_before_reg = true; Penalty = 0; - syntax = " "; + syntax = " "; } -CmdResult CommandUser::HandleLocal(const std::vector& parameters, LocalUser *user) +CmdResult CommandUser::HandleLocal(LocalUser* user, const Params& parameters) { /* A user may only send the USER command once */ if (!(user->registered & REG_USER)) { if (!ServerInstance->IsIdent(parameters[0])) { - /* - * RFC says we must use this numeric, so we do. Let's make it a little more nub friendly though. :) - * -- Craig, and then w00t. - */ - user->WriteNumeric(ERR_NEEDMOREPARAMS, "USER :Your username is not valid"); + user->WriteNumeric(ERR_INVALIDUSERNAME, name, "Your username is not valid"); return CMD_FAILURE; } else { - /* - * The ident field is IDENTMAX+2 in size to account for +1 for the optional - * ~ character, and +1 for null termination, therefore we can safely use up to - * IDENTMAX here. - */ user->ChangeIdent(parameters[0]); - user->fullname.assign(parameters[3].empty() ? "No info" : parameters[3], 0, ServerInstance->Config->Limits.MaxGecos); + user->ChangeRealName(parameters[3]); user->registered = (user->registered | REG_USER); } } else { - user->WriteNumeric(ERR_ALREADYREGISTERED, ":You may not reregister"); + user->WriteNumeric(ERR_ALREADYREGISTERED, "You may not reregister"); + user->CommandFloodPenalty += 1000; return CMD_FAILURE; }