From f111e3b3ec81a355f4398f0b197b0d8a49021d45 Mon Sep 17 00:00:00 2001 From: Sadie Powell Date: Wed, 11 Mar 2026 16:37:15 +0000 Subject: [PATCH] Deduplicate the messages in the os_stats akill stats. --- modules/operserv/os_stats.cpp | 75 ++++++++--------------------------- 1 file changed, 17 insertions(+), 58 deletions(-) diff --git a/modules/operserv/os_stats.cpp b/modules/operserv/os_stats.cpp index b2fd207d2..7b067fd0b 100644 --- a/modules/operserv/os_stats.cpp +++ b/modules/operserv/os_stats.cpp @@ -54,71 +54,30 @@ Stats *Stats::me = nullptr; class CommandOSStats final : public Command { +private: ServiceReference akills, snlines, sqlines; + + static void ReportXLineStats(CommandSource& source, XLineManager* xlm, const char* type, const char* config) + { + source.Reply(_("Current number of %ss: \002%zu\002"), type, xlm->GetCount()); + + const auto timeout = Config->GetModule("operserv").Get(config, "30d"); + if (timeout) + source.Reply(_("Default %s expiry time: \002%s\002"), type, Anope::Duration(timeout, source.nc, true).c_str()); + else + source.Reply(_("Default %s expiry time: \002No expiration\002"), type); + } private: void DoStatsAkill(CommandSource &source) { - int timeout; if (akills) - { - /* AKILLs */ - source.Reply(_("Current number of AKILLs: \002%zu\002"), akills->GetCount()); - timeout = Config->GetModule("operserv").Get("autokillexpiry", "30d") + 59; - if (timeout >= 172800) - source.Reply(_("Default AKILL expiry time: \002%d days\002"), timeout / 86400); - else if (timeout >= 86400) - source.Reply(_("Default AKILL expiry time: \0021 day\002")); - else if (timeout >= 7200) - source.Reply(_("Default AKILL expiry time: \002%d hours\002"), timeout / 3600); - else if (timeout >= 3600) - source.Reply(_("Default AKILL expiry time: \0021 hour\002")); - else if (timeout >= 120) - source.Reply(_("Default AKILL expiry time: \002%d minutes\002"), timeout / 60); - else if (timeout >= 60) - source.Reply(_("Default AKILL expiry time: \0021 minute\002")); - else - source.Reply(_("Default AKILL expiry time: \002No expiration\002")); - } + ReportXLineStats(source, *akills, "AKILL", "autokillexpiry"); + if (snlines) - { - /* SNLINEs */ - source.Reply(_("Current number of SNLINEs: \002%zu\002"), snlines->GetCount()); - timeout = Config->GetModule("operserv").Get("snlineexpiry", "30d") + 59; - if (timeout >= 172800) - source.Reply(_("Default SNLINE expiry time: \002%d days\002"), timeout / 86400); - else if (timeout >= 86400) - source.Reply(_("Default SNLINE expiry time: \0021 day\002")); - else if (timeout >= 7200) - source.Reply(_("Default SNLINE expiry time: \002%d hours\002"), timeout / 3600); - else if (timeout >= 3600) - source.Reply(_("Default SNLINE expiry time: \0021 hour\002")); - else if (timeout >= 120) - source.Reply(_("Default SNLINE expiry time: \002%d minutes\002"), timeout / 60); - else if (timeout >= 60) - source.Reply(_("Default SNLINE expiry time: \0021 minute\002")); - else - source.Reply(_("Default SNLINE expiry time: \002No expiration\002")); - } + ReportXLineStats(source, *snlines, "SNLINE", "snlineexpiry"); + if (sqlines) - { - /* SQLINEs */ - source.Reply(_("Current number of SQLINEs: \002%zu\002"), sqlines->GetCount()); - timeout = Config->GetModule("operserv").Get("sglineexpiry", "30d") + 59; - if (timeout >= 172800) - source.Reply(_("Default SQLINE expiry time: \002%d days\002"), timeout / 86400); - else if (timeout >= 86400) - source.Reply(_("Default SQLINE expiry time: \0021 day\002")); - else if (timeout >= 7200) - source.Reply(_("Default SQLINE expiry time: \002%d hours\002"), timeout / 3600); - else if (timeout >= 3600) - source.Reply(_("Default SQLINE expiry time: \0021 hour\002")); - else if (timeout >= 120) - source.Reply(_("Default SQLINE expiry time: \002%d minutes\002"), timeout / 60); - else if (timeout >= 60) - source.Reply(_("Default SQLINE expiry time: \0021 minute\002")); - else - source.Reply(_("Default SQLINE expiry time: \002No expiration\002")); - } + ReportXLineStats(source, *sqlines, "SQLINE", "sqlineexpiry"); } static void DoStatsReset(CommandSource &source)