X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=src%2Fusers.cpp;h=fd71b07ad9a518b46a14f8461f0f110f43100751;hb=56c4074af5b848b10623f6bcc63da188038ad037;hp=48e0bcd12854ceea35473dde882109f6b617b9e1;hpb=9994478a85358bfa48bd5b764ebc1e74e928d57a;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/src/users.cpp b/src/users.cpp index 48e0bcd12..fd71b07ad 100644 --- a/src/users.cpp +++ b/src/users.cpp @@ -2,7 +2,7 @@ * | Inspire Internet Relay Chat Daemon | * +------------------------------------+ * - * InspIRCd: (C) 2002-2008 InspIRCd Development Team + * InspIRCd: (C) 2002-2009 InspIRCd Development Team * See: http://www.inspircd.org/wiki/index.php/Credits * * This program is free but copyrighted software; see @@ -209,10 +209,9 @@ void User::DecrementModes() User::User(InspIRCd* Instance, const std::string &uid) : ServerInstance(Instance) { server = (char*)Instance->FindServerNamePtr(Instance->Config->ServerName); - reset_due = ServerInstance->Time(); age = ServerInstance->Time(); Penalty = 0; - lines_in = lastping = signon = idle_lastmsg = nping = registered = 0; + lastping = signon = idle_lastmsg = nping = registered = 0; bytes_in = bytes_out = cmds_in = cmds_out = 0; quietquit = quitting = exempt = haspassed = dns_done = false; fd = -1; @@ -544,18 +543,15 @@ bool User::HasPrivPermission(const std::string &privstr, bool noisy) if (AllowedPrivs->find(privstr) != AllowedPrivs->end()) { - ServerInstance->Logs->Log("PRIVS", DEBUG, "I do have it."); return true; } else if (AllowedPrivs->find("*") != AllowedPrivs->end()) { - ServerInstance->Logs->Log("PRIVS", DEBUG, "I allow all."); return true; } if (noisy) this->WriteServ("NOTICE %s :Oper type %s does not have access to priv %s", this->nick.c_str(), this->oper.c_str(), privstr.c_str()); - ServerInstance->Logs->Log("PRIVS", DEBUG, "I don't have it..."); return false; } @@ -840,6 +836,7 @@ void User::UnOper() */ this->oper.clear(); + /* Remove all oper only modes from the user when the deoper - Bug #466*/ std::string moderemove("-"); @@ -850,12 +847,13 @@ void User::UnOper() moderemove += letter; } + std::vector parameters; parameters.push_back(this->nick); parameters.push_back(moderemove); ServerInstance->Parser->CallHandler("MODE", parameters, this); - + /* remove the user from the oper list. Will remove multiple entries as a safeguard against bug #404 */ ServerInstance->Users->all_opers.remove(this); @@ -873,6 +871,7 @@ void User::UnOper() AllowedUserModes.reset(); AllowedChanModes.reset(); + this->modes[UM_OPERATOR] = 0; } } @@ -1039,8 +1038,12 @@ bool User::ForceNickChange(const char* newnick) this->InvalidateCache(); + this->Extend("NICKForced", "Enabled"); + FOREACH_RESULT(I_OnUserPreNick,OnUserPreNick(this, newnick)); + this->Shrink("NICKForced"); + if (MOD_RESULT) { ServerInstance->stats->statsCollisions++;