X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2Fmodules%2Fm_halfop.cpp;h=3194fcde8ea29308798cd0e45af3fbcbbb54232c;hb=571714e28b26cc59cbc8d27098a5ba981240ee2d;hp=e251802e07f884e697d8a8dae4119fb3e8e7cd04;hpb=cd712c40e1b352c05e7ae0f72e0a5e84cdf64323;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/src/modules/m_halfop.cpp b/src/modules/m_halfop.cpp index e251802e0..3194fcde8 100644 --- a/src/modules/m_halfop.cpp +++ b/src/modules/m_halfop.cpp @@ -1,16 +1,24 @@ -/* +------------------------------------+ - * | Inspire Internet Relay Chat Daemon | - * +------------------------------------+ +/* + * InspIRCd -- Internet Relay Chat Daemon * - * InspIRCd: (C) 2002-2010 InspIRCd Development Team - * See: http://wiki.inspircd.org/Credits + * Copyright (C) 2009 Daniel De Graaf * - * 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 . */ + +/* $ModDesc: Channel half-operator mode provider */ + #include "inspircd.h" class ModeChannelHalfOp : public ModeHandler @@ -21,6 +29,13 @@ class ModeChannelHalfOp : public ModeHandler unsigned int GetPrefixRank(); void RemoveMode(Channel* channel, irc::modestacker* stack = NULL); void RemoveMode(User* user, irc::modestacker* stack = NULL); + + ModResult AccessCheck(User* src, Channel*, std::string& value, bool adding) + { + if (!adding && src->nick == value) + return MOD_RES_ALLOW; + return MOD_RES_PASSTHRU; + } }; ModeChannelHalfOp::ModeChannelHalfOp(Module* parent) : ModeHandler(parent, "halfop", 'h', PARAM_ALWAYS, MODETYPE_CHANNEL) @@ -73,18 +88,16 @@ class ModuleHalfop : public Module public: ModuleHalfop() : mh(this) { - if (!ServerInstance->Modes->AddMode(&mh)) - throw ModuleException("Could not add new modes!"); } - ~ModuleHalfop() + void init() { - ServerInstance->Modes->DelMode(&mh); + ServerInstance->Modules->AddService(mh); } Version GetVersion() { - return Version("Channel half-operator mode provider", VF_VENDOR|VF_COMMON); + return Version("Channel half-operator mode provider", VF_VENDOR); } };