X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=src%2Fcoremods%2Fcore_oper%2Fcmd_die.cpp;h=8e367f712184dd0abe3cc9062d9fb6470fc2dc83;hb=f3f2388a81b6463e1229fa5bf2b8c427440bf406;hp=5fe64352058c615ef9065444f7df1082f37e41f7;hpb=926361d233f4e6ea6a3964a070097fe637bd6bed;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/src/coremods/core_oper/cmd_die.cpp b/src/coremods/core_oper/cmd_die.cpp index 5fe643520..8e367f712 100644 --- a/src/coremods/core_oper/cmd_die.cpp +++ b/src/coremods/core_oper/cmd_die.cpp @@ -1,8 +1,15 @@ /* * InspIRCd -- Internet Relay Chat Daemon * + * Copyright (C) 2018 linuxdaemon + * Copyright (C) 2018 Sadie Powell + * Copyright (C) 2012, 2019 Robby + * Copyright (C) 2012, 2014-2016, 2018 Attila Molnar + * Copyright (C) 2009 Uli Schlachter * Copyright (C) 2009 Daniel De Graaf + * Copyright (C) 2008, 2010 Craig Edwards * Copyright (C) 2007 Robin Burchell + * Copyright (C) 2007 Dennis Friis * * This file is part of InspIRCd. InspIRCd is free software: you can * redistribute it and/or modify it under the terms of the GNU General Public @@ -22,24 +29,18 @@ #include "exitcodes.h" #include "core_oper.h" -CommandDie::CommandDie(Module* parent) - : Command(parent, "DIE", 1) +CommandDie::CommandDie(Module* parent, std::string& hashref) + : Command(parent, "DIE", 1, 1) + , hash(hashref) { flags_needed = 'o'; - syntax = ""; -} - -static void QuitAll() -{ - const std::string quitmsg = "Server shutdown"; - const UserManager::LocalList& list = ServerInstance->Users.GetLocalUsers(); - while (!list.empty()) - ServerInstance->Users.QuitUser(list.front(), quitmsg); + syntax = ""; } void DieRestart::SendError(const std::string& message) { - const std::string unregline = "ERROR :" + message; + ClientProtocol::Messages::Error errormsg(message); + ClientProtocol::Event errorevent(ServerInstance->GetRFCEvents().error, errormsg); const UserManager::LocalList& list = ServerInstance->Users.GetLocalUsers(); for (UserManager::LocalList::const_iterator i = list.begin(); i != list.end(); ++i) { @@ -51,16 +52,16 @@ void DieRestart::SendError(const std::string& message) else { // Unregistered connections receive ERROR, not a NOTICE - user->Write(unregline); + user->Send(errorevent); } } } /** Handle /DIE */ -CmdResult CommandDie::Handle (const std::vector& parameters, User *user) +CmdResult CommandDie::Handle(User* user, const Params& parameters) { - if (DieRestart::CheckPass(user, parameters[0], "diepass")) + if (ServerInstance->PassCompare(user, password, parameters[0], hash)) { { std::string diebuf = "*** DIE command from " + user->GetFullHost() + ". Terminating."; @@ -68,13 +69,12 @@ CmdResult CommandDie::Handle (const std::vector& parameters, User * DieRestart::SendError(diebuf); } - QuitAll(); ServerInstance->Exit(EXIT_STATUS_DIE); } else { ServerInstance->Logs->Log(MODNAME, LOG_SPARSE, "Failed /DIE command from %s", user->GetFullRealHost().c_str()); - ServerInstance->SNO->WriteGlobalSno('a', "Failed DIE Command from %s.", user->GetFullRealHost().c_str()); + ServerInstance->SNO->WriteGlobalSno('a', "Failed DIE command from %s.", user->GetFullRealHost().c_str()); return CMD_FAILURE; } return CMD_SUCCESS;