X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=src%2Fmodules%2Fm_jumpserver.cpp;h=9a171a19a3461e64cf36782e75335c19c19d7adb;hb=6c2edc2c5ab07a1fa8c32d3fa9abd6b9149b804c;hp=d8492fd5e2aeda292c7b1308dbac241ec0315f8f;hpb=1c1c5fc3f01c42a09d34594989679bbc8fb21c0d;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/src/modules/m_jumpserver.cpp b/src/modules/m_jumpserver.cpp index d8492fd5e..9a171a19a 100644 --- a/src/modules/m_jumpserver.cpp +++ b/src/modules/m_jumpserver.cpp @@ -1,19 +1,27 @@ -/* +------------------------------------+ - * | Inspire Internet Relay Chat Daemon | - * +------------------------------------+ +/* + * InspIRCd -- Internet Relay Chat Daemon * - * InspIRCd: (C) 2002-2009 InspIRCd Development Team - * See: http://wiki.inspircd.org/Credits + * Copyright (C) 2007-2008 Craig Edwards + * Copyright (C) 2007 Dennis Friis + * Copyright (C) 2007 Robin Burchell * - * This program is free but copyrighted software; see - * the file COPYING for details. + * 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 + * License as published by the Free Software Foundation, version 2. * - * --------------------------------------------------- + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . */ + #include "inspircd.h" -/* $ModDesc: Provides support for the RPL_REDIR numeric */ +/* $ModDesc: Provides support for the RPL_REDIR numeric and the /JUMPSERVER command. */ /** Handle /JUMPSERVER */ @@ -27,9 +35,9 @@ class CommandJumpserver : public Command std::string reason; int port; - CommandJumpserver (InspIRCd* Instance, Module* Creator) : Command(Instance, Creator, "JUMPSERVER", "o", 0, 4) + CommandJumpserver(Module* Creator) : Command(Creator, "JUMPSERVER", 0, 4) { - syntax = "[ <+/-an> ]"; + flags_needed = 'o'; syntax = "[ <+/-an> ]"; redirect_to.clear(); reason.clear(); port = 0; @@ -95,7 +103,7 @@ class CommandJumpserver : public Command if (redirect_all_immediately) { /* Redirect everyone but the oper sending the command */ - for (std::vector::const_iterator i = ServerInstance->Users->local_users.begin(); i != ServerInstance->Users->local_users.end(); i++) + for (std::vector::const_iterator i = ServerInstance->Users->local_users.begin(); i != ServerInstance->Users->local_users.end(); i++) { User* t = *i; if (!IS_OPER(t)) @@ -135,19 +143,18 @@ class ModuleJumpServer : public Module { CommandJumpserver js; public: - ModuleJumpServer(InspIRCd* Me) - : Module(Me), js(Me, this) + ModuleJumpServer() : js(this) { ServerInstance->AddCommand(&js); - Implementation eventlist[] = { I_OnUserRegister }; - ServerInstance->Modules->Attach(eventlist, this, 1); + Implementation eventlist[] = { I_OnUserRegister, I_OnRehash }; + ServerInstance->Modules->Attach(eventlist, this, 2); } virtual ~ModuleJumpServer() { } - virtual ModResult OnUserRegister(User* user) + virtual ModResult OnUserRegister(LocalUser* user) { if (js.port && js.redirect_new_users) { @@ -159,10 +166,15 @@ class ModuleJumpServer : public Module return MOD_RES_PASSTHRU; } + virtual void OnRehash(User* user) + { + // Emergency way to unlock + if (!user) js.redirect_new_users = false; + } virtual Version GetVersion() { - return Version("$Id$", VF_VENDOR, API_VERSION); + return Version("Provides support for the RPL_REDIR numeric and the /JUMPSERVER command.", VF_VENDOR); } };