📄 conf_logging.cgi
字号:
#! /usr/bin/perl## B9DDNS - BIND 9 dynamic DNS webmin module.# Copyright (C) 2003 John Horne. <john.horne@plymouth.ac.uk>## This program is free software; you can redistribute it and/or modify# it under the terms of the GNU General Public License as published by# the Free Software Foundation; either version 2 of the License, or# (at your option) any later version.## This program is distributed in the hope that it will be useful,# but WITHOUT ANY WARRANTY; without even the implied warranty of# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the# GNU General Public License for more details.## You should have received a copy of the GNU General Public License# along with this program; if not, write to the Free Software# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.### Display global logging options.#use strict;no strict 'vars';require './b9ddns-lib.pl';my $found = my $i = 0;my $conf = my $logging = my $members = my $channel_members = '';my $channel = my $file = my $filestr = my $syslog = my $stderr = my $null = '';my $size = my $unit = my $severity = my $s = '';my @channels = my @channel_names = my @categories = ();my %category_channel = ();my @cat_list = ( 'default', 'general', 'database', 'security', 'config', 'resolver', 'xfer-in', 'xfer-out', 'notify', 'client', 'unmatched', 'network', 'update', 'queries', 'dispatch', 'dnssec', 'lame-servers' );my @syslog_levels = ( 'kern', 'user', 'mail', 'daemon', 'auth', 'syslog', 'lpr', 'news', 'uucp', 'cron', 'authpriv', 'local0', 'local1', 'local2', 'local3', 'local4', 'local5', 'local6', 'local7' );my @severities = ( 'critical', 'error', 'warning', 'notice', 'info', 'debug', 'dynamic' );my @defchans = ( { 'name' => 'default_syslog', 'syslog' => 'daemon', 'severity' => 'info' }, { 'name' => 'default_debug', 'file' => 'named.run', 'severity' => 'dynamic' }, { 'name' => 'default_stderr', 'fd' => 'stderr', 'severity' => 'info' }, { 'name' => 'null', 'null' => 1 } );%access = &get_module_acl();unless ($access{'defaults'}) { &terror('logging_ecannot');}&ReadParse();$conf = &get_config();$logging = &find('logging', $conf);$members = (defined($logging)) ? $logging->{'members'} : [ ];&header($text{'logging_title'}, '');print '<hr>';print '<form action=save_logging.cgi>';print '<table border width=100%>';print "<tr $tb><td><b>$text{'logging_header'}</b></td></tr>\n";print "<tr $cb><td><table width=100%>\n";print "<tr><td valign=top><b>$text{'logging_chans'}</b></td><td>\n";# Display the default channels.foreach $channel (@defchans) { print '<table width=100% border><tr><td><table>'; print "<tr><td><b>$text{'logging_cname'}</b></td>\n"; print "<td colspan=3><i>$channel->{'name'}</i></td></tr>\n"; print "<tr><td><b>$text{'logging_to'}</b></td>\n"; print '<td>'; if ($channel->{'syslog'}) { print "$text{'logging_syslog'} <i>$channel->{'syslog'}</i>"; } elsif ($channel->{'file'}) { print "$text{'logging_file'} <i>$channel->{'file'}</i>"; } elsif ($channel->{'fd'}) { print "$text{'logging_fd'} <i>$channel->{'fd'}</i>"; } else { print $text{'logging_null'}; } print "</td></tr>\n"; print "<tr><td><b>$text{'logging_sev'}</b></td>\n"; print '<td><i>'; if ($channel->{'severity'}) { print $channel->{'severity'}; } else { print $text{'logging_any'}; } print "</i></td></tr></table></td></tr></table><br>\n";}# Display user-defined channels.@channels = &find('channel', $members);@channel_names = ( (map { $_->{'value'} } @channels), 'default_syslog', 'default_debug', 'default_stderr', 'null' );push(@channels, { }) if ($in{'add'});for ($i = 0; $i < @channels; $i++) { $channel_members = $channels[$i]->{'members'}; $file = &find('file', $channel_members); $filestr = (defined($file)) ? join(' ', @{ $file->{'values'} }) : ''; $syslog = &find_value('syslog', $channel_members); $stderr = &find('stderr', $channel_members); $null = &find('null', $channel_members); print '<br>' if ($i); print '<table width=100% border><tr><td><table width=100%>'; print "<tr><td><b>$text{'logging_cname'}</b></td>\n"; printf '<td colspan=3><input name=cname_%d value="%s"></td></tr>', $i, $channels[$i]->{'value'}; print "<tr><td valign=top><b>$text{'logging_to'}</b></td>\n"; printf '<td colspan=3><input type=radio name=to_%d value=0 %s> %s ', $i, &checked($file), $text{'logging_file'}; printf '<input name=file_%d size=42 value="%s"> %s<br>', $i, (defined($file) ? $file->{'value'} : ''), &file_chooser_button("file_$i"); print " <b>$text{'logging_versions'}</b>\n"; printf '<input type=radio name=vmode_%d value=0 %s> %s ', $i, &checked($filestr !~ /\sversions\s/io), $text{'logging_ver1'}; printf '<input type=radio name=vmode_%d value=1 %s> %s ', $i, &checked($filestr =~ /\sversions\s+unlimited/io), $text{'logging_ver2'}; printf '<input type=radio name=vmode_%d value=2 %s> ', $i, &checked($filestr =~ /\sversions\s+(\d+)/io); printf '<input name=ver_%d size=8 value="%s"><br>', $i, ($filestr =~ /\sversions\s+(\d+)/io) ? $1 : ''; $unit = ''; $size = ($filestr =~ /\ssize\s+(\S+)/io) ? lc($1) : ''; if ($size eq 'unlimited') { $size = ''; } elsif ($size =~ /^(\d+)([kmg]?)$/o) { if ($1 > 0) { $size = $1; if ($2) { $unit = uc($2) . 'B'; } else { $unit = 'Bytes'; } } else { $size = $text{'invalid'}; } } elsif ($size) { $size = $text{'invalid'}; } print "\n <b>$text{'logging_size'}</b>\n"; print ' ' x 14; printf '<input type=radio name=smode_%d value=0 %s> %s ', $i, &checked(! $size), $text{'logging_sz1'}; printf '<input type=radio name=smode_%d value=1 %s> ', $i, &checked($size); printf '<input name=size_%d size=8 value="%s">', $i, $size; &size_unit_choice("size_unit_$i", $unit); print '<br>'; printf '<input type=radio name=to_%d value=1 %s> %s ', $i, &checked($syslog), $text{'logging_syslog'}; print "<select name=syslog_$i>\n"; print "<option selected>\n" unless ($syslog); foreach $s (@syslog_levels) { printf "<option %s>%s\n", ($syslog eq $s) ? 'selected' : '', $s; } print '</select> '; printf '<input type=radio name=to_%d value=2 %s> %s', $i, &checked($stderr), $text{'logging_stderr'}; print ' ' x 7; printf '<input type=radio name=to_%d value=3 %s> %s</td></tr>', $i, &checked($null), $text{'logging_null'}; $severity = &find('severity', $channel_members); print "<tr><td><b>$text{'logging_sev'}</b></td>\n"; print "<td colspan=3><select name=sev_$i>\n"; printf '<option %s>', defined($severity) ? '' : 'selected'; foreach $s (@severities) { printf "<option value=%s %s>%s\n", $s, ($severity->{'value'} eq $s) ? 'selected' : '', ($s eq 'debug') ? $text{'logging_debug'} : ($s eq 'dynamic') ? $text{'logging_dyn'} : $s; } print '</select>'; printf '<input name=debug_%d size=5 value="%s"></td></tr>', $i, ($severity->{'value'} eq 'debug') ? $severity->{'values'}->[1] : ''; print "<tr><td><b>$text{'logging_pcat'}</b></td><td>\n"; &yes_no_default("print-category-$i", &find_value('print-category', $channel_members)); print "</td><td><b>$text{'logging_psev'}</b></td><td>\n"; &yes_no_default("print-severity-$i", &find_value('print-severity', $channel_members)); print '</td></tr>'; print "<tr><td><b>$text{'logging_ptime'}</b></td><td>\n"; &yes_no_default("print-time-$i", &find_value('print-time', $channel_members)); print '</td></tr>'; print "</table></td></tr></table>\n";}print "<br><a href='conf_logging.cgi?add=1'>$text{'logging_add'}</a>\n";print '<br><br></td></tr>';print "<tr><td valign=top><b>$text{'logging_cats'}</b></td>\n";print '<td><table border>';print "<tr $tb><td><b>$text{'logging_cat'}</b></td> ", "<td><b>$text{'logging_cchans'}</b></td></tr>\n";@categories = ( &find('category', $members), { } );for ($i = 0; $i < @categories; $i++) { $found = 0; print "<tr $cb><td><select name=cat_$i><option>\n"; foreach $s (@cat_list) { printf "<option %s>%s\n", ($categories[$i]->{'value'} eq $s) ? 'selected' : '', $s; $found++ if ($categories[$i]->{'value'} eq $s); } if (! $found && $categories[$i]->{'value'}) { print '<option selected>', $categories[$i]->{'value'}; } print '</select></td><td>'; %category_channel = (); foreach $s (@{ $categories[$i]->{'members'} }) { $category_channel{$s->{'name'}}++; } foreach $s (@channel_names) { printf "<input type=checkbox name=cchan_%d value=%s %s> %s\n", $i, $s, &checked($category_channel{$s}), $s; } print "</td></tr>\n";}print '</table></td></tr></table></td></tr></table>';print '<input type=submit value="', $text{'save'}, '"></form>';print '<hr>';&footer('', $text{'index_return'});exit;## yes_no_default(name, value)#sub yes_no_default { print '<input type=radio name=', $_[0], ' value='; printf '"" %s> %s ', &checked(! $_[1]), $text{'default'}; print '<input type=radio name=', $_[0], ' value='; printf 'yes %s> %s ', &checked(lc($_[1]) eq 'yes'), $text{'yes'}; print '<input type=radio name=', $_[0], ' value='; printf 'no %s> %s', &checked(lc($_[1]) eq 'no'), $text{'no'}; print "\n"; return;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -