diff options
| author | 2019-08-13 18:06:19 +0100 | |
|---|---|---|
| committer | 2019-08-13 18:12:59 +0100 | |
| commit | 07ed06ebe56acbbd34b12ea0111b8fdcbf82a633 (patch) | |
| tree | 9e5a53e1b65d7f7e606da3da648ff16df82ae34d /src | |
| parent | Move 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.cpp | 63 | ||||
| -rw-r--r-- | src/coremods/core_channel/cmode_k.cpp | 2 | ||||
| -rw-r--r-- | src/coremods/core_channel/core_channel.h | 2 | ||||
| -rw-r--r-- | src/coremods/core_hostname_lookup.cpp | 4 | ||||
| -rw-r--r-- | src/coremods/core_user/cmd_quit.cpp | 2 | ||||
| -rw-r--r-- | src/extensible.cpp | 51 | ||||
| -rw-r--r-- | src/modules/m_cgiirc.cpp | 6 | ||||
| -rw-r--r-- | src/modules/m_conn_waitpong.cpp | 2 | ||||
| -rw-r--r-- | src/modules/m_customtitle.cpp | 2 | ||||
| -rw-r--r-- | src/modules/m_dnsbl.cpp | 6 | ||||
| -rw-r--r-- | src/modules/m_ldapauth.cpp | 4 | ||||
| -rw-r--r-- | src/modules/m_mlock.cpp | 2 | ||||
| -rw-r--r-- | src/modules/m_redirect.cpp | 4 | ||||
| -rw-r--r-- | src/modules/m_services_account.cpp | 2 | ||||
| -rw-r--r-- | src/modules/m_swhois.cpp | 2 |
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 }; |
