⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 conf_logging.cgi

📁 BIND 9 dynamic DNS webmin module. This module supports both static and dynamic zones, and IPv4 and I
💻 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 "&nbsp;&nbsp;&nbsp;&nbsp;<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&nbsp;&nbsp;&nbsp;&nbsp;<b>$text{'logging_size'}</b>\n";	print '&nbsp;' 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>&nbsp;&nbsp;&nbsp;';	printf '<input type=radio name=to_%d value=2 %s> %s',		$i, &checked($stderr), $text{'logging_stderr'};	print '&nbsp;' 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 + -