From 1293a2cf4fd07f386cb4d4fe9842328ef30aabb7 Mon Sep 17 00:00:00 2001 From: Jamie Cameron Date: Tue, 28 Apr 2026 21:33:16 -0700 Subject: [PATCH] Add mass enable and disable buttons --- status/delete_mons.cgi | 28 +++++++++++++++++++++++----- status/edit_sched.cgi | 3 ++- status/index.cgi | 9 +++++++-- status/lang/en | 4 ++++ status/log_parser.pl | 4 ++-- 5 files changed, 38 insertions(+), 10 deletions(-) diff --git a/status/delete_mons.cgi b/status/delete_mons.cgi index 652e154e0..9a175363d 100755 --- a/status/delete_mons.cgi +++ b/status/delete_mons.cgi @@ -4,22 +4,40 @@ require './status-lib.pl'; &ReadParse(); $in{'d'} || &error($text{'deletes_enone'}); + +# Get the monitors @d = split(/\0/, $in{'d'}); +foreach $d (@d) { + $serv = &get_service($d); + $serv || &error($text{'deletes_egone'}); + push(@dels, $serv); + } if ($in{'delete'}) { # Deleting $access{'edit'} || &error($text{'mon_ecannot'}); - foreach $d (@d) { - $serv = &get_service($d); - $serv || &error($text{'deletes_egone'}); - push(@dels, $serv); - } foreach $serv (@dels) { &delete_service($serv); } &webmin_log("deletes", undef, scalar(@dels)); &redirect(""); } +elsif ($in{'disable'} || $in{'enable'}) { + # Disabling or enabling scheduled check + $access{'edit'} || &error($text{'mon_ecannot'}); + foreach $serv (@dels) { + if ($in{'disable'} && $serv->{'nosched'} != 1) { + $serv->{'old_nosched'} = $serv->{'nosched'}; + $serv->{'nosched'} = 1; + } + elsif ($in{'enable'} && $serv->{'nosched'} == 1) { + $serv->{'nosched'} = $serv->{'old_nosched'} || 0; + } + &save_service($serv); + } + &webmin_log($in{'enable'} ? 'enables' : 'disables', undef, scalar(@dels)); + &redirect(""); + } else { # Refreshing &ui_print_unbuffered_header(undef, $text{'refresh_title'}, ""); diff --git a/status/edit_sched.cgi b/status/edit_sched.cgi index de875cb96..3077be90a 100755 --- a/status/edit_sched.cgi +++ b/status/edit_sched.cgi @@ -50,7 +50,8 @@ print &ui_table_row($text{'sched_warn'}, [ [ 1, $text{'sched_warn1'} ], [ 0, $text{'sched_warn0'} ], [ 3, $text{'sched_warn3'} ], - [ 2, $text{'sched_warn2'} ] ]), 3); + [ 2, $text{'sched_warn2'} ], + [ 4, $text{'sched_warn4'} ] ]), 3); # Send email to my $e = $config{'sched_email'}; diff --git a/status/index.cgi b/status/index.cgi index d56fc8b59..6075f4d72 100755 --- a/status/index.cgi +++ b/status/index.cgi @@ -67,8 +67,13 @@ if (@serv) { } print &ui_links_row(\@links); if ($access{'edit'}) { - print &ui_form_end([ [ "delete", $text{'index_delete'} ], - [ "refresh", $text{'index_refsel'} ] ]); + my @buts = ( [ "delete", $text{'index_delete'} ], + [ "refresh", $text{'index_refsel'} ] ); + if (!$config{'index_status'}) { + push(@buts, [ "disable", $text{'index_disable'} ], + [ "enable", $text{'index_enable'} ]); + } + print &ui_form_end(\@buts); } } else { diff --git a/status/lang/en b/status/lang/en index 354504d96..f47451c95 100644 --- a/status/lang/en +++ b/status/lang/en @@ -16,6 +16,8 @@ index_refresh=Refresh Status index_refreshdesc=Perform an immediate refresh of all monitor statuses, instead of waiting for the next scheduled update. index_delete=Delete Selected index_refsel=Refresh Selected +index_disable=Disable Selected +index_enable=Enable Selected index_group=Members of $1 index_tmpls=Edit Email Templates index_tmplsdesc=View and edit templates used to construct email messages sent when monitored services go down. @@ -328,6 +330,8 @@ log_modify=Modified monitor $1 log_delete=Deleted monitor $1 log_sched=Changed scheduled monitoring log_deletes=Deleted $1 monitors +log_disables=Disabled $1 monitors +log_enables=Enabled $1 monitors log_tmpl_create=Created email template $1 log_tmpl_modify=Modified email template $1 log_tmpl_delete=Deleted email template $1 diff --git a/status/log_parser.pl b/status/log_parser.pl index b2e9cbe74..de01b5bfe 100755 --- a/status/log_parser.pl +++ b/status/log_parser.pl @@ -15,8 +15,8 @@ elsif ($type eq "template") { return &text("log_tmpl_${action}", "".&html_escape($p->{'desc'}).""); } -elsif ($action eq "deletes") { - return &text("log_deletes", $object); +elsif ($action eq "deletes" || $action eq "disables" || $action eq "enables") { + return &text("log_".$action, $object); } else { return &text("log_${action}", "".&html_escape($p->{'desc'})."");