Skip to content

Commit

Permalink
m_opermotd Add support for replacing \u \b etc. with color codes
Browse files Browse the repository at this point in the history
Fixes #322 reported by @MistrX
  • Loading branch information
attilamolnar committed Oct 29, 2012
1 parent 954786c commit 3366ace
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 17 deletions.
10 changes: 7 additions & 3 deletions docs/conf/modules.conf.example
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -1252,10 +1252,14 @@
# # # #
# If you are using the m_opermotd.so module, specify the motd here # # If you are using the m_opermotd.so module, specify the motd here #
# # # #
# onoper - Should the message be sent on /OPER or only when # # onoper - Should the message be sent on /OPER or only when #
# /OPERMOTD is used. Use "yes" or "no". # # /OPERMOTD is used. Use "yes" or "no". #
# # # #
#<opermotd file="oper.motd" onoper="yes"> # processcolors - Allow color codes to be processed in the opermotd. #
# Read the comment above <connect:allowmotdcolors> in #
# inspircd.conf.example for details. #
# #
#<opermotd file="conf/oper.motd" onoper="yes" processcolors="false">


#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-# #-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
# Override module: Adds support for oper override # Override module: Adds support for oper override
Expand Down
29 changes: 15 additions & 14 deletions src/modules/m_opermotd.cpp
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@
class CommandOpermotd : public Command class CommandOpermotd : public Command
{ {
public: public:
FileReader opermotd; file_cache opermotd;


CommandOpermotd(Module* Creator) : Command(Creator,"OPERMOTD", 0, 1) CommandOpermotd(Module* Creator) : Command(Creator,"OPERMOTD", 0, 1)
{ {
Expand All @@ -53,18 +53,17 @@ class CommandOpermotd : public Command
void ShowOperMOTD(User* user) void ShowOperMOTD(User* user)
{ {
const std::string& servername = ServerInstance->Config->ServerName; const std::string& servername = ServerInstance->Config->ServerName;
if (!opermotd.FileSize()) if (opermotd.empty())
{ {
user->SendText(":%s 455 %s :OPERMOTD file is missing", servername.c_str(), user->nick.c_str()); user->SendText(":%s 455 %s :OPERMOTD file is missing", servername.c_str(), user->nick.c_str());
return; return;
} }


user->SendText(":%s 375 %s :- IRC Operators Message of the Day", servername.c_str(), user->nick.c_str()); user->SendText(":%s 375 %s :- IRC Operators Message of the Day", servername.c_str(), user->nick.c_str());


for (int i=0; i != opermotd.FileSize(); i++) for (file_cache::const_iterator i = opermotd.begin(); i != opermotd.end(); ++i)
{ {
std::string line = opermotd.GetLine(i); user->SendText(":%s 372 %s :- %s", servername.c_str(), user->nick.c_str(), i->c_str());
user->SendText(":%s 372 %s :- %s", servername.c_str(), user->nick.c_str(), line.c_str());
} }


user->SendText(":%s 376 %s :- End of OPERMOTD", servername.c_str(), user->nick.c_str()); user->SendText(":%s 376 %s :- End of OPERMOTD", servername.c_str(), user->nick.c_str());
Expand All @@ -78,18 +77,11 @@ class ModuleOpermotd : public Module
bool onoper; bool onoper;
public: public:


void LoadOperMOTD()
{
ConfigTag* conf = ServerInstance->Config->ConfValue("opermotd");
cmd.opermotd.LoadFile(conf->getString("file","opermotd"));
onoper = conf->getBool("onoper", true);
}

ModuleOpermotd() ModuleOpermotd()
: cmd(this) : cmd(this)
{ {
ServerInstance->AddCommand(&cmd); ServerInstance->AddCommand(&cmd);
LoadOperMOTD(); OnRehash(NULL);
Implementation eventlist[] = { I_OnRehash, I_OnOper }; Implementation eventlist[] = { I_OnRehash, I_OnOper };
ServerInstance->Modules->Attach(eventlist, this, 2); ServerInstance->Modules->Attach(eventlist, this, 2);
} }
Expand All @@ -107,7 +99,16 @@ class ModuleOpermotd : public Module


virtual void OnRehash(User* user) virtual void OnRehash(User* user)
{ {
LoadOperMOTD(); cmd.opermotd.clear();
ConfigTag* conf = ServerInstance->Config->ConfValue("opermotd");
onoper = conf->getBool("onoper", true);

FileReader f(conf->getString("file", "opermotd"));
for (int i=0, filesize = f.FileSize(); i < filesize; i++)
cmd.opermotd.push_back(f.GetLine(i));

if (conf->getBool("processcolors"))
InspIRCd::ProcessColors(cmd.opermotd);
} }
}; };


Expand Down

0 comments on commit 3366ace

Please sign in to comment.