3 # Display a form for editing or creating a new log destination
5 require './syslog-lib.pl';
7 $access{'noedit'} && &error($text{'edit_ecannot'});
8 $access{'syslog'} || &error($text{'edit_ecannot'});
11 &ui_print_header(undef, $text{'create_title'}, "");
12 $log = { 'active' => '1',
14 'file' => -d '/var/log' ? '/var/log/' :
15 -d '/var/adm' ? '/var/adm/' : undef };
18 &ui_print_header(undef, $text{'edit_title'}, "");
19 $log = $conf->[$in{'idx'}];
20 &can_edit_log($log) || &error($text{'edit_ecannot2'});
23 # Log destination section
24 print &ui_form_start("save_log.cgi");
25 print &ui_hidden("new", $in{'new'});
26 print &ui_hidden("idx", $in{'idx'});
27 print &ui_table_start($text{'edit_header1'}, "width=100%", 2);
29 # Log destination, starting with file
30 @dopts = ( [ 0, $text{'edit_file'},
31 &ui_textbox("file", $log->{'file'}, 40)." ".
32 &file_chooser_button("file")." ".
33 ($config{'sync'} ? "<br>".&ui_checkbox("sync", 1,
34 $text{'edit_sync'}, $log->{'sync'}) : "") ]);
37 if ($config{'pipe'} == 1) {
38 push(@dopts, [ 1, $text{'edit_pipe'},
39 &ui_textbox("pipe", $log->{'pipe'}, 40)." ".
40 &file_chooser_button("pipe") ]);
42 elsif ($config{'pipe'} == 2) {
43 push(@dopts, [ 1, $text{'edit_pipe2'},
44 &ui_textbox("pipe", $log->{'pipe'}, 40) ]);
48 if ($config{'socket'}) {
49 push(@dopts, [ 5, $text{'edit_socket'},
50 &ui_textbox("socket", $log->{'socket'}, 40)." ".
51 &file_chooser_button("socket") ]);
55 push(@dopts, [ 3, $text{'edit_users'},
56 &ui_textbox("users", join(" ", @{$log->{'users'}}), 40)." ".
57 &user_chooser_button("users", 1) ]);
60 push(@dopts, [ 4, $text{'edit_allusers'} ]);
63 push(@dopts, [ 2, $text{'edit_host'},
64 &ui_textbox("host", $log->{'host'}, 30) ]);
66 print &ui_table_row($text{'edit_logto'},
67 &ui_radio_table("mode", $log->{'file'} ? 0 :
69 $log->{'socket'} ? 5 :
72 $log->{'all'} ? 4 : -1, \@dopts));
75 print &ui_table_row($text{'edit_active'},
76 &ui_yesno_radio("active", $log->{'active'}));
78 if ($config{'tags'}) {
80 print &ui_table_row($text{'edit_tag'},
81 &ui_select("tag", $log->{'section'}->{'tag'},
82 [ map { [ $_->{'index'},
83 $_->{'tag'} eq '*' ? $text{'all'} : $_->{'tag'} ] }
84 grep { $_->{'tag'} } @$conf ]));
87 print &ui_table_end();
89 # Log selection section
90 print &ui_table_start($text{'edit_header2'}, "width=100%", 2);
92 @facil = split(/\s+/, $config{'facilities'});
93 $table = &ui_columns_start([ $text{'edit_facil'}, $text{'edit_pri'} ], 100);
95 foreach $s (@{$log->{'sel'}}, ".none") {
96 ($f, $p) = split(/\./, $s);
97 $p =~ s/warn$/warning/;
98 $p =~ s/panic$/emerg/;
103 $facil .= &ui_radio("fmode_$i", $f =~ /,/ ? 1 : 0,
104 [ [ 0, &ui_select("facil_$i", $f =~ /,/ ? undef : $f,
105 [ [ undef, ' ' ],
106 [ '*', $text{'edit_all'} ],
107 @facil ], 1, 0, 1) ],
108 [ 1, $text{'edit_many'}." ".
109 &ui_textbox("facils_$i",
110 $f =~ /,/ ? join(" ", split(/,/, $f)) : '', 25) ] ]);
112 # Priorities range selector
113 if ($config{'pri_dir'} == 1) {
115 $psel = &ui_select("pdir_$i",
116 $p eq '*' || $p eq 'none' ? '' :
118 $p =~ /^![^=]/ ? '!' :
119 $p =~ /^!=/ ? '!=' : '',
120 [ [ '', $text{'edit_pdir0'} ],
121 [ '=', $text{'edit_pdir1'} ],
122 [ '!', $text{'edit_pdir2'} ],
123 [ '!=', $text{'edit_pdir3'} ] ]);
126 elsif ($config{'pri_dir'} == 2) {
128 local $pfx = $p =~ /^([<=>]+)/ ? $1 : undef;
129 $psel = &ui_select("pdir_$i",
130 $p eq '*' || $p eq 'none' ||
131 $pfx eq '>=' || $pfx eq '=>' || !$pfx ? '' :
132 $pfx eq '<=' || $pfx eq '=<' ? '<=' :
133 $pfx eq '<>' || $pfx eq '><' ? '<>' : $pfx,
138 [ '<>', '<>' ] ], 1, 0, 1);
142 # No range selection allowed
143 $psel = $text{'edit_pdir0'};
148 local $pmode = $p eq 'none' ? 0 : $p eq '*' ? 1 : 2;
149 $pri .= &ui_radio("pmode_$i", $pmode,
150 [ [ 0, $text{'edit_none'} ],
151 $config{'pri_all'} ? ( [ 1, $text{'edit_all'} ] ) : ( ),
156 foreach $pr (&list_priorities()) {
157 $selpri = $pr if ($p =~ /$pr/);
159 $pri .= &ui_select("pri_$i", $selpri,
160 [ $p eq '*' || $p eq 'none' ? ( '' ) : ( ),
161 &list_priorities() ], 1, 0, 1);
163 $table .= &ui_columns_row([ $facil, $pri ]);
166 $table .= &ui_columns_end();
167 print &ui_table_row(undef, $table, 2);
168 print &ui_table_end();
170 @buts = ( [ undef, $text{'save'} ] );
172 if ($log->{'file'} && -f $log->{'file'}) {
173 push(@buts, [ 'view', $text{'edit_view'} ]);
175 push(@buts, [ 'delete', $text{'delete'} ]);
177 print &ui_form_end(\@buts);
179 &ui_print_footer("", $text{'index_return'});