mirror of
https://github.com/anope/anope.git
synced 2026-06-30 12:46:37 +02:00
Bug #1350 + other related fixes
This commit is contained in:
@@ -77,6 +77,7 @@ enum BadWordType
|
||||
/* Structure used to contain bad words. */
|
||||
struct BadWord : Serializable<BadWord>
|
||||
{
|
||||
ChannelInfo *ci;
|
||||
Anope::string word;
|
||||
BadWordType type;
|
||||
|
||||
@@ -99,6 +100,7 @@ class AutoKick : public Flags<AutoKickFlag>, public Serializable<AutoKick>
|
||||
{
|
||||
public:
|
||||
AutoKick() : Flags<AutoKickFlag>(AutoKickFlagString) { }
|
||||
ChannelInfo *ci;
|
||||
/* Only one of these can be in use */
|
||||
Anope::string mask;
|
||||
NickCore *nc;
|
||||
@@ -131,6 +133,7 @@ struct ModeLock : Serializable<ModeLock>
|
||||
|
||||
struct LogSetting : Serializable<LogSetting>
|
||||
{
|
||||
ChannelInfo *ci;
|
||||
/* Our service name of the command */
|
||||
Anope::string service_name;
|
||||
/* The name of the client the command is on */
|
||||
|
||||
@@ -113,6 +113,7 @@ public:
|
||||
}
|
||||
|
||||
LogSetting log;
|
||||
log.ci = ci;
|
||||
log.service_name = bi->commands[command_name].name;
|
||||
log.command_service = bi->nick;
|
||||
log.command_name = command_name;
|
||||
|
||||
@@ -223,6 +223,7 @@ EventReturn OnDatabaseReadMetadata(ChannelInfo *ci, const Anope::string &key, co
|
||||
{
|
||||
LogSetting l;
|
||||
|
||||
l.ci = ci;
|
||||
l.service_name = params[0];
|
||||
l.command_service = params[1];
|
||||
l.command_name = params[2];
|
||||
|
||||
+32
-12
@@ -16,6 +16,7 @@ SerializableBase::serialized_data BadWord::serialize()
|
||||
{
|
||||
serialized_data data;
|
||||
|
||||
data["ci"] << this->ci->name;
|
||||
data["word"] << this->word;
|
||||
data["type"].setType(Serialize::DT_INT) << this->type;
|
||||
|
||||
@@ -24,17 +25,21 @@ SerializableBase::serialized_data BadWord::serialize()
|
||||
|
||||
void BadWord::unserialize(SerializableBase::serialized_data &data)
|
||||
{
|
||||
BadWord *bw = new BadWord();
|
||||
data["word"] >> bw->word;
|
||||
ChannelInfo *ci = cs_findchan(data["ci"].astr());
|
||||
if (!ci)
|
||||
return;
|
||||
|
||||
unsigned int n;
|
||||
data["type"] >> n;
|
||||
bw->type = static_cast<BadWordType>(n);
|
||||
|
||||
ci->AddBadWord(data["word"].astr(), static_cast<BadWordType>(n));
|
||||
}
|
||||
|
||||
SerializableBase::serialized_data AutoKick::serialize()
|
||||
{
|
||||
serialized_data data;
|
||||
|
||||
data["ci"] << this->ci->name;
|
||||
if (this->HasFlag(AK_ISNICK) && this->nc)
|
||||
data["nc"] << this->nc->display;
|
||||
else
|
||||
@@ -50,15 +55,19 @@ SerializableBase::serialized_data AutoKick::serialize()
|
||||
|
||||
void AutoKick::unserialize(SerializableBase::serialized_data &data)
|
||||
{
|
||||
AutoKick *ak = new AutoKick();
|
||||
|
||||
data["mask"] >> ak->mask;
|
||||
ak->nc = findcore(data["nc"].astr());
|
||||
data["reason"] >> ak->reason;
|
||||
data["creator"] >> ak->creator;
|
||||
data["addtime"] >> ak->addtime;
|
||||
data["last_used"] >> ak->last_used;
|
||||
ak->FromString(data["flags"].astr());
|
||||
ChannelInfo *ci = cs_findchan(data["ci"].astr());
|
||||
if (ci == NULL)
|
||||
return;
|
||||
|
||||
time_t addtime, lastused;
|
||||
data["addtime"] >> addtime;
|
||||
data["last_used"] >> lastused;
|
||||
|
||||
NickCore *nc = findcore(data["nc"].astr());
|
||||
if (nc)
|
||||
ci->AddAkick(data["creator"].astr(), nc, data["reason"].astr(), addtime, lastused);
|
||||
else
|
||||
ci->AddAkick(data["creator"].astr(), data["mask"].astr(), data["reason"].astr(), addtime, lastused);
|
||||
}
|
||||
|
||||
SerializableBase::serialized_data ModeLock::serialize()
|
||||
@@ -108,6 +117,7 @@ SerializableBase::serialized_data LogSetting::serialize()
|
||||
{
|
||||
serialized_data data;
|
||||
|
||||
data["ci"] << ci->name;
|
||||
data["service_name"] << service_name;
|
||||
data["command_service"] << command_service;
|
||||
data["command_name"] << command_name;
|
||||
@@ -123,6 +133,11 @@ void LogSetting::unserialize(serialized_data &data)
|
||||
{
|
||||
LogSetting ls;
|
||||
|
||||
ChannelInfo *ci = cs_findchan(data["ci"].astr());
|
||||
if (ci == NULL)
|
||||
return;
|
||||
|
||||
ls.ci = ci;
|
||||
data["service_name"] >> ls.service_name;
|
||||
data["command_service"] >> ls.command_service;
|
||||
data["command_name"] >> ls.command_name;
|
||||
@@ -130,6 +145,8 @@ void LogSetting::unserialize(serialized_data &data)
|
||||
data["extra"] >> ls.extra;
|
||||
data["creator"] >> ls.creator;
|
||||
data["created"] >> ls.created;
|
||||
|
||||
ci->log_settings.push_back(ls);
|
||||
}
|
||||
|
||||
/** Default constructor
|
||||
@@ -513,6 +530,7 @@ AutoKick *ChannelInfo::AddAkick(const Anope::string &user, NickCore *akicknc, co
|
||||
return NULL;
|
||||
|
||||
AutoKick *autokick = new AutoKick();
|
||||
autokick->ci = this;
|
||||
autokick->SetFlag(AK_ISNICK);
|
||||
autokick->nc = akicknc;
|
||||
autokick->reason = reason;
|
||||
@@ -536,6 +554,7 @@ AutoKick *ChannelInfo::AddAkick(const Anope::string &user, NickCore *akicknc, co
|
||||
AutoKick *ChannelInfo::AddAkick(const Anope::string &user, const Anope::string &mask, const Anope::string &reason, time_t t, time_t lu)
|
||||
{
|
||||
AutoKick *autokick = new AutoKick();
|
||||
autokick->ci = this;
|
||||
autokick->mask = mask;
|
||||
autokick->nc = NULL;
|
||||
autokick->reason = reason;
|
||||
@@ -596,6 +615,7 @@ void ChannelInfo::ClearAkick()
|
||||
BadWord *ChannelInfo::AddBadWord(const Anope::string &word, BadWordType type)
|
||||
{
|
||||
BadWord *bw = new BadWord;
|
||||
bw->ci = this;
|
||||
bw->word = word;
|
||||
bw->type = type;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user