1 /* +------------------------------------+
2 * | Inspire Internet Relay Chat Daemon |
3 * +------------------------------------+
5 * InspIRCd: (C) 2002-2008 InspIRCd Development Team
6 * See: http://www.inspircd.org/wiki/index.php/Credits
8 * This program is free but copyrighted software; see
9 * the file COPYING for details.
11 * ---------------------------------------------------
17 /* $ModDesc: Provides a pointless /dalinfo command, demo module */
21 * std::vector<std::string> parameters;
28 class CommandCAP : public Command
32 /* Command 'dalinfo', takes no parameters and needs no special modes */
33 CommandCAP (InspIRCd* Instance, Module* mod) : Command(Instance,"CAP", 0, 1, true), Creator(mod)
35 this->source = "m_cap.so";
38 CmdResult Handle (const char* const* parameters, int pcnt, User *user)
40 irc::string subcommand = parameters[0];
41 if (subcommand == "REQ")
44 Data.type = parameters[1];
46 Data.creator = this->Creator;
47 Data.parameter = (pcnt > 1 ? parameters[1] : "");
49 user->Extend("CAP_REGHOLD");
50 Event event((char*) &Data, (Module*)this->Creator, "cap_req");
51 event.Send(this->ServerInstance);
53 else if (subcommand == "END")
55 user->Shrink("CAP_REGHOLD");
57 else if (subcommand == "LS")
60 user->Extend("CAP_REGHOLD");
63 Data.creator = this->Creator;
64 Data.parameter.clear();
66 Event event((char*) &Data, (Module*)this->Creator, "cap_ls");
67 event.Send(this->ServerInstance);
69 user->WriteServ("CAP * LS :%s", Data.parameter.c_str());
73 user->WriteServ("410 %s %s :Invalid CAP subcommand", user->nick, subcommand.c_str());
79 class ModuleCAP : public Module
81 CommandCAP* newcommand;
83 ModuleCAP(InspIRCd* Me)
86 // Create a new command
87 newcommand = new CommandCAP(ServerInstance, this);
88 ServerInstance->AddCommand(newcommand);
90 Implementation eventlist[] = { I_OnCheckReady, I_OnCleanup, I_OnUserDisconnect, I_OnRequest };
91 ServerInstance->Modules->Attach(eventlist, this, 5);
94 virtual bool OnCheckReady(User* user)
96 /* Users in CAP state get held until CAP END */
97 if (user->GetExt("CAP_REGHOLD"))
107 virtual Version GetVersion()
109 return Version(1, 1, 0, 0, VF_VENDOR, API_VERSION);
113 MODULE_INIT(ModuleCAP)