aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorGravatar Sadie Powell2019-08-13 18:06:19 +0100
committerGravatar Sadie Powell2019-08-13 18:12:59 +0100
commit07ed06ebe56acbbd34b12ea0111b8fdcbf82a633 (patch)
tree9e5a53e1b65d7f7e606da3da648ff16df82ae34d /src
parentMove the Module parameter of ExtensionItem et al to the start. (diff)
Rewrite and merge LocalStringExt, StringExtItem.
Diffstat (limited to 'src')
-rw-r--r--src/base.cpp63
-rw-r--r--src/coremods/core_channel/cmode_k.cpp2
-rw-r--r--src/coremods/core_channel/core_channel.h2
-rw-r--r--src/coremods/core_hostname_lookup.cpp4
-rw-r--r--src/coremods/core_user/cmd_quit.cpp2
-rw-r--r--src/extensible.cpp51
-rw-r--r--src/modules/m_cgiirc.cpp6
-rw-r--r--src/modules/m_conn_waitpong.cpp2
-rw-r--r--src/modules/m_customtitle.cpp2
-rw-r--r--src/modules/m_dnsbl.cpp6
-rw-r--r--src/modules/m_ldapauth.cpp4
-rw-r--r--src/modules/m_mlock.cpp2
-rw-r--r--src/modules/m_redirect.cpp4
-rw-r--r--src/modules/m_services_account.cpp2
-rw-r--r--src/modules/m_swhois.cpp2
15 files changed, 71 insertions, 83 deletions
diff --git a/src/base.cpp b/src/base.cpp
index 14a28af17..27ed03d1a 100644
--- a/src/base.cpp
+++ b/src/base.cpp
@@ -246,25 +246,6 @@ std::string ExtensionItem::ToNetwork(const Extensible* container, void* item) co
return std::string();
}
-LocalStringExt::LocalStringExt(Module* Owner, const std::string& Key, ExtensibleType exttype)
- : SimpleExtItem<std::string>(Owner, Key, exttype)
-{
-}
-
-LocalStringExt::~LocalStringExt()
-{
-}
-
-std::string LocalStringExt::ToInternal(const Extensible* container, void* item) const
-{
- return item ? *static_cast<std::string*>(item) : std::string();
-}
-
-void LocalStringExt::FromInternal(Extensible* container, const std::string& value)
-{
- set(container, value);
-}
-
LocalIntExt::LocalIntExt(Module* mod, const std::string& Key, ExtensibleType exttype)
: ExtensionItem(mod, Key, exttype)
{
@@ -301,50 +282,6 @@ void LocalIntExt::Delete(Extensible* container, void* item)
{
}
-StringExtItem::StringExtItem(Module* mod, const std::string& Key, ExtensibleType exttype)
- : ExtensionItem(mod, Key, exttype)
-{
-}
-
-StringExtItem::~StringExtItem()
-{
-}
-
-std::string* StringExtItem::get(const Extensible* container) const
-{
- return static_cast<std::string*>(get_raw(container));
-}
-
-std::string StringExtItem::ToNetwork(const Extensible* container, void* item) const
-{
- return item ? *static_cast<std::string*>(item) : std::string();
-}
-
-void StringExtItem::FromNetwork(Extensible* container, const std::string& value)
-{
- if (value.empty())
- unset(container);
- else
- set(container, value);
-}
-
-void StringExtItem::set(Extensible* container, const std::string& value)
-{
- void* old = set_raw(container, new std::string(value));
- Delete(container, old);
-}
-
-void StringExtItem::unset(Extensible* container)
-{
- void* old = unset_raw(container);
- Delete(container, old);
-}
-
-void StringExtItem::Delete(Extensible* container, void* item)
-{
- delete static_cast<std::string*>(item);
-}
-
ModuleException::ModuleException(const std::string &message, Module* who)
: CoreException(message, who ? who->ModuleSourceFile : "A Module")
{
diff --git a/src/coremods/core_channel/cmode_k.cpp b/src/coremods/core_channel/cmode_k.cpp
index ff8beeaf9..21664ba7e 100644
--- a/src/coremods/core_channel/cmode_k.cpp
+++ b/src/coremods/core_channel/cmode_k.cpp
@@ -26,7 +26,7 @@
const std::string::size_type ModeChannelKey::maxkeylen = 32;
ModeChannelKey::ModeChannelKey(Module* Creator)
- : ParamMode<ModeChannelKey, LocalStringExt>(Creator, "key", 'k', PARAM_ALWAYS)
+ : ParamMode<ModeChannelKey, StringExtItem>(Creator, "key", 'k', PARAM_ALWAYS)
{
syntax = "<key>";
}
diff --git a/src/coremods/core_channel/core_channel.h b/src/coremods/core_channel/core_channel.h
index ee9f1ba9d..8ee7ad781 100644
--- a/src/coremods/core_channel/core_channel.h
+++ b/src/coremods/core_channel/core_channel.h
@@ -174,7 +174,7 @@ class ModeChannelBan : public ListModeBase
/** Channel mode +k
*/
-class ModeChannelKey : public ParamMode<ModeChannelKey, LocalStringExt>
+class ModeChannelKey : public ParamMode<ModeChannelKey, StringExtItem>
{
public:
static const std::string::size_type maxkeylen;
diff --git a/src/coremods/core_hostname_lookup.cpp b/src/coremods/core_hostname_lookup.cpp
index 435f161ed..64a601425 100644
--- a/src/coremods/core_hostname_lookup.cpp
+++ b/src/coremods/core_hostname_lookup.cpp
@@ -23,7 +23,7 @@
namespace
{
LocalIntExt* dl;
- LocalStringExt* ph;
+ StringExtItem* ph;
}
/** Derived from Resolver, and performs user forward/reverse lookups.
@@ -178,7 +178,7 @@ class UserResolver : public DNS::Request
class ModuleHostnameLookup : public Module
{
LocalIntExt dnsLookup;
- LocalStringExt ptrHosts;
+ StringExtItem ptrHosts;
dynamic_reference<DNS::Manager> DNS;
public:
diff --git a/src/coremods/core_user/cmd_quit.cpp b/src/coremods/core_user/cmd_quit.cpp
index 2dd764a8e..77ab1a4ba 100644
--- a/src/coremods/core_user/cmd_quit.cpp
+++ b/src/coremods/core_user/cmd_quit.cpp
@@ -23,7 +23,7 @@
CommandQuit::CommandQuit(Module* parent)
: Command(parent, "QUIT", 0, 1)
- , operquit(parent, "operquit", ExtensionItem::EXT_USER)
+ , operquit(parent, "operquit", ExtensionItem::EXT_USER, true)
{
works_before_reg = true;
syntax = "[:<message>]";
diff --git a/src/extensible.cpp b/src/extensible.cpp
new file mode 100644
index 000000000..7cf0006f4
--- /dev/null
+++ b/src/extensible.cpp
@@ -0,0 +1,51 @@
+/*
+ * InspIRCd -- Internet Relay Chat Daemon
+ *
+ * Copyright (C) 2019 Peter Powell <petpow@saberuk.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
+ * License as published by the Free Software Foundation, version 2.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+ * details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+
+#include "inspircd.h"
+
+
+StringExtItem::StringExtItem(Module* owner, const std::string& key, ExtensibleType exttype, bool sync)
+ : SimpleExtItem(owner, key, exttype)
+ , synced(sync)
+{
+}
+
+void StringExtItem::FromInternal(Extensible* container, const std::string& value)
+{
+ if (value.empty())
+ unset(container);
+ else
+ set(container, value);
+}
+
+void StringExtItem::FromNetwork(Extensible* container, const std::string& value)
+{
+ if (synced)
+ FromInternal(container, value);
+}
+
+std::string StringExtItem::ToInternal(const Extensible* container, void* item) const
+{
+ return item ? *static_cast<std::string*>(item) : std::string();
+}
+
+std::string StringExtItem::ToNetwork(const Extensible* container, void* item) const
+{
+ return synced ? ToInternal(container, item) : std::string();
+}
diff --git a/src/modules/m_cgiirc.cpp b/src/modules/m_cgiirc.cpp
index 2b12a3849..871f4f1a0 100644
--- a/src/modules/m_cgiirc.cpp
+++ b/src/modules/m_cgiirc.cpp
@@ -124,9 +124,9 @@ class CommandWebIRC : public SplitCommand
CommandWebIRC(Module* Creator)
: SplitCommand(Creator, "WEBIRC", 4)
- , gateway(Creator, "cgiirc_gateway", ExtensionItem::EXT_USER)
- , realhost(Creator, "cgiirc_realhost", ExtensionItem::EXT_USER)
- , realip(Creator, "cgiirc_realip", ExtensionItem::EXT_USER)
+ , gateway(Creator, "cgiirc_gateway", ExtensionItem::EXT_USER, true)
+ , realhost(Creator, "cgiirc_realhost", ExtensionItem::EXT_USER, true)
+ , realip(Creator, "cgiirc_realip", ExtensionItem::EXT_USER, true)
, sslapi(Creator)
, webircevprov(Creator, "event/webirc")
{
diff --git a/src/modules/m_conn_waitpong.cpp b/src/modules/m_conn_waitpong.cpp
index a2de2095d..fdf935ba3 100644
--- a/src/modules/m_conn_waitpong.cpp
+++ b/src/modules/m_conn_waitpong.cpp
@@ -28,7 +28,7 @@ class ModuleWaitPong : public Module
{
bool sendsnotice;
bool killonbadreply;
- LocalStringExt ext;
+ StringExtItem ext;
public:
ModuleWaitPong()
diff --git a/src/modules/m_customtitle.cpp b/src/modules/m_customtitle.cpp
index f9c528845..5a544c2a8 100644
--- a/src/modules/m_customtitle.cpp
+++ b/src/modules/m_customtitle.cpp
@@ -73,7 +73,7 @@ class CommandTitle : public Command
CommandTitle(Module* Creator)
: Command(Creator,"TITLE", 2)
- , ctitle(Creator, "ctitle", ExtensionItem::EXT_USER)
+ , ctitle(Creator, "ctitle", ExtensionItem::EXT_USER, true)
{
syntax = "<username> <password>";
}
diff --git a/src/modules/m_dnsbl.cpp b/src/modules/m_dnsbl.cpp
index 2e6b40270..b04e2a54b 100644
--- a/src/modules/m_dnsbl.cpp
+++ b/src/modules/m_dnsbl.cpp
@@ -48,13 +48,13 @@ class DNSBLConfEntry : public refcountbase
class DNSBLResolver : public DNS::Request
{
std::string theiruid;
- LocalStringExt& nameExt;
+ StringExtItem& nameExt;
LocalIntExt& countExt;
reference<DNSBLConfEntry> ConfEntry;
public:
- DNSBLResolver(DNS::Manager *mgr, Module *me, LocalStringExt& match, LocalIntExt& ctr, const std::string &hostname, LocalUser* u, reference<DNSBLConfEntry> conf)
+ DNSBLResolver(DNS::Manager *mgr, Module *me, StringExtItem& match, LocalIntExt& ctr, const std::string &hostname, LocalUser* u, reference<DNSBLConfEntry> conf)
: DNS::Request(mgr, me, hostname, DNS::QUERY_A, true), theiruid(u->uuid), nameExt(match), countExt(ctr), ConfEntry(conf)
{
}
@@ -234,7 +234,7 @@ class ModuleDNSBL : public Module, public Stats::EventListener
{
DNSBLConfList DNSBLConfEntries;
dynamic_reference<DNS::Manager> DNS;
- LocalStringExt nameExt;
+ StringExtItem nameExt;
LocalIntExt countExt;
/*
diff --git a/src/modules/m_ldapauth.cpp b/src/modules/m_ldapauth.cpp
index 84665623f..52b652f49 100644
--- a/src/modules/m_ldapauth.cpp
+++ b/src/modules/m_ldapauth.cpp
@@ -34,7 +34,7 @@ namespace
LocalIntExt* authed;
bool verbose;
std::string vhost;
- LocalStringExt* vhosts;
+ StringExtItem* vhosts;
std::vector<std::pair<std::string, std::string> > requiredattributes;
}
@@ -297,7 +297,7 @@ class ModuleLDAPAuth : public Module
{
dynamic_reference<LDAPProvider> LDAP;
LocalIntExt ldapAuthed;
- LocalStringExt ldapVhost;
+ StringExtItem ldapVhost;
std::string base;
std::string attribute;
std::vector<std::string> allowpatterns;
diff --git a/src/modules/m_mlock.cpp b/src/modules/m_mlock.cpp
index 28fd64d1c..c1cffbf4f 100644
--- a/src/modules/m_mlock.cpp
+++ b/src/modules/m_mlock.cpp
@@ -31,7 +31,7 @@ class ModuleMLock : public Module
public:
ModuleMLock()
- : mlock(this, "mlock", ExtensionItem::EXT_CHANNEL)
+ : mlock(this, "mlock", ExtensionItem::EXT_CHANNEL, true)
{
}
diff --git a/src/modules/m_redirect.cpp b/src/modules/m_redirect.cpp
index 49ebdcdce..559fbd27c 100644
--- a/src/modules/m_redirect.cpp
+++ b/src/modules/m_redirect.cpp
@@ -26,11 +26,11 @@
/** Handle channel mode +L
*/
-class Redirect : public ParamMode<Redirect, LocalStringExt>
+class Redirect : public ParamMode<Redirect, StringExtItem>
{
public:
Redirect(Module* Creator)
- : ParamMode<Redirect, LocalStringExt>(Creator, "redirect", 'L')
+ : ParamMode<Redirect, StringExtItem>(Creator, "redirect", 'L')
{
syntax = "<target>";
}
diff --git a/src/modules/m_services_account.cpp b/src/modules/m_services_account.cpp
index d6308781e..57eaf827f 100644
--- a/src/modules/m_services_account.cpp
+++ b/src/modules/m_services_account.cpp
@@ -104,7 +104,7 @@ class AccountExtItemImpl : public AccountExtItem
public:
AccountExtItemImpl(Module* mod)
- : AccountExtItem(mod, "accountname", ExtensionItem::EXT_USER)
+ : AccountExtItem(mod, "accountname", ExtensionItem::EXT_USER, true)
, eventprov(mod, "event/account")
{
}
diff --git a/src/modules/m_swhois.cpp b/src/modules/m_swhois.cpp
index ca53735a8..3af8f6565 100644
--- a/src/modules/m_swhois.cpp
+++ b/src/modules/m_swhois.cpp
@@ -42,7 +42,7 @@ class CommandSwhois : public Command
CommandSwhois(Module* Creator)
: Command(Creator, "SWHOIS", 2, 2)
, operblock(Creator, "swhois_operblock", ExtensionItem::EXT_USER)
- , swhois(Creator, "swhois", ExtensionItem::EXT_USER)
+ , swhois(Creator, "swhois", ExtensionItem::EXT_USER, true)
{
flags_needed = 'o'; syntax = "<nick> :<swhois>";
translation = { TR_NICK, TR_TEXT };