#!/usr/bin/perl # save_service.cgi # Save, create or delete a service require './mon-lib.pl'; &ReadParse(); $conf = &get_mon_config(); $watch = $conf->[$in{'idx'}]; if ($in{'sidx'} ne '') { $oldservice = $service = $watch->{'members'}->[$in{'sidx'}]; } else { $service = { 'name' => 'service', 'indent' => ' ', 'members' => [ ] }; } &error_setup($text{'service_err'}); if ($in{'delete'}) { # Delete this service from the watch &save_directive($watch->{'members'}, $service, undef); } else { # Validate and store service inputs $in{'name'} =~ /^\S+$/ || &error($text{'service_ename'}); $service->{'values'} = [ $in{'name'} ]; $in{'interval'} =~ /^\d+$/ || &error($text{'service_einterval'}); # Save the description if ($in{'desc'}) { &set_directive($service->{'members'}, "description", $in{'desc'}); } else { &set_directive($service->{'members'}, "description"); } &set_directive($service->{'members'}, "interval", $in{'interval'}.$in{'interval_u'}); if ($in{'monitor_def'}) { &set_directive($service->{'members'}, "monitor", $in{'monitor'}.' '.$in{'args'}); } else { $in{'other'} =~ /^\S+$/ || &error($text{'service_eother'}); &set_directive($service->{'members'}, "monitor", $in{'other'}.' '.$in{'args'}); } # Validate and store each period for($i=0; defined($in{"idx_$i"}); $i++) { # Save period time next if ($in{"delete_$i"}); local $period; if (!$in{'new'} && $in{"idx_$i"} ne '') { $period = $service->{'members'}->[$in{"idx_$i"}]; } else { $period = { 'name' => 'period', 'members' => [ ] }; } if ($in{"known_$i"} == 0) { $in{"pstr_$i"} =~ /\S/ || &error($text{'service_epstr'}); $period->{'values'} = [ $in{"pstr_$i"} ]; } elsif ($in{"known_$i"} == 2) { $period->{'values'} = [ $in{"name_$i"}.":" ]; } else { local @pv; if (!$in{"days_def_$i"}) { push(@pv, "wd {".$in{"dfrom_$i"}."-". $in{"dto_$i"}."}"); } if (!$in{"hours_def_$i"}) { $in{"hfrom_$i"} =~ /^(\d+)(am|pm|)$/ || &error(&text('service_ehour', $i+1)); $in{"hto_$i"} =~ /^(\d+)(am|pm|)$/ || &error(&text('service_ehour', $i+1)); push(@pv, "hr {".$in{"hfrom_$i"}."-". $in{"hto_$i"}."}"); } #@pv || &error(&text('service_eperiod', $i+1)); $period->{'values'} = \@pv; } # Save alerts local (@alert, @upalert, @startupalert); for($j=0; defined($in{"alert_${i}_${j}"}); $j++) { next if (!$in{"alert_${i}_${j}"}); local @v = ( $in{"alert_${i}_${j}"}, $in{"aargs_${i}_${j}"} ); if ($in{"atype_${i}_${j}"} eq 'alert') { push(@alert, { 'name' => 'alert', 'values' => \@v }); } elsif ($in{"atype_${i}_${j}"} eq 'upalert') { push(@upalert, { 'name' => 'upalert', 'values' => \@v }); } else { push(@startupalert, { 'name' => 'startupalert', 'values' => \@v }); } } &set_directive($period->{'members'}, "alert", @alert); &set_directive($period->{'members'}, "upalert", @upalert); &set_directive($period->{'members'}, "startupalert", @startupalert); # Save other period options if ($in{"every_def_$i"}) { &set_directive($period->{'members'}, "alertevery"); } else { $in{"every_$i"} =~ /^\d+$/ || &error($text{'service_eevery'}); &set_directive($period->{'members'}, "alertevery", $in{"every_$i"}.$in{"every_${i}_u"}); } if ($in{"after_def_$i"}) { &set_directive($period->{'members'}, "alertafter"); } else { $in{"after_$i"} =~ /^\d+$/ || &error($text{'service_eafter'}); if ($in{"after_interval_$i"} =~ /^\d+$/) { &set_directive($period->{'members'}, "alertafter", $in{"after_$i"}." ". $in{"after_interval_$i"}. $in{"after_interval_${i}_u"}); } } if ($in{"num_def_$i"}) { &set_directive($period->{'members'}, "numalerts"); } else { $in{"num_$i"} =~ /^\d+$/ || &error($text{'service_enum'}); &set_directive($period->{'members'}, "numalerts", $in{"num_$i"}); } push(@period, $period); } &set_directive($service->{'members'}, "period", @period); # Store the service in the config file &save_directive($watch->{'members'}, $oldservice, $service); } &flush_file_lines(); &redirect("list_watches.cgi"); # set_directive(&config, name, value, value, ..) sub set_directive { local @o = &find($_[1], $_[0]); local @n = @_[2 .. @_-1]; local $i; for($i=0; $i<@o || $i<@n; $i++) { local $idx = &indexof($o[$i], @{$_[0]}) if ($o[$i]); local $nv = ref($n[$i]) ? $n[$i] : { 'name' => $_[1], 'values' => [ $n[$i] ] } if (defined($n[$i])); if ($o[$i] && defined($n[$i])) { $_[0]->[$idx] = $nv; } elsif ($o[$i]) { splice(@{$_[0]}, $idx, 1); } else { push(@{$_[0]}, $nv); } } }
Name | Type | Size | Permission | Actions |
---|---|---|---|---|
help | Folder | 0755 |
|
|
images | Folder | 0755 |
|
|
lang | Folder | 0755 |
|
|
CHANGELOG | File | 113 B | 0644 |
|
README | File | 287 B | 0644 |
|
backup_config.pl | File | 732 B | 0755 |
|
config | File | 201 B | 0644 |
|
config-Fedora-Linux | File | 189 B | 0644 |
|
config.info | File | 362 B | 0644 |
|
config.info.ca | File | 397 B | 0644 |
|
config.info.cs | File | 375 B | 0644 |
|
config.info.de | File | 429 B | 0644 |
|
config.info.es | File | 399 B | 0644 |
|
config.info.nl | File | 420 B | 0644 |
|
config.info.no | File | 381 B | 0644 |
|
config.info.ru | File | 506 B | 0644 |
|
config.info.uk | File | 511 B | 0644 |
|
create_watch.cgi | File | 281 B | 0755 |
|
edit_auth.cgi | File | 1.43 KB | 0755 |
|
edit_global.cgi | File | 2.01 KB | 0755 |
|
edit_service.cgi | File | 8.05 KB | 0755 |
|
edit_user.cgi | File | 1.38 KB | 0755 |
|
edit_watch.cgi | File | 2.21 KB | 0755 |
|
feedback_files.pl | File | 113 B | 0755 |
|
index.cgi | File | 1.52 KB | 0755 |
|
install_check.pl | File | 329 B | 0755 |
|
list_groups.cgi | File | 832 B | 0755 |
|
list_periods.cgi | File | 2.09 KB | 0755 |
|
list_users.cgi | File | 1.03 KB | 0755 |
|
list_watches.cgi | File | 1.26 KB | 0755 |
|
module.info | File | 181 B | 0644 |
|
module.info.af | File | 0 B | 0644 |
|
module.info.af.auto | File | 108 B | 0644 |
|
module.info.ar | File | 0 B | 0644 |
|
module.info.ar.auto | File | 136 B | 0644 |
|
module.info.be | File | 0 B | 0644 |
|
module.info.be.auto | File | 166 B | 0644 |
|
module.info.bg | File | 0 B | 0644 |
|
module.info.bg.auto | File | 171 B | 0644 |
|
module.info.ca | File | 117 B | 0644 |
|
module.info.ca.auto | File | 13 B | 0644 |
|
module.info.cs | File | 37 B | 0644 |
|
module.info.cs.auto | File | 86 B | 0644 |
|
module.info.da | File | 0 B | 0644 |
|
module.info.da.auto | File | 108 B | 0644 |
|
module.info.de | File | 111 B | 0644 |
|
module.info.de.auto | File | 12 B | 0644 |
|
module.info.el | File | 0 B | 0644 |
|
module.info.el.auto | File | 192 B | 0644 |
|
module.info.es | File | 32 B | 0644 |
|
module.info.es.auto | File | 91 B | 0644 |
|
module.info.eu | File | 0 B | 0644 |
|
module.info.eu.auto | File | 121 B | 0644 |
|
module.info.fa | File | 0 B | 0644 |
|
module.info.fa.auto | File | 168 B | 0644 |
|
module.info.fi | File | 0 B | 0644 |
|
module.info.fi.auto | File | 105 B | 0644 |
|
module.info.fr | File | 0 B | 0644 |
|
module.info.fr.auto | File | 126 B | 0644 |
|
module.info.he | File | 0 B | 0644 |
|
module.info.he.auto | File | 136 B | 0644 |
|
module.info.hr | File | 0 B | 0644 |
|
module.info.hr.auto | File | 119 B | 0644 |
|
module.info.hu | File | 0 B | 0644 |
|
module.info.hu.auto | File | 122 B | 0644 |
|
module.info.it | File | 0 B | 0644 |
|
module.info.it.auto | File | 121 B | 0644 |
|
module.info.ja | File | 0 B | 0644 |
|
module.info.ja.auto | File | 160 B | 0644 |
|
module.info.ko | File | 0 B | 0644 |
|
module.info.ko.auto | File | 138 B | 0644 |
|
module.info.lt | File | 0 B | 0644 |
|
module.info.lt.auto | File | 141 B | 0644 |
|
module.info.lv | File | 0 B | 0644 |
|
module.info.lv.auto | File | 128 B | 0644 |
|
module.info.ms | File | 105 B | 0644 |
|
module.info.ms.auto | File | 12 B | 0644 |
|
module.info.mt | File | 0 B | 0644 |
|
module.info.mt.auto | File | 132 B | 0644 |
|
module.info.nl | File | 28 B | 0644 |
|
module.info.nl.auto | File | 89 B | 0644 |
|
module.info.no | File | 31 B | 0644 |
|
module.info.no.auto | File | 82 B | 0644 |
|
module.info.pl | File | 0 B | 0644 |
|
module.info.pl.auto | File | 112 B | 0644 |
|
module.info.pt | File | 0 B | 0644 |
|
module.info.pt.auto | File | 122 B | 0644 |
|
module.info.pt_BR | File | 0 B | 0644 |
|
module.info.pt_BR.auto | File | 131 B | 0644 |
|
module.info.ro | File | 0 B | 0644 |
|
module.info.ro.auto | File | 128 B | 0644 |
|
module.info.ru | File | 38 B | 0644 |
|
module.info.ru.auto | File | 154 B | 0644 |
|
module.info.sk | File | 0 B | 0644 |
|
module.info.sk.auto | File | 122 B | 0644 |
|
module.info.sl | File | 0 B | 0644 |
|
module.info.sl.auto | File | 113 B | 0644 |
|
module.info.sv | File | 0 B | 0644 |
|
module.info.sv.auto | File | 117 B | 0644 |
|
module.info.th | File | 0 B | 0644 |
|
module.info.th.auto | File | 255 B | 0644 |
|
module.info.tr | File | 0 B | 0644 |
|
module.info.tr.auto | File | 123 B | 0644 |
|
module.info.uk | File | 0 B | 0644 |
|
module.info.uk.auto | File | 214 B | 0644 |
|
module.info.ur | File | 0 B | 0644 |
|
module.info.ur.auto | File | 158 B | 0644 |
|
module.info.vi | File | 0 B | 0644 |
|
module.info.vi.auto | File | 155 B | 0644 |
|
module.info.zh | File | 0 B | 0644 |
|
module.info.zh.auto | File | 121 B | 0644 |
|
module.info.zh_TW | File | 0 B | 0644 |
|
module.info.zh_TW.auto | File | 130 B | 0644 |
|
mon-lib.pl | File | 8.96 KB | 0755 |
|
mon.cgi | File | 998 B | 0755 |
|
mon_action.cgi | File | 415 B | 0755 |
|
moncmd.diff | File | 2.52 KB | 0644 |
|
moncmd.pl | File | 5.66 KB | 0755 |
|
monshow.cgi | File | 564 B | 0755 |
|
monshowrc | File | 166 B | 0644 |
|
restart.cgi | File | 180 B | 0755 |
|
save_auth.cgi | File | 625 B | 0755 |
|
save_global.cgi | File | 1.7 KB | 0755 |
|
save_groups.cgi | File | 656 B | 0755 |
|
save_periods.cgi | File | 1.11 KB | 0755 |
|
save_service.cgi | File | 4.71 KB | 0755 |
|
save_user.cgi | File | 823 B | 0755 |
|
save_watch.cgi | File | 370 B | 0755 |
|
start.cgi | File | 226 B | 0755 |
|
stop.cgi | File | 423 B | 0755 |
|