summaryrefslogtreecommitdiff
path: root/modules/database/db_old.cpp
diff options
context:
space:
mode:
authorAdam <Adam@anope.org>2013-07-01 22:17:52 -0400
committerAdam <Adam@anope.org>2013-07-01 22:17:52 -0400
commit1a3d9a016d3adc49788bbff73aac9b3b5ea85b17 (patch)
treec0ecf92ed768473bc82ff64a7fce827245f37ba9 /modules/database/db_old.cpp
parent518182ac9204f815258b0de91b3f884d8efa1502 (diff)
Change extensible keys to require explicitly having a type defined for it. Completely modularize more features like bs_kick, entrymsg, log, mode, etc. Move fantasy to its own module. Move greet to its own module.
Diffstat (limited to 'modules/database/db_old.cpp')
-rw-r--r--modules/database/db_old.cpp175
1 files changed, 93 insertions, 82 deletions
diff --git a/modules/database/db_old.cpp b/modules/database/db_old.cpp
index 053a49110..10b2d56e7 100644
--- a/modules/database/db_old.cpp
+++ b/modules/database/db_old.cpp
@@ -10,6 +10,9 @@
#include "module.h"
#include "modules/os_session.h"
+#include "modules/bs_kick.h"
+#include "modules/cs_mode.h"
+#include "modules/bs_badwords.h"
#define READ(x) \
if (true) \
@@ -81,13 +84,6 @@ else \
#define OLD_BS_KICK_FLOOD 0x02000000
#define OLD_BS_KICK_REPEAT 0x01000000
-struct ExtensibleItemUint32 : ExtensibleItem
-{
- uint32_t u;
- ExtensibleItemUint32(uint32_t i) : u(i) { }
-};
-
-
static struct mlock_info
{
char c;
@@ -139,12 +135,13 @@ enum
static void process_mlock(ChannelInfo *ci, uint32_t lock, bool status)
{
+ ModeLocks *ml = ci->Require<ModeLocks>("modelocks");
for (unsigned i = 0; i < (sizeof(mlock_infos) / sizeof(mlock_info)); ++i)
if (lock & mlock_infos[i].m)
{
ChannelMode *cm = ModeManager::FindChannelModeByChar(mlock_infos[i].c);
- if (cm)
- ci->SetMLock(cm, status);
+ if (cm && ml)
+ ml->SetMLock(cm, status);
}
}
@@ -448,7 +445,7 @@ static void LoadNicks()
nc->email = buffer;
READ(read_string(buffer, f));
- nc->greet = buffer;
+ nc->Extend<Anope::string>("greet", buffer);
uint32_t uint;
READ(read_uint32(&uint, f));
@@ -459,37 +456,37 @@ static void LoadNicks()
READ(read_uint32(&uint, f));
if (uint & OLD_NI_KILLPROTECT)
- nc->ExtendMetadata("KILLPROTECT");
+ nc->Extend<bool>("KILLPROTECT");
if (uint & OLD_NI_SECURE)
- nc->ExtendMetadata("SECURE");
+ nc->Extend<bool>("NS_SECURE");
if (uint & OLD_NI_MSG)
- nc->ExtendMetadata("MSG");
+ nc->Extend<bool>("MSG");
if (uint & OLD_NI_MEMO_HARDMAX)
- nc->ExtendMetadata("MEMO_HARDMAX");
+ nc->Extend<bool>("MEMO_HARDMAX");
if (uint & OLD_NI_MEMO_SIGNON)
- nc->ExtendMetadata("MEMO_SIGNON");
+ nc->Extend<bool>("MEMO_SIGNON");
if (uint & OLD_NI_MEMO_RECEIVE)
- nc->ExtendMetadata("MEMO_RECEIVE");
+ nc->Extend<bool>("MEMO_RECEIVE");
if (uint & OLD_NI_PRIVATE)
- nc->ExtendMetadata("PRIVATE");
+ nc->Extend<bool>("NS_PRIVATE");
if (uint & OLD_NI_HIDE_EMAIL)
- nc->ExtendMetadata("HIDE_EMAIL");
+ nc->Extend<bool>("HIDE_EMAIL");
if (uint & OLD_NI_HIDE_MASK)
- nc->ExtendMetadata("HIDE_MASK");
+ nc->Extend<bool>("HIDE_MASK");
if (uint & OLD_NI_HIDE_QUIT)
- nc->ExtendMetadata("HIDE_QUIT");
+ nc->Extend<bool>("HIDE_QUIT");
if (uint & OLD_NI_KILL_QUICK)
- nc->ExtendMetadata("KILL_QUICK");
+ nc->Extend<bool>("KILL_QUICK");
if (uint & OLD_NI_KILL_IMMED)
- nc->ExtendMetadata("KILL_IMMED");
+ nc->Extend<bool>("KILL_IMMED");
if (uint & OLD_NI_MEMO_MAIL)
- nc->ExtendMetadata("MEMO_MAIL");
+ nc->Extend<bool>("MEMO_MAIL");
if (uint & OLD_NI_HIDE_STATUS)
- nc->ExtendMetadata("HIDE_STATUS");
+ nc->Extend<bool>("HIDE_STATUS");
if (uint & OLD_NI_SUSPENDED)
- nc->ExtendMetadata("SUSPENDED");
+ nc->Extend<bool>("SUSPENDED");
if (!(uint & OLD_NI_AUTOOP))
- nc->ExtendMetadata("AUTOOP");
+ nc->Extend<bool>("AUTOOP");
uint16_t u16;
READ(read_uint16(&u16, f));
@@ -607,7 +604,7 @@ static void LoadNicks()
na->last_seen = last_seen;
if (tmpu16 & OLD_NS_NO_EXPIRE)
- na->ExtendMetadata("NO_EXPIRE");
+ na->Extend<bool>("NS_NO_EXPIRE");
Log(LOG_DEBUG) << "Loaded NickAlias " << na->nick;
}
@@ -728,31 +725,31 @@ static void LoadChannels()
// Temporary flags cleanup
tmpu32 &= ~0x80000000;
if (tmpu32 & OLD_CI_KEEPTOPIC)
- ci->ExtendMetadata("KEEPTOPIC");
+ ci->Extend<bool>("KEEPTOPIC");
if (tmpu32 & OLD_CI_SECUREOPS)
- ci->ExtendMetadata("SECUREOPS");
+ ci->Extend<bool>("SECUREOPS");
if (tmpu32 & OLD_CI_PRIVATE)
- ci->ExtendMetadata("PRIVATE");
+ ci->Extend<bool>("CS_PRIVATE");
if (tmpu32 & OLD_CI_TOPICLOCK)
- ci->ExtendMetadata("TOPICLOCK");
+ ci->Extend<bool>("TOPICLOCK");
if (tmpu32 & OLD_CI_RESTRICTED)
- ci->ExtendMetadata("RESTRICTED");
+ ci->Extend<bool>("RESTRICTED");
if (tmpu32 & OLD_CI_PEACE)
- ci->ExtendMetadata("PEACE");
+ ci->Extend<bool>("PEACE");
if (tmpu32 & OLD_CI_SECURE)
- ci->ExtendMetadata("SECURE");
+ ci->Extend<bool>("CS_SECURE");
if (tmpu32 & OLD_CI_NO_EXPIRE)
- ci->ExtendMetadata("NO_EXPIRE");
+ ci->Extend<bool>("CI_NO_EXPIRE");
if (tmpu32 & OLD_CI_MEMO_HARDMAX)
- ci->ExtendMetadata("MEMO_HARDMAX");
+ ci->Extend<bool>("MEMO_HARDMAX");
if (tmpu32 & OLD_CI_SECUREFOUNDER)
- ci->ExtendMetadata("SECUREFOUNDER");
+ ci->Extend<bool>("SECUREFOUNDER");
if (tmpu32 & OLD_CI_SIGNKICK)
- ci->ExtendMetadata("SIGNKICK");
+ ci->Extend<bool>("SIGNKICK");
if (tmpu32 & OLD_CI_SIGNKICK_LEVEL)
- ci->ExtendMetadata("SIGNKICK_LEVEL");
+ ci->Extend<bool>("SIGNKICK_LEVEL");
if (tmpu32 & OLD_CI_SUSPENDED)
- ci->ExtendMetadata("SUSPENDED");
+ ci->Extend<bool>("SUSPENDED");
READ(read_string(buffer, f));
READ(read_string(buffer, f));
@@ -773,7 +770,7 @@ static void LoadChannels()
level = ACCESS_FOUNDER;
if (j == 10 && level < 0) // NOJOIN
- ci->Shrink("RESTRICTED"); // If CSDefRestricted was enabled this can happen
+ ci->Shrink<bool>("RESTRICTED"); // If CSDefRestricted was enabled this can happen
ci->SetLevel(GetLevelName(j), level);
}
@@ -831,9 +828,9 @@ static void LoadChannels()
}
READ(read_uint32(&tmpu32, f)); // mlock on
- ci->Extend("mlock_on", new ExtensibleItemUint32(tmpu32));
+ ci->Extend<uint32_t>("mlock_on", tmpu32);
READ(read_uint32(&tmpu32, f)); // mlock off
- ci->Extend("mlock_off", new ExtensibleItemUint32(tmpu32));
+ ci->Extend<uint32_t>("mlock_off", tmpu32);
READ(read_uint32(&tmpu32, f)); // mlock limit
READ(read_string(buffer, f));
READ(read_string(buffer, f));
@@ -863,52 +860,63 @@ static void LoadChannels()
READ(read_int32(&tmp32, f));
if (tmp32 & OLD_BS_DONTKICKOPS)
- ci->ExtendMetadata("BS_DONTKICKOPS");
+ ci->Extend<bool>("BS_DONTKICKOPS");
if (tmp32 & OLD_BS_DONTKICKVOICES)
- ci->ExtendMetadata("BS_DONTKICKVOICES");
+ ci->Extend<bool>("BS_DONTKICKVOICES");
if (tmp32 & OLD_BS_FANTASY)
- ci->ExtendMetadata("BS_FANTASY");
+ ci->Extend<bool>("BS_FANTASY");
if (tmp32 & OLD_BS_GREET)
- ci->ExtendMetadata("BS_GREET");
+ ci->Extend<bool>("BS_GREET");
if (tmp32 & OLD_BS_NOBOT)
- ci->ExtendMetadata("BS_NOBOT");
- if (tmp32 & OLD_BS_KICK_BOLDS)
- ci->ExtendMetadata("BS_KICK_BOLDS");
- if (tmp32 & OLD_BS_KICK_COLORS)
- ci->ExtendMetadata("BS_KICK_COLORS");
- if (tmp32 & OLD_BS_KICK_REVERSES)
- ci->ExtendMetadata("BS_KICK_REVERSES");
- if (tmp32 & OLD_BS_KICK_UNDERLINES)
- ci->ExtendMetadata("BS_KICK_UNDERLINES");
- if (tmp32 & OLD_BS_KICK_BADWORDS)
- ci->ExtendMetadata("BS_KICK_BADWORDS");
- if (tmp32 & OLD_BS_KICK_CAPS)
- ci->ExtendMetadata("BS_KICK_CAPS");
- if (tmp32 & OLD_BS_KICK_FLOOD)
- ci->ExtendMetadata("BS_KICK_FLOOD");
- if (tmp32 & OLD_BS_KICK_REPEAT)
- ci->ExtendMetadata("BS_KICK_REPEAT");
+ ci->Extend<bool>("BS_NOBOT");
+
+ KickerData *kd = ci->Require<KickerData>("kickerdata");
+ if (kd)
+ {
+ if (tmp32 & OLD_BS_KICK_BOLDS)
+ kd->bolds = true;
+ if (tmp32 & OLD_BS_KICK_COLORS)
+ kd->colors = true;
+ if (tmp32 & OLD_BS_KICK_REVERSES)
+ kd->reverses = true;
+ if (tmp32 & OLD_BS_KICK_UNDERLINES)
+ kd->underlines = true;
+ if (tmp32 & OLD_BS_KICK_BADWORDS)
+ kd->badwords = true;
+ if (tmp32 & OLD_BS_KICK_CAPS)
+ kd->caps = true;
+ if (tmp32 & OLD_BS_KICK_FLOOD)
+ kd->flood = true;
+ if (tmp32 & OLD_BS_KICK_REPEAT)
+ kd->repeat = true;
+ }
READ(read_int16(&tmp16, f));
for (int16_t j = 0; j < tmp16; ++j)
{
int16_t ttb;
READ(read_int16(&ttb, f));
- if (j < TTB_SIZE)
- ci->ttb[j] = ttb;
+ if (j < TTB_SIZE && kd)
+ kd->ttb[j] = ttb;
}
READ(read_int16(&tmp16, f));
- ci->capsmin = tmp16;
+ if (kd)
+ kd->capsmin = tmp16;
READ(read_int16(&tmp16, f));
- ci->capspercent = tmp16;
+ if (kd)
+ kd->capspercent = tmp16;
READ(read_int16(&tmp16, f));
- ci->floodlines = tmp16;
+ if (kd)
+ kd->floodlines = tmp16;
READ(read_int16(&tmp16, f));
- ci->floodsecs = tmp16;
+ if (kd)
+ kd->floodsecs = tmp16;
READ(read_int16(&tmp16, f));
- ci->repeattimes = tmp16;
+ if (kd)
+ kd->repeattimes = tmp16;
+ BadWords *bw = ci->Require<BadWords>("badwords");
READ(read_uint16(&tmpu16, f));
for (uint16_t j = 0; j < tmpu16; ++j)
{
@@ -928,7 +936,8 @@ static void LoadChannels()
else if (type == 3)
bwtype = BW_END;
- ci->AddBadWord(buffer, bwtype);
+ if (bw)
+ bw->AddBadWord(buffer, bwtype);
}
}
@@ -1089,8 +1098,11 @@ static void LoadExceptions()
class DBOld : public Module
{
+ PrimitiveExtensibleItem<uint32_t> mlock_on, mlock_off;
+
public:
- DBOld(const Anope::string &modname, const Anope::string &creator) : Module(modname, creator, DATABASE | VENDOR)
+ DBOld(const Anope::string &modname, const Anope::string &creator) : Module(modname, creator, DATABASE | VENDOR),
+ mlock_on(this, "mlock_on"), mlock_off(this, "mlock_off")
{
@@ -1114,22 +1126,21 @@ class DBOld : public Module
void OnUplinkSync(Server *s) anope_override
{
- ExtensibleItemUint32 *mlock;
for (registered_channel_map::iterator it = RegisteredChannelList->begin(), it_end = RegisteredChannelList->end(); it != it_end; ++it)
{
ChannelInfo *ci = it->second;
- if (ci->HasExt("mlock_on"))
+
+ uint32_t *u = mlock_on.Get(ci);
+ if (u)
{
- mlock = ci->GetExt<ExtensibleItemUint32 *>("mlock_on");
- process_mlock(ci, mlock->u, true);
- ci->Shrink("mlock_on");
+ process_mlock(ci, *u, true);
+ mlock_on.Unset(ci);
}
- if (ci->HasExt("mlock_off"))
+ u = mlock_off.Get(ci);
{
- mlock = ci->GetExt<ExtensibleItemUint32 *>("mlock_off");
- process_mlock(ci, mlock->u, false);
- ci->Shrink("mlock_off");
+ process_mlock(ci, *u, false);
+ mlock_off.Unset(ci);
}
}
}