X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=src%2Fmodules%2Fm_spanningtree%2Fcommands.h;h=c7dc08b59ad9a341fc6bc86c1c27c969e0124614;hb=551d687ec6d7ce44be35fae0dd7345fe73c4f63a;hp=d776d49f4333c8ea45e34cae6b46e9f6299dd633;hpb=e2289d4cf4f9a9c587c1956c089bb3a32a48b54d;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/src/modules/m_spanningtree/commands.h b/src/modules/m_spanningtree/commands.h index d776d49f4..c7dc08b59 100644 --- a/src/modules/m_spanningtree/commands.h +++ b/src/modules/m_spanningtree/commands.h @@ -1,18 +1,25 @@ -/* +------------------------------------+ - * | 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) 2010 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 . */ -#ifndef __COMMANDS_H__ -#define __COMMANDS_H__ + +#pragma once + +#include "main.h" /** Handle /RCONNECT */ @@ -32,29 +39,116 @@ class CommandRSQuit : public Command CommandRSQuit(Module* Callback, SpanningTreeUtilities* Util); CmdResult Handle (const std::vector& parameters, User *user); RouteDescriptor GetRouting(User* user, const std::vector& parameters); - void NoticeUser(User* user, const std::string &msg); }; class CommandSVSJoin : public Command { public: - CommandSVSJoin(Module* Creator) : Command(Creator, "SVSJOIN", 2) { flags_needed = 'o'; } + CommandSVSJoin(Module* Creator) : Command(Creator, "SVSJOIN", 2) { flags_needed = FLAG_SERVERONLY; } CmdResult Handle (const std::vector& parameters, User *user); RouteDescriptor GetRouting(User* user, const std::vector& parameters); }; class CommandSVSPart : public Command { public: - CommandSVSPart(Module* Creator) : Command(Creator, "SVSPART", 2) { flags_needed = 'o'; } + CommandSVSPart(Module* Creator) : Command(Creator, "SVSPART", 2) { flags_needed = FLAG_SERVERONLY; } CmdResult Handle (const std::vector& parameters, User *user); RouteDescriptor GetRouting(User* user, const std::vector& parameters); }; class CommandSVSNick : public Command { public: - CommandSVSNick(Module* Creator) : Command(Creator, "SVSNICK", 2) { flags_needed = 'o'; } + CommandSVSNick(Module* Creator) : Command(Creator, "SVSNICK", 3) { flags_needed = FLAG_SERVERONLY; } CmdResult Handle (const std::vector& parameters, User *user); RouteDescriptor GetRouting(User* user, const std::vector& parameters); }; +class CommandMetadata : public Command +{ + public: + CommandMetadata(Module* Creator) : Command(Creator, "METADATA", 2) { flags_needed = FLAG_SERVERONLY; } + CmdResult Handle (const std::vector& parameters, User *user); + RouteDescriptor GetRouting(User* user, const std::vector& parameters) { return ROUTE_BROADCAST; } +}; +class CommandUID : public Command +{ + public: + CommandUID(Module* Creator) : Command(Creator, "UID", 10) { flags_needed = FLAG_SERVERONLY; } + CmdResult Handle (const std::vector& parameters, User *user); + RouteDescriptor GetRouting(User* user, const std::vector& parameters) { return ROUTE_BROADCAST; } +}; +class CommandOpertype : public Command +{ + public: + CommandOpertype(Module* Creator) : Command(Creator, "OPERTYPE", 1) { flags_needed = FLAG_SERVERONLY; } + CmdResult Handle (const std::vector& parameters, User *user); + RouteDescriptor GetRouting(User* user, const std::vector& parameters) { return ROUTE_BROADCAST; } +}; +class TreeSocket; +class CommandFJoin : public Command +{ + /** Remove all modes from a channel, including statusmodes (+qaovh etc), simplemodes, parameter modes. + * This does not update the timestamp of the target channel, this must be done seperately. + */ + static void RemoveStatus(Channel* c); + static void ApplyModeStack(User* srcuser, Channel* c, irc::modestacker& stack); + bool ProcessModeUUIDPair(const std::string& item, TreeSocket* src_socket, Channel* chan, irc::modestacker* modestack); + public: + CommandFJoin(Module* Creator) : Command(Creator, "FJOIN", 3) { flags_needed = FLAG_SERVERONLY; } + CmdResult Handle (const std::vector& parameters, User *user); + RouteDescriptor GetRouting(User* user, const std::vector& parameters) { return ROUTE_BROADCAST; } +}; +class CommandFMode : public Command +{ + public: + CommandFMode(Module* Creator) : Command(Creator, "FMODE", 3) { flags_needed = FLAG_SERVERONLY; } + CmdResult Handle (const std::vector& parameters, User *user); + RouteDescriptor GetRouting(User* user, const std::vector& parameters) { return ROUTE_BROADCAST; } +}; +class CommandFTopic : public Command +{ + public: + CommandFTopic(Module* Creator) : Command(Creator, "FTOPIC", 4) { flags_needed = FLAG_SERVERONLY; } + CmdResult Handle (const std::vector& parameters, User *user); + RouteDescriptor GetRouting(User* user, const std::vector& parameters) { return ROUTE_BROADCAST; } +}; +class CommandFHost : public Command +{ + public: + CommandFHost(Module* Creator) : Command(Creator, "FHOST", 1) { flags_needed = FLAG_SERVERONLY; } + CmdResult Handle (const std::vector& parameters, User *user); + RouteDescriptor GetRouting(User* user, const std::vector& parameters) { return ROUTE_BROADCAST; } +}; +class CommandFIdent : public Command +{ + public: + CommandFIdent(Module* Creator) : Command(Creator, "FIDENT", 1) { flags_needed = FLAG_SERVERONLY; } + CmdResult Handle (const std::vector& parameters, User *user); + RouteDescriptor GetRouting(User* user, const std::vector& parameters) { return ROUTE_BROADCAST; } +}; +class CommandFName : public Command +{ + public: + CommandFName(Module* Creator) : Command(Creator, "FNAME", 1) { flags_needed = FLAG_SERVERONLY; } + CmdResult Handle (const std::vector& parameters, User *user); + RouteDescriptor GetRouting(User* user, const std::vector& parameters) { return ROUTE_BROADCAST; } +}; -#endif +class SpanningTreeCommands +{ + public: + CommandRConnect rconnect; + CommandRSQuit rsquit; + CommandSVSJoin svsjoin; + CommandSVSPart svspart; + CommandSVSNick svsnick; + CommandMetadata metadata; + CommandUID uid; + CommandOpertype opertype; + CommandFJoin fjoin; + CommandFMode fmode; + CommandFTopic ftopic; + CommandFHost fhost; + CommandFIdent fident; + CommandFName fname; + SpanningTreeCommands(ModuleSpanningTree* module); +};