1 /* +------------------------------------+
\r * | Inspire Internet Relay Chat Daemon |
\r * +------------------------------------+
\r *
\r * InspIRCd: (C) 2002-2007 InspIRCd Development Team
\r * See: http://www.inspircd.org/wiki/index.php/Credits
\r *
\r * This program is free but copyrighted software; see
\r * the file COPYING for details.
\r *
\r * ---------------------------------------------------
\r */
\r\r#include "inspircd.h"
\r#include "users.h"
\r#include "channels.h"
\r#include "modules.h"
\r\r/* $ModDesc: Shows a message to opers after oper-up, adds /opermotd */
\r\rstatic FileReader* opermotd;
\r\rCmdResult ShowOperMOTD(userrec* user)
\r{
\r if(!opermotd->FileSize())
\r {
\r user->WriteServ(std::string("425 ") + user->nick + std::string(" :OPERMOTD file is missing"));
\r return CMD_FAILURE;
\r }
\r\r user->WriteServ(std::string("375 ") + user->nick + std::string(" :- IRC Operators Message of the Day"));
\r\r for(int i=0; i != opermotd->FileSize(); i++)
\r {
\r user->WriteServ(std::string("372 ") + user->nick + std::string(" :- ") + opermotd->GetLine(i));
\r }
\r\r user->WriteServ(std::string("376 ") + user->nick + std::string(" :- End of OPERMOTD"));
\r\r /* don't route me */
\r return CMD_LOCALONLY;
\r}
\r\r/** Handle /OPERMOTD
\r */
\rclass cmd_opermotd : public command_t
\r{
\r public:
\r cmd_opermotd (InspIRCd* Instance) : command_t(Instance,"OPERMOTD", 'o', 0)
\r {
\r this->source = "m_opermotd.so";
\r syntax = "[<servername>]";
\r }
\r\r CmdResult Handle (const char** parameters, int pcnt, userrec* user)
\r {
\r return ShowOperMOTD(user);
\r }
\r};
\r\r\rclass ModuleOpermotd : public Module
\r{
\r cmd_opermotd* mycommand;
\r public:
\r\r void LoadOperMOTD()
\r {
\r ConfigReader* conf = new ConfigReader(ServerInstance);
\r std::string filename;
\r filename = conf->ReadValue("opermotd","file",0);
\r if (opermotd)
\r {
\r delete opermotd;
\r opermotd = NULL;
\r }
\r opermotd = new FileReader(ServerInstance, filename);
\r DELETE(conf);
\r }
\r \r ModuleOpermotd(InspIRCd* Me)
\r : Module(Me)
\r {
\r opermotd = NULL;
\r mycommand = new cmd_opermotd(ServerInstance);
\r ServerInstance->AddCommand(mycommand);
\r opermotd = new FileReader(ServerInstance);
\r LoadOperMOTD();
\r }
\r\r virtual ~ModuleOpermotd()
\r {
\r }
\r\r virtual Version GetVersion()
\r {
\r return Version(1,1,0,1,VF_VENDOR,API_VERSION);
\r }
\r\r void Implements(char* List)
\r {
\r List[I_OnRehash] = List[I_OnOper] = 1;
\r }
\r\r virtual void OnOper(userrec* user, const std::string &opertype)
\r {
\r ShowOperMOTD(user);
\r }
\r\r virtual void OnRehash(userrec* user, const std::string ¶meter)
\r {
\r LoadOperMOTD();
\r }
\r};
\r\rMODULE_INIT(ModuleOpermotd)
\r