From 62bfa33464df8cc413fa4f111ab62e189be0ca32 Mon Sep 17 00:00:00 2001 From: Sadie Powell Date: Sat, 8 Mar 2025 13:36:41 +0000 Subject: Rework how nickname protection works. - Rename the command and module from kill to protect (this command hasn't actually killed users in a long time). - Replace QUICK/IMMED with a duration option. --- modules/webcpanel/pages/nickserv/info.cpp | 56 +++++++++++++++++--------- modules/webcpanel/templates/nickserv/info.html | 14 +++---- 2 files changed, 42 insertions(+), 28 deletions(-) (limited to 'modules/webcpanel') diff --git a/modules/webcpanel/pages/nickserv/info.cpp b/modules/webcpanel/pages/nickserv/info.cpp index e1a44a426..be8b110f5 100644 --- a/modules/webcpanel/pages/nickserv/info.cpp +++ b/modules/webcpanel/pages/nickserv/info.cpp @@ -56,23 +56,38 @@ bool WebCPanel::NickServ::Info::OnRequest(HTTPProvider *server, const Anope::str na->nc->Shrink("NS_PRIVATE"); replacements["MESSAGES"] = "Private updated"; } - if (message.post_data["kill"] == "on" && !na->nc->HasExt("KILLPROTECT")) + if (na->nc->HasExt("PROTECT") != !!message.post_data.count("protect")) { - na->nc->Extend("KILLPROTECT"); - na->nc->Shrink("KILL_QUICK"); - replacements["MESSAGES"] = "Kill updated"; - } - else if (message.post_data["kill"] == "quick" && !na->nc->HasExt("KILL_QUICK")) - { - na->nc->Extend("KILLPROTECT"); - na->nc->Extend("KILL_QUICK"); - replacements["MESSAGES"] = "Kill updated"; + if (!na->nc->HasExt("PROTECT")) + { + na->nc->Shrink("PROTECT"); + na->nc->Shrink("PROTECT_AFTER"); + } + else + { + na->nc->Extend("PROTECT"); + } + replacements["MESSAGES"] = "Protect updated"; } - else if (message.post_data["kill"] == "off" && (!!na->nc->HasExt("KILLPROTECT") || !!na->nc->HasExt("KILL_QUICK"))) + if (na->nc->HasExt("PROTECT") && message.post_data.count("protect_after") > 0) { - na->nc->Shrink("KILLPROTECT"); - na->nc->Shrink("KILL_QUICK"); - replacements["MESSAGES"] = "Kill updated"; + auto &block = Config->GetModule("nickserv"); + auto minprotect = block.Get("minprotect", "10s"); + auto maxprotect = block.Get("maxprotect", "10m"); + + auto secs = Anope::TryConvert(message.post_data["greet"]); + if (!secs) + replacements["ERRORS"] = "Protection after seconds are not valid"; + else if (*secs < minprotect || *secs > maxprotect) + { + replacements["ERRORS"] = Anope::printf("Protection delay must be between %ld and %ld seconds.", + minprotect, maxprotect); + } + else + { + na->nc->Extend("PROTECT_AFTER", *secs); + replacements["MESSAGES"] = "Protect after updated"; + } } if (na->nc->HasExt("NS_KEEP_MODES") != !!message.post_data.count("keepmodes")) { @@ -113,12 +128,13 @@ bool WebCPanel::NickServ::Info::OnRequest(HTTPProvider *server, const Anope::str replacements["AUTOOP"]; if (na->nc->HasExt("NS_PRIVATE")) replacements["PRIVATE"]; - if (na->nc->HasExt("KILLPROTECT")) - replacements["KILL_ON"]; - if (na->nc->HasExt("KILL_QUICK")) - replacements["KILL_QUICK"]; - if (!na->nc->HasExt("KILLPROTECT") && !na->nc->HasExt("KILL_QUICK")) - replacements["KILL_OFF"]; + if (na->nc->HasExt("PROTECT")) + { + replacements["PROTECT"]; + auto *protectafter = na->nc->GetExt("PROTECT_AFTER"); + if (protectafter) + replacements["PROTECT_AFTER"] = *protectafter; + } if (na->nc->HasExt("NS_KEEP_MODES")) replacements["KEEPMODES"]; if (na->nc->HasExt("MSG")) diff --git a/modules/webcpanel/templates/nickserv/info.html b/modules/webcpanel/templates/nickserv/info.html index c713cd64c..794598196 100644 --- a/modules/webcpanel/templates/nickserv/info.html +++ b/modules/webcpanel/templates/nickserv/info.html @@ -61,14 +61,12 @@ - Kill: - - - + Protect: + + + + Protect after: + -- cgit