/*
* InspIRCd -- Internet Relay Chat Daemon
*
- * Copyright (C) 2014 Attila Molnar <attilamolnar@hush.com>
+ * Copyright (C) 2018, 2020 Sadie Powell <sadie@witchery.services>
+ * Copyright (C) 2018 linuxdaemon <linuxdaemon.irc@gmail.com>
+ * Copyright (C) 2014, 2016, 2018 Attila Molnar <attilamolnar@hush.com>
*
* 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
CommandInfo cmdinfo;
CommandModules cmdmodules;
CommandMotd cmdmotd;
+ CommandServList cmdservlist;
CommandTime cmdtime;
CommandVersion cmdversion;
Numeric::Numeric numeric004;
, cmdinfo(this)
, cmdmodules(this)
, cmdmotd(this)
+ , cmdservlist(this)
, cmdtime(this)
, cmdversion(this)
, numeric004(RPL_MYINFO)
void ReadConfig(ConfigStatus& status) CXX11_OVERRIDE
{
- ConfigTag* tag = ServerInstance->Config->ConfValue("admin");
- cmdadmin.AdminName = tag->getString("name");
- cmdadmin.AdminEmail = tag->getString("email", "null@example.com");
- cmdadmin.AdminNick = tag->getString("nick", "admin");
-
// Process the escape codes in the MOTDs.
- cmdmotd.motds.clear();
+ ConfigFileCache newmotds;
for (ServerConfig::ClassVector::const_iterator iter = ServerInstance->Config->Classes.begin(); iter != ServerInstance->Config->Classes.end(); ++iter)
{
+ ConfigTag* tag = (*iter)->config;
// Don't process the file if it has already been processed.
- const std::string motd = (*iter)->config->getString("motd", "motd");
- if (cmdmotd.motds.find(motd) != cmdmotd.motds.end())
+ const std::string motd = tag->getString("motd", "motd");
+ if (newmotds.find(motd) != newmotds.end())
continue;
// We can't process the file if it doesn't exist.
continue;
// Process escape codes.
- cmdmotd.motds[file->first] = file->second;
- InspIRCd::ProcessColors(cmdmotd.motds[file->first]);
+ newmotds[file->first] = file->second;
+ InspIRCd::ProcessColors(newmotds[file->first]);
}
+ cmdmotd.motds.swap(newmotds);
+
+ ConfigTag* tag = ServerInstance->Config->ConfValue("admin");
+ cmdadmin.AdminName = tag->getString("name");
+ cmdadmin.AdminEmail = tag->getString("email", "null@example.com");
+ cmdadmin.AdminNick = tag->getString("nick", "admin");
}
void OnUserConnect(LocalUser* user) CXX11_OVERRIDE
{
user->WriteNumeric(RPL_WELCOME, InspIRCd::Format("Welcome to the %s IRC Network %s", ServerInstance->Config->Network.c_str(), user->GetFullRealHost().c_str()));
- user->WriteNumeric(RPL_YOURHOST, InspIRCd::Format("Your host is %s, running version %s", ServerInstance->Config->ServerName.c_str(), INSPIRCD_BRANCH));
+ user->WriteNumeric(RPL_YOURHOST, InspIRCd::Format("Your host is %s, running version %s", ServerInstance->Config->GetServerName().c_str(), INSPIRCD_BRANCH));
user->WriteNumeric(RPL_CREATED, InspIRCd::TimeString(ServerInstance->startup_time, "This server was created %H:%M:%S %b %d %Y"));
user->WriteNumeric(numeric004);
if (ServerInstance->Config->RawLog)
{
- ClientProtocol::Messages::Privmsg rawlogmsg(ServerInstance->FakeClient, user, "*** Raw I/O logging is enabled on user server. All messages, passwords, and commands are being recorded.");
+ ClientProtocol::Messages::Privmsg rawlogmsg(ServerInstance->FakeClient, user, "*** Raw I/O logging is enabled on this server. All messages, passwords, and commands are being recorded.");
user->Send(ServerInstance->GetRFCEvents().privmsg, rawlogmsg);
}
}
Version GetVersion() CXX11_OVERRIDE
{
- return Version("Provides the ADMIN, COMMANDS, INFO, MODULES, MOTD, TIME and VERSION commands", VF_VENDOR|VF_CORE);
+ return Version("Provides the ADMIN, COMMANDS, INFO, MODULES, MOTD, TIME, SERVLIST, and VERSION commands", VF_VENDOR|VF_CORE);
}
};