diff options
author | Adam <Adam@anope.org> | 2013-08-12 15:45:50 -0400 |
---|---|---|
committer | Adam <Adam@anope.org> | 2013-08-12 15:45:50 -0400 |
commit | de5c8c0d386375c46d812c5843a5bb5a850ee865 (patch) | |
tree | d2e7834cbe85a56505ee63d22609c79b0ac5af55 | |
parent | 8e011bbb783df2c646f479e7b02989f9165ed7c1 (diff) |
Fix some issues with suspend
-rw-r--r-- | include/modules/cs_suspend.h | 1 | ||||
-rw-r--r-- | include/modules/ns_suspend.h | 1 | ||||
-rw-r--r-- | modules/commands/cs_list.cpp | 8 | ||||
-rw-r--r-- | modules/commands/cs_suspend.cpp | 22 | ||||
-rw-r--r-- | modules/commands/ns_access.cpp | 2 | ||||
-rw-r--r-- | modules/commands/ns_ajoin.cpp | 2 | ||||
-rw-r--r-- | modules/commands/ns_cert.cpp | 6 | ||||
-rw-r--r-- | modules/commands/ns_group.cpp | 2 | ||||
-rw-r--r-- | modules/commands/ns_identify.cpp | 2 | ||||
-rw-r--r-- | modules/commands/ns_list.cpp | 6 | ||||
-rw-r--r-- | modules/commands/ns_recover.cpp | 2 | ||||
-rw-r--r-- | modules/commands/ns_suspend.cpp | 18 | ||||
-rw-r--r-- | modules/database/db_old.cpp | 4 | ||||
-rw-r--r-- | modules/pseudoclients/nickserv.cpp | 2 |
14 files changed, 46 insertions, 32 deletions
diff --git a/include/modules/cs_suspend.h b/include/modules/cs_suspend.h index dbdd3b9e9..436e030d0 100644 --- a/include/modules/cs_suspend.h +++ b/include/modules/cs_suspend.h @@ -14,6 +14,7 @@ struct CSSuspendInfo Anope::string chan, by, reason; time_t time, expires; + virtual ~CSSuspendInfo() { } protected: CSSuspendInfo() { } }; diff --git a/include/modules/ns_suspend.h b/include/modules/ns_suspend.h index 59f3d5d58..5bdbd1568 100644 --- a/include/modules/ns_suspend.h +++ b/include/modules/ns_suspend.h @@ -14,6 +14,7 @@ struct NSSuspendInfo Anope::string nick, by, reason; time_t when, expires; + virtual ~NSSuspendInfo() { } protected: NSSuspendInfo() { } }; diff --git a/modules/commands/cs_list.cpp b/modules/commands/cs_list.cpp index 00dc0d8a5..6fd20d05f 100644 --- a/modules/commands/cs_list.cpp +++ b/modules/commands/cs_list.cpp @@ -58,7 +58,7 @@ class CommandCSList : public Command spacesepstream keywords(params[1]); while (keywords.GetToken(keyword)) { - if (keyword.equals_ci("SUSPENDED")) + if (keyword.equals_ci("CS_SUSPENDED")) suspended = true; if (keyword.equals_ci("NOEXPIRE")) channoexpire = true; @@ -81,9 +81,9 @@ class CommandCSList : public Command { const ChannelInfo *ci = it->second; - if (!is_servadmin && (ci->HasExt("CS_PRIVATE") || ci->HasExt("SUSPENDED"))) + if (!is_servadmin && (ci->HasExt("CS_PRIVATE") || ci->HasExt("CS_SUSPENDED"))) continue; - else if (suspended && !ci->HasExt("SUSPENDED")) + else if (suspended && !ci->HasExt("CS_SUSPENDED")) continue; else if (channoexpire && !ci->HasExt("CS_NO_EXPIRE")) continue; @@ -98,7 +98,7 @@ class CommandCSList : public Command ListFormatter::ListEntry entry; entry["Name"] = (isnoexpire ? "!" : "") + ci->name; - if (ci->HasExt("SUSPENDED")) + if (ci->HasExt("CS_SUSPENDED")) entry["Description"] = "[Suspended]"; else entry["Description"] = ci->desc; diff --git a/modules/commands/cs_suspend.cpp b/modules/commands/cs_suspend.cpp index b7ffccda6..0326b38ba 100644 --- a/modules/commands/cs_suspend.cpp +++ b/modules/commands/cs_suspend.cpp @@ -38,11 +38,11 @@ struct CSSuspendInfoImpl : CSSuspendInfo, Serializable ChannelInfo *ci = ChannelInfo::Find(schan); if (!ci) return NULL; - si = ci->Extend<CSSuspendInfoImpl>("cs_suspend"); + si = ci->Extend<CSSuspendInfoImpl>("CS_SUSPENDED"); data["chan"] >> si->chan; } - data["bi"] >> si->by; + data["by"] >> si->by; data["reason"] >> si->reason; data["time"] >> si->time; data["expires"] >> si->expires; @@ -53,7 +53,7 @@ struct CSSuspendInfoImpl : CSSuspendInfo, Serializable class CommandCSSuspend : public Command { public: - CommandCSSuspend(Module *creator) : Command(creator, "chanserv/suspend", 1, 3) + CommandCSSuspend(Module *creator) : Command(creator, "chanserv/suspend", 2, 3) { this->SetDesc(_("Prevent a channel from being used preserving channel data and settings")); this->SetSyntax(_("\037channel\037 [+\037expiry\037] \037reason\037")); @@ -62,7 +62,7 @@ class CommandCSSuspend : public Command void Execute(CommandSource &source, const std::vector<Anope::string> ¶ms) anope_override { const Anope::string &chan = params[0]; - Anope::string expiry = params.size() > 1 ? params[1] : ""; + Anope::string expiry = params[1]; Anope::string reason = params.size() > 2 ? params[2] : ""; time_t expiry_secs = Config->GetModule(this->owner)->Get<time_t>("expire"); @@ -85,7 +85,13 @@ class CommandCSSuspend : public Command return; } - CSSuspendInfo *si = ci->Extend<CSSuspendInfo>("cs_suspend"); + if (ci->HasExt("CS_SUSPENDED")) + { + source.Reply(_("\2%s\2 is already suspended."), ci->name.c_str()); + return; + } + + CSSuspendInfo *si = ci->Extend<CSSuspendInfo>("CS_SUSPENDED"); si->chan = ci->name; si->by = source.GetNick(); si->reason = reason; @@ -153,7 +159,7 @@ class CommandCSUnSuspend : public Command } /* Only UNSUSPEND already suspended channels */ - CSSuspendInfo *si = ci->GetExt<CSSuspendInfo>("cs_suspend"); + CSSuspendInfo *si = ci->GetExt<CSSuspendInfo>("CS_SUSPENDED"); if (!si) { source.Reply(_("Channel \002%s\002 isn't suspended."), ci->name.c_str()); @@ -162,7 +168,7 @@ class CommandCSUnSuspend : public Command Log(LOG_ADMIN, source, this, ci) << " which was suspended by " << si->by << " for: " << (!si->reason.empty() ? si->reason : "No reason"); - ci->Shrink<CSSuspendInfo>("cs_suspend"); + ci->Shrink<CSSuspendInfo>("CS_SUSPENDED"); source.Reply(_("Channel \002%s\002 is now released."), ci->name.c_str()); @@ -190,7 +196,7 @@ class CSSuspend : public Module public: CSSuspend(const Anope::string &modname, const Anope::string &creator) : Module(modname, creator, VENDOR), - commandcssuspend(this), commandcsunsuspend(this), suspend(this, "cs_suspend"), + commandcssuspend(this), commandcsunsuspend(this), suspend(this, "CS_SUSPENDED"), suspend_type("CSSuspendInfo", CSSuspendInfoImpl::Unserialize) { } diff --git a/modules/commands/ns_access.cpp b/modules/commands/ns_access.cpp index d42ef5bc6..f21edbf08 100644 --- a/modules/commands/ns_access.cpp +++ b/modules/commands/ns_access.cpp @@ -133,7 +133,7 @@ class CommandNSAccess : public Command source.Reply(BAD_USERHOST_MASK); source.Reply(MORE_INFO, Config->StrictPrivmsg.c_str(), source.service->nick.c_str(), source.command.c_str()); } - else if (nc->HasExt("SUSPENDED")) + else if (nc->HasExt("NS_SUSPENDED")) source.Reply(NICK_X_SUSPENDED, nc->display.c_str()); else if (cmd.equals_ci("ADD")) return this->DoAdd(source, nc, mask); diff --git a/modules/commands/ns_ajoin.cpp b/modules/commands/ns_ajoin.cpp index 9fa75eea8..4409afa2b 100644 --- a/modules/commands/ns_ajoin.cpp +++ b/modules/commands/ns_ajoin.cpp @@ -265,7 +265,7 @@ class NSAJoin : public Module if (ci != NULL) { - if (ci->HasExt("SUSPENDED")) + if (ci->HasExt("CS_SUSPENDED")) continue; } if (c != NULL) diff --git a/modules/commands/ns_cert.cpp b/modules/commands/ns_cert.cpp index 561f89304..014a31a0d 100644 --- a/modules/commands/ns_cert.cpp +++ b/modules/commands/ns_cert.cpp @@ -144,7 +144,7 @@ class CommandNSCert : public Command return; } - if (nc->HasExt("SUSPENDED")) + if (nc->HasExt("NS_SUSPENDED")) { source.Reply(NICK_X_SUSPENDED, nc->display.c_str()); return; @@ -277,7 +277,7 @@ class CommandNSCert : public Command NickCore *nc = source.nc; - if (source.nc->HasExt("SUSPENDED")) + if (source.nc->HasExt("NS_SUSPENDED")) source.Reply(NICK_X_SUSPENDED, source.nc->display.c_str()); else if (cmd.equals_ci("ADD")) return this->DoAdd(source, nc, mask); @@ -335,7 +335,7 @@ class NSCert : public Module return; if (u->IsIdentified() && u->Account() == na->nc) return; - if (na->nc->HasExt("SUSPENDED")) + if (na->nc->HasExt("NS_SUSPENDED")) return; NSCertList *cl = certs.Get(na->nc); diff --git a/modules/commands/ns_group.cpp b/modules/commands/ns_group.cpp index 160980bc9..26f267c6d 100644 --- a/modules/commands/ns_group.cpp +++ b/modules/commands/ns_group.cpp @@ -117,7 +117,7 @@ class CommandNSGroup : public Command source.Reply(NICK_X_NOT_REGISTERED, nick.c_str()); else if (Anope::CurTime < u->lastnickreg + reg_delay) source.Reply(_("Please wait %d seconds before using the GROUP command again."), (reg_delay + u->lastnickreg) - Anope::CurTime); - else if (target->nc->HasExt("SUSPENDED")) + else if (target->nc->HasExt("NS_SUSPENDED")) { Log(LOG_COMMAND, source, this) << "tried to use GROUP for SUSPENDED nick " << target->nick; source.Reply(NICK_X_SUSPENDED, target->nick.c_str()); diff --git a/modules/commands/ns_identify.cpp b/modules/commands/ns_identify.cpp index d66913851..ede1c381c 100644 --- a/modules/commands/ns_identify.cpp +++ b/modules/commands/ns_identify.cpp @@ -75,7 +75,7 @@ class CommandNSIdentify : public Command Anope::string pass = params[params.size() - 1]; NickAlias *na = NickAlias::Find(nick); - if (na && na->nc->HasExt("SUSPENDED")) + if (na && na->nc->HasExt("NS_SUSPENDED")) source.Reply(NICK_X_SUSPENDED, na->nick.c_str()); else if (u->Account() && na && u->Account() == na->nc) source.Reply(_("You are already identified.")); diff --git a/modules/commands/ns_list.cpp b/modules/commands/ns_list.cpp index 31f2cbb51..058ae91b4 100644 --- a/modules/commands/ns_list.cpp +++ b/modules/commands/ns_list.cpp @@ -62,7 +62,7 @@ class CommandNSList : public Command { if (keyword.equals_ci("NOEXPIRE")) nsnoexpire = true; - if (keyword.equals_ci("SUSPENDED")) + if (keyword.equals_ci("NS_SUSPENDED")) suspended = true; if (keyword.equals_ci("UNCONFIRMED")) unconfirmed = true; @@ -87,7 +87,7 @@ class CommandNSList : public Command continue; else if (nsnoexpire && !na->HasExt("NS_NO_EXPIRE")) continue; - else if (suspended && !na->nc->HasExt("SUSPENDED")) + else if (suspended && !na->nc->HasExt("NS_SUSPENDED")) continue; else if (unconfirmed && !na->nc->HasExt("UNCONFIRMED")) continue; @@ -108,7 +108,7 @@ class CommandNSList : public Command entry["Nick"] = (isnoexpire ? "!" : "") + na->nick; if (na->nc->HasExt("HIDE_MASK") && !is_servadmin && na->nc != mync) entry["Last usermask"] = "[Hostname hidden]"; - else if (na->nc->HasExt("SUSPENDED")) + else if (na->nc->HasExt("NS_SUSPENDED")) entry["Last usermask"] = "[Suspended]"; else if (na->nc->HasExt("UNCONFIRMED")) entry["Last usermask"] = "[Unconfirmed]"; diff --git a/modules/commands/ns_recover.cpp b/modules/commands/ns_recover.cpp index 48c625ace..3d7bdd49b 100644 --- a/modules/commands/ns_recover.cpp +++ b/modules/commands/ns_recover.cpp @@ -151,7 +151,7 @@ class CommandNSRecover : public Command source.Reply(NICK_X_NOT_REGISTERED, nick.c_str()); return; } - else if (na->nc->HasExt("SUSPENDED")) + else if (na->nc->HasExt("NS_SUSPENDED")) { source.Reply(NICK_X_SUSPENDED, na->nick.c_str()); return; diff --git a/modules/commands/ns_suspend.cpp b/modules/commands/ns_suspend.cpp index 76c195a34..9545bdc60 100644 --- a/modules/commands/ns_suspend.cpp +++ b/modules/commands/ns_suspend.cpp @@ -40,11 +40,11 @@ struct NSSuspendInfoImpl : NSSuspendInfo, Serializable NickAlias *na = NickAlias::Find(snick); if (!na) return NULL; - si = na->Extend<NSSuspendInfoImpl>("SUSPENDED"); + si = na->nc->Extend<NSSuspendInfoImpl>("NS_SUSPENDED"); data["nick"] >> si->nick; } - data["bi"] >> si->by; + data["by"] >> si->by; data["reason"] >> si->reason; data["time"] >> si->when; data["expires"] >> si->expires; @@ -97,9 +97,15 @@ class CommandNSSuspend : public Command return; } + if (na->nc->HasExt("NS_SUSPENDED")) + { + source.Reply(_("\2%s\2 is already suspended."), na->nc->display.c_str()); + return; + } + NickCore *nc = na->nc; - NSSuspendInfo *si = nc->Extend<NSSuspendInfo>("SUSPENDED"); + NSSuspendInfo *si = nc->Extend<NSSuspendInfo>("NS_SUSPENDED"); si->nick = nc->display; si->by = source.GetNick(); si->reason = reason; @@ -168,13 +174,13 @@ class CommandNSUnSuspend : public Command return; } - if (!na->nc->HasExt("SUSPENDED")) + if (!na->nc->HasExt("NS_SUSPENDED")) { source.Reply(_("Nick %s is not suspended."), na->nick.c_str()); return; } - na->nc->Shrink<NSSuspendInfo>("SUSPENDED"); + na->nc->Shrink<NSSuspendInfo>("NS_SUSPENDED"); Log(LOG_ADMIN, source, this) << "for " << na->nick; source.Reply(_("Nick %s is now released."), nick.c_str()); @@ -200,7 +206,7 @@ class NSSuspend : public Module public: NSSuspend(const Anope::string &modname, const Anope::string &creator) : Module(modname, creator, VENDOR), - commandnssuspend(this), commandnsunsuspend(this), suspend(this, "SUSPENDED"), + commandnssuspend(this), commandnsunsuspend(this), suspend(this, "NS_SUSPENDED"), suspend_type("NSSuspendInfo", NSSuspendInfoImpl::Unserialize) { } diff --git a/modules/database/db_old.cpp b/modules/database/db_old.cpp index 8ce79f708..d90424d21 100644 --- a/modules/database/db_old.cpp +++ b/modules/database/db_old.cpp @@ -484,7 +484,7 @@ static void LoadNicks() if (u32 & OLD_NI_HIDE_STATUS) nc->Extend<bool>("HIDE_STATUS"); if (u32 & OLD_NI_SUSPENDED) - nc->Extend<bool>("SUSPENDED"); + nc->Extend<bool>("NS_SUSPENDED"); if (!(u32 & OLD_NI_AUTOOP)) nc->Extend<bool>("AUTOOP"); @@ -749,7 +749,7 @@ static void LoadChannels() if (tmpu32 & OLD_CI_SIGNKICK_LEVEL) ci->Extend<bool>("SIGNKICK_LEVEL"); if (tmpu32 & OLD_CI_SUSPENDED) - ci->Extend<bool>("SUSPENDED"); + ci->Extend<bool>("CS_SUSPENDED"); READ(read_string(buffer, f)); READ(read_string(buffer, f)); diff --git a/modules/pseudoclients/nickserv.cpp b/modules/pseudoclients/nickserv.cpp index f5c94fa7d..6700dce48 100644 --- a/modules/pseudoclients/nickserv.cpp +++ b/modules/pseudoclients/nickserv.cpp @@ -471,7 +471,7 @@ class NickServCore : public Module, public NickServService /* Update last quit and last seen for the user */ NickAlias *na = NickAlias::Find(u->nick); - if (na && !na->nc->HasExt("SUSPENDED") && (u->IsRecognized() || u->IsIdentified(true))) + if (na && !na->nc->HasExt("NS_SUSPENDED") && (u->IsRecognized() || u->IsIdentified(true))) { na->last_seen = Anope::CurTime; na->last_quit = msg; |