diff options
author | Sadie Powell <sadie@witchery.services> | 2024-08-29 13:14:39 +0100 |
---|---|---|
committer | Sadie Powell <sadie@witchery.services> | 2024-08-29 13:14:39 +0100 |
commit | 58a78e9aa50f0d61cecc42d9833542fe99cbed1d (patch) | |
tree | 3a0538d2023292fe94fe0acd3ab469b31b22fabe /modules | |
parent | a3edb09eda6da745b630c935c8e7a1188e9dade9 (diff) |
Allow server admins to require that a display nick drops last.
Closes #348.
Diffstat (limited to 'modules')
-rw-r--r-- | modules/nickserv/nickserv.cpp | 3 | ||||
-rw-r--r-- | modules/nickserv/ns_drop.cpp | 6 |
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"))) { |