2 # Create, update or delete a log target
4 require './syslog-ng-lib.pl';
6 &error_setup($text{'log_err'});
11 @logs = &find("log", $conf);
12 ($log) = grep { $_->{'index'} == $in{'idx'} } @logs;
13 $log || &error($text{'log_egone'});
17 $log = { 'name' => 'log',
22 &lock_file($config{'syslogng_conf'});
25 &save_directive($conf, undef, $log, undef, 0);
29 @oldsources = &find("source", $log->{'members'});
30 foreach $s (split(/\0/, $in{'source'})) {
31 push(@newsources, { 'name' => 'source',
33 'values' => [ $s ] });
35 @newsources || &error($text{'log_esource'});
36 &save_multiple_directives($conf, $log, \@oldsources, \@newsources, 1);
39 @oldfilters = &find("filter", $log->{'members'});
40 foreach $s (split(/\0/, $in{'filter'})) {
41 push(@newfilters, { 'name' => 'filter',
43 'values' => [ $s ] });
45 &save_multiple_directives($conf, $log, \@oldfilters, \@newfilters, 1);
48 @olddestinations = &find("destination", $log->{'members'});
49 foreach $s (split(/\0/, $in{'destination'})) {
50 push(@newdestinations, { 'name' => 'destination',
52 'values' => [ $s ] });
54 &save_multiple_directives($conf, $log, \@olddestinations, \@newdestinations, 1);
58 foreach $f (@log_flags) {
60 push(@flags, $f, ",");
65 pop(@flags); # remove last ,
66 $fdir = { 'name' => 'flags',
68 'values' => \@flags };
70 &save_directive($conf, $log, 'flags', $fdir, 1);
72 # Actually update the object
73 &save_directive($conf, undef, $old, $log, 0);
76 &unlock_file($config{'syslogng_conf'});
77 &webmin_log($in{'delete'} ? 'delete' : $in{'new'} ? 'create' : 'modify',
79 &redirect("list_logs.cgi");