summaryrefslogtreecommitdiff
path: root/modules
diff options
context:
space:
mode:
authorSadie Powell <sadie@witchery.services>2024-08-29 13:14:39 +0100
committerSadie Powell <sadie@witchery.services>2024-08-29 13:14:39 +0100
commit58a78e9aa50f0d61cecc42d9833542fe99cbed1d (patch)
tree3a0538d2023292fe94fe0acd3ab469b31b22fabe /modules
parenta3edb09eda6da745b630c935c8e7a1188e9dade9 (diff)
Allow server admins to require that a display nick drops last.
Closes #348.
Diffstat (limited to 'modules')
-rw-r--r--modules/nickserv/nickserv.cpp3
-rw-r--r--modules/nickserv/ns_drop.cpp6
2 files changed, 9 insertions, 0 deletions
diff --git a/modules/nickserv/nickserv.cpp b/modules/nickserv/nickserv.cpp
index a8ffa51e6..fc02ff50d 100644
--- a/modules/nickserv/nickserv.cpp
+++ b/modules/nickserv/nickserv.cpp
@@ -536,6 +536,9 @@ public:
if (nickserv_expire && Anope::CurTime - na->last_seen >= nickserv_expire)
expire = true;
+ if (na->nc->na == na && na->nc->aliases->size() > 1 && Config->GetModule("nickserv")->Get<bool>("preservedisplay"))
+ expire = false;
+
FOREACH_MOD(OnPreNickExpire, (na, expire));
if (expire)
diff --git a/modules/nickserv/ns_drop.cpp b/modules/nickserv/ns_drop.cpp
index c35792060..6042bf326 100644
--- a/modules/nickserv/ns_drop.cpp
+++ b/modules/nickserv/ns_drop.cpp
@@ -57,6 +57,12 @@ public:
return;
}
+ if (na->nc->na == na && na->nc->aliases->size() > 1 && Config->GetModule("nickserv")->Get<bool>("preservedisplay") && !source.HasPriv("nickserv/drop/display"))
+ {
+ source.Reply(_("You may not drop \002%s\002 as it is the display nick for the account."), na->nick.c_str());
+ return;
+ }
+
auto *code = dropcode.Get(na);
if (params.size() < 2 || ((!code || !code->equals_ci(params[1])) && (!source.HasPriv("nickserv/drop/override") || params[1] != "OVERRIDE")))
{