#!/usr/local/bin/perl # edit_service.cgi # Display a new or existing service inside a watch require './mon-lib.pl'; &ReadParse(); $conf = &get_mon_config(); $watch = $conf->[$in{'idx'}]; if ($in{'new'}) { &ui_print_header(undef, $text{'service_title'}, ""); } else { &ui_print_header(undef, $text{'service_title2'}, ""); $service = $watch->{'members'}->[$in{'sidx'}]; } print "
\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "
$text{'service_header'}
\n"; print "\n"; printf "\n", $service->{'values'}->[0]; $int = &find_value("interval", $service->{'members'}); print "\n"; print "\n"; $desc = &find("description", $service->{'members'}); print "\n"; printf "\n", $desc ? $desc->{'value'} : ""; @mons = &list_monitors(); $monitor = &find("monitor", $service->{'members'}) if (!$in{'new'}); if ($monitor->{'value'} =~ /^(\S+)\s*(.*)$/) { $mon = $1; $args = $2; } $idx = &indexof($mon, @mons); print "\n"; print "\n"; $i = 0; @avail = &list_alerts(); @periods = &find("period", $service->{'members'}); push(@periods, { }) if ($in{'newperiod'} || $in{'new'}); @defperiods = &find("period", $conf); foreach $p (@periods) { print "\n"; print "\n"; print "\n"; print "\n"; local ($dfrom, $dto, $hfrom, $hto, $known, $name); if ($p->{'value'} =~ /^\s*wd\s+{(\S+)-(\S+)}\s+hr\s+{(\S+)-(\S+)}\s*$/){ $dfrom = $1; $dto = $2; $hfrom = $3; $hto = $4; $known = 1; } elsif ($p->{'value'} =~ /^\s*wd\s+{(\S+)-(\S+)}\s*$/) { $dfrom = $1; $dto = $2; $known = 1; } elsif ($p->{'value'} =~ /^\s*hr\s+{(\S+)-(\S+)}\s*$/) { $hfrom = $1; $hto = $2; $known = 1; } elsif ($p->{'value'} =~ /^\s*(\S+):\s*$/) { $name = $1; $known = 2; } elsif (!$p->{'value'}) { $hfrom = $hto = ""; $known = 1; } # Specified days and hours printf "\n", $known == 1 ? "checked" : "", "$text{'service_known1'}"; print "\n"; # Selected defined period if (@defperiods || $known == 2) { printf "\n", $known == 2 ? "checked" : "", "$text{'service_known2'}"; print "\n"; } # Any Time::Period string printf "\n", $known == 0 ? "checked" : "", "$text{'service_known0'}"; printf "\n", $known == 0 ? $p->{'value'} : ""; print "\n"; print "\n"; local $ev = &find_value("alertevery", $p->{'members'}); print "\n"; local @aa = &find_value("alertafter", $p->{'members'}); print "\n"; local $na = &find_value("numalerts", $p->{'members'}); print "\n"; printf "\n"; $i++; } if (!$in{'new'}) { print "\n"; print "\n"; } print "
$text{'service_name'}$text{'service_interval'}",&interval_input("interval", $int),"
$text{'service_desc'}
$text{'service_monitor'} \n"; printf " %s\n", $in{'new'} || $idx >= 0 ? "checked" : "", $text{'service_mon1'}; print "\n"; printf " %s\n", $in{'new'} || $idx >= 0 ? "" : "checked", $text{'service_mon0'}; printf "\n", $idx >= 0 ? "" : $mon; print "
$text{'service_args'} \n"; print "

",&text($p->{'name'} ? 'service_period' : 'service_new', $i+1)," ", "$text{'service_delperiod'}
%s$text{'service_days'}\n"; printf " %s\n", $dfrom ? "" : "checked", $text{'service_all'}; printf "\n", $dfrom ? "checked" : ""; print &day_input("dfrom_$i", $dfrom)," - ", &day_input("dto_$i", $dto); print "   \n"; print "$text{'service_hours'}\n"; printf " %s\n", $hfrom ? "" : "checked", $text{'service_all'}; printf "\n", $hfrom ? "checked" : ""; print " - ", "
%s
%s
$text{'service_alerts'}\n"; print " ", " ", "\n"; local @alerts = ( &find("alert", $p->{'members'}), &find("upalert", $p->{'members'}), &find("startupalert", $p->{'members'}) ); local $j = 0; foreach $a (@alerts, { }) { print "\n"; print "\n"; $ar =~ s/"/"/g; print "\n"; $j++; } print "
$text{'service_alert'}$text{'service_atype'}$text{'service_aargs'}
$text{'service_every'} \n"; printf " %s\n", $ev ? "" : "checked", $text{'service_every_def'}; printf " %s\n", $ev ? "checked" : "", $text{'service_every_time'}; print &interval_input("every_$i", $ev),"
$text{'service_after'} \n"; printf " %s\n", @aa ? "" : "checked", $text{'service_immediate'}; printf "\n", @aa ? "checked" : ""; print &text('service_after_num', ""),"\n"; print " " x 3; print $text{'service_aftertime'},"\n"; print &interval_input("after_interval_$i", $aa[1]),"
$text{'service_num'} %s\n", $na ? "" : "checked", $text{'service_unlimited'}; printf "\n", $na ? "checked" : ""; print "

", "$text{'service_newperiod'}
\n"; print "\n"; if ($in{'new'}) { print "\n"; } else { print "\n"; print "\n"; } print "
\n"; &ui_print_footer("list_watches.cgi", $text{'watches_return'});