aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGravatar Sadie Powell2020-10-31 23:21:15 +0000
committerGravatar Sadie Powell2020-10-31 23:21:15 +0000
commit1b181b42b82213c884e8aac3a620252102992439 (patch)
treee1eefa83c074695016e94cb97bb34a24909ebb3d /src
parentAdd stdalgo::iterator_range and switch config tag reading to use it. (diff)
Convert ConfigTag from reference<> to std::shared_ptr<>.
Diffstat (limited to 'src')
-rw-r--r--src/configparser.cpp8
-rw-r--r--src/configreader.cpp25
-rw-r--r--src/coremods/core_channel/core_channel.cpp4
-rw-r--r--src/coremods/core_dns.cpp2
-rw-r--r--src/coremods/core_info/cmd_motd.cpp2
-rw-r--r--src/coremods/core_info/core_info.cpp4
-rw-r--r--src/coremods/core_list.cpp2
-rw-r--r--src/coremods/core_oper/cmd_oper.cpp2
-rw-r--r--src/coremods/core_oper/core_oper.cpp2
-rw-r--r--src/coremods/core_stats.cpp6
-rw-r--r--src/coremods/core_user/core_user.cpp2
-rw-r--r--src/coremods/core_whois.cpp4
-rw-r--r--src/coremods/core_whowas.cpp2
-rw-r--r--src/coremods/core_xline/core_xline.cpp2
-rw-r--r--src/inspircd.cpp2
-rw-r--r--src/listensocket.cpp2
-rw-r--r--src/modules/extra/m_argon2.cpp2
-rw-r--r--src/modules/extra/m_geo_maxmind.cpp2
-rw-r--r--src/modules/extra/m_ldap.cpp4
-rw-r--r--src/modules/extra/m_mysql.cpp4
-rw-r--r--src/modules/extra/m_pgsql.cpp4
-rw-r--r--src/modules/extra/m_sqlite3.cpp4
-rw-r--r--src/modules/extra/m_ssl_gnutls.cpp4
-rw-r--r--src/modules/extra/m_ssl_mbedtls.cpp2
-rw-r--r--src/modules/extra/m_ssl_openssl.cpp6
-rw-r--r--src/modules/m_alias.cpp2
-rw-r--r--src/modules/m_anticaps.cpp2
-rw-r--r--src/modules/m_auditorium.cpp2
-rw-r--r--src/modules/m_bcrypt.cpp2
-rw-r--r--src/modules/m_blockamsg.cpp2
-rw-r--r--src/modules/m_callerid.cpp2
-rw-r--r--src/modules/m_chanfilter.cpp2
-rw-r--r--src/modules/m_chanhistory.cpp2
-rw-r--r--src/modules/m_channames.cpp2
-rw-r--r--src/modules/m_chghost.cpp2
-rw-r--r--src/modules/m_conn_join.cpp2
-rw-r--r--src/modules/m_conn_waitpong.cpp2
-rw-r--r--src/modules/m_connectban.cpp2
-rw-r--r--src/modules/m_connflood.cpp2
-rw-r--r--src/modules/m_customprefix.cpp4
-rw-r--r--src/modules/m_dccallow.cpp2
-rw-r--r--src/modules/m_deaf.cpp2
-rw-r--r--src/modules/m_delaymsg.cpp2
-rw-r--r--src/modules/m_disable.cpp4
-rw-r--r--src/modules/m_filter.cpp2
-rw-r--r--src/modules/m_helpop.cpp2
-rw-r--r--src/modules/m_hostchange.cpp2
-rw-r--r--src/modules/m_httpd.cpp2
-rw-r--r--src/modules/m_httpd_config.cpp4
-rw-r--r--src/modules/m_httpd_stats.cpp2
-rw-r--r--src/modules/m_ident.cpp4
-rw-r--r--src/modules/m_ircv3.cpp2
-rw-r--r--src/modules/m_ircv3_sts.cpp2
-rw-r--r--src/modules/m_joinflood.cpp2
-rw-r--r--src/modules/m_knock.cpp2
-rw-r--r--src/modules/m_ldapauth.cpp2
-rw-r--r--src/modules/m_ldapoper.cpp4
-rw-r--r--src/modules/m_messageflood.cpp2
-rw-r--r--src/modules/m_monitor.cpp2
-rw-r--r--src/modules/m_muteban.cpp2
-rw-r--r--src/modules/m_nationalchars.cpp2
-rw-r--r--src/modules/m_nickflood.cpp2
-rw-r--r--src/modules/m_ojoin.cpp2
-rw-r--r--src/modules/m_operjoin.cpp2
-rw-r--r--src/modules/m_opermotd.cpp2
-rw-r--r--src/modules/m_override.cpp2
-rw-r--r--src/modules/m_passforward.cpp2
-rw-r--r--src/modules/m_pbkdf2.cpp2
-rw-r--r--src/modules/m_permchannels.cpp2
-rw-r--r--src/modules/m_randquote.cpp2
-rw-r--r--src/modules/m_regex_stdlib.cpp2
-rw-r--r--src/modules/m_remove.cpp2
-rw-r--r--src/modules/m_repeat.cpp2
-rw-r--r--src/modules/m_restrictchans.cpp2
-rw-r--r--src/modules/m_rline.cpp2
-rw-r--r--src/modules/m_sasl.cpp2
-rw-r--r--src/modules/m_securelist.cpp2
-rw-r--r--src/modules/m_sethost.cpp2
-rw-r--r--src/modules/m_setname.cpp2
-rw-r--r--src/modules/m_showfile.cpp4
-rw-r--r--src/modules/m_showwhois.cpp2
-rw-r--r--src/modules/m_shun.cpp2
-rw-r--r--src/modules/m_silence.cpp2
-rw-r--r--src/modules/m_spanningtree/link.h14
-rw-r--r--src/modules/m_spanningtree/utils.cpp4
-rw-r--r--src/modules/m_sqlauth.cpp4
-rw-r--r--src/modules/m_sqloper.cpp4
-rw-r--r--src/modules/m_starttls.cpp2
-rw-r--r--src/modules/m_svshold.cpp2
-rw-r--r--src/modules/m_timedbans.cpp2
-rw-r--r--src/modules/m_watch.cpp2
-rw-r--r--src/modules/m_websocket.cpp2
-rw-r--r--src/modules/m_xline_db.cpp2
-rw-r--r--src/socket.cpp2
-rw-r--r--src/users.cpp8
95 files changed, 138 insertions, 141 deletions
diff --git a/src/configparser.cpp b/src/configparser.cpp
index e045d7e67..9fef22f15 100644
--- a/src/configparser.cpp
+++ b/src/configparser.cpp
@@ -108,7 +108,7 @@ struct Parser
FILE* const file;
FilePosition current;
FilePosition last_tag;
- reference<ConfigTag> tag;
+ std::shared_ptr<ConfigTag> tag;
int ungot;
std::string mandatory_tag;
@@ -382,7 +382,7 @@ struct Parser
}
};
-void ParseStack::DoInclude(ConfigTag* tag, int flags)
+void ParseStack::DoInclude(std::shared_ptr<ConfigTag> tag, int flags)
{
if (flags & FLAG_NO_INC)
throw CoreException("Invalid <include> tag in file included with noinclude=\"yes\"");
@@ -690,9 +690,9 @@ std::string ConfigTag::getTagLocation() const
return src_name + ":" + ConvToStr(src_line);
}
-ConfigTag* ConfigTag::create(const std::string& Tag, const std::string& file, int line, ConfigItems*& Items)
+std::shared_ptr<ConfigTag> ConfigTag::create(const std::string& Tag, const std::string& file, int line, ConfigItems*& Items)
{
- ConfigTag* rv = new ConfigTag(Tag, file, line);
+ std::shared_ptr<ConfigTag> rv(new ConfigTag(Tag, file, line));
Items = &rv->items;
return rv;
}
diff --git a/src/configreader.cpp b/src/configreader.cpp
index c70cafe25..d0b3e44c6 100644
--- a/src/configreader.cpp
+++ b/src/configreader.cpp
@@ -37,7 +37,7 @@
#include "configparser.h"
#include <iostream>
-ServerLimits::ServerLimits(ConfigTag* tag)
+ServerLimits::ServerLimits(std::shared_ptr<ConfigTag> tag)
: MaxLine(tag->getUInt("maxline", 512, 512))
, NickMax(tag->getUInt("maxnick", 30, 1, MaxLine))
, ChanMax(tag->getUInt("maxchan", 64, 1, MaxLine))
@@ -52,7 +52,7 @@ ServerLimits::ServerLimits(ConfigTag* tag)
{
}
-ServerConfig::ServerPaths::ServerPaths(ConfigTag* tag)
+ServerConfig::ServerPaths::ServerPaths(std::shared_ptr<ConfigTag> tag)
: Config(tag->getString("configdir", INSPIRCD_CONFIG_PATH, 1))
, Data(tag->getString("datadir", INSPIRCD_DATA_PATH, 1))
, Log(tag->getString("logdir", INSPIRCD_LOG_PATH, 1))
@@ -60,7 +60,7 @@ ServerConfig::ServerPaths::ServerPaths(ConfigTag* tag)
{
}
-static ConfigTag* CreateEmptyTag()
+static std::shared_ptr<ConfigTag> CreateEmptyTag()
{
ConfigItems* items;
return ConfigTag::create("empty", "<auto>", 0, items);
@@ -74,11 +74,6 @@ ServerConfig::ServerConfig()
{
}
-ServerConfig::~ServerConfig()
-{
- delete EmptyTag;
-}
-
static void ReadXLine(ServerConfig* conf, const std::string& tag, const std::string& key, XLineFactory* make)
{
insp::flat_set<std::string> configlines;
@@ -103,7 +98,7 @@ static void ReadXLine(ServerConfig* conf, const std::string& tag, const std::str
ServerInstance->XLines->ExpireRemovedConfigLines(make->GetType(), configlines);
}
-typedef std::map<std::string, ConfigTag*> LocalIndex;
+typedef std::map<std::string, std::shared_ptr<ConfigTag>> LocalIndex;
void ServerConfig::CrossCheckOperClassType()
{
LocalIndex operclass;
@@ -188,7 +183,7 @@ void ServerConfig::CrossCheckConnectBlocks(ServerConfig* current)
{
// No connect blocks found; make a trivial default block
ConfigItems* items;
- ConfigTag* tag = ConfigTag::create("connect", "<auto>", 0, items);
+ std::shared_ptr<ConfigTag> tag = ConfigTag::create("connect", "<auto>", 0, items);
(*items)["allow"] = "*";
config_data.insert(std::make_pair("connect", tag));
blk_count = 1;
@@ -348,9 +343,9 @@ static std::string GetServerName()
void ServerConfig::Fill()
{
- ConfigTag* options = ConfValue("options");
- ConfigTag* security = ConfValue("security");
- ConfigTag* server = ConfValue("server");
+ std::shared_ptr<ConfigTag> options = ConfValue("options");
+ std::shared_ptr<ConfigTag> security = ConfValue("security");
+ std::shared_ptr<ConfigTag> server = ConfValue("server");
if (sid.empty())
{
ServerName = server->getString("name", GetServerName(), InspIRCd::IsHost);
@@ -628,13 +623,13 @@ void ServerConfig::ApplyModules(User* user)
}
}
-ConfigTag* ServerConfig::ConfValue(const std::string &tag)
+std::shared_ptr<ConfigTag> ServerConfig::ConfValue(const std::string &tag)
{
std::pair<ConfigIter, ConfigIter> found = config_data.equal_range(tag);
if (found.first == found.second)
return EmptyTag;
- ConfigTag* rv = found.first->second;
+ std::shared_ptr<ConfigTag> rv = found.first->second;
found.first++;
if (found.first != found.second)
ServerInstance->Logs.Log("CONFIG", LOG_DEFAULT, "Multiple <" + tag + "> tags found; only first will be used "
diff --git a/src/coremods/core_channel/core_channel.cpp b/src/coremods/core_channel/core_channel.cpp
index 59da95a49..4fef8d83d 100644
--- a/src/coremods/core_channel/core_channel.cpp
+++ b/src/coremods/core_channel/core_channel.cpp
@@ -159,7 +159,7 @@ class CoreModChannel
void ReadConfig(ConfigStatus& status) override
{
- ConfigTag* optionstag = ServerInstance->Config->ConfValue("options");
+ auto optionstag = ServerInstance->Config->ConfValue("options");
std::string current;
irc::spacesepstream defaultstream(optionstag->getString("exemptchanops"));
@@ -177,7 +177,7 @@ class CoreModChannel
exempts[restriction] = prefix;
}
- ConfigTag* securitytag = ServerInstance->Config->ConfValue("security");
+ auto securitytag = ServerInstance->Config->ConfValue("security");
Invite::AnnounceState newannouncestate = securitytag->getEnum("announceinvites", Invite::ANNOUNCE_DYNAMIC, {
{ "all", Invite::ANNOUNCE_ALL },
{ "dynamic", Invite::ANNOUNCE_DYNAMIC },
diff --git a/src/coremods/core_dns.cpp b/src/coremods/core_dns.cpp
index bbaffdfee..fd3ae2620 100644
--- a/src/coremods/core_dns.cpp
+++ b/src/coremods/core_dns.cpp
@@ -835,7 +835,7 @@ class ModuleDNS : public Module
const std::string oldip = SourceIP;
const unsigned int oldport = SourcePort;
- ConfigTag* tag = ServerInstance->Config->ConfValue("dns");
+ auto tag = ServerInstance->Config->ConfValue("dns");
DNSServer = tag->getString("server");
SourceIP = tag->getString("sourceip");
SourcePort = tag->getUInt("sourceport", 0, 0, UINT16_MAX);
diff --git a/src/coremods/core_info/cmd_motd.cpp b/src/coremods/core_info/cmd_motd.cpp
index 4ba7963da..e22bedfd4 100644
--- a/src/coremods/core_info/cmd_motd.cpp
+++ b/src/coremods/core_info/cmd_motd.cpp
@@ -44,7 +44,7 @@ CmdResult CommandMotd::Handle(User* user, const Params& parameters)
return CmdResult::SUCCESS;
}
- ConfigTag* tag = ServerInstance->Config->EmptyTag;
+ auto tag = ServerInstance->Config->EmptyTag;
LocalUser* localuser = IS_LOCAL(user);
if (localuser)
tag = localuser->GetClass()->config;
diff --git a/src/coremods/core_info/core_info.cpp b/src/coremods/core_info/core_info.cpp
index 11ce2f799..284f55f55 100644
--- a/src/coremods/core_info/core_info.cpp
+++ b/src/coremods/core_info/core_info.cpp
@@ -111,7 +111,7 @@ class CoreModInfo : public Module
ConfigFileCache newmotds;
for (ServerConfig::ClassVector::const_iterator iter = ServerInstance->Config->Classes.begin(); iter != ServerInstance->Config->Classes.end(); ++iter)
{
- ConfigTag* tag = (*iter)->config;
+ std::shared_ptr<ConfigTag> tag = (*iter)->config;
// Don't process the file if it has already been processed.
const std::string motd = tag->getString("motd", "motd");
if (newmotds.find(motd) != newmotds.end())
@@ -129,7 +129,7 @@ class CoreModInfo : public Module
cmdmotd.motds.swap(newmotds);
- ConfigTag* tag = ServerInstance->Config->ConfValue("admin");
+ auto tag = ServerInstance->Config->ConfValue("admin");
cmdadmin.AdminName = tag->getString("name");
cmdadmin.AdminEmail = tag->getString("email", "null@example.com");
cmdadmin.AdminNick = tag->getString("nick", "admin");
diff --git a/src/coremods/core_list.cpp b/src/coremods/core_list.cpp
index 503cfe024..6428656c7 100644
--- a/src/coremods/core_list.cpp
+++ b/src/coremods/core_list.cpp
@@ -221,7 +221,7 @@ class CoreModList
void ReadConfig(ConfigStatus& status) override
{
- ConfigTag* tag = ServerInstance->Config->ConfValue("options");
+ auto tag = ServerInstance->Config->ConfValue("options");
cmd.showmodes = tag->getBool("modesinlist");
}
diff --git a/src/coremods/core_oper/cmd_oper.cpp b/src/coremods/core_oper/cmd_oper.cpp
index dc88d094b..2aca10642 100644
--- a/src/coremods/core_oper/cmd_oper.cpp
+++ b/src/coremods/core_oper/cmd_oper.cpp
@@ -47,7 +47,7 @@ CmdResult CommandOper::HandleLocal(LocalUser* user, const Params& parameters)
if (i != ServerInstance->Config->oper_blocks.end())
{
std::shared_ptr<OperInfo> ifo = i->second;
- ConfigTag* tag = ifo->oper_block;
+ std::shared_ptr<ConfigTag> tag = ifo->oper_block;
match_login = true;
match_pass = ServerInstance->PassCompare(user, tag->getString("password"), parameters[1], tag->getString("hash"));
match_hosts = InspIRCd::MatchMask(tag->getString("host"), userHost, userIP);
diff --git a/src/coremods/core_oper/core_oper.cpp b/src/coremods/core_oper/core_oper.cpp
index ad0309500..c88c8ca55 100644
--- a/src/coremods/core_oper/core_oper.cpp
+++ b/src/coremods/core_oper/core_oper.cpp
@@ -48,7 +48,7 @@ class CoreModOper : public Module
void ReadConfig(ConfigStatus& status) override
{
- ConfigTag* security = ServerInstance->Config->ConfValue("security");
+ auto security = ServerInstance->Config->ConfValue("security");
cmdkill.hidenick = security->getString("hidekills");
cmdkill.hideuline = security->getBool("hideulinekills");
}
diff --git a/src/coremods/core_stats.cpp b/src/coremods/core_stats.cpp
index 0b25bf78a..68bfe9f7b 100644
--- a/src/coremods/core_stats.cpp
+++ b/src/coremods/core_stats.cpp
@@ -1,4 +1,4 @@
-/*
+ /*
* InspIRCd -- Internet Relay Chat Daemon
*
* Copyright (C) 2018 Puck Meerburg <puck@puckipedia.com>
@@ -329,7 +329,7 @@ void CommandStats::DoStats(Stats::Context& stats)
{
for (auto& [_, ifo] : ServerInstance->Config->oper_blocks)
{
- ConfigTag* tag = ifo->oper_block;
+ std::shared_ptr<ConfigTag> tag = ifo->oper_block;
stats.AddRow(243, 'O', tag->getString("host"), '*', tag->getString("name"), tag->getString("type"), '0');
}
}
@@ -417,7 +417,7 @@ class CoreModStats : public Module
void ReadConfig(ConfigStatus& status) override
{
- ConfigTag* security = ServerInstance->Config->ConfValue("security");
+ auto security = ServerInstance->Config->ConfValue("security");
cmd.userstats = security->getString("userstats");
}
diff --git a/src/coremods/core_user/core_user.cpp b/src/coremods/core_user/core_user.cpp
index 019e1c96e..9d81fadf4 100644
--- a/src/coremods/core_user/core_user.cpp
+++ b/src/coremods/core_user/core_user.cpp
@@ -142,7 +142,7 @@ void MessageWrapper::Wrap(const std::string& message, std::string& out)
void MessageWrapper::ReadConfig(const char* prefixname, const char* suffixname, const char* fixedname)
{
- ConfigTag* tag = ServerInstance->Config->ConfValue("options");
+ auto tag = ServerInstance->Config->ConfValue("options");
prefix = tag->getString(fixedname);
fixed = (!prefix.empty());
if (!fixed)
diff --git a/src/coremods/core_whois.cpp b/src/coremods/core_whois.cpp
index a217df1bb..adcdaae25 100644
--- a/src/coremods/core_whois.cpp
+++ b/src/coremods/core_whois.cpp
@@ -364,14 +364,14 @@ class CoreModWhois : public Module
void ReadConfig(ConfigStatus&) override
{
- ConfigTag* options = ServerInstance->Config->ConfValue("options");
+ auto options = ServerInstance->Config->ConfValue("options");
cmd.splitwhois = options->getEnum("splitwhois", SPLITWHOIS_NONE, {
{ "no", SPLITWHOIS_NONE },
{ "split", SPLITWHOIS_SPLIT },
{ "splitmsg", SPLITWHOIS_SPLITMSG },
});
- ConfigTag* security = ServerInstance->Config->ConfValue("security");
+ auto security = ServerInstance->Config->ConfValue("security");
cmd.genericoper = security->getBool("genericoper");
}
};
diff --git a/src/coremods/core_whowas.cpp b/src/coremods/core_whowas.cpp
index 0331e4db6..b0722a4bc 100644
--- a/src/coremods/core_whowas.cpp
+++ b/src/coremods/core_whowas.cpp
@@ -435,7 +435,7 @@ class ModuleWhoWas : public Module, public Stats::EventListener
void ReadConfig(ConfigStatus& status) override
{
- ConfigTag* tag = ServerInstance->Config->ConfValue("whowas");
+ auto tag = ServerInstance->Config->ConfValue("whowas");
unsigned int NewGroupSize = tag->getUInt("groupsize", 10, 0, 10000);
unsigned int NewMaxGroups = tag->getUInt("maxgroups", 10240, 0, 1000000);
unsigned int NewMaxKeep = tag->getDuration("maxkeep", 3600, 3600);
diff --git a/src/coremods/core_xline/core_xline.cpp b/src/coremods/core_xline/core_xline.cpp
index 69c198357..0a683eee7 100644
--- a/src/coremods/core_xline/core_xline.cpp
+++ b/src/coremods/core_xline/core_xline.cpp
@@ -27,7 +27,7 @@
bool InsaneBan::MatchesEveryone(const std::string& mask, MatcherBase& test, User* user, const char* bantype, const char* confkey)
{
- ConfigTag* insane = ServerInstance->Config->ConfValue("insane");
+ auto insane = ServerInstance->Config->ConfValue("insane");
if (insane->getBool(confkey))
return false;
diff --git a/src/inspircd.cpp b/src/inspircd.cpp
index 3e825848c..24eac6e9e 100644
--- a/src/inspircd.cpp
+++ b/src/inspircd.cpp
@@ -155,7 +155,7 @@ namespace
void DropRoot()
{
#ifndef _WIN32
- ConfigTag* security = ServerInstance->Config->ConfValue("security");
+ auto security = ServerInstance->Config->ConfValue("security");
const std::string SetGroup = security->getString("runasgroup");
if (!SetGroup.empty())
diff --git a/src/listensocket.cpp b/src/listensocket.cpp
index 9cbc2d50e..e91683d2d 100644
--- a/src/listensocket.cpp
+++ b/src/listensocket.cpp
@@ -34,7 +34,7 @@
#include <netinet/tcp.h>
#endif
-ListenSocket::ListenSocket(ConfigTag* tag, const irc::sockets::sockaddrs& bind_to)
+ListenSocket::ListenSocket(std::shared_ptr<ConfigTag> tag, const irc::sockets::sockaddrs& bind_to)
: bind_tag(tag)
, bind_sa(bind_to)
{
diff --git a/src/modules/extra/m_argon2.cpp b/src/modules/extra/m_argon2.cpp
index 8e1a0a0d6..a08e34604 100644
--- a/src/modules/extra/m_argon2.cpp
+++ b/src/modules/extra/m_argon2.cpp
@@ -68,7 +68,7 @@ class ProviderConfig
ProviderConfig(const std::string& tagname, ProviderConfig* def)
{
- ConfigTag* tag = ServerInstance->Config->ConfValue(tagname);
+ auto tag = ServerInstance->Config->ConfValue(tagname);
uint32_t def_iterations = def ? def->iterations : 3;
this->iterations = tag->getUInt("iterations", def_iterations, 1);
diff --git a/src/modules/extra/m_geo_maxmind.cpp b/src/modules/extra/m_geo_maxmind.cpp
index 006ec656d..b178d2c86 100644
--- a/src/modules/extra/m_geo_maxmind.cpp
+++ b/src/modules/extra/m_geo_maxmind.cpp
@@ -157,7 +157,7 @@ class ModuleGeoMaxMind : public Module
void ReadConfig(ConfigStatus& status) override
{
- ConfigTag* tag = ServerInstance->Config->ConfValue("maxmind");
+ auto tag = ServerInstance->Config->ConfValue("maxmind");
const std::string file = ServerInstance->Config->Paths.PrependConfig(tag->getString("file", "GeoLite2-Country.mmdb", 1));
// Try to read the new database.
diff --git a/src/modules/extra/m_ldap.cpp b/src/modules/extra/m_ldap.cpp
index 0f3ac68d6..d7d5cbfb3 100644
--- a/src/modules/extra/m_ldap.cpp
+++ b/src/modules/extra/m_ldap.cpp
@@ -189,7 +189,7 @@ class LDAPCompare : public LDAPRequest
class LDAPService : public LDAPProvider, public SocketThread
{
LDAP* con = nullptr;
- reference<ConfigTag> config;
+ std::shared_ptr<ConfigTag> config;
time_t last_connect = 0;
int searchscope;
time_t timeout;
@@ -278,7 +278,7 @@ class LDAPService : public LDAPProvider, public SocketThread
query_queue queries, results;
std::mutex process_mutex; /* held when processing requests not in either queue */
- LDAPService(Module* c, ConfigTag* tag)
+ LDAPService(Module* c, std::shared_ptr<ConfigTag> tag)
: LDAPProvider(c, "LDAP/" + tag->getString("id"))
, config(tag)
{
diff --git a/src/modules/extra/m_mysql.cpp b/src/modules/extra/m_mysql.cpp
index 40d3f107a..385cda188 100644
--- a/src/modules/extra/m_mysql.cpp
+++ b/src/modules/extra/m_mysql.cpp
@@ -295,12 +295,12 @@ class SQLConnection : public SQL::Provider
}
public:
- reference<ConfigTag> config;
+ std::shared_ptr<ConfigTag> config;
MYSQL* connection = nullptr;
std::mutex lock;
// This constructor creates an SQLConnection object with the given credentials, but does not connect yet.
- SQLConnection(Module* p, ConfigTag* tag)
+ SQLConnection(Module* p, std::shared_ptr<ConfigTag> tag)
: SQL::Provider(p, tag->getString("id"))
, config(tag)
{
diff --git a/src/modules/extra/m_pgsql.cpp b/src/modules/extra/m_pgsql.cpp
index cb5c492bf..d1d8d1403 100644
--- a/src/modules/extra/m_pgsql.cpp
+++ b/src/modules/extra/m_pgsql.cpp
@@ -185,13 +185,13 @@ class PgSQLresult : public SQL::Result
class SQLConn : public SQL::Provider, public EventHandler
{
public:
- reference<ConfigTag> conf; /* The <database> entry */
+ std::shared_ptr<ConfigTag> conf; /* The <database> entry */
std::deque<QueueItem> queue;
PGconn* sql = nullptr; /* PgSQL database connection handle */
SQLstatus status = CWRITE; /* PgSQL database connection status */
QueueItem qinprog; /* If there is currently a query in progress */
- SQLConn(Module* Creator, ConfigTag* tag)
+ SQLConn(Module* Creator, std::shared_ptr<ConfigTag> tag)
: SQL::Provider(Creator, tag->getString("id"))
, conf(tag)
, qinprog(NULL, "")
diff --git a/src/modules/extra/m_sqlite3.cpp b/src/modules/extra/m_sqlite3.cpp
index bf11f25e3..cc8f0ef39 100644
--- a/src/modules/extra/m_sqlite3.cpp
+++ b/src/modules/extra/m_sqlite3.cpp
@@ -96,10 +96,10 @@ class SQLite3Result : public SQL::Result
class SQLConn : public SQL::Provider
{
sqlite3* conn;
- reference<ConfigTag> config;
+ std::shared_ptr<ConfigTag> config;
public:
- SQLConn(Module* Parent, ConfigTag* tag)
+ SQLConn(Module* Parent, std::shared_ptr<ConfigTag> tag)
: SQL::Provider(Parent, tag->getString("id"))
, config(tag)
{
diff --git a/src/modules/extra/m_ssl_gnutls.cpp b/src/modules/extra/m_ssl_gnutls.cpp
index da40e6e34..4c0a746bb 100644
--- a/src/modules/extra/m_ssl_gnutls.cpp
+++ b/src/modules/extra/m_ssl_gnutls.cpp
@@ -501,7 +501,7 @@ namespace GnuTLS
return ret;
}
- static std::string GetPrioStr(const std::string& profilename, ConfigTag* tag)
+ static std::string GetPrioStr(const std::string& profilename, std::shared_ptr<ConfigTag> tag)
{
// Use default priority string if this tag does not specify one
std::string priostr = GnuTLS::Priority::GetDefault();
@@ -545,7 +545,7 @@ namespace GnuTLS
unsigned int outrecsize;
bool requestclientcert;
- Config(const std::string& profilename, ConfigTag* tag)
+ Config(const std::string& profilename, std::shared_ptr<ConfigTag> tag)
: name(profilename)
, certstr(ReadFile(tag->getString("certfile", "cert.pem", 1)))
, keystr(ReadFile(tag->getString("keyfile", "key.pem", 1)))
diff --git a/src/modules/extra/m_ssl_mbedtls.cpp b/src/modules/extra/m_ssl_mbedtls.cpp
index 67246ce76..916e6fef7 100644
--- a/src/modules/extra/m_ssl_mbedtls.cpp
+++ b/src/modules/extra/m_ssl_mbedtls.cpp
@@ -405,7 +405,7 @@ namespace mbedTLS
const unsigned int outrecsize;
const bool requestclientcert;
- Config(const std::string& profilename, ConfigTag* tag, CTRDRBG& ctr_drbg)
+ Config(const std::string& profilename, std::shared_ptr<ConfigTag> tag, CTRDRBG& ctr_drbg)
: name(profilename)
, ctrdrbg(ctr_drbg)
, certstr(ReadFile(tag->getString("certfile", "cert.pem", 1)))
diff --git a/src/modules/extra/m_ssl_openssl.cpp b/src/modules/extra/m_ssl_openssl.cpp
index 401dfaeb1..5cfc0fb76 100644
--- a/src/modules/extra/m_ssl_openssl.cpp
+++ b/src/modules/extra/m_ssl_openssl.cpp
@@ -305,7 +305,7 @@ namespace OpenSSL
* @param tag Config tag defining this profile
* @param context Context object to manipulate
*/
- void SetContextOptions(const std::string& ctxname, ConfigTag* tag, Context& context)
+ void SetContextOptions(const std::string& ctxname, std::shared_ptr<ConfigTag> tag, Context& context)
{
long setoptions = tag->getInt(ctxname + "setoptions", 0);
long clearoptions = tag->getInt(ctxname + "clearoptions", 0);
@@ -341,7 +341,7 @@ namespace OpenSSL
}
public:
- Profile(const std::string& profilename, ConfigTag* tag)
+ Profile(const std::string& profilename, std::shared_ptr<ConfigTag> tag)
: name(profilename)
, dh(ServerInstance->Config->Paths.PrependConfig(tag->getString("dhfile", "dhparams.pem", 1)))
, ctx(SSL_CTX_new(SSLv23_server_method()))
@@ -865,7 +865,7 @@ class OpenSSLIOHookProvider : public IOHookProvider
OpenSSL::Profile profile;
public:
- OpenSSLIOHookProvider(Module* mod, const std::string& profilename, ConfigTag* tag)
+ OpenSSLIOHookProvider(Module* mod, const std::string& profilename, std::shared_ptr<ConfigTag> tag)
: IOHookProvider(mod, "ssl/" + profilename, IOHookProvider::IOH_SSL)
, profile(profilename, tag)
{
diff --git a/src/modules/m_alias.cpp b/src/modules/m_alias.cpp
index 769b1ffcb..58328af88 100644
--- a/src/modules/m_alias.cpp
+++ b/src/modules/m_alias.cpp
@@ -106,7 +106,7 @@ class ModuleAlias : public Module
newAliases.insert(std::make_pair(a.AliasedCommand, a));
}
- ConfigTag* fantasy = ServerInstance->Config->ConfValue("fantasy");
+ auto fantasy = ServerInstance->Config->ConfValue("fantasy");
AllowBots = fantasy->getBool("allowbots", false);
fprefix = fantasy->getString("prefix", "!", 1, ServerInstance->Config->Limits.MaxLine);
Aliases.swap(newAliases);
diff --git a/src/modules/m_anticaps.cpp b/src/modules/m_anticaps.cpp
index ab6a7653f..ef961c69d 100644
--- a/src/modules/m_anticaps.cpp
+++ b/src/modules/m_anticaps.cpp
@@ -188,7 +188,7 @@ class ModuleAntiCaps : public Module
void ReadConfig(ConfigStatus&) override
{
- ConfigTag* tag = ServerInstance->Config->ConfValue("anticaps");
+ auto tag = ServerInstance->Config->ConfValue("anticaps");
uppercase.reset();
const std::string upper = tag->getString("uppercase", "ABCDEFGHIJKLMNOPQRSTUVWXYZ", 1);
diff --git a/src/modules/m_auditorium.cpp b/src/modules/m_auditorium.cpp
index bdc28866d..7b8ea300d 100644
--- a/src/modules/m_auditorium.cpp
+++ b/src/modules/m_auditorium.cpp
@@ -85,7 +85,7 @@ class ModuleAuditorium
void ReadConfig(ConfigStatus& status) override
{
- ConfigTag* tag = ServerInstance->Config->ConfValue("auditorium");
+ auto tag = ServerInstance->Config->ConfValue("auditorium");
OpsVisible = tag->getBool("opvisible");
OpsCanSee = tag->getBool("opcansee");
OperCanSee = tag->getBool("opercansee", true);
diff --git a/src/modules/m_bcrypt.cpp b/src/modules/m_bcrypt.cpp
index 2050b94ae..a47ce8f36 100644
--- a/src/modules/m_bcrypt.cpp
+++ b/src/modules/m_bcrypt.cpp
@@ -86,7 +86,7 @@ class ModuleBCrypt : public Module
void ReadConfig(ConfigStatus& status) override
{
- ConfigTag* conf = ServerInstance->Config->ConfValue("bcrypt");
+ auto conf = ServerInstance->Config->ConfValue("bcrypt");
bcrypt.rounds = conf->getUInt("rounds", 10, 1);
}
};
diff --git a/src/modules/m_blockamsg.cpp b/src/modules/m_blockamsg.cpp
index d85624b17..0f1c883d8 100644
--- a/src/modules/m_blockamsg.cpp
+++ b/src/modules/m_blockamsg.cpp
@@ -61,7 +61,7 @@ class ModuleBlockAmsg : public Module
}
void ReadConfig(ConfigStatus& status) override
{
- ConfigTag* tag = ServerInstance->Config->ConfValue("blockamsg");
+ auto tag = ServerInstance->Config->ConfValue("blockamsg");
action = tag->getEnum("action", IBLOCK_KILLOPERS, {
{ "kill", IBLOCK_KILL },
{ "killopers", IBLOCK_KILLOPERS },
diff --git a/src/modules/m_callerid.cpp b/src/modules/m_callerid.cpp
index 14b017f0b..615832185 100644
--- a/src/modules/m_callerid.cpp
+++ b/src/modules/m_callerid.cpp
@@ -456,7 +456,7 @@ public:
void ReadConfig(ConfigStatus& status) override
{
- ConfigTag* tag = ServerInstance->Config->ConfValue("callerid");
+ auto tag = ServerInstance->Config->ConfValue("callerid");
cmd.maxaccepts = tag->getUInt("maxaccepts", 30);
tracknick = tag->getBool("tracknick");
notify_cooldown = tag->getDuration("cooldown", 60);
diff --git a/src/modules/m_chanfilter.cpp b/src/modules/m_chanfilter.cpp
index af940fa77..fc97a0ad1 100644
--- a/src/modules/m_chanfilter.cpp
+++ b/src/modules/m_chanfilter.cpp
@@ -94,7 +94,7 @@ class ModuleChanFilter : public Module
void ReadConfig(ConfigStatus& status) override
{
- ConfigTag* tag = ServerInstance->Config->ConfValue("chanfilter");
+ auto tag = ServerInstance->Config->ConfValue("chanfilter");
hidemask = tag->getBool("hidemask");
cf.maxlen = tag->getUInt("maxlen", 35, 10, ModeParser::MODE_PARAM_MAX);
notifyuser = tag->getBool("notifyuser", true);
diff --git a/src/modules/m_chanhistory.cpp b/src/modules/m_chanhistory.cpp
index bff2d924c..88f810c86 100644
--- a/src/modules/m_chanhistory.cpp
+++ b/src/modules/m_chanhistory.cpp
@@ -196,7 +196,7 @@ class ModuleChanHistory
void ReadConfig(ConfigStatus& status) override
{
- ConfigTag* tag = ServerInstance->Config->ConfValue("chanhistory");
+ auto tag = ServerInstance->Config->ConfValue("chanhistory");
m.maxlines = tag->getUInt("maxlines", 50, 1);
prefixmsg = tag->getBool("prefixmsg", tag->getBool("notice", true));
dobots = tag->getBool("bots", true);
diff --git a/src/modules/m_channames.cpp b/src/modules/m_channames.cpp
index 91dcc0203..af0d0d9df 100644
--- a/src/modules/m_channames.cpp
+++ b/src/modules/m_channames.cpp
@@ -105,7 +105,7 @@ class ModuleChannelNames : public Module
void ReadConfig(ConfigStatus& status) override
{
- ConfigTag* tag = ServerInstance->Config->ConfValue("channames");
+ auto tag = ServerInstance->Config->ConfValue("channames");
std::string denyToken = tag->getString("denyrange");
std::string allowToken = tag->getString("allowrange");
diff --git a/src/modules/m_chghost.cpp b/src/modules/m_chghost.cpp
index d7333cad0..87f988e75 100644
--- a/src/modules/m_chghost.cpp
+++ b/src/modules/m_chghost.cpp
@@ -100,7 +100,7 @@ class ModuleChgHost : public Module
void ReadConfig(ConfigStatus& status) override
{
- ConfigTag* tag = ServerInstance->Config->ConfValue("hostname");
+ auto tag = ServerInstance->Config->ConfValue("hostname");
const std::string hmap = tag->getString("charmap", "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz.-_/0123456789", 1);
cmd.hostmap.reset();
diff --git a/src/modules/m_conn_join.cpp b/src/modules/m_conn_join.cpp
index 9fb42107f..b12576ff7 100644
--- a/src/modules/m_conn_join.cpp
+++ b/src/modules/m_conn_join.cpp
@@ -80,7 +80,7 @@ class ModuleConnJoin : public Module
void ReadConfig(ConfigStatus& status) override
{
- ConfigTag* tag = ServerInstance->Config->ConfValue("autojoin");
+ auto tag = ServerInstance->Config->ConfValue("autojoin");
defchans = tag->getString("channel");
defdelay = tag->getDuration("delay", 0, 0, 60*15);
}
diff --git a/src/modules/m_conn_waitpong.cpp b/src/modules/m_conn_waitpong.cpp
index 609b24ac9..ffbe09217 100644
--- a/src/modules/m_conn_waitpong.cpp
+++ b/src/modules/m_conn_waitpong.cpp
@@ -40,7 +40,7 @@ class ModuleWaitPong : public Module
void ReadConfig(ConfigStatus& status) override
{
- ConfigTag* tag = ServerInstance->Config->ConfValue("waitpong");
+ auto tag = ServerInstance->Config->ConfValue("waitpong");
sendsnotice = tag->getBool("sendsnotice", false);
killonbadreply = tag->getBool("killonbadreply", true);
}
diff --git a/src/modules/m_connectban.cpp b/src/modules/m_connectban.cpp
index 30dc0d709..f79eb0e06 100644
--- a/src/modules/m_connectban.cpp
+++ b/src/modules/m_connectban.cpp
@@ -70,7 +70,7 @@ class ModuleConnectBan
void ReadConfig(ConfigStatus& status) override
{
- ConfigTag* tag = ServerInstance->Config->ConfValue("connectban");
+ auto tag = ServerInstance->Config->ConfValue("connectban");
ipv4_cidr = tag->getUInt("ipv4cidr", 32, 1, 32);
ipv6_cidr = tag->getUInt("ipv6cidr", 128, 1, 128);
diff --git a/src/modules/m_connflood.cpp b/src/modules/m_connflood.cpp
index 1ae91eb8a..ba40150f7 100644
--- a/src/modules/m_connflood.cpp
+++ b/src/modules/m_connflood.cpp
@@ -46,7 +46,7 @@ class ModuleConnFlood : public Module
void ReadConfig(ConfigStatus& status) override
{
/* read configuration variables */
- ConfigTag* tag = ServerInstance->Config->ConfValue("connflood");
+ auto tag = ServerInstance->Config->ConfValue("connflood");
/* throttle configuration */
seconds = tag->getDuration("period", 30);
maxconns = tag->getUInt("maxconns", 3);
diff --git a/src/modules/m_customprefix.cpp b/src/modules/m_customprefix.cpp
index 70cf68f77..958330dfb 100644
--- a/src/modules/m_customprefix.cpp
+++ b/src/modules/m_customprefix.cpp
@@ -25,9 +25,9 @@
class CustomPrefixMode : public PrefixMode
{
public:
- reference<ConfigTag> tag;
+ std::shared_ptr<ConfigTag> tag;
- CustomPrefixMode(Module* parent, const std::string& Name, char Letter, char Prefix, ConfigTag* Tag)
+ CustomPrefixMode(Module* parent, const std::string& Name, char Letter, char Prefix, std::shared_ptr<ConfigTag> Tag)
: PrefixMode(parent, Name, Letter, 0, Prefix)
, tag(Tag)
{
diff --git a/src/modules/m_dccallow.cpp b/src/modules/m_dccallow.cpp
index 88a599fe8..02a096e25 100644
--- a/src/modules/m_dccallow.cpp
+++ b/src/modules/m_dccallow.cpp
@@ -599,7 +599,7 @@ class ModuleDCCAllow : public Module
}
bfl.swap(newbfl);
- ConfigTag* tag = ServerInstance->Config->ConfValue("dccallow");
+ auto tag = ServerInstance->Config->ConfValue("dccallow");
cmd.ext.maxentries = tag->getUInt("maxentries", 20);
cmd.defaultlength = tag->getDuration("length", 0);
blockchat = tag->getBool("blockchat");
diff --git a/src/modules/m_deaf.cpp b/src/modules/m_deaf.cpp
index 580b96d43..0a4884c3a 100644
--- a/src/modules/m_deaf.cpp
+++ b/src/modules/m_deaf.cpp
@@ -86,7 +86,7 @@ class ModuleDeaf : public Module
void ReadConfig(ConfigStatus& status) override
{
- ConfigTag* tag = ServerInstance->Config->ConfValue("deaf");
+ auto tag = ServerInstance->Config->ConfValue("deaf");
deaf_bypasschars = tag->getString("bypasschars");
deaf_bypasschars_uline = tag->getString("bypasscharsuline");
privdeafuline = tag->getBool("privdeafuline", true);
diff --git a/src/modules/m_delaymsg.cpp b/src/modules/m_delaymsg.cpp
index eb0a7633e..b49f82beb 100644
--- a/src/modules/m_delaymsg.cpp
+++ b/src/modules/m_delaymsg.cpp
@@ -151,7 +151,7 @@ ModResult ModuleDelayMsg::HandleMessage(User* user, const MessageTarget& target,
void ModuleDelayMsg::ReadConfig(ConfigStatus& status)
{
- ConfigTag* tag = ServerInstance->Config->ConfValue("delaymsg");
+ auto tag = ServerInstance->Config->ConfValue("delaymsg");
allownotice = tag->getBool("allownotice", true);
}
diff --git a/src/modules/m_disable.cpp b/src/modules/m_disable.cpp
index 7237fb350..5b28d7987 100644
--- a/src/modules/m_disable.cpp
+++ b/src/modules/m_disable.cpp
@@ -41,7 +41,7 @@ class ModuleDisable : public Module
bool notifyopers;
ModeStatus usermodes;
- void ReadModes(ConfigTag* tag, const std::string& field, ModeType type, ModeStatus& status)
+ void ReadModes(std::shared_ptr<ConfigTag> tag, const std::string& field, ModeType type, ModeStatus& status)
{
const std::string modes = tag->getString(field);
for (std::string::const_iterator iter = modes.begin(); iter != modes.end(); ++iter)
@@ -85,7 +85,7 @@ class ModuleDisable : public Module
void ReadConfig(ConfigStatus& status) override
{
- ConfigTag* tag = ServerInstance->Config->ConfValue("disabled");
+ auto tag = ServerInstance->Config->ConfValue("disabled");
// Parse the disabled commands.
CommandList newcommands;
diff --git a/src/modules/m_filter.cpp b/src/modules/m_filter.cpp
index 620eb13e7..277f9a262 100644
--- a/src/modules/m_filter.cpp
+++ b/src/modules/m_filter.cpp
@@ -627,7 +627,7 @@ void ModuleFilter::ReadConfig(ConfigStatus& status)
}
}
- ConfigTag* tag = ServerInstance->Config->ConfValue("filteropts");
+ auto tag = ServerInstance->Config->ConfValue("filteropts");
std::string newrxengine = tag->getString("engine");
notifyuser = tag->getBool("notifyuser", true);
warnonselfmsg = tag->getBool("warnonselfmsg");
diff --git a/src/modules/m_helpop.cpp b/src/modules/m_helpop.cpp
index 37901c612..e575820f6 100644
--- a/src/modules/m_helpop.cpp
+++ b/src/modules/m_helpop.cpp
@@ -172,7 +172,7 @@ class ModuleHelpop
newhelp.insert(std::make_pair("index", HelpTopic(indexmsg, "List of help topics")));
cmd.help.swap(newhelp);
- ConfigTag* tag = ServerInstance->Config->ConfValue("helpmsg");
+ auto tag = ServerInstance->Config->ConfValue("helpmsg");
cmd.nohelp = tag->getString("nohelp", "There is no help for the topic you searched for. Please try again.", 1);
}
diff --git a/src/modules/m_hostchange.cpp b/src/modules/m_hostchange.cpp
index 89e9783db..ea719c78a 100644
--- a/src/modules/m_hostchange.cpp
+++ b/src/modules/m_hostchange.cpp
@@ -178,7 +178,7 @@ private:
}
}
- ConfigTag* tag = ServerInstance->Config->ConfValue("hostname");
+ auto tag = ServerInstance->Config->ConfValue("hostname");
const std::string hmap = tag->getString("charmap", "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz.-_/0123456789", 1);
hostmap.reset();
diff --git a/src/modules/m_httpd.cpp b/src/modules/m_httpd.cpp
index 7c7a0a5b7..2ca76af2a 100644
--- a/src/modules/m_httpd.cpp
+++ b/src/modules/m_httpd.cpp
@@ -397,7 +397,7 @@ class ModuleHttpServer : public Module
void ReadConfig(ConfigStatus& status) override
{
- ConfigTag* tag = ServerInstance->Config->ConfValue("httpd");
+ auto tag = ServerInstance->Config->ConfValue("httpd");
timeoutsec = tag->getDuration("timeout", 10, 1);
}
diff --git a/src/modules/m_httpd_config.cpp b/src/modules/m_httpd_config.cpp
index db350c7b2..b9cd256b8 100644
--- a/src/modules/m_httpd_config.cpp
+++ b/src/modules/m_httpd_config.cpp
@@ -47,11 +47,9 @@ class ModuleHttpConfig : public Module, public HTTPRequestEventListener
ServerInstance->Logs.Log(MODNAME, LOG_DEBUG, "Handling request for the HTTP /config route");
std::stringstream buffer;
- ConfigDataHash& config = ServerInstance->Config->config_data;
- for (ConfigDataHash::const_iterator citer = config.begin(); citer != config.end(); ++citer)
+ for (auto& [_, tag] : ServerInstance->Config->config_data)
{
// Show the location of the tag in a comment.
- ConfigTag* tag = citer->second;
buffer << "# " << tag->getTagLocation() << std::endl
<< '<' << tag->tag << ' ';
diff --git a/src/modules/m_httpd_stats.cpp b/src/modules/m_httpd_stats.cpp
index 6fcf333ce..2d38d96e1 100644
--- a/src/modules/m_httpd_stats.cpp
+++ b/src/modules/m_httpd_stats.cpp
@@ -422,7 +422,7 @@ class ModuleHttpStats : public Module, public HTTPRequestEventListener
void ReadConfig(ConfigStatus& status) override
{
- ConfigTag* conf = ServerInstance->Config->ConfValue("httpstats");
+ auto conf = ServerInstance->Config->ConfValue("httpstats");
// Parameterized queries may cause a performance issue
// Due to the sheer volume of data
diff --git a/src/modules/m_ident.cpp b/src/modules/m_ident.cpp
index d0c7392e0..b53d970a8 100644
--- a/src/modules/m_ident.cpp
+++ b/src/modules/m_ident.cpp
@@ -307,7 +307,7 @@ class ModuleIdent : public Module
void ReadConfig(ConfigStatus& status) override
{
- ConfigTag* tag = ServerInstance->Config->ConfValue("ident");
+ auto tag = ServerInstance->Config->ConfValue("ident");
timeout = tag->getDuration("timeout", 5, 1, 60);
prefixunqueried = tag->getBool("prefixunqueried");
}
@@ -330,7 +330,7 @@ class ModuleIdent : public Module
if (user->registered == REG_ALL)
return;
- ConfigTag* tag = user->MyClass->config;
+ std::shared_ptr<ConfigTag> tag = user->MyClass->config;
if (!tag->getBool("useident", true))
{
state.set(user, IDENT_SKIPPED);
diff --git a/src/modules/m_ircv3.cpp b/src/modules/m_ircv3.cpp
index 4d6f97a7a..22e747964 100644
--- a/src/modules/m_ircv3.cpp
+++ b/src/modules/m_ircv3.cpp
@@ -133,7 +133,7 @@ class ModuleIRCv3
void ReadConfig(ConfigStatus& status) override
{
- ConfigTag* conf = ServerInstance->Config->ConfValue("ircv3");
+ auto conf = ServerInstance->Config->ConfValue("ircv3");
cap_accountnotify.SetActive(conf->getBool("accountnotify", true));
joinhook.awaycap.SetActive(conf->getBool("awaynotify", true));
joinhook.extendedjoincap.SetActive(conf->getBool("extendedjoin", true));
diff --git a/src/modules/m_ircv3_sts.cpp b/src/modules/m_ircv3_sts.cpp
index 5eec16944..1c8a88e8d 100644
--- a/src/modules/m_ircv3_sts.cpp
+++ b/src/modules/m_ircv3_sts.cpp
@@ -161,7 +161,7 @@ class ModuleIRCv3STS : public Module
void ReadConfig(ConfigStatus& status) override
{
// TODO: Multiple SNI profiles
- ConfigTag* tag = ServerInstance->Config->ConfValue("sts");
+ auto tag = ServerInstance->Config->ConfValue("sts");
if (tag == ServerInstance->Config->EmptyTag)
throw ModuleException("You must define a STS policy!");
diff --git a/src/modules/m_joinflood.cpp b/src/modules/m_joinflood.cpp
index 26fcb1462..e049d4b42 100644
--- a/src/modules/m_joinflood.cpp
+++ b/src/modules/m_joinflood.cpp
@@ -154,7 +154,7 @@ class ModuleJoinFlood
void ReadConfig(ConfigStatus&) override
{
- ConfigTag* tag = ServerInstance->Config->ConfValue("joinflood");
+ auto tag = ServerInstance->Config->ConfValue("joinflood");
duration = tag->getDuration("duration", 60, 10, 600);
bootwait = tag->getDuration("bootwait", 30);
splitwait = tag->getDuration("splitwait", 30);
diff --git a/src/modules/m_knock.cpp b/src/modules/m_knock.cpp
index c23188fce..1aae0b81b 100644
--- a/src/modules/m_knock.cpp
+++ b/src/modules/m_knock.cpp
@@ -139,7 +139,7 @@ class ModuleKnock : public Module
void ReadConfig(ConfigStatus& status) override
{
- ConfigTag* tag = ServerInstance->Config->ConfValue("knock");
+ auto tag = ServerInstance->Config->ConfValue("knock");
cmd.notify = tag->getEnum("notify", KN_SEND_NOTICE, {
{ "both", KN_SEND_BOTH },
{ "notice", KN_SEND_NOTICE },
diff --git a/src/modules/m_ldapauth.cpp b/src/modules/m_ldapauth.cpp
index 55a6b4c8f..2a5e40b7b 100644
--- a/src/modules/m_ldapauth.cpp
+++ b/src/modules/m_ldapauth.cpp
@@ -324,7 +324,7 @@ public:
void ReadConfig(ConfigStatus& status) override
{
- ConfigTag* tag = ServerInstance->Config->ConfValue("ldapauth");
+ auto tag = ServerInstance->Config->ConfValue("ldapauth");
whitelistedcidrs.clear();
requiredattributes.clear();
diff --git a/src/modules/m_ldapoper.cpp b/src/modules/m_ldapoper.cpp
index 3e3195d8e..d703b73eb 100644
--- a/src/modules/m_ldapoper.cpp
+++ b/src/modules/m_ldapoper.cpp
@@ -199,7 +199,7 @@ class ModuleLDAPOper : public Module
void ReadConfig(ConfigStatus& status) override
{
- ConfigTag* tag = ServerInstance->Config->ConfValue("ldapoper");
+ auto tag = ServerInstance->Config->ConfValue("ldapoper");
LDAP.SetProvider("LDAP/" + tag->getString("dbid"));
base = tag->getString("baserdn");
@@ -217,7 +217,7 @@ class ModuleLDAPOper : public Module
if (it == ServerInstance->Config->oper_blocks.end())
return MOD_RES_PASSTHRU;
- ConfigTag* tag = it->second->oper_block;
+ std::shared_ptr<ConfigTag> tag = it->second->oper_block;
if (!tag)
return MOD_RES_PASSTHRU;
diff --git a/src/modules/m_messageflood.cpp b/src/modules/m_messageflood.cpp
index 45d0c0dcd..199ead1a5 100644
--- a/src/modules/m_messageflood.cpp
+++ b/src/modules/m_messageflood.cpp
@@ -131,7 +131,7 @@ private:
void ReadConfig(ConfigStatus&) override
{
- ConfigTag* tag = ServerInstance->Config->ConfValue("messageflood");
+ auto tag = ServerInstance->Config->ConfValue("messageflood");
notice = tag->getFloat("notice", 1.0);
privmsg = tag->getFloat("privmsg", 1.0);
tagmsg = tag->getFloat("tagmsg", 0.2);
diff --git a/src/modules/m_monitor.cpp b/src/modules/m_monitor.cpp
index 520b3c3b5..13d8a6d1b 100644
--- a/src/modules/m_monitor.cpp
+++ b/src/modules/m_monitor.cpp
@@ -402,7 +402,7 @@ class ModuleMonitor
void ReadConfig(ConfigStatus& status) override
{
- ConfigTag* tag = ServerInstance->Config->ConfValue("monitor");
+ auto tag = ServerInstance->Config->ConfValue("monitor");
cmd.maxmonitor = tag->getUInt("maxentries", 30, 1);
}
diff --git a/src/modules/m_muteban.cpp b/src/modules/m_muteban.cpp
index 1a543974e..22ac70565 100644
--- a/src/modules/m_muteban.cpp
+++ b/src/modules/m_muteban.cpp
@@ -44,7 +44,7 @@ class ModuleQuietBan
void ReadConfig(ConfigStatus& status) override
{
- ConfigTag* tag = ServerInstance->Config->ConfValue("muteban");
+ auto tag = ServerInstance->Config->ConfValue("muteban");
notifyuser = tag->getBool("notifyuser", true);
}
diff --git a/src/modules/m_nationalchars.cpp b/src/modules/m_nationalchars.cpp
index dc0ceb830..736023891 100644
--- a/src/modules/m_nationalchars.cpp
+++ b/src/modules/m_nationalchars.cpp
@@ -273,7 +273,7 @@ class ModuleNationalChars : public Module
void ReadConfig(ConfigStatus& status) override
{
- ConfigTag* tag = ServerInstance->Config->ConfValue("nationalchars");
+ auto tag = ServerInstance->Config->ConfValue("nationalchars");
charset = tag->getString("file");
std::string casemapping = tag->getString("casemapping", FileSystem::GetFileName(charset), 1);
if (casemapping.find(' ') != std::string::npos)
diff --git a/src/modules/m_nickflood.cpp b/src/modules/m_nickflood.cpp
index 57ef92717..c1d4202bb 100644
--- a/src/modules/m_nickflood.cpp
+++ b/src/modules/m_nickflood.cpp
@@ -138,7 +138,7 @@ class ModuleNickFlood : public Module
void ReadConfig(ConfigStatus&) override
{
- ConfigTag* tag = ServerInstance->Config->ConfValue("nickflood");
+ auto tag = ServerInstance->Config->ConfValue("nickflood");
duration = tag->getDuration("duration", 60, 10, 600);
}
diff --git a/src/modules/m_ojoin.cpp b/src/modules/m_ojoin.cpp
index 7e9d76bca..b31d0f12e 100644
--- a/src/modules/m_ojoin.cpp
+++ b/src/modules/m_ojoin.cpp
@@ -135,7 +135,7 @@ class ModuleOjoin : public Module
void ReadConfig(ConfigStatus& status) override
{
- ConfigTag* Conf = ServerInstance->Config->ConfValue("ojoin");
+ auto Conf = ServerInstance->Config->ConfValue("ojoin");
mycommand.notice = Conf->getBool("notice", true);
mycommand.op = Conf->getBool("op", true);
}
diff --git a/src/modules/m_operjoin.cpp b/src/modules/m_operjoin.cpp
index ff776c9f2..3919c5f0b 100644
--- a/src/modules/m_operjoin.cpp
+++ b/src/modules/m_operjoin.cpp
@@ -40,7 +40,7 @@ class ModuleOperjoin : public Module
void ReadConfig(ConfigStatus& status) override
{
- ConfigTag* tag = ServerInstance->Config->ConfValue("operjoin");
+ auto tag = ServerInstance->Config->ConfValue("operjoin");
override = tag->getBool("override", false);
irc::commasepstream ss(tag->getString("channel"));
diff --git a/src/modules/m_opermotd.cpp b/src/modules/m_opermotd.cpp
index 85053588a..efb92fc78 100644
--- a/src/modules/m_opermotd.cpp
+++ b/src/modules/m_opermotd.cpp
@@ -106,7 +106,7 @@ class ModuleOpermotd : public Module
void ReadConfig(ConfigStatus& status) override
{
cmd.opermotd.clear();
- ConfigTag* conf = ServerInstance->Config->ConfValue("opermotd");
+ auto conf = ServerInstance->Config->ConfValue("opermotd");
onoper = conf->getBool("onoper", true);
try
diff --git a/src/modules/m_override.cpp b/src/modules/m_override.cpp
index a8a89545e..7419e0f7c 100644
--- a/src/modules/m_override.cpp
+++ b/src/modules/m_override.cpp
@@ -94,7 +94,7 @@ class ModuleOverride
void ReadConfig(ConfigStatus& status) override
{
// re-read our config options
- ConfigTag* tag = ServerInstance->Config->ConfValue("override");
+ auto tag = ServerInstance->Config->ConfValue("override");
NoisyOverride = tag->getBool("noisy");
RequireKey = tag->getBool("requirekey");
}
diff --git a/src/modules/m_passforward.cpp b/src/modules/m_passforward.cpp
index 57f63ed30..daf2a5ee7 100644
--- a/src/modules/m_passforward.cpp
+++ b/src/modules/m_passforward.cpp
@@ -38,7 +38,7 @@ class ModulePassForward : public Module
void ReadConfig(ConfigStatus& status) override
{
- ConfigTag* tag = ServerInstance->Config->ConfValue("passforward");
+ auto tag = ServerInstance->Config->ConfValue("passforward");
nickrequired = tag->getString("nick", "NickServ");
forwardmsg = tag->getString("forwardmsg", "NOTICE $nick :*** Forwarding PASS to $nickrequired");
forwardcmd = tag->getString("cmd", "SQUERY $nickrequired :IDENTIFY $pass", 1);
diff --git a/src/modules/m_pbkdf2.cpp b/src/modules/m_pbkdf2.cpp
index 9aaf68c96..6656735f0 100644
--- a/src/modules/m_pbkdf2.cpp
+++ b/src/modules/m_pbkdf2.cpp
@@ -179,7 +179,7 @@ class ModulePBKDF2 : public Module
void GetConfig()
{
// First set the common values
- ConfigTag* tag = ServerInstance->Config->ConfValue("pbkdf2");
+ auto tag = ServerInstance->Config->ConfValue("pbkdf2");
ProviderConfig newglobal;
newglobal.iterations = tag->getUInt("iterations", 12288, 1);
newglobal.dkey_length = tag->getUInt("length", 32, 1, 1024);
diff --git a/src/modules/m_permchannels.cpp b/src/modules/m_permchannels.cpp
index 383b2ad07..4dcb362f5 100644
--- a/src/modules/m_permchannels.cpp
+++ b/src/modules/m_permchannels.cpp
@@ -183,7 +183,7 @@ public:
void ReadConfig(ConfigStatus& status) override
{
- ConfigTag* tag = ServerInstance->Config->ConfValue("permchanneldb");
+ auto tag = ServerInstance->Config->ConfValue("permchanneldb");
permchannelsconf = tag->getString("filename");
save_listmodes = tag->getBool("listmodes");
SetInterval(tag->getDuration("saveperiod", 5));
diff --git a/src/modules/m_randquote.cpp b/src/modules/m_randquote.cpp
index 743a67227..e95793dbd 100644
--- a/src/modules/m_randquote.cpp
+++ b/src/modules/m_randquote.cpp
@@ -39,7 +39,7 @@ class ModuleRandQuote : public Module
void init() override
{
- ConfigTag* conf = ServerInstance->Config->ConfValue("randquote");
+ auto conf = ServerInstance->Config->ConfValue("randquote");
prefix = conf->getString("prefix");
suffix = conf->getString("suffix");
FileReader reader(conf->getString("file", "quotes", 1));
diff --git a/src/modules/m_regex_stdlib.cpp b/src/modules/m_regex_stdlib.cpp
index db59fe6a1..e59f18f46 100644
--- a/src/modules/m_regex_stdlib.cpp
+++ b/src/modules/m_regex_stdlib.cpp
@@ -87,7 +87,7 @@ class ModuleRegexStdLib : public Module
void ReadConfig(ConfigStatus& status) override
{
- ConfigTag* tag = ServerInstance->Config->ConfValue("stdregex");
+ auto tag = ServerInstance->Config->ConfValue("stdregex");
regex.regextype = tag->getEnum("type", std::regex::ECMAScript,
{
{ "awk", std::regex::awk },
diff --git a/src/modules/m_remove.cpp b/src/modules/m_remove.cpp
index b1ce048b6..23bd7bf3e 100644
--- a/src/modules/m_remove.cpp
+++ b/src/modules/m_remove.cpp
@@ -227,7 +227,7 @@ class ModuleRemove
void ReadConfig(ConfigStatus& status) override
{
- ConfigTag* tag = ServerInstance->Config->ConfValue("remove");
+ auto tag = ServerInstance->Config->ConfValue("remove");
supportnokicks = tag->getBool("supportnokicks");
cmd1.protectedrank = cmd2.protectedrank = tag->getUInt("protectedrank", 50000);
}
diff --git a/src/modules/m_repeat.cpp b/src/modules/m_repeat.cpp
index 3218888a9..3bb1e9bff 100644
--- a/src/modules/m_repeat.cpp
+++ b/src/modules/m_repeat.cpp
@@ -236,7 +236,7 @@ class RepeatMode : public ParamMode<RepeatMode, SimpleExtItem<ChannelSettings> >
void ReadConfig()
{
- ConfigTag* conf = ServerInstance->Config->ConfValue("repeat");
+ auto conf = ServerInstance->Config->ConfValue("repeat");
ms.MaxLines = conf->getUInt("maxlines", 20);
ms.MaxBacklog = conf->getUInt("maxbacklog", 20);
ms.MaxSecs = conf->getDuration("maxtime", 0);
diff --git a/src/modules/m_restrictchans.cpp b/src/modules/m_restrictchans.cpp
index f08e806dd..4ed4049c5 100644
--- a/src/modules/m_restrictchans.cpp
+++ b/src/modules/m_restrictchans.cpp
@@ -72,7 +72,7 @@ class ModuleRestrictChans : public Module
allowchans.swap(newallows);
// Global config
- ConfigTag* tag = ServerInstance->Config->ConfValue("restrictchans");
+ auto tag = ServerInstance->Config->ConfValue("restrictchans");
allowregistered = tag->getBool("allowregistered", false);
}
diff --git a/src/modules/m_rline.cpp b/src/modules/m_rline.cpp
index 4b282aa2d..e040e9430 100644
--- a/src/modules/m_rline.cpp
+++ b/src/modules/m_rline.cpp
@@ -269,7 +269,7 @@ class ModuleRLine
void ReadConfig(ConfigStatus& status) override
{
- ConfigTag* tag = ServerInstance->Config->ConfValue("rline");
+ auto tag = ServerInstance->Config->ConfValue("rline");
MatchOnNickChange = tag->getBool("matchonnickchange");
ZlineOnMatch = tag->getBool("zlineonmatch");
diff --git a/src/modules/m_sasl.cpp b/src/modules/m_sasl.cpp
index b174cb4f5..560ad4273 100644
--- a/src/modules/m_sasl.cpp
+++ b/src/modules/m_sasl.cpp
@@ -434,7 +434,7 @@ class ModuleSASL : public Module
void ReadConfig(ConfigStatus& status) override
{
- ConfigTag* tag = ServerInstance->Config->ConfValue("sasl");
+ auto tag = ServerInstance->Config->ConfValue("sasl");
const std::string target = tag->getString("target");
if (target.empty())
diff --git a/src/modules/m_securelist.cpp b/src/modules/m_securelist.cpp
index 8e74314f9..a0dd8e884 100644
--- a/src/modules/m_securelist.cpp
+++ b/src/modules/m_securelist.cpp
@@ -59,7 +59,7 @@ class ModuleSecureList
newallows.push_back(host);
}
- ConfigTag* tag = ServerInstance->Config->ConfValue("securelist");
+ auto tag = ServerInstance->Config->ConfValue("securelist");
exemptregistered = tag->getBool("exemptregistered");
showmsg = tag->getBool("showmsg", true);
WaitTime = tag->getDuration("waittime", 60, 1);
diff --git a/src/modules/m_sethost.cpp b/src/modules/m_sethost.cpp
index ef7a8c315..9d51830d4 100644
--- a/src/modules/m_sethost.cpp
+++ b/src/modules/m_sethost.cpp
@@ -82,7 +82,7 @@ class ModuleSetHost : public Module
void ReadConfig(ConfigStatus& status) override
{
- ConfigTag* tag = ServerInstance->Config->ConfValue("hostname");
+ auto tag = ServerInstance->Config->ConfValue("hostname");
const std::string hmap = tag->getString("charmap", "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz.-_/0123456789", 1);
cmd.hostmap.reset();
diff --git a/src/modules/m_setname.cpp b/src/modules/m_setname.cpp
index e9e75bbdc..97aebaf9b 100644
--- a/src/modules/m_setname.cpp
+++ b/src/modules/m_setname.cpp
@@ -81,7 +81,7 @@ class ModuleSetName : public Module
void ReadConfig(ConfigStatus& status) override
{
- ConfigTag* tag = ServerInstance->Config->ConfValue("setname");
+ auto tag = ServerInstance->Config->ConfValue("setname");
// Whether the module should only be usable by server operators.
bool operonly = tag->getBool("operonly");
diff --git a/src/modules/m_showfile.cpp b/src/modules/m_showfile.cpp
index 624d6c249..7f2c062ab 100644
--- a/src/modules/m_showfile.cpp
+++ b/src/modules/m_showfile.cpp
@@ -78,7 +78,7 @@ class CommandShowFile : public Command
return CmdResult::SUCCESS;
}
- void UpdateSettings(ConfigTag* tag, const std::vector<std::string>& filecontents)
+ void UpdateSettings(std::shared_ptr<ConfigTag> tag, const std::vector<std::string>& filecontents)
{
introtext = tag->getString("introtext", "Showing " + name);
endtext = tag->getString("endtext", "End of " + name);
@@ -103,7 +103,7 @@ class ModuleShowFile : public Module
private:
std::vector<CommandShowFile*> cmds;
- void ReadTag(ConfigTag* tag, std::vector<CommandShowFile*>& newcmds)
+ void ReadTag(std::shared_ptr<ConfigTag> tag, std::vector<CommandShowFile*>& newcmds)
{
std::string cmdname = tag->getString("name");
if (cmdname.empty())
diff --git a/src/modules/m_showwhois.cpp b/src/modules/m_showwhois.cpp
index 26182df47..f48f78954 100644
--- a/src/modules/m_showwhois.cpp
+++ b/src/modules/m_showwhois.cpp
@@ -91,7 +91,7 @@ class ModuleShowwhois : public Module, public Whois::EventListener
void ReadConfig(ConfigStatus& status) override
{
- ConfigTag* tag = ServerInstance->Config->ConfValue("showwhois");
+ auto tag = ServerInstance->Config->ConfValue("showwhois");
sw.SetOperOnly(tag->getBool("opersonly", true));
ShowWhoisFromOpers = tag->getBool("showfromopers", true);
diff --git a/src/modules/m_shun.cpp b/src/modules/m_shun.cpp
index dce7cf6ea..9e5dcbc35 100644
--- a/src/modules/m_shun.cpp
+++ b/src/modules/m_shun.cpp
@@ -205,7 +205,7 @@ class ModuleShun : public Module, public Stats::EventListener
void ReadConfig(ConfigStatus& status) override
{
- ConfigTag* tag = ServerInstance->Config->ConfValue("shun");
+ auto tag = ServerInstance->Config->ConfValue("shun");
cleanedcommands.clear();
irc::spacesepstream cleanedcmds(tag->getString("cleanedcommands", "AWAY PART QUIT"));
diff --git a/src/modules/m_silence.cpp b/src/modules/m_silence.cpp
index cd3c6385c..8505b998b 100644
--- a/src/modules/m_silence.cpp
+++ b/src/modules/m_silence.cpp
@@ -446,7 +446,7 @@ class ModuleSilence
void ReadConfig(ConfigStatus& status) override
{
- ConfigTag* tag = ServerInstance->Config->ConfValue("silence");
+ auto tag = ServerInstance->Config->ConfValue("silence");
exemptuline = tag->getBool("exemptuline", true);
cmd.ext.maxsilence = tag->getUInt("maxentries", 32, 1);
}
diff --git a/src/modules/m_spanningtree/link.h b/src/modules/m_spanningtree/link.h
index 094aa1dea..87fd2560f 100644
--- a/src/modules/m_spanningtree/link.h
+++ b/src/modules/m_spanningtree/link.h
@@ -29,7 +29,7 @@
class Link
{
public:
- reference<ConfigTag> tag;
+ std::shared_ptr<ConfigTag> tag;
std::string Name;
std::string IPAddr;
unsigned int Port;
@@ -42,17 +42,23 @@ class Link
unsigned int Timeout;
std::string Bind;
bool Hidden;
- Link(ConfigTag* Tag) : tag(Tag) {}
+ Link(std::shared_ptr<ConfigTag> Tag)
+ : tag(Tag)
+ {
+ }
};
class Autoconnect
{
public:
- reference<ConfigTag> tag;
+ std::shared_ptr<ConfigTag> tag;
std::vector<std::string> servers;
unsigned long Period;
time_t NextConnectTime;
/** Negative == inactive */
int position;
- Autoconnect(ConfigTag* Tag) : tag(Tag) {}
+ Autoconnect(std::shared_ptr<ConfigTag> Tag)
+ : tag(Tag)
+ {
+ }
};
diff --git a/src/modules/m_spanningtree/utils.cpp b/src/modules/m_spanningtree/utils.cpp
index 8c3786aff..7c33d7a07 100644
--- a/src/modules/m_spanningtree/utils.cpp
+++ b/src/modules/m_spanningtree/utils.cpp
@@ -238,8 +238,8 @@ void SpanningTreeUtilities::RefreshIPCache()
void SpanningTreeUtilities::ReadConfiguration()
{
- ConfigTag* security = ServerInstance->Config->ConfValue("security");
- ConfigTag* options = ServerInstance->Config->ConfValue("options");
+ auto security = ServerInstance->Config->ConfValue("security");
+ auto options = ServerInstance->Config->ConfValue("options");
FlatLinks = security->getBool("flatlinks");
HideULines = security->getBool("hideulines");
HideSplits = security->getBool("hidesplits");
diff --git a/src/modules/m_sqlauth.cpp b/src/modules/m_sqlauth.cpp
index 6acb10760..20e4a6a45 100644
--- a/src/modules/m_sqlauth.cpp
+++ b/src/modules/m_sqlauth.cpp
@@ -144,7 +144,7 @@ class ModuleSQLAuth : public Module
void ReadConfig(ConfigStatus& status) override
{
- ConfigTag* conf = ServerInstance->Config->ConfValue("sqlauth");
+ auto conf = ServerInstance->Config->ConfValue("sqlauth");
std::string dbid = conf->getString("dbid");
if (dbid.empty())
SQL.SetProvider("SQL");
@@ -167,7 +167,7 @@ class ModuleSQLAuth : public Module
ModResult OnUserRegister(LocalUser* user) override
{
// Note this is their initial (unresolved) connect block
- ConfigTag* tag = user->MyClass->config;
+ std::shared_ptr<ConfigTag> tag = user->MyClass->config;
if (!tag->getBool("usesqlauth", true))
return MOD_RES_PASSTHRU;
diff --git a/src/modules/m_sqloper.cpp b/src/modules/m_sqloper.cpp
index fe37f1fb2..11c995dab 100644
--- a/src/modules/m_sqloper.cpp
+++ b/src/modules/m_sqloper.cpp
@@ -71,7 +71,7 @@ class OperQuery : public SQL::Query
// Create the oper tag as if we were the conf file.
ConfigItems* items;
- reference<ConfigTag> tag = ConfigTag::create("oper", MODNAME, 0, items);
+ auto tag = ConfigTag::create("oper", MODNAME, 0, items);
/** Iterate through each column in the SQLOpers table. An infinite number of fields can be specified.
* Column 'x' with cell value 'y' will be the same as x=y in an OPER block in opers.conf.
@@ -183,7 +183,7 @@ public:
// Clear list of our blocks, as ConfigReader just wiped them anyway
my_blocks.clear();
- ConfigTag* tag = ServerInstance->Config->ConfValue("sqloper");
+ auto tag = ServerInstance->Config->ConfValue("sqloper");
std::string dbid = tag->getString("dbid");
if (dbid.empty())
diff --git a/src/modules/m_starttls.cpp b/src/modules/m_starttls.cpp
index f47ddb0f5..9141f9f18 100644
--- a/src/modules/m_starttls.cpp
+++ b/src/modules/m_starttls.cpp
@@ -99,7 +99,7 @@ class ModuleStartTLS : public Module
void ReadConfig(ConfigStatus& status) override
{
- ConfigTag* conf = ServerInstance->Config->ConfValue("starttls");
+ auto conf = ServerInstance->Config->ConfValue("starttls");
std::string newprovider = conf->getString("provider");
if (newprovider.empty())
diff --git a/src/modules/m_svshold.cpp b/src/modules/m_svshold.cpp
index 51402927b..867c7ee67 100644
--- a/src/modules/m_svshold.cpp
+++ b/src/modules/m_svshold.cpp
@@ -197,7 +197,7 @@ class ModuleSVSHold : public Module, public Stats::EventListener
void ReadConfig(ConfigStatus& status) override
{
- ConfigTag* tag = ServerInstance->Config->ConfValue("svshold");
+ auto tag = ServerInstance->Config->ConfValue("svshold");
silent = tag->getBool("silent", true);
}
diff --git a/src/modules/m_timedbans.cpp b/src/modules/m_timedbans.cpp
index cc8304a95..0c6cc3d5d 100644
--- a/src/modules/m_timedbans.cpp
+++ b/src/modules/m_timedbans.cpp
@@ -215,7 +215,7 @@ class ModuleTimedBans : public Module
void ReadConfig(ConfigStatus& status) override
{
- ConfigTag* tag = ServerInstance->Config->ConfValue("timedbans");
+ auto tag = ServerInstance->Config->ConfValue("timedbans");
cmd.sendnotice = tag->getBool("sendnotice", true);
}
diff --git a/src/modules/m_watch.cpp b/src/modules/m_watch.cpp
index de193535b..15d1cadf7 100644
--- a/src/modules/m_watch.cpp
+++ b/src/modules/m_watch.cpp
@@ -229,7 +229,7 @@ class ModuleWatch
void ReadConfig(ConfigStatus& status) override
{
- ConfigTag* tag = ServerInstance->Config->ConfValue("watch");
+ auto tag = ServerInstance->Config->ConfValue("watch");
cmd.maxwatch = tag->getUInt("maxwatch", 30, 1);
}
diff --git a/src/modules/m_websocket.cpp b/src/modules/m_websocket.cpp
index 8fd59fb1c..57887393c 100644
--- a/src/modules/m_websocket.cpp
+++ b/src/modules/m_websocket.cpp
@@ -525,7 +525,7 @@ class ModuleWebSocket : public Module
config.allowedorigins.push_back(allow);
}
- ConfigTag* tag = ServerInstance->Config->ConfValue("websocket");
+ auto tag = ServerInstance->Config->ConfValue("websocket");
config.sendastext = tag->getBool("sendastext", true);
irc::spacesepstream proxyranges(tag->getString("proxyranges"));
diff --git a/src/modules/m_xline_db.cpp b/src/modules/m_xline_db.cpp
index eb222a371..ec8cc4982 100644
--- a/src/modules/m_xline_db.cpp
+++ b/src/modules/m_xline_db.cpp
@@ -53,7 +53,7 @@ class ModuleXLineDB
* Imagine a scenario where the new file already exists. Merging the current XLines with the existing database is likely a bad idea
* ...and so is discarding all current in-memory XLines for the ones in the database.
*/
- ConfigTag* Conf = ServerInstance->Config->ConfValue("xlinedb");
+ auto Conf = ServerInstance->Config->ConfValue("xlinedb");
xlinedbpath = ServerInstance->Config->Paths.PrependData(Conf->getString("filename", "xline.db", 1));
SetInterval(Conf->getDuration("saveperiod", 5));
diff --git a/src/socket.cpp b/src/socket.cpp
index f5f1cc820..d98955f12 100644
--- a/src/socket.cpp
+++ b/src/socket.cpp
@@ -29,7 +29,7 @@
#include "inspircd.h"
-bool InspIRCd::BindPort(ConfigTag* tag, const irc::sockets::sockaddrs& sa, std::vector<ListenSocket*>& old_ports)
+bool InspIRCd::BindPort(std::shared_ptr<ConfigTag> tag, const irc::sockets::sockaddrs& sa, std::vector<ListenSocket*>& old_ports)
{
for (std::vector<ListenSocket*>::iterator n = old_ports.begin(); n != old_ports.end(); ++n)
{
diff --git a/src/users.cpp b/src/users.cpp
index 5063da124..b57e51644 100644
--- a/src/users.cpp
+++ b/src/users.cpp
@@ -428,10 +428,8 @@ void OperInfo::init()
AllowedSnomasks.reset();
AllowedUserModes['o' - 'A'] = true; // Call me paranoid if you want.
- for(std::vector<reference<ConfigTag> >::iterator iter = class_blocks.begin(); iter != class_blocks.end(); ++iter)
+ for (auto& tag : class_blocks)
{
- ConfigTag* tag = *iter;
-
AllowedOperCommands.AddList(tag->getString("commands"));
AllowedPrivs.AddList(tag->getString("privs"));
@@ -1226,7 +1224,7 @@ const std::string& FakeUser::GetFullRealHost()
return server->GetName();
}
-ConnectClass::ConnectClass(ConfigTag* tag, char t, const std::string& mask)
+ConnectClass::ConnectClass(std::shared_ptr<ConfigTag> tag, char t, const std::string& mask)
: config(tag)
, type(t)
, name("unnamed")
@@ -1234,7 +1232,7 @@ ConnectClass::ConnectClass(ConfigTag* tag, char t, const std::string& mask)
{
}
-ConnectClass::ConnectClass(ConfigTag* tag, char t, const std::string& mask, const ConnectClass& parent)
+ConnectClass::ConnectClass(std::shared_ptr<ConfigTag> tag, char t, const std::string& mask, const ConnectClass& parent)
{
Update(&parent);
name = "unnamed";