Your IP : 18.190.157.16


Current Path : /usr/share/awstats/tools/webmin/
Upload File :
Current File : //usr/share/awstats/tools/webmin/awstats-2.0.wbm

awstats/0000775000175000017500000000000012760361365014523 5ustar  ldestailleurldestailleurawstats/module.info0000664000175000017500000000057312410217071016654 0ustar  ldestailleurldestailleurcategory=system
desc=AWStats Logfile Analyzer
longdesc=Generate and analyze graphicaly statistics from web, proxy, wap, ftp or mail server log files
name=AWStats
version=2.000
depends=webmin 1.510
depends=cron 1.000
depends=logrotate 1.131
desc_fr=Analyseur de Logs AWStats
long_desc_fr=Generation et analyse graphique de statistiques a partir des logs de server web, ftp ou mailawstats/log_parser.pl0000664000175000017500000000103512410217071017176 0ustar  ldestailleurldestailleur# log_parser.pl
# Functions for parsing this module's logs

do 'awstats-lib.pl';

# parse_webmin_log(user, script, action, type, object, &params)
# Converts logged information from this module into human-readable form
sub parse_webmin_log
{
local ($user, $script, $action, $type, $object, $p) = @_;
if ($type eq "log") {
	return &text("log_${action}_log", "<tt>".&html_escape($object)."</tt>");
	}
elsif ($type eq "global") {
	return $object eq "-" ? $text{"log_global"} :
		&text("log_global2", "<tt>".&html_escape($object)."</tt>");
	}
}

awstats/save_config.cgi0000664000175000017500000000725012410217071017460 0ustar  ldestailleurldestailleur#!/usr/bin/perl
# save_config.cgi
# Save, create or delete options for a config file

require './awstats-lib.pl';
&foreign_require("cron", "cron-lib.pl");
&ReadParse();

&error_setup($text{'save_err'});

if (! $in{'file'}) { $in{'file'}=$in{'new'}; }
if ($in{'new'} && ! $access{'add'}) { &error($text{'edit_ecannot'}); }
if (! $in{'new'} && $access{'edit'}) { &error($text{'edit_ecannot'}); }


if ($in{'view'}) {
	my $dir=$in{'file'}; $dir =~ s/[\\\/][^\\\/]+$//;
	if (! $dir) { $dir="/etc/awstats"; }
	&can_edit_config($in{'file'}) || &error($text{'edit_efilecannot'}." ".$in{'file'});

	# Re-direct to the view page
	&redirect("view_config.cgi/".&urlize(&urlize($in{'file'}))."/index.html");
	}
elsif ($in{'delete'}) {
	my $dir=$in{'file'}; $dir =~ s/[\\\/][^\\\/]+$//;
	if (! $dir) { $dir="/etc/awstats"; }
	&can_edit_config($in{'file'}) || &error($text{'edit_efilecannot'}." ".$in{'file'});

	# Delete this config file from the configuration
	local $cfile = $in{'file'};
	local $cfileold = $in{'file'}.".old";
	&lock_file($cfile);	unlink($cfile);	&unlock_file($cfile);
	&lock_file($cfileold);	unlink($cfileold);	&unlock_file($cfileold);
	&webmin_log("delete", "log", $cfile);

	# Create or delete the cron job
#		&lock_file($job->{'file'});
#		&foreign_call("cron", "delete_cron_job", $job);
#		&unlock_file($job->{'file'});

	}
else {
	# Validate and store inputs. $in{'new'} is new file to create or update.
	if (!$in{'new'} && !$in{'file'}) { &error($text{'save_efile'}); }

	my $dir=$in{'file'}; $dir =~ s/[\\\/][^\\\/]+$//;
	if (! $dir) { $dir="/etc/awstats"; }
	if (! &can_edit_config($dir)) {
		&error(&text('save_edir',"$dir")."<br>\n".&text('index_changeallowed',"Menu <a href=\"/acl/\">Webmin - Utilisateurs Webmin</a> puis clic sur $text{'index_title'}")."<br>\n");
	}

	if ($in{'new'} && -r $in{'$file'}) { &error($text{'save_fileexists'}); }
	if (! -d $dir) { &error($text{'save_dirnotexists'}); }

    my $modelconf=$config{'alt_conf'};

    # If create by copy
    if ($in{'new'} && $in{'create_mode'} eq 'by_copy') {
        $modelconf=$in{'file_to_copy'};
        $in{'new'} =~ s/([^\\\/]+)$//;
        my $to=$1;
        if (! $modelconf || ! -r $modelconf) { &error('You must choose a config to copy'); }
		# Add a new config file
		&system_logged("cp '$modelconf' '$dir/$to'");
    }
    else {
    	%conf=();
    	foreach my $key (keys %in) {
    		if ($key eq 'file') { next; }
                    if ($key eq 'new') { next; }
                    if ($key eq 'submit') { next; }
    		if ($key eq 'oldfile') { next; }
    		$conf{$key} = $in{$key};
    		if ($conf{key} ne ' ') {
    			$conf{$key} =~ s/^\s+//;
    			$conf{$key} =~ s/\s+$//;
    		}
    	}
    	if ($conf{'LogSeparator'} eq '') { $conf{'LogSeparator'}=' '; }
    
    	# Check data
    	my $logfile='';
    	if ($conf{'LogFile'} !~ /|\s*$/) {	# LogFile is not a piped valued
    		$logfile=$conf{'LogFile'};
    	}
    	else {								# LogFile is piped
    		# It can be
    		# '/xxx/maillogconvert.pl standard /aaa/mail.log |'
    		# '/xxx/logresolvermerge.pl *'
    
    		# TODO test something here ?
    	}
    	if ($logfile && ! -r $logfile)	{ &error(&text(save_errLogFile,$logfile)); }
    	if (! $conf{'SiteDomain'}) 		{ &error(&text(save_errSiteDomain,$conf{'SiteDomain'})); }
    	if (! -d $conf{'DirData'}) 		{ &error(&text(save_errDirData,$conf{'DirData'})); }
    
    	if ($in{'new'}) {
    		# Add a new config file
    		&system_logged("cp '$modelconf' '$in{'new'}'");
    	}
    	
    	# Update the config file's options
    	local $cfile = $in{'file'};
    	&lock_file($cfile);
    	&update_config($cfile, \%conf);
    	&unlock_file($cfile);
    }

	&webmin_log($in{'new'} ? "create" : "modify", "log", $in{'file'});
}

&redirect("");

awstats/awstats-lib.pl0000664000175000017500000003470112760361365017317 0ustar  ldestailleurldestailleur# awstats-lib.pl
# Common functions for editing the awstats config file

BEGIN { push(@INC, ".."); };
use WebminCore;
&init_config();

#$config{'awstats'}||='/usr/local/awstats/wwwroot/cgi-bin/awstats.pl';
$config{'awstats_conf'}||='/etc/awstats';
$config{'alt_conf'}||='/etc/awstats/awstats.model.conf';

$ENV{'AWSTATS_DEL_GATEWAY_INTERFACE'}=1;

$cron_cmd = "$module_config_directory/awstats.pl";
%access = &get_module_acl();


#------------------------------------------------------------------------------
# Function:     Show help tooltip
# Parameters:   message urltotooltip
# Input:        None
# Output:       None
# Return:		None
#------------------------------------------------------------------------------
sub hblink
{
    my $t=shift;
    my $url=shift;
    return "<a href=\"javascript:neww('$url');\">$t</a>";
}


#------------------------------------------------------------------------------
# Function:     Update the awstats config file
# Parameters:   configfile conf
# Input:        None
# Output:       None
# Return:		None
#------------------------------------------------------------------------------
sub update_config
{
    my ($file,$conf)=@_;
    if (! $file) { error("Call to update_config with wrong parameter"); }

    open(FILE, $file) || error("Failed to open $file for update");
    open(FILETMP, ">$file.tmp") || error("Failed to open $file.tmp for writing");

    # $%conf contains param and values
    my %confchanged=();
    my $conflinenb = 0;

    # First, change values that are already present in old config file
    while(<FILE>) {
        my $savline=$_;

        chomp $_; s/\r//;
        $conflinenb++;

        # Remove comments not at beginning of line
        $_ =~ s/\s#.*$//;

        # Extract param and value
        my ($param,$value)=split(/=/,$_,2);
        $param =~ s/^\s+//; $param =~ s/\s+$//;
        $value =~ s/#.*$//;
        $value =~ s/^[\s\'\"]+//; $value =~ s/[\s\'\"]+$//;

        if ($param) {
            # cleanparam is param without its beginning #
            my $cleanparam=$param; my $wascleaned=0;
            if ($cleanparam =~ s/^#//) { $wascleaned=1; }
            if ($cleanparam !~ /LoadPlugin/i && defined($conf->{$cleanparam})) {
                # Value was provided from submit form in %conf hash array so we change line with this new value
                $savline = "$cleanparam=\"".($conf->{$cleanparam})."\"\n";
                $confchanged{$cleanparam}=1;
            }
            if ($cleanparam =~ /^LoadPlugin/i && $conf->{"advanced"} == 4) {
                # It's a plugin load directive
                my ($pluginname,$pluginparam)=split(/\s/,$value,2);
                if ($conf->{"plugin_$pluginname"}) {	# Plugin loaded is asked
                    $savline = "$cleanparam=\"$pluginname".($conf->{"plugin_param_$pluginname"}?" ".$conf->{"plugin_param_$pluginname"}:"")."\"\n";
                } else {								# Plugin loaded is not asked
                    $savline = "#$cleanparam=\"$pluginname".($conf->{"plugin_param_$pluginname"}?" ".$conf->{"plugin_param_$pluginname"}:"")."\"\n";
                }
                $confchanged{"plugin_$pluginname"}=1;
            }
        }
        # Write line
        print FILETMP "$savline";
    }

    # Now add values for directives that were not present in old config file
    foreach my $key (keys %$conf) {
        if ($key eq 'advanced') { next; }	# param to know if plugin setup section was opened
        if ($key =~ /^plugin_/) { next; }	# field from plugin section, not an awstats directive
        if ($confchanged{$key}) { next; }	# awstats directive already changed
        print FILETMP "\n";
        print FILETMP "# Param $key added by AWStats Webmin module\n";
        print FILETMP "$key=\"$conf->{$key}\"\n";
    }

    # Now add plugin load that were not already present in old config file
    foreach my $key (keys %$conf) {
        my $pluginname = $key;
        if ($pluginname !~ s/^plugin_//) { next; }			# not a plugin load row
        if ($pluginname =~ /^param_/) { next; }				# not a plugin load row
        if ($confchanged{"plugin_$pluginname"}) { next; }	# awstats directive or load plugin already changed
        print FILETMP "\n";
        print FILETMP "# Plugin load for plugin $pluginname added by AWStats Webmin module\n";
        print FILETMP "LoadPlugin=\"$pluginname".($conf->{"plugin_param_$pluginname"}?" ".$conf->{"plugin_param_$pluginname"}:"")."\"\n";
    }

    close(FILE);
    close(FILETMP);

    # Move file to file.sav
    if (rename("$file","$file.old")==0) {
        error("Failed to make backup of current config file to $file.old");
    }

    # Move tmp file into config file
    if (rename("$file.tmp","$file")==0) {
        error("Failed to move tmp config file $file.tmp to $file");
    }


    return 0;
}


#------------------------------------------------------------------------------
# Function:     Read config file to return value of dirdata parameter
# Parameters:   configfile
# Input:        None
# Output:       None
# Return:		string  dirdata
#------------------------------------------------------------------------------
sub get_dirdata
{
    my $dirdata="notfound";
    
    my ($file)=@_;
    if (! $file) { error("Call to get_dirdata with wrong parameter"); }

    open(FILE, "<$file") || error("Failed to open $file for read");

    # First, search value of DirData parameter
    while(<FILE>) {
        my $savline=$_;

        chomp $_; s/\r//;

        # Remove comments not at beginning of line
        $_ =~ s/\s#.*$//;

        # Extract param and value
        my ($param,$value)=split(/=/,$_,2);
        $param =~ s/^\s+//; $param =~ s/\s+$//;
        $value =~ s/#.*$//;
        $value =~ s/^[\s\'\"]+//; $value =~ s/[\s\'\"]+$//;

        if ($param) {
            # cleanparam is param without its beginning #
            my $cleanparam=$param; my $wascleaned=0;
            if ($cleanparam =~ s/^#//) { $wascleaned=1; }
            if ($cleanparam =~ /^DirData/) {
                $dirdata=$value;
                last;
            }
        }
    }
    close(FILE);

    return $dirdata;
}


use vars qw/ $regclean1 $regclean2 /;
$regclean1=qr/<(recnb|\/td)>/i;
$regclean2=qr/<\/?[^<>]+>/i;

#------------------------------------------------------------------------------
# Function:     Clean tags in a string
# Parameters:   stringtodecode
# Input:        None
# Output:       None
# Return:		decodedstring
#------------------------------------------------------------------------------
sub CleanFromTags {
	my $stringtoclean=shift;
	$stringtoclean =~ s/$regclean1/ /g;	# Replace <recnb> or </td> with space
	$stringtoclean =~ s/$regclean2//g;	# Remove <xxx>
	return $stringtoclean;
}


#------------------------------------------------------------------------------
# Function:		Format value in bytes in a string (Bytes, Kb, Mb, Gb)
# Parameters:   bytes (integer value or "0.00")
# Input:        None
# Output:       None
# Return:       "x.yz MB" or "x.yy KB" or "x Bytes" or "0"
#------------------------------------------------------------------------------
sub Format_Bytes {
	my $bytes = shift||0;
	my $fudge = 1;
	# Do not use exp/log function to calculate 1024power, function make segfault on some unix/perl versions
	if ($bytes >= ($fudge << 30)) { return sprintf("%.2f", $bytes/1073741824)." $text{'all_gb'}"; }
	if ($bytes >= ($fudge << 20)) { return sprintf("%.2f", $bytes/1048576)."  $text{'all_mb'}"; }
	if ($bytes >= ($fudge << 10)) { return sprintf("%.2f", $bytes/1024)."  $text{'all_kb'}"; }
	if ($bytes < 0) { $bytes="?"; }
	return int($bytes).(int($bytes)?" $text{'all_b'}":"");
}


#------------------------------------------------------------------------------
# Function:		Format a number
# Parameters:   number
# Input:        None
# Output:       None
# Return:       "999 999 999 999"
#------------------------------------------------------------------------------
sub Format_Number {
	my $number = shift||0;
	$number=~s/(\d)(\d\d\d)$/$1 $2/;
	$number=~s/(\d)(\d\d\d\s\d\d\d)$/$1 $2/;
	$number=~s/(\d)(\d\d\d\s\d\d\d\s\d\d\d)$/$1 $2/;
	return $number;
}


#------------------------------------------------------------------------------
# Function:		save_directive(&config, name, [value]*)
# Parameters:   &config name [value]*
# Input:        None
# Output:       None
# Return:       None
#------------------------------------------------------------------------------
sub save_directive
{
    local ($conf, $name, @values) = @_;
    local @old = &find($name, $conf);
    local $lref = &read_file_lines($conf->[0]->{'file'});
    local $i;
    for($i=0; $i<@old || $i<@values; $i++) {
        if ($i < @old && $i < @values) {
            # Just replacing a line
            $lref->[$old[$i]->{'line'}] = "$name $values[$i]";
        }
        elsif ($i < @old) {
            # Deleting a line
            splice(@$lref, $old[$i]->{'line'}, 1);
            &renumber($conf, $old[$i]->{'line'}, -1);
        }
        elsif ($i < @values) {
            # Adding a line
            if (@old) {
                # after the last one of the same type
                splice(@$lref, $old[$#old]->{'line'}+1, 0,
                "$name $values[$i]");
                &renumber($conf, $old[$#old]->{'line'}+1, 1);
            }
            else {
                # at end of file
                push(@$lref, "$name $values[$i]");
            }
        }
    }
}


#------------------------------------------------------------------------------
# Function:		renumber
# Parameters:   &config line offset
# Input:        None
# Output:       None
# Return:       None
#------------------------------------------------------------------------------
sub renumber
{
    foreach $c (@{$_[0]}) {
        $c->{'line'} += $_[2] if ($c->{'line'} >= $_[1]);
    }
}

#------------------------------------------------------------------------------
# Function:		temp_file_name
# Parameters:   file
# Input:        None
# Output:       None
# Return:       temp_file
#------------------------------------------------------------------------------
sub temp_file_name
{
    local $p = $_[0];
    $p =~ s/^\///;
    $p =~ s/\//_/g;
    return "$module_config_directory/$p.tmp";
}


#------------------------------------------------------------------------------
# Function:		find
# Parameters:   name &config
#------------------------------------------------------------------------------
sub find
{
    local @rv;
    foreach $c (@{$_[1]}) {
        push(@rv, $c) if (lc($c->{'name'}) eq lc($_[0]));
    }
    return wantarray ? @rv : $rv[0];
}


#------------------------------------------------------------------------------
# Function:		find_value
# Parameters:   name &config
#------------------------------------------------------------------------------
sub find_value
{
    local @rv = map { $_->{'value'} } &find(@_);
    return wantarray ? @rv : $rv[0];
}


#------------------------------------------------------------------------------
# Function:		all_config_files
# Parameters:   file
#------------------------------------------------------------------------------
sub all_config_files
{
    $_[0] =~ /^(.*)\/([^\/]+)$/;
    local $dir = $1;
    local $base = $2;
    local ($f, @rv);
    opendir(DIR, $dir);
    foreach $f (readdir(DIR)) {
        if ($f =~ /^\Q$base\E/ && -f "$dir/$f") {
            push(@rv, "$dir/$f");
        }
    }
    closedir(DIR);
    return @rv;
}


#------------------------------------------------------------------------------
# Function:		Get the configuration for some log file
# Parameters:   path
#------------------------------------------------------------------------------
sub get_config
{
    local %rv;
    &read_file($_[0], \%rv) || return undef;
    return \%rv;
}


#------------------------------------------------------------------------------
# Function:		generate_report_as_pdf
# Parameters:   file, handle, escape
#------------------------------------------------------------------------------
sub generate_report_as_pdf
{
    local $h = $_[1];
    local $lconf = &get_config($_[0]);
    local @all = &all_config_files($_[0]);
    if (!@all) {
        print $h "Log file $_[0] does not exist\n";
        return;
    }
    local ($a, %mtime);
    foreach $a (@all) {
        local @st = stat($a);
        $mtime{$a} = $st[9];
    }
    local $type = $lconf->{'type'} == 1 ? "" :
    $lconf->{'type'} == 2 ? "-F squid" :
    $lconf->{'type'} == 3 ? "-F ftp" : "";
    local $cfile = &temp_file_name($_[0]);
    local $conf = -r $cfile ? "-c $cfile" : "";
    if ($lconf->{'over'}) {
        unlink("$lconf->{'dir'}/awstats.current");
        unlink("$lconf->{'dir'}/awstats.hist");
    }
    local $user = $lconf->{'user'} || "root";
    if ($user ne "root" && -r $cfile) {
        chmod(0644, $cfile);
    }
    foreach $a (sort { $mtime{$a} <=> $mtime{$b} } @all) {
        local $cmd = "$config{'awstats'} $conf -o '$lconf->{'dir'}' $type -p '$a'";
        if ($user ne "root") {
            $cmd = "su \"$user\" -c \"$cmd\"";
        }
        open(OUT, "$cmd 2>&1 |");
        while(<OUT>) {
            print $h $_[2] ? &html_escape($_) : $_;
        }
        close(OUT);
        return 0 if ($?);
        &additional_config("exec", undef, $cmd);
    }
    return 1;
}


#------------------------------------------------------------------------------
# Function:		spaced_buttons
#------------------------------------------------------------------------------
sub spaced_buttons
{
    local $pc = int(100 / scalar(@_));
    print "<table width=100%><tr>\n";
    foreach $b (@_) {
        local $al = $b eq $_[0] && scalar(@_) != 1 ? "align=left" : $b eq $_[@_-1] && scalar(@_) != 1 ? "align=right" : "align=center";
        print "<td width=$pc% $al>$b</td>\n";
    }
    print "</tr>\n";
    print "</table>\n";
}


#------------------------------------------------------------------------------
# Function:		Scan directory $dir for config file. Return an array with full path
#------------------------------------------------------------------------------
sub scan_config_dir
{
    my $dir=shift;
    opendir(DIR, $dir) || return;
    local @rv = grep { /^awstats\.(.*)conf$/ } sort readdir(DIR);
    closedir(DIR);
    foreach my $file (0..@rv-1) {
        if ($rv[$file] eq 'awstats.model.conf') { next; }
        $rv[$file]="$dir/".$rv[$file];
        #print "$rv[0]\n<br>";
    }
    return @rv;
}


#------------------------------------------------------------------------------
# Function:		can_edit_config
#------------------------------------------------------------------------------
sub can_edit_config
{
    foreach $d (split(/\s+/, $access{'dir'})) {
        local $ok = &is_under_directory($d, $_[0]);
        return 1 if ($ok);
    }
    return 0;
}



1;

awstats/index.cgi0000664000175000017500000002207712410217071016310 0ustar  ldestailleurldestailleur#!/usr/bin/perl
# index.cgi
# Display available config files

require './awstats-lib.pl';


# Check if awstats is actually installed
if (!&has_command($config{'awstats'})) {
	&header($text{'index_title'}, "", undef, 1, 1, 0, undef);
	print "<hr>\n";
	print "<p>",&text('index_eawstats', "<tt>$config{'awstats'}</tt>","$gconfig{'webprefix'}/config.cgi?$module_name"),"<p>\n";
	print "<hr>\n";
	&footer("/", $text{'index'});
	exit;
}

# Check AWStats URL
# TODO


# Get the version number
$out = `$config{'awstats'} 2>&1`;
if ($out !~ /^----- awstats (\S+)\.(\S+)\s(\S+\s\S+)/) {
	&header($text{'index_title'}, "", undef, 1, 1, 0, undef);

	if ($out =~ /^content-type/i) {
		# To old version. Does not support CLI launch from CGI_GATEWAY interface
		print "<p>",&text('index_eversion', "<tt>$config{'awstats'}</tt>", "5.7 or older", "5.8"),"<p>\n";
		print "<hr>\n";
		&footer("/", $text{'index'});
		exit;
	}

	print "<hr>\n";
	print "<p>",&text('index_egetversion', "<tt>$config{'awstats'}</tt>", "<pre>$out</pre>", "$gconfig{'webprefix'}/config.cgi?$module_name"),"<p>\n";
	print "<hr>\n";
	&footer("/", $text{'index'});
	exit;
}

&header($text{'index_title'}, "", undef, 1, 1, 0, undef, undef, undef, &text('index_version', "$1.$2 $3"));

my $widthtooltip=560;
print <<EOF;
<style type="text/css">
<!--
div { font: 12px 'Arial','Verdana','Helvetica', sans-serif; text-align: justify; }
.CTooltip { position:absolute; top: 0px; left: 0px; z-index: 2; width: ${widthtooltip}px; visibility:hidden; font: 8pt 'MS Comic Sans','Arial',sans-serif; background-color: #FFFFE6; padding: 8px; border: 1px solid black; }
//-->
</style>

<script language="javascript" type="text/javascript">
function ShowTip(fArg)
{
	var tooltipOBJ = (document.getElementById) ? document.getElementById('tt' + fArg) : eval("document.all['tt" + fArg + "']");
	if (tooltipOBJ != null) {
		var tooltipLft = (document.body.offsetWidth?document.body.offsetWidth:document.body.style.pixelWidth) - (tooltipOBJ.offsetWidth?tooltipOBJ.offsetWidth:(tooltipOBJ.style.pixelWidth?tooltipOBJ.style.pixelWidth:$widthtooltip)) - 30;
		var tooltipTop = 10;
		if (navigator.appName == 'Netscape') {
			tooltipTop = (document.body.scrollTop>=0?document.body.scrollTop+10:event.clientY+10);
 			tooltipOBJ.style.top = tooltipTop+"px";
			tooltipOBJ.style.left = tooltipLft+"px";
		}
		else {
			tooltipTop = (document.body.scrollTop>=0?document.body.scrollTop+10:event.clientY+10);
			tooltipTop = (document.body.scrollTop>=0?document.body.scrollTop+10:event.clientY+10);
			if ((event.clientX > tooltipLft) && (event.clientY < (tooltipOBJ.scrollHeight?tooltipOBJ.scrollHeight:tooltipOBJ.style.pixelHeight) + 10)) {
				tooltipTop = (document.body.scrollTop?document.body.scrollTop:document.body.offsetTop) + event.clientY + 20;
			}
			tooltipOBJ.style.left = tooltipLft;
			tooltipOBJ.style.top = tooltipTop;
		}
		tooltipOBJ.style.visibility = "visible";
	}
}
function HideTip(fArg)
{
	var tooltipOBJ = (document.getElementById) ? document.getElementById('tt' + fArg) : eval("document.all['tt" + fArg + "']");
	if (tooltipOBJ != null) {
		tooltipOBJ.style.visibility = "hidden";
	}
}
</script>
EOF


print "<hr>\n";
if ($1 < 5 || ($1 == 5 && $2 < 8)) {
	print "<p>",&text('index_eversion', "<tt>$config{'awstats'}</tt>", "$1.$2", "5.8"),"<p>\n";
	print "<hr>\n";
	&footer("/", $text{'index'});
	exit;
	}

# Check if sample file exists
if (!-r $config{'alt_conf'}) {
        print "<p>",&text('index_econf', "<tt>$config{'alt_conf'}</tt>",
                  "$gconfig{'webprefix'}/config.cgi?$module_name"),"<p>\n";
        print "<hr>\n";
        &footer("/", $text{'index'});
        exit;
	}
my @configdirtoscan=split(/\s+/, $access{'dir'});
	
if (! @configdirtoscan) {
	print &text('index_nodirallowed',"<b>$remote_user</b>")."<br>\n";
	print &text('index_changeallowed',"<a href=\"/acl/\">Webmin - Utilisateurs Webmin</a>", $text{'index_title'})."<br>\n";
	print "<br>\n";
#	print "<p>",&text('index_econfdir', "<tt>$config{'awstats_conf'}</tt>",
#		  "$gconfig{'webprefix'}/config.cgi?$module_name"),"<p>\n";
	print "<hr>\n";
	&footer("/", $text{'index'});
	exit;
}

# Query apache and squid for their logfiles
%auto = map { $_, 1 } split(/,/, $config{'auto'});
if (&foreign_check("apache") && $auto{'apache'}) {
	&foreign_require("apache", "apache-lib.pl");
	$confapache = &apache::get_config();
	@dirs = ( &apache::find_all_directives($confapache, "CustomLog"),
		  &apache::find_all_directives($confapache, "TransferLog") );
	$root = &apache::find_directive_struct("ServerRoot", $confapache);
	foreach $d (@dirs) {
		local $lf = $d->{'words'}->[0];
		next if ($lf =~ /^\|/);
		if ($lf !~ /^\//) {
			$lf = "$root->{'words'}->[0]/$lf";
			}
		open(FILE, $lf);
		local $line = <FILE>;
		close(FILE);
		if (!$line || $line =~ /^([a-zA-Z0-9\.\-]+)\s+\S+\s+\S+\s+\[\d+\/[a-zA-z]+\/\d+:\d+:\d+:\d+\s+[0-9\+\-]+\]/) {
			push(@config, { 'file' => $lf,
				      'type' => 1 });
			}
		}
	}

# Build list of config files from allowed directories
foreach my $dir (split(/\s+/, $access{'dir'})) {
	my @conflist=();
	push(@conflist, map { $_->{'custom'} = 1; $_ } &scan_config_dir($dir));
	foreach my $file (@conflist) {	
		next if (!&can_edit_config($file));
		push @config, $file;
	}
}

# Write message for allowed directories
print &text('index_allowed',"<b>$remote_user</b>");
print ":<br>\n";
foreach my $dir (split(/\s/,$access{'dir'})) {
	print "$dir<br>"; 
}
print "<br>\n";
print &text('index_changeallowed',"<a href=\"/acl/\">Webmin - Webmin Users</a>", $text{'index_title'})."<br>\n";
print "<br>";

my $nbofallowedconffound=0;
if (scalar @config) {

	# Loop on each config file
	foreach my $l (@config) {
		next if (!&can_edit_config($l));
		$nbofallowedconffound++;


		# Head of config file's table list
		if ($nbofallowedconffound == 1) {

        	print "<a href='edit_config.cgi?new=1'>$text{'index_add'}</a><br><br>\n" if ($access{'add'});

            if (scalar @config >= 2 && $access{'view'}) {
        	    print "<a href='view_all.cgi?new=1'>$text{'index_viewall'}</a><br><br>\n";
            }
            
			print "<table border width=\"100%\">\n";
			print "<tr $tb>";
			print "<td rowspan=2 colspan=3><b>$text{'index_path'}</b></td>";
			print "<td rowspan=2 align=center><b>$text{'index_create'}</b></td>";
		 	print "<td colspan=2 align=center><b>$text{'index_update'}</b></td>";
			print "<td rowspan=2 align=center><b>$text{'index_view'}</b></td>";
			print "</tr>\n";
			print "<tr $tb><td align=center>$text{'index_scheduled'}</td><td align=center>$text{'index_now'}</td></tr>\n";
		}

		# Config file line
		#local @files = &all_config_files($l);
		#next if (!@files);
		local $lconf = &get_config($l);
		my $conf=""; my $dir="";
		if ($l =~ /awstats([^\\\/]*)\.conf$/) { $conf=$1; }
		if ($l =~ /^(.*)[\\\/][^\\\/]+$/) { $dir=$1; }
        my $confwithoutdot=$conf; $confwithoutdot =~ s/^\.+//;

		local ($size, $latest);
		local @st=stat($l);
		my ($sec,$min,$hour,$day,$month,$year,$wday,$yday) = localtime($st[9]);
		$year+=1900; $month++;

        print '<div class="CTooltip" id="tt'.$nbofallowedconffound.'">';
        printf("Configuration file: <b>%s</b><br>\n",$l);
		printf("Created/Changed: <b>%04s-%02s-%02s %02s:%02s:%02s</b><br>\n",$year,$month,$day,$hour,$min,$sec);
        print '</div>';

		print "<tr $cb>\n";

    	print "<td width=\"40\" align=\"center\">$nbofallowedconffound</td>";
        print "<td align=\"center\" width=\"20\" onmouseover=\"ShowTip($nbofallowedconffound);\" onmouseout=\"HideTip($nbofallowedconffound);\"><img src=\"images/info.png\"></td>";
		print "<td>";
		print "$confwithoutdot";
		if ($access{'global'}) {	# Edit config
	        print "<br><a href='edit_config.cgi?file=$l'>$text{'index_edit'}</a>\n";
		}
		print "</td>";

		printf("<td align=center>%04s-%02s-%02s %02s:%02s:%02s</td>",$year,$month,$day,$hour,$min,$sec);
	
		# Database size
		#print "<td>NA</td>";
		
		if ($access{'update'}) {	# Update
	        print "<td align=center><a href='schedule_stats.cgi?file=$l'>$text{'index_sched2'}</a></td>";
	        print "<td align=center><a href='update_stats.cgi?file=$l'>$text{'index_update2'}</a></td>\n";
		}
		else {
	        print "<td align=center>NA</td>";
	        print "<td align=center>NA</td>";
		}

#		print "<td>",$size > 10*1024*1024 ? int($size/1024/1024)." MB" :
#			     $size > 10*1024 ? int($size/1024)." KB" :
#			     $size ? "$size B" : $text{'index_empty'},"</td>\n";
#		print "<td>$latest</td>\n";
#		print "<td>",$lconf->{'sched'} ? $text{'yes'}
#					       : $text{'no'},"</td>\n";
#		if ($lconf->{'dir'} && -r "$lconf->{'dir'}/index.html") {

		if ($access{'view'}) {
			if ($config{'awstats_cgi'}) {
				print "<td align=center><a href='$config{'awstats_cgi'}?".($confwithoutdot?"config=$confwithoutdot":"").($dir?"&configdir=$dir":"")."' target=awstats>$text{'index_view2'}</a></td>\n";
			}
			else {
				print "<td align=center>".&text('index_cgi', "$gconfig{'webprefix'}/config.cgi?$module_name")."</td>";	
			}
		}
		else {
	        print "<td align=center>NA</td>";
		}
		print "</tr>\n";
	}
	
	if ($nbofallowedconffound > 0) { print "</table><br>\n"; }
}

if (! $nbofallowedconffound) {
	print "<br><p><b>$text{'index_noconfig'}</b></p><br>\n";
}


print "<hr>\n";
&footer("/", $text{'index'});

awstats/view_all.cgi0000664000175000017500000004217612760361365017023 0ustar  ldestailleurldestailleur#!/usr/bin/perl
# view_all.cgi
# Display summary of all available config files

require './awstats-lib.pl';
&ReadParse();


my $BarWidth=120;
my $BarHeight=3;

# Check if awstats is actually installed
if (!&has_command($config{'awstats'})) {
	&header($text{'index_title'}, "", undef, 1, 1, 0, undef);
	print "<hr>\n";
	print "<p>",&text('index_eawstats', "<tt>$config{'awstats'}</tt>","$gconfig{'webprefix'}/config.cgi?$module_name"),"<p>\n";
	print "<hr>\n";
	&footer("/", $text{'index'});
	exit;
}


&header($text{'viewall_title'}, "", undef, 1, 1, 0, undef, undef, undef, undef);

my $widthtooltip=560;
print <<EOF;
<style type="text/css">
<!--
div { font: 12px 'Arial','Verdana','Helvetica', sans-serif; text-align: justify; }
.CTooltip { position:absolute; top: 0px; left: 0px; z-index: 2; width: ${widthtooltip}px; visibility:hidden; font: 8pt 'MS Comic Sans','Arial',sans-serif; background-color: #FFFFE6; padding: 8px; border: 1px solid black; }
//-->
</style>

<script language="javascript" type="text/javascript">
function ShowTip(fArg)
{
	var tooltipOBJ = (document.getElementById) ? document.getElementById('tt' + fArg) : eval("document.all['tt" + fArg + "']");
	if (tooltipOBJ != null) {
		var tooltipLft = (document.body.offsetWidth?document.body.offsetWidth:document.body.style.pixelWidth) - (tooltipOBJ.offsetWidth?tooltipOBJ.offsetWidth:(tooltipOBJ.style.pixelWidth?tooltipOBJ.style.pixelWidth:${widthtooltip})) - 30;
		var tooltipTop = 10;
		if (navigator.appName == 'Netscape') {
			tooltipTop = (document.body.scrollTop>=0?document.body.scrollTop+10:event.clientY+10);
 			tooltipOBJ.style.top = tooltipTop+"px";
			tooltipOBJ.style.left = tooltipLft+"px";
		}
		else {
			tooltipTop = (document.body.scrollTop>=0?document.body.scrollTop+10:event.clientY+10);
			tooltipTop = (document.body.scrollTop>=0?document.body.scrollTop+10:event.clientY+10);
			if ((event.clientX > tooltipLft) && (event.clientY < (tooltipOBJ.scrollHeight?tooltipOBJ.scrollHeight:tooltipOBJ.style.pixelHeight) + 10)) {
				tooltipTop = (document.body.scrollTop?document.body.scrollTop:document.body.offsetTop) + event.clientY + 20;
			}
			tooltipOBJ.style.left = tooltipLft;
			tooltipOBJ.style.top = tooltipTop;
		}
		tooltipOBJ.style.visibility = "visible";
	}
}
function HideTip(fArg)
{
	var tooltipOBJ = (document.getElementById) ? document.getElementById('tt' + fArg) : eval("document.all['tt" + fArg + "']");
	if (tooltipOBJ != null) {
		tooltipOBJ.style.visibility = "hidden";
	}
}
</script>
EOF


print "<hr>\n";

if (! $access{'view'}) {
	print &text('viewall_notallowed')."<br>\n";
}

my @configdirtoscan=split(/\s+/, $access{'dir'});

if (! @configdirtoscan) {
	print &text('index_nodirallowed',"<b>$remote_user</b>")."<br>\n";
	print &text('index_changeallowed',"<a href=\"/acl/\">Webmin - Utilisateurs Webmin</a>", $text{'index_title'})."<br>\n";
	print "<br>\n";
#	print "<p>",&text('index_econfdir', "<tt>$config{'awstats_conf'}</tt>",
#		  "$gconfig{'webprefix'}/config.cgi?$module_name"),"<p>\n";
	print "<hr>\n";
	&footer("/", $text{'index'});
	exit;
}

# Build list of config files from allowed directories
foreach my $dir (split(/\s+/, $access{'dir'})) {
	my @conflist=();
	push(@conflist, map { $_->{'custom'} = 1; $_ } &scan_config_dir($dir));
	foreach my $file (@conflist) {
		next if (!&can_edit_config($file));
		push @config, $file;
	}
}

# Write message for allowed directories
print &text('viewall_allowed',"<b>$remote_user</b>");
print ":<br>\n";
foreach my $dir (split(/\s/,$access{'dir'})) {
	print "$dir<br>";
}
print "<br>\n";
print &text('index_changeallowed',"<a href=\"/acl/\">Webmin - Webmin Users</a>", $text{'index_title'})."<br>\n";
print "<br>";


$starttime=time();
($nowsec,$nowmin,$nowhour,$nowday,$nowmonth,$nowyear,$nowwday,$nowyday) = localtime($starttime);
if ($nowyear < 100) { $nowyear+=2000; } else { $nowyear+=1900; }
$nowmonth=sprintf("%02d",$nowmonth+1);

my $YearRequired=$in{'year'}||$nowyear;
my $MonthRequired=$in{'month'}||$nowmonth;
my %dirdata=();
my %view_u=();
my %view_v=();
my %view_p=();
my %view_h=();
my %view_k=();
my %notview_p=();
my %notview_h=();
my %notview_k=();
my %version=();
my %lastupdate=();
my $max_u=0;
my $max_v=0;
my $max_p=0;
my $max_h=0;
my $max_k=0;
my $nomax_p=0;
my $nomax_h=0;
my $nomax_k=0;
my %ListOfYears=(($nowyear-9)=>1,($nowyear-8)=>1,($nowyear-7)=>1,($nowyear-6)=>1,($nowyear-5)=>1,($nowyear-4)=>1,($nowyear-3)=>1,($nowyear-2)=>1,($nowyear-1)=>1,$nowyear=>1);
# If required year not in list, we add it
$ListOfYears{$YearRequired}||=$MonthRequired;

# Set dirdata for config file
my $nbofallowedconffound=0;
if (scalar @config) {

	# Loop on each config file
	foreach my $l (@config) {
		next if (!&can_edit_config($l));
		$nbofallowedconffound++;

        # Read data files
        $dirdata{$l}=get_dirdata($l);
    }
}


# Show summary informations
$nbofallowedconffound=0;
if (scalar @config) {

    my %foundendmap=();
    my %error=();

	# Loop on each config file to get info
	#--------------------------------------
	foreach my $l (@config) {
		next if (!&can_edit_config($l));
        
		# Config file line
		#local @files = &all_config_files($l);
		#next if (!@files);
		local $lconf = &get_config($l);
		my $conf=""; my $dir="";
		if ($l =~ /awstats([^\\\/]*)\.conf$/) { $conf=$1; }
		if ($l =~ /^(.*)[\\\/][^\\\/]+$/) { $dir=$1; }
        my $confwithoutdot=$conf; $confwithoutdot =~ s/^\.+//;

        # Read data file for config $l
        my $dirdata=$dirdata{$l};
        if (! $dirdata) { $dirdata="."; }
        my $filedata=$dirdata."/awstats${MonthRequired}${YearRequired}${conf}.txt";

        my $linenb=0;
        my $posgeneral=0;
        if (! -f "$filedata") {
            $error{$l}="No data for this month";
        }
        elsif (open(FILE, "<$filedata")) {
            $linenb=0;
            while(<FILE>) {
                if ($linenb++ > 100) { last; }
                my $savline=$_;
                chomp $_; s/\r//;

                # Remove comments not at beginning of line
                $_ =~ s/\s#.*$//;

                # Extract param and value
                my ($param,$value)=split(/=/,CleanFromTags($_),2);
                $param =~ s/^\s+//; $param =~ s/\s+$//;
                $value =~ s/#.*$//;
                $value =~ s/^[\s\'\"]+//; $value =~ s/[\s\'\"]+$//;

                if ($param) {
                    # cleanparam is param without its beginning #
                    my $cleanparam=$param; my $wascleaned=0;
                    if ($cleanparam =~ s/^#//) { $wascleaned=1; }

                    if ($cleanparam =~ /^AWSTATS DATA FILE (.*)$/) {
                        $version{$l}=$1;
                        next;
                    }
                    if ($cleanparam =~ /^POS_GENERAL\s+(\d+)/) {
                        $posgeneral=$1;
                        next;
                    }
                    if ($cleanparam =~ /^POS_TIME\s+(\d+)/) {
                        $postime=$1;
                        next;
                    }
                    if ($cleanparam =~ /^END_MAP/) {
                        $foundendmap{$l}=1;
                        last;
                    }
                }

            }
            if ($foundendmap{$l}) {

                # Map section was completely read, we can jump to data GENERAL
                if ($posgeneral) {
            		$linenb=0;
                    my ($foundu,$foundv,$foundl)=(0,0,0);
                    seek(FILE,$posgeneral,0);
                    while (<FILE>) {
                        if ($linenb++ > 50) { last; }  # To protect against full file scan
                        $line=$_;
                 		chomp $line; $line =~ s/\r$//;
                        $line=CleanFromTags($line);
                        
                        if ($line =~ /TotalUnique\s+(\d+)/) { $view_u{$l}=$1; if ($1 > $max_u) { $max_u=$1; } $foundu++; }
                        elsif ($line =~ /TotalVisits\s+(\d+)/) { $view_v{$l}=$1; if ($1 > $max_v) { $max_v=$1; }  $foundv++; }
                        elsif ($line =~ /LastUpdate\s+(\d+)/) { $lastupdate{$l}=$1; $foundl++; }
                        
                        if ($foundu && $foundv && $foundl) { last; }
                    }
                } else {
                    $error{$l}.="Mapping for section GENERAL was wrong.";
                }

                # Map section was completely read, we can jump to data TIME
                if ($postime) {
                    seek(FILE,$postime,0);
            		$linenb=0;
                    while (<FILE>) {
                        if ($linenb++ > 50) { last; }  # To protect against full file scan
                        $line=$_;
                 		chomp $line; $line =~ s/\r$//;
                        $line=CleanFromTags($line);
                        
                        if ($line =~ /^(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)/) {
                            $view_p{$l}+=$2;
                            $view_h{$l}+=$3;
                            $view_k{$l}+=$4;
                            $noview_p{$l}+=$5;
                            $noview_h{$l}+=$6;
                            $noview_k{$l}+=$7;
                        }
                        
                        if ($line =~ /^END_TIME/) { last; }
                    }
                    if ($view_p{$l} > $max_p) { $max_p=$view_p{$l}; } 
                    if ($view_h{$l} > $max_h) { $max_h=$view_h{$l}; }
                    if ($view_k{$l} > $max_k) { $max_k=$view_k{$l}; } 
                    if ($noview_p{$l} > $nomax_p) { $nomax_p=$noview_p{$l}; }
                    if ($noview_h{$l} > $nomax_h) { $nomax_h=$noview_h{$l}; }
                    if ($noview_k{$l} > $nomax_k) { $nomax_k=$noview_k{$l}; }
                   } else {
                    $error{$l}.="Mapping for section TIME was wrong.";
                }
                
            }
            close(FILE);
        } else {
            $error{$l}="Failed to open $filedata for read";
        }
    }

	($total_u,$total_v,$total_p,$total_h,$total_k)=();
	
	# Loop on each config file to show info
	#--------------------------------------
	foreach my $l (@config) {
		next if (!&can_edit_config($l));
		$nbofallowedconffound++;
        
		# Config file line
		#local @files = &all_config_files($l);
		#next if (!@files);
		local $lconf = &get_config($l);
		my $conf=""; my $dir="";
		if ($l =~ /awstats([^\\\/]*)\.conf$/) { $conf=$1; }
		if ($l =~ /^(.*)[\\\/][^\\\/]+$/) { $dir=$1; }
        my $confwithoutdot=$conf; $confwithoutdot =~ s/^\.+//;

        # Read data file for config $l
        my $dirdata=$dirdata{$l};
        if (! $dirdata) { $dirdata="."; }
        my $filedata=$dirdata."/awstats${MonthRequired}${YearRequired}${conf}.txt";

		# Head of config file's table list
		if ($nbofallowedconffound == 1) {
			print "<table border width=100%>\n";
			print "<form method=\"post\" action=\"view_all.cgi\">\n";
			print "<tr><td valign=\"middle\"><b>".&text('viewall_period').":</b></td>";
			print "<td valign=\"middle\">";
			print "<select name=\"month\">\n";
			foreach (1..12) { my $monthix=sprintf("%02s",$_); print "<option".($MonthRequired eq "$monthix"?" selected=\"true\"":"")." value=\"$monthix\">".&text("month$monthix")."</option>\n"; }
			print "</select>\n";
			print "<select name=\"year\">\n";
			# Add YearRequired in list if not in ListOfYears
			$ListOfYears{$YearRequired}||=$MonthRequired;
			foreach (sort keys %ListOfYears) { print "<option".($YearRequired eq "$_"?" selected=\"true\"":"")." value=\"$_\">$_</option>\n"; }
			print "</select>\n";
			print "<input type=\"submit\" value=\" Go \" class=\"aws_button\" />";
			print "</td></tr>\n";
            print "</form>\n";
            print "</table>\n";

			print "<table border width=\"100%\">\n";
			print "<tr $tb>";
			print "<td colspan=\"3\"><b>$text{'index_path'}</b></td>";
			print "<td width=80 bgcolor=#FFB055 align=center><b>$text{'viewall_u'}</b></td>";
			print "<td width=80 bgcolor=#F8E880 align=center><b>$text{'viewall_v'}</b></td>";
			print "<td width=80 bgcolor=#4477DD align=center><b>$text{'viewall_p'}</b></td>";
			print "<td width=80 bgcolor=#66F0FF align=center><b>$text{'viewall_h'}</b></td>";
			print "<td width=80 bgcolor=#2EA495 align=center><b>$text{'viewall_k'}</b></td>";
			print "<td width=\"".($BarWidth+5)."\">&nbsp;</td>";
			print "<td align=center><b>$text{'index_view'}</b></td>";
			print "</tr>\n";
		}

		my @st=stat($l);
		my $size = $st[7];
		my ($sec,$min,$hour,$day,$month,$year,$wday,$yday) = localtime($st[9]);
		$year+=1900; $month++;

        print '<div class="CTooltip" id="tt'.$nbofallowedconffound.'">';
        printf("Configuration file: <b>%s</b><br>\n",$l);
		printf("Created/Changed: <b>%04s-%02s-%02s %02s:%02s:%02s</b><br>\n",$year,$month,$day,$hour,$min,$sec);
        print "<br>\n";

		my @st2=stat($filedata);
        printf("Data file for period: <b>%s</b><br>\n",$filedata);
        printf("Data file size for period: <b>%s</b>".($st2[7]?" bytes":"")."<br>\n",($st2[7]?$st2[7]:"unknown"));
        printf("Data file version: <b>%s</b>",($version{$l}?" $version{$l}":"unknown")."<br>");
        printf("Last update: <b>%s</b>",($lastupdate{$l}?" $lastupdate{$l}":"unknown"));
        print '</div>';

		print "<tr $cb>\n";

		print "<td>$nbofallowedconffound</td>";
        print "<td align=\"center\" width=\"20\" onmouseover=\"ShowTip($nbofallowedconffound);\" onmouseout=\"HideTip($nbofallowedconffound);\"><img src=\"images/info.png\"></td>";
		print "<td>";
        print "$confwithoutdot";
		if ($access{'global'}) {	# Edit config
	    	print "<br><a href=\"edit_config.cgi?file=$l\">$text{'index_edit'}</a>";
		}
		print "</td>";

		if ($error{$l}) {
		    print "<td colspan=\"6\" align=\"center\">";
		    print "$error{$l}";
		    print "</td>";
		}
		elsif (! $foundendmap{$l}) {
		    print "<td colspan=\"6\">";
		    print "Unable to read summary info in data file. File may have been built by a too old AWStats version. File was built by version: $version{$l}.";
		    print "</td>";
		}
        else {
        	$total_u+=$view_u{$l};
        	$total_v+=$view_v{$l};
        	$total_p+=$view_p{$l};
        	$total_h+=$view_h{$l};
        	$total_k+=$view_k{$l};
    		print "<td align=\"right\" nowrap=\"1\">";
    		print Format_Number($view_u{$l});
    		print "</td>";
    		print "<td align=\"right\" nowrap=\"1\">";
    		print Format_Number($view_v{$l});
    		print "</td>";
    		print "<td align=\"right\" nowrap=\"1\">";
    		print Format_Number($view_p{$l});
    		print "</td>";
    		print "<td align=\"right\" nowrap=\"1\">";
    		print Format_Number($view_h{$l});
    		print "</td>";
    		print "<td align=\"right\" nowrap=\"1\">";
    		print Format_Bytes($view_k{$l});
    		print "</td>";
            # Print bargraph
            print '<td>';
			my $bredde_u=0; my $bredde_v=0; my $bredde_p=0; my $bredde_h=0; my $bredde_k=0; my $nobredde_p=0; my $nobredde_h=0; my $nobredde_k=0;
			if ($max_u > 0) { $bredde_u=int($BarWidth*($view_u{$l}||0)/$max_u)+1; }
			if ($max_v > 0) { $bredde_v=int($BarWidth*($view_v{$l}||0)/$max_v)+1; }
			if ($max_p > 0) { $bredde_p=int($BarWidth*($view_p{$l}||0)/$max_p)+1; }
			if ($max_h > 0) { $bredde_h=int($BarWidth*($view_h{$l}||0)/$max_h)+1; }
			if ($max_k > 0) { $bredde_k=int($BarWidth*($view_k{$l}||0)/$max_k)+1; }
			if ($nomax_p > 0) { $nobredde_p=int($BarWidth*($noview_p{$l}||0)/$nomax_p)+1; }
			if ($nomax_h > 0) { $nobredde_h=int($BarWidth*($noview_h{$l}||0)/$nomax_h)+1; }
			if ($nomax_k > 0) { $nobredde_k=int($BarWidth*($noview_k{$l}||0)/$nomax_k)+1; }
   			if (1) { print "<img src=\"images/hu.png\" width=\"$bredde_u\" height=\"$BarHeight\" /><br />"; }
   			if (1) { print "<img src=\"images/hv.png\" width=\"$bredde_v\" height=\"$BarHeight\" /><br />"; }
   			if (1) { print "<img src=\"images/hp.png\" width=\"$bredde_p\" height=\"$BarHeight\" /><br />"; }
   			if (1) { print "<img src=\"images/hh.png\" width=\"$bredde_h\" height=\"$BarHeight\" /><br />"; }
   			if (1) { print "<img src=\"images/hk.png\" width=\"$bredde_k\" height=\"$BarHeight\" /><br />"; }
            print '</td>';
        }

		if ($access{'view'}) {
			if ($config{'awstats_cgi'}) {
				print "<td align=center><a href='$config{'awstats_cgi'}?".($confwithoutdot?"config=$confwithoutdot":"").($dir?"&configdir=$dir":"")."' target=awstats>$text{'index_view2'}</a></td>\n";
			}
			else {
				print "<td align=center>".&text('index_cgi', "$gconfig{'webprefix'}/config.cgi?$module_name")."</td>";	
			}
		}
		else {
	        print "<td align=center>NA</td>";
		}

		print "</tr>\n";
	}

	if ($nbofallowedconffound > 0 && 1==2)
	{
		print "<tr $cb>\n";

		print "<td colspan=\"2\">&nbsp;</td>";
		print "<td>Total</td>";

		print "<td align=\"right\" nowrap=\"1\">";
		print Format_Number($total_u);
		print "</td>";
		print "<td align=\"right\" nowrap=\"1\">";
		print Format_Number($total_v);
		print "</td>";
		print "<td align=\"right\" nowrap=\"1\">";
		print Format_Number($total_p);
		print "</td>";
		print "<td align=\"right\" nowrap=\"1\">";
		print Format_Number($total_h);
		print "</td>";
		print "<td align=\"right\" nowrap=\"1\">";
		print Format_Bytes($total_k);
		print "</td>";
        # Print bargraph
        print '<td colspan="2">&nbsp;</td>';
		print "</tr>\n";		
	}

	print "</table><br>\n";
}

if (! $nbofallowedconffound) {
	print "<br><p><b>$text{'index_noconfig'}</b></p><br>\n";
}

# Back to config list
print "<hr>\n";
&footer("", $text{'index_return'});
awstats/edit_config.cgi0000664000175000017500000014115712410217071017454 0ustar  ldestailleurldestailleur#!/usr/bin/perl
# edit_config.cgi
# Display a form for adding a new config or editing an existing one.

require './awstats-lib.pl';
&ReadParse();

if (! $access{'global'}) { &error($text{'edit_ecannot'}); }

my $filecontent="";
my $filetoopen="";
if ($in{'new'}) {
        $filetoopen=$config{'alt_conf'};
}
else {
        $filetoopen=$in{'file'};
}

if ($in{'new'}) {
	$access{'add'} || &error($text{'edit_ecannot'});
	&header($text{'edit_title1'}, "");
	}
else {
	&can_edit_config($in{'file'}) || &error($text{'edit_ecannot'});
	&header($text{'edit_title2'}, "");
	}
# Get parameters
$lconf = &get_config($filetoopen);
foreach my $key (keys %$lconf) {
	$lconf->{$key}=~s/^\s*//g;
	$lconf->{$key}=~s/^\s*[\"\']//;
	$lconf->{$key}=~s/#.*$//;
	$lconf->{$key}=~s/\s*$//g;
	$lconf->{$key}=~s/[\"\']\s*$//;
}

# Put in @conflist, list of all existing config
my @conflist=();
foreach my $dir (split(/\s+/, $access{'dir'})) {
	push(@conflist, map { $_->{'custom'} = 1; ($_ !~ /^[\/\\]/ ? $dir.'/':'').$_ } &scan_config_dir($dir));
}


print "<hr>\n";

print <<EOF;
<SCRIPT LANGUAGE="JavaScript">
function Submit_onClick() {
EOF
# If create
if ($in{'new'} && scalar @conflist) {
print <<EOF;
    if (document.editconfig.create_mode[0].checked) {
    	if (document.editconfig.file_to_copy.value=='') {
    		alert('You must choose a config to copy for creating a new one by copy');
    		document.editconfig.file_to_copy.focus();
    		return false;
    	}
    } else {
EOF
}
# End If create
print <<EOF;
    	if (document.editconfig.LogFormat.value=='') {
    		alert('$text{save_errLogFormat}');
    		document.editconfig.LogFormat.focus();
    		return false;
    	}
    	if (document.editconfig.LogFile.value.match(/maillogconvert.pl/)!=null && document.editconfig.LogType.value != 'M') {
    		alert('Your log file is preprocessed by maillogconvert.pl but is not defined as a "Mail" log type.\\nChange LogFile or LogType parameter.');
    		document.editconfig.LogType.focus();
    		return false;
    	}
    	if (document.editconfig.SiteDomain.value=='') {
    		alert('$text{save_errSiteDomain}');
    		document.editconfig.SiteDomain.focus();
    		return false;
    	}
    	if (document.editconfig.DirData.value=='') {
    		alert('$text{save_errDirData}');
    		document.editconfig.DirData.focus();
    		return false;
    	}
EOF
# If create
if ($in{'new'} && scalar @conflist) {
print <<EOF;
    }
EOF
}
# End If create
print <<EOF;
	return true;
}

function neww(id) {
	var argv = neww.arguments;
	var argc = neww.arguments.length;
	tmp=id;
	var l = (argc > 1) ? argv[1] : 640;
	var h = (argc > 2) ? argv[2] : 450;
	var wfeatures="directories=0,menubar=1,status=0,resizable=1,scrollbars=1,toolbar=0,width="+l+",height="+h+",left=" + eval("(screen.width - l)/2") + ",top=" + eval("(screen.height - h)/2");
	fen=window.open(tmp,'window',wfeatures);
}
</SCRIPT>
EOF

if (-d "/private/etc" && ! &can_edit_config("/private/etc")) { # For MacOS users
	print "Warning: It seems that you are a MacOS user. With MacOS, the '/etc/awstats' directory is not a hard directory but a link to '/private/etc/awstats' which is not by default an allowed directory to store config files, so if you want to store config files in '/etc/awstats', you must first change the Webmin ACL for AWStats module to add '/private/etc' in the allowed directories list:<br>\n";
	print &text('index_changeallowed',"<a href=\"/acl/\">Webmin - Webmin Users</a>", $text{'index_title'})."<br>\n";
}


print "<form name='editconfig' action='save_config.cgi'>\n";

print "<table border width=\"100%\">\n";
print "<tr $tb> <td><b>";
if ($in{'new'}) {
	print &text('edit_headernew');
}
else {
	print &text('edit_header',$in{'file'});
}
print "</b></td> </tr>\n";
print "<tr $cb> <td><table width=100%>\n";



my $filenametosave="";
if ($in{'new'}) {
	print "<tr> <td><b>$text{'edit_add'}</b></td> <td>\n";
	my $newfile="/etc/awstats/awstats.newconfig.conf";
	print "<input type=text name=new size=50 value='$newfile'>";
	print "</td> <td> </td> </tr>\n";
    print "</table></td></tr></table>\n";
    
    if (scalar @conflist) {
        print "<br><input name=\"create_mode\" type=\"radio\" value=\"by_copy\"> ".$text{'edit_create_by_copy'};
        print "<table border width=\"100%\"><tr $cb><td>\n";
        print "<table width=\"100%\">\n";
    	print "<tr> <td><b>$text{'edit_config_to_copy'}</b></td> <td>\n";
        print "<select name=\"file_to_copy\"><option value='' selected>&nbsp;</option>\n";
       	foreach my $file (@conflist) {	
       		next if (!&can_edit_config($file));
       		print "<option value=\"$file\">$file</option>\n";
       	}
        print "</select>";
    	print "</td> <td> </td> </tr>\n";
        print "</table></td></tr></table>\n";
    }
    
    print "<br><input name=\"create_mode\" type=\"radio\" value=\"from_scratch\" checked=true> ".$text{'edit_create_from_scratch'};
    print "<table border width=\"100%\"><tr $cb><td>\n";
    print "<table width=\"100%\">\n";
} else {
	print "<input type=hidden name=file value='$in{'file'}'>\n";
}
print "<input type=hidden name=oldfile value='$in{'file'}'>\n";

print "<tr> <td colspan=3>MAIN SETUP SECTION (Required to make AWStats work)<br><hr></td> </tr>\n";

print "<tr> <td><b>LogFile*</b></td> <td> <input type=text name=LogFile size=50 value='$lconf->{'LogFile'}'> ".&file_chooser_button("LogFile",0,0)." </td> <td> ";
print &hblink($text{'help_help'}, "help.cgi?param=LogFile")." </td> </tr>\n";
print "<tr> <td><b>LogType*</b></td> <td> ";
print "<select name=LogType>";
print "<option value='W'".($lconf->{'LogType'} eq 'W'?" selected":"").">W (Web server log file)</option>\n";
print "<option value='S'".($lconf->{'LogType'} eq 'S'?" selected":"").">S (Streaming server log file)</option>\n";
print "<option value='M'".($lconf->{'LogType'} eq 'M'?" selected":"").">M (Mail server log file)</option>\n";
print "<option value='F'".($lconf->{'LogType'} eq 'F'?" selected":"").">F (Ftp server log file)</option>\n";
print "</select>\n";
print "</td> <td> ";
print &hblink($text{'help_help'}, "help.cgi?param=LogType")." </td> </tr>\n";
print "<tr> <td><b>LogFormat*</b></td> <td> <input name=LogFormat type=text size=40 value='$lconf->{'LogFormat'}'> </td> <td> ";
print &hblink($text{'help_help'}, "help.cgi?param=LogFormat")," </td> </tr>\n";
print "<tr> <td><b>LogSeparator</b></td> <td> <input size=10 name=LogSeparator type=text value='$lconf->{'LogSeparator'}'> </td> <td> ";
print &hblink($text{'help_help'}, "help.cgi?param=LogSeparator")." </td> </tr>\n";
print "<tr> <td><b>SiteDomain*</b></td> <td> <input name=SiteDomain type=text value='$lconf->{'SiteDomain'}'> </td> <td> ";
print &hblink($text{'help_help'}, "help.cgi?param=SiteDomain")." </td> </tr>\n";
print "<tr> <td><b>HostAliases</b></td> <td> <input size=50 name=HostAliases type=text value='$lconf->{'HostAliases'}'> </td> <td> ";
print &hblink($text{'help_help'}, "help.cgi?param=HostAliases")." </td> </tr>\n";
print "<tr> <td><b>DNSLookup</b></td> <td> <input size=10 name=DNSLookup type=text value='$lconf->{'DNSLookup'}'> </td> <td> ";
print &hblink($text{'help_help'}, "help.cgi?param=DNSLookup")." </td> </tr>\n";
print "<tr> <td><b>DirData</b></td> <td> <input size=40 name=DirData type=text value='$lconf->{'DirData'}'> </td> <td> ";
print &hblink($text{'help_help'}, "help.cgi?param=DirData")." </td> </tr>\n";
print "<tr> <td><b>DirCgi</b></td> <td> <input size=30 name=DirCgi type=text value='$lconf->{'DirCgi'}'> </td> <td> ";
print &hblink($text{'help_help'}, "help.cgi?param=DirCgi")." </td> </tr>\n";
print "<tr> <td><b>DirIcons</b></td> <td> <input size=30 name=DirIcons type=text value='$lconf->{'DirIcons'}'> </td> <td> ";
print &hblink($text{'help_help'}, "help.cgi?param=DirIcons")." </td> </tr>\n";
print "<tr> <td><b>AllowToUpdateStatsFromBrowser</b></td> <td> <input size=10 name=AllowToUpdateStatsFromBrowser type=text value='$lconf->{'AllowToUpdateStatsFromBrowser'}'> </td> <td> ";
print &hblink($text{'help_help'}, "help.cgi?param=AllowToUpdateStatsFromBrowser")." </td> </tr>\n";
print "<tr> <td><b>AllowFullYearView</b></td> <td> <input size=10 name=AllowFullYearView type=text value='$lconf->{'AllowFullYearView'}'> </td> <td> ";
print &hblink($text{'help_help'}, "help.cgi?param=AllowFullYearView")." </td> </tr>\n";
print "<tr> <td colspan=2><b>*</b> ".$text{'help_starrequired'}."</td> <td> ";


print "<tr> <td colspan=3><br>OPTIONAL SETUP SECTION (Not required but increase AWStats features)<br><hr></td> </tr>\n";
if ($in{'advanced'} == 1) {
	print "<tr> <td><b>EnableLockForUpdate</b></td> <td> <input size=10 name=EnableLockForUpdate type=text value='$lconf->{'EnableLockForUpdate'}'> </td> <td> ";
	print &hblink($text{'help_help'}, "help.cgi?param=EnableLockForUpdate")." </td> </tr>\n";
	print "<tr> <td><b>DNSStaticCacheFile</b></td> <td> <input size=30 name=DNSStaticCacheFile type=text value='$lconf->{'DNSStaticCacheFile'}'> ".&file_chooser_button("DNSStaticCacheFile",0,0)."</td> <td> ";
	print &hblink($text{'help_help'}, "help.cgi?param=DNSStaticCacheFile")." </td> </tr>\n";
	print "<tr> <td><b>DNSLastUpdateCacheFile</b></td> <td> <input size=30 name=DNSLastUpdateCacheFile type=text value='$lconf->{'DNSLastUpdateCacheFile'}'> </td> <td> ";
	print &hblink($text{'help_help'}, "help.cgi?param=DNSLastUpdateCacheFile")." </td> </tr>\n";
	print "<tr> <td><b>SkipDNSLookupFor</b></td> <td> <input size=30 name=SkipDNSLookupFor type=text value='$lconf->{'SkipDNSLookupFor'}'> </td> <td> ";
	print &hblink($text{'help_help'}, "help.cgi?param=SkipDNSLookupFor")." </td> </tr>\n";
	print "<tr> <td><b>AllowAccessFromWebToAuthenticatedUsersOnly</b></td> <td> <input size=10 name=AllowAccessFromWebToAuthenticatedUsersOnly type=text value='$lconf->{'AllowAccessFromWebToAuthenticatedUsersOnly'}'> </td> <td> ";
	print &hblink($text{'help_help'}, "help.cgi?param=AllowAccessFromWebToAuthenticatedUsersOnly")." </td> </tr>\n";
	print "<tr> <td><b>AllowAccessFromWebToFollowingAuthenticatedUsers</b></td> <td> <input size=30 name=AllowAccessFromWebToFollowingAuthenticatedUsers type=text value='$lconf->{'AllowAccessFromWebToFollowingAuthenticatedUsers'}'> ".&user_chooser_button('AllowAccessFromWebToFollowingAuthenticatedUsers', multiple, 0)."</td> <td> ";
	print &hblink($text{'help_help'}, "help.cgi?param=AllowAccessFromWebToFollowingAuthenticatedUsers")." </td> </tr>\n";
	print "<tr> <td><b>AllowAccessFromWebToFollowingIPAddresses</b></td> <td> <input size=30 name=AllowAccessFromWebToFollowingIPAddresses type=text value='$lconf->{'AllowAccessFromWebToFollowingIPAddresses'}'> </td> <td> ";
	print &hblink($text{'help_help'}, "help.cgi?param=AllowAccessFromWebToFollowingIPAddresses")." </td> </tr>\n";
	print "<tr> <td><b>CreateDirDataIfNotExists</b></td> <td> <input size=10 name=CreateDirDataIfNotExists type=text value='$lconf->{'CreateDirDataIfNotExists'}'> </td> <td> ";
	print &hblink($text{'help_help'}, "help.cgi?param=CreateDirDataIfNotExists")." </td> </tr>\n";
	print "<tr> <td><b>BuildHistoryFormat</b></td> <td> <input size=10 name=BuildHistoryFormat type=text value='$lconf->{'BuildHistoryFormat'}'> </td> <td> ";
	print &hblink($text{'help_help'}, "help.cgi?param=BuildHistoryFormat")." </td> </tr>\n";
	print "<tr> <td><b>BuildReportFormat</b></td> <td> <input size=10 name=BuildReportFormat type=text value='$lconf->{'BuildReportFormat'}'> </td> <td> ";
	print &hblink($text{'help_help'}, "help.cgi?param=BuildReportFormat")." </td> </tr>\n";
	print "<tr> <td><b>SaveDatabaseFilesWithPermissionsForEveryone</b></td> <td> <input size=10 name=SaveDatabaseFilesWithPermissionsForEveryone type=text value='$lconf->{'SaveDatabaseFilesWithPermissionsForEveryone'}'> </td> <td> ";
	print &hblink($text{'help_help'}, "help.cgi?param=SaveDatabaseFilesWithPermissionsForEveryone")." </td> </tr>\n";
	print "<tr> <td><b>PurgeLogFile</b></td> <td> <input size=10 name=PurgeLogFile type=text value='$lconf->{'PurgeLogFile'}'> </td> <td> ";
	print &hblink($text{'help_help'}, "help.cgi?param=PurgeLogFile")." </td> </tr>\n";
	print "<tr> <td><b>ArchiveLogRecords</b></td> <td> <input size=10 name=ArchiveLogRecords type=text value='$lconf->{'ArchiveLogRecords'}'> </td> <td> ";
	print &hblink($text{'help_help'}, "help.cgi?param=ArchiveLogRecords")." </td> </tr>\n";
	print "<tr> <td><b>KeepBackupOfHistoricFiles</b></td> <td> <input size=10 name=KeepBackupOfHistoricFiles type=text value='$lconf->{'KeepBackupOfHistoricFiles'}'> </td> <td> ";
	print &hblink($text{'help_help'}, "help.cgi?param=KeepBackupOfHistoricFiles")." </td> </tr>\n";
	print "<tr> <td><b>DefaultFile</b></td> <td> <input size=20 name=DefaultFile type=text value='$lconf->{'DefaultFile'}'> </td> <td> ";
	print &hblink($text{'help_help'}, "help.cgi?param=DefaultFile")." </td> </tr>\n";
	print "<tr> <td><b>SkipHosts</b></td> <td> <input size=30 name=SkipHosts type=text value='$lconf->{'SkipHosts'}'> </td> <td> ";
	print &hblink($text{'help_help'}, "help.cgi?param=SkipHosts")." </td> </tr>\n";
	print "<tr> <td><b>SkipUserAgents</b></td> <td> <input size=30 name=SkipUserAgents type=text value='$lconf->{'SkipUserAgents'}'> </td> <td> ";
	print &hblink($text{'help_help'}, "help.cgi?param=SkipUserAgents")." </td> </tr>\n";
	print "<tr> <td><b>SkipFiles</b></td> <td> <input size=30 name=SkipFiles type=text value='$lconf->{'SkipFiles'}'> </td> <td> ";
	print &hblink($text{'help_help'}, "help.cgi?param=SkipFiles")." </td> </tr>\n";
	print "<tr> <td><b>OnlyHosts</b></td> <td> <input size=30 name=OnlyHosts type=text value='$lconf->{'OnlyHosts'}'> </td> <td> ";
	print &hblink($text{'help_help'}, "help.cgi?param=OnlyHosts")." </td> </tr>\n";
	print "<tr> <td><b>OnlyUserAgents</b></td> <td> <input size=30 name=OnlyUserAgents type=text value='$lconf->{'OnlyUserAgents'}'> </td> <td> ";
	print &hblink($text{'help_help'}, "help.cgi?param=OnlyUserAgents")." </td> </tr>\n";
	print "<tr> <td><b>OnlyFiles</b></td> <td> <input size=30 name=OnlyFiles type=text value='$lconf->{'OnlyFiles'}'> </td> <td> ";
	print &hblink($text{'help_help'}, "help.cgi?param=OnlyFiles")." </td> </tr>\n";
	print "<tr> <td><b>NotPageList</b></td> <td> <input size=30 name=NotPageList type=text value='$lconf->{'NotPageList'}'> </td> <td> ";
	print &hblink($text{'help_help'}, "help.cgi?param=NotPageList")." </td> </tr>\n";
	print "<tr> <td><b>ValidHTTPCodes</b></td> <td> <input size=20 name=ValidHTTPCodes type=text value='$lconf->{'ValidHTTPCodes'}'> </td> <td> ";
	print &hblink($text{'help_help'}, "help.cgi?param=ValidHTTPCodes")." </td> </tr>\n";
	print "<tr> <td><b>ValidSMTPCodes</b></td> <td> <input size=20 name=ValidSMTPCodes type=text value='$lconf->{'ValidSMTPCodes'}'> </td> <td> ";
	print &hblink($text{'help_help'}, "help.cgi?param=ValidSMTPCodes")." </td> </tr>\n";
	print "<tr> <td><b>AuthenticatedUsersNotCaseSensitive</b></td> <td> <input size=10 name=AuthenticatedUsersNotCaseSensitive type=text value='$lconf->{'AuthenticatedUsersNotCaseSensitive'}'> </td> <td> ";
	print &hblink($text{'help_help'}, "help.cgi?param=AuthenticatedUsersNotCaseSensitive")." </td> </tr>\n";
	print "<tr> <td><b>URLNotCaseSensitive</b></td> <td> <input size=10 name=URLNotCaseSensitive type=text value='$lconf->{'URLNotCaseSensitive'}'> </td> <td> ";
	print &hblink($text{'help_help'}, "help.cgi?param=URLNotCaseSensitive")." </td> </tr>\n";
	print "<tr> <td><b>URLWithAnchor</b></td> <td> <input size=10 name=URLWithAnchor type=text value='$lconf->{'URLWithAnchor'}'> </td> <td> ";
	print &hblink($text{'help_help'}, "help.cgi?param=URLWithAnchor")." </td> </tr>\n";
	print "<tr> <td><b>URLQuerySeparators</b></td> <td> <input size=10 name=URLQuerySeparators type=text value='$lconf->{'URLQuerySeparators'}'> </td> <td> ";
	print &hblink($text{'help_help'}, "help.cgi?param=URLQuerySeparators")." </td> </tr>\n";
	print "<tr> <td><b>URLWithQuery</b></td> <td> <input size=10 name=URLWithQuery type=text value='$lconf->{'URLWithQuery'}'> </td> <td> ";
	print &hblink($text{'help_help'}, "help.cgi?param=URLWithQuery")." </td> </tr>\n";
	print "<tr> <td><b>URLWithQueryWithOnlyFollowingParameters</b></td> <td> <input size=30 name=URLWithQueryWithOnlyFollowingParameters type=text value='$lconf->{'URLWithQueryWithOnlyFollowingParameters'}'> </td> <td> ";
	print &hblink($text{'help_help'}, "help.cgi?param=URLWithQueryWithOnlyFollowingParameters")." </td> </tr>\n";
	print "<tr> <td><b>URLWithQueryWithoutFollowingParameters</b></td> <td> <input size=30 name=URLWithQueryWithoutFollowingParameters type=text value='$lconf->{'URLWithQueryWithoutFollowingParameters'}'> </td> <td> ";
	print &hblink($text{'help_help'}, "help.cgi?param=URLWithQueryWithoutFollowingParameters")." </td> </tr>\n";
	print "<tr> <td><b>URLReferrerWithQuery</b></td> <td> <input size=10 name=URLReferrerWithQuery type=text value='$lconf->{'URLReferrerWithQuery'}'> </td> <td> ";
	print &hblink($text{'help_help'}, "help.cgi?param=URLReferrerWithQuery")." </td> </tr>\n";
	print "<tr> <td><b>WarningMessages</b></td> <td> <input size=10 name=WarningMessages type=text value='$lconf->{'WarningMessages'}'> </td> <td> ";
	print &hblink($text{'help_help'}, "help.cgi?param=WarningMessages")." </td> </tr>\n";
	print "<tr> <td><b>ErrorMessages</b></td> <td> <input size=40 name=ErrorMessages type=text value='$lconf->{'ErrorMessages'}'> </td> <td> ";
	print &hblink($text{'help_help'}, "help.cgi?param=ErrorMessages")." </td> </tr>\n";
	print "<tr> <td><b>DebugMessages</b></td> <td> <input size=10 name=DebugMessages type=text value='$lconf->{'DebugMessages'}'> </td> <td> ";
	print &hblink($text{'help_help'}, "help.cgi?param=DebugMessages")." </td> </tr>\n";
	print "<tr> <td><b>NbOfLinesForCorruptedLog</b></td> <td> <input size=10 name=NbOfLinesForCorruptedLog type=text value='$lconf->{'NbOfLinesForCorruptedLog'}'> </td> <td> ";
	print &hblink($text{'help_help'}, "help.cgi?param=NbOfLinesForCorruptedLog")." </td> </tr>\n";
	print "<tr> <td><b>WrapperScript</b></td> <td> <input size=20 name=WrapperScript type=text value='$lconf->{'WrapperScript'}'> </td> <td> ";
	print &hblink($text{'help_help'}, "help.cgi?param=WrapperScript")." </td> </tr>\n";
	print "<tr> <td><b>DecodeUA</b></td> <td> <input size=10 name=DecodeUA type=text value='$lconf->{'DecodeUA'}'> </td> <td> ";
	print &hblink($text{'help_help'}, "help.cgi?param=DecodeUA")." </td> </tr>\n";
	print "<tr> <td><b>MiscTrackerUrl</b></td> <td> <input size=30 name=MiscTrackerUrl type=text value='$lconf->{'MiscTrackerUrl'}'> </td> <td> ";
	print &hblink($text{'help_help'}, "help.cgi?param=MiscTrackerUrl")." </td> </tr>\n";
	print "<tr> <td colspan=3 align=center><a href='edit_config.cgi?".($in{'new'}?"new=1&":"")."&file=$in{'file'}'>$text{'index_hideadvanced'}</a></td></tr>\n";
}
else {
	print "<tr> <td colspan=3 align=center><a href='edit_config.cgi?".($in{'new'}?"new=1&":"")."advanced=1&file=$in{'file'}'>$text{'index_advanced1'}</a></td></tr>\n";
}
print "<tr> <td colspan=3><br></td> </tr>\n";

print "<tr> <td colspan=3><br>OPTIONAL ACCURACY SETUP SECTION (Not required but increase AWStats features)<br><hr></td> </tr>\n";
if ($in{'advanced'} == 2) {
	print "<tr> <td><b>LevelForBrowsersDetection</b></td> <td> <input size=10 type=text name=LevelForBrowsersDetection value='$lconf->{'LevelForBrowsersDetection'}'> </td> <td> ";
	print &hblink($text{'help_help'}, "help.cgi?param=LevelForBrowsersDetection")." </td> </tr>\n";
	print "<tr> <td><b>LevelForOSDetection</b></td> <td> <input size=10 type=text name=LevelForOSDetection value='$lconf->{'LevelForOSDetection'}'> </td> <td> ";
	print &hblink($text{'help_help'}, "help.cgi?param=LevelForOSDetection")." </td> </tr>\n";
	print "<tr> <td><b>LevelForRefererAnalyze</b></td> <td> <input size=10 type=text name=LevelForRefererAnalyze value='$lconf->{'LevelForRefererAnalyze'}'> </td> <td> ";
	print &hblink($text{'help_help'}, "help.cgi?param=LevelForRefererAnalyze")." </td> </tr>\n";
	print "<tr> <td><b>LevelForRobotsDetection</b></td> <td> <input size=10 type=text name=LevelForRobotsDetection value='$lconf->{'LevelForRobotsDetection'}'> </td> <td> ";
	print &hblink($text{'help_help'}, "help.cgi?param=LevelForRobotsDetection")." </td> </tr>\n";
	print "<tr> <td><b>LevelForSearchEnginesDetection</b></td> <td> <input size=10 type=text name=LevelForSearchEnginesDetection value='$lconf->{'LevelForSearchEnginesDetection'}'> </td> <td> ";
	print &hblink($text{'help_help'}, "help.cgi?param=LevelForSearchEnginesDetection")." </td> </tr>\n";
	print "<tr> <td><b>LevelForKeywordsDetection</b></td> <td> <input size=10 type=text name=LevelForKeywordsDetection value='$lconf->{'LevelForKeywordsDetection'}'> </td> <td> ";
	print &hblink($text{'help_help'}, "help.cgi?param=LevelForKeywordsDetection")." </td> </tr>\n";
	print "<tr> <td><b>LevelForFileTypesDetection</b></td> <td> <input size=10 type=text name=LevelForFileTypesDetection value='$lconf->{'LevelForFileTypesDetection'}'> </td> <td> ";
	print &hblink($text{'help_help'}, "help.cgi?param=LevelForFileTypesDetection")." </td> </tr>\n";
	print "<tr> <td><b>LevelForWormsDetection</b></td> <td> <input size=10 type=text name=LevelForWormsDetection value='$lconf->{'LevelForWormsDetection'}'> </td> <td> ";
	print &hblink($text{'help_help'}, "help.cgi?param=LevelForWormsDetection")." </td> </tr>\n";
	print "<tr> <td colspan=3 align=center><a href='edit_config.cgi?".($in{'new'}?"new=1&":"")."&file=$in{'file'}'>$text{'index_hideadvanced'}</a></td></tr>\n";
} else {
	print "<tr> <td colspan=3 align=center><a href='edit_config.cgi?".($in{'new'}?"new=1&":"")."advanced=2&file=$in{'file'}'>$text{'index_advanced2'}</a></td></tr>\n";
}	
print "<tr> <td colspan=3><br></td> </tr>\n";

print "<tr> <td colspan=3><br>OPTIONAL APPEARANCE SETUP SECTION (Not required but increase AWStats features)<br><hr></td> </tr>\n";
if ($in{'advanced'} == 3) {
	print "<tr> <td><b>UseFramesWhenCGI</b></td> <td> <input size=10 name=UseFramesWhenCGI type=text value='$lconf->{'UseFramesWhenCGI'}'> </td> <td> ";
	print &hblink($text{'help_help'}, "help.cgi?param=UseFramesWhenCGI")." </td> </tr>\n";
	print "<tr> <td><b>DetailedReportsOnNewWindows</b></td> <td> <input size=10 name=DetailedReportsOnNewWindows type=text value='$lconf->{'DetailedReportsOnNewWindows'}'> </td> <td> ";
	print &hblink($text{'help_help'}, "help.cgi?param=DetailedReportsOnNewWindows")." </td> </tr>\n";
	print "<tr> <td><b>Expires</b></td> <td> <input size=10 name=Expires type=text value='$lconf->{'Expires'}'> </td> <td> ";
	print &hblink($text{'help_help'}, "help.cgi?param=Expires")." </td> </tr>\n";
	print "<tr> <td><b>MaxRowsInHTMLOutput</b></td> <td> <input size=10 name=MaxRowsInHTMLOutput type=text value='$lconf->{'MaxRowsInHTMLOutput'}'> </td> <td> ";
	print &hblink($text{'help_help'}, "help.cgi?param=MaxRowsInHTMLOutput")." </td> </tr>\n";
	print "<tr> <td><b>Lang</b></td> <td> <input size=10 name=Lang type=text value='$lconf->{'Lang'}'> </td> <td> ";
	print &hblink($text{'help_help'}, "help.cgi?param=Lang")." </td> </tr>\n";
	print "<tr> <td><b>DirLang</b></td> <td> <input size=30 name=DirLang type=text value='$lconf->{'DirLang'}'> ".&file_chooser_button("DirLang",1,0)."</td> <td> ";
	print &hblink($text{'help_help'}, "help.cgi?param=DirLang")." </td> </tr>\n";
	print "<tr> <td><b>ShowMenu</b></td> <td> <input size=10 name=ShowMenu type=text value='$lconf->{'ShowMenu'}'> </td> <td> ";
	print &hblink($text{'help_help'}, "help.cgi?param=ShowMenu")." </td> </tr>\n";
	print "<tr> <td><b>ShowMonthStats</b></td> <td> <input size=10 name=ShowMonthStats type=text value='$lconf->{'ShowMonthStats'}'> </td> <td> ";
	print &hblink($text{'help_help'}, "help.cgi?param=ShowMonthStats")." </td> </tr>\n";
	print "<tr> <td><b>ShowDaysOfMonthStats</b></td> <td> <input size=10 name=ShowDaysOfMonthStats type=text value='$lconf->{'ShowDaysOfMonthStats'}'> </td> <td> ";
	print &hblink($text{'help_help'}, "help.cgi?param=ShowDaysOfMonthStats")." </td> </tr>\n";
	print "<tr> <td><b>ShowDaysOfWeekStats</b></td> <td> <input size=10 name=ShowDaysOfWeekStats type=text value='$lconf->{'ShowDaysOfWeekStats'}'> </td> <td> ";
	print &hblink($text{'help_help'}, "help.cgi?param=ShowDaysOfWeekStats")." </td> </tr>\n";
	print "<tr> <td><b>ShowHoursStats</b></td> <td> <input size=10 name=ShowHoursStats type=text value='$lconf->{'ShowHoursStats'}'> </td> <td> ";
	print &hblink($text{'help_help'}, "help.cgi?param=ShowHoursStats")." </td> </tr>\n";
	print "<tr> <td><b>ShowDomainsStats</b></td> <td> <input size=10 name=ShowDomainsStats type=text value='$lconf->{'ShowDomainsStats'}'> </td> <td> ";
	print &hblink($text{'help_help'}, "help.cgi?param=ShowDomainsStats")." </td> </tr>\n";
	print "<tr> <td><b>ShowHostsStats</b></td> <td> <input size=10 name=ShowHostsStats type=text value='$lconf->{'ShowHostsStats'}'> </td> <td> ";
	print &hblink($text{'help_help'}, "help.cgi?param=ShowHostsStats")." </td> </tr>\n";
	print "<tr> <td><b>ShowAuthenticatedUsers</b></td> <td> <input size=10 name=ShowAuthenticatedUsers type=text value='$lconf->{'ShowAuthenticatedUsers'}'> </td> <td> ";
	print &hblink($text{'help_help'}, "help.cgi?param=ShowAuthenticatedUsers")." </td> </tr>\n";
	print "<tr> <td><b>ShowRobotsStats</b></td> <td> <input size=10 name=ShowRobotsStats type=text value='$lconf->{'ShowRobotsStats'}'> </td> <td> ";
	print &hblink($text{'help_help'}, "help.cgi?param=ShowRobotsStats")." </td> </tr>\n";
	print "<tr> <td><b>ShowWormsStats</b></td> <td> <input size=10 name=ShowWormsStats type=text value='$lconf->{'ShowWormsStats'}'> </td> <td> ";
	print &hblink($text{'help_help'}, "help.cgi?param=ShowWormsStats")." </td> </tr>\n";
	print "<tr> <td><b>ShowEMailSenders</b></td> <td> <input size=10 name=ShowEMailSenders type=text value='$lconf->{'ShowEMailSenders'}'> </td> <td> ";
	print &hblink($text{'help_help'}, "help.cgi?param=ShowEMailSenders")." </td> </tr>\n";
	print "<tr> <td><b>ShowEMailReceivers</b></td> <td> <input size=10 name=ShowEMailReceivers type=text value='$lconf->{'ShowEMailReceivers'}'> </td> <td> ";
	print &hblink($text{'help_help'}, "help.cgi?param=ShowEMailReceivers")." </td> </tr>\n";
	print "<tr> <td><b>ShowSessionsStats</b></td> <td> <input size=10 name=ShowSessionsStats type=text value='$lconf->{'ShowSessionsStats'}'> </td> <td> ";
	print &hblink($text{'help_help'}, "help.cgi?param=ShowSessionsStats")." </td> </tr>\n";
	print "<tr> <td><b>ShowPagesStats</b></td> <td> <input size=10 name=ShowPagesStats type=text value='$lconf->{'ShowPagesStats'}'> </td> <td> ";
	print &hblink($text{'help_help'}, "help.cgi?param=ShowPagesStats")." </td> </tr>\n";
	print "<tr> <td><b>ShowFileTypesStats</b></td> <td> <input size=10 name=ShowFileTypesStats type=text value='$lconf->{'ShowFileTypesStats'}'> </td> <td> ";
	print &hblink($text{'help_help'}, "help.cgi?param=ShowFileTypesStats")." </td> </tr>\n";
	print "<tr> <td><b>ShowFileSizesStats</b></td> <td> <input size=10 name=ShowFileSizesStats type=text value='$lconf->{'ShowFileSizesStats'}'> </td> <td> ";
	print &hblink($text{'help_help'}, "help.cgi?param=ShowFileSizesStats")." </td> </tr>\n";
	print "<tr> <td><b>ShowOSStats</b></td> <td> <input size=10 name=ShowOSStats type=text value='$lconf->{'ShowOSStats'}'> </td> <td> ";
	print &hblink($text{'help_help'}, "help.cgi?param=ShowOSStats")." </td> </tr>\n";
	print "<tr> <td><b>ShowBrowsersStats</b></td> <td> <input size=10 name=ShowBrowsersStats type=text value='$lconf->{'ShowBrowsersStats'}'> </td> <td> ";
	print &hblink($text{'help_help'}, "help.cgi?param=ShowBrowsersStats")." </td> </tr>\n";
	print "<tr> <td><b>ShowScreenSizeStats</b></td> <td> <input size=10 name=ShowScreenSizeStats type=text value='$lconf->{'ShowScreenSizeStats'}'> </td> <td> ";
	print &hblink($text{'help_help'}, "help.cgi?param=ShowScreenSizeStats")." </td> </tr>\n";
	print "<tr> <td><b>ShowOriginStats</b></td> <td> <input size=10 name=ShowOriginStats type=text value='$lconf->{'ShowOriginStats'}'> </td> <td> ";
	print &hblink($text{'help_help'}, "help.cgi?param=ShowOriginStats")." </td> </tr>\n";
	print "<tr> <td><b>ShowKeyphrasesStats</b></td> <td> <input size=10 name=ShowKeyphrasesStats type=text value='$lconf->{'ShowKeyphrasesStats'}'> </td> <td> ";
	print &hblink($text{'help_help'}, "help.cgi?param=ShowKeyphrasesStats")." </td> </tr>\n";
	print "<tr> <td><b>ShowKeywordsStats</b></td> <td> <input size=10 name=ShowKeywordsStats type=text value='$lconf->{'ShowKeywordsStats'}'> </td> <td> ";
	print &hblink($text{'help_help'}, "help.cgi?param=ShowKeywordsStats")." </td> </tr>\n";
	print "<tr> <td><b>ShowMiscStats</b></td> <td> <input size=10 name=ShowMiscStats type=text value='$lconf->{'ShowMiscStats'}'> </td> <td> ";
	print &hblink($text{'help_help'}, "help.cgi?param=ShowMiscStats")." </td> </tr>\n";
	print "<tr> <td><b>ShowHTTPErrorsStats</b></td> <td> <input size=10 name=ShowHTTPErrorsStats type=text value='$lconf->{'ShowHTTPErrorsStats'}'> </td> <td> ";
	print &hblink($text{'help_help'}, "help.cgi?param=ShowHTTPErrorsStats")." </td> </tr>\n";
	print "<tr> <td><b>ShowSMTPErrorsStats</b></td> <td> <input size=10 name=ShowSMTPErrorsStats type=text value='$lconf->{'ShowSMTPErrorsStats'}'> </td> <td> ";
	print &hblink($text{'help_help'}, "help.cgi?param=ShowSMTPErrorsStats")." </td> </tr>\n";
	print "<tr> <td><b>ShowClusterStats</b></td> <td> <input size=10 name=ShowClusterStats type=text value='$lconf->{'ShowClusterStats'}'> </td> <td> ";
	print &hblink($text{'help_help'}, "help.cgi?param=ShowClusterStats")." </td> </tr>\n";
	print "<tr> <td><b>AddDataArrayMonthStats</b></td> <td> <input size=10 name=AddDataArrayMonthStats type=text value='$lconf->{'AddDataArrayMonthStats'}'> </td> <td> ";
	print &hblink($text{'help_help'}, "help.cgi?param=AddDataArrayMonthStats")." </td> </tr>\n";
	print "<tr> <td><b>AddDataArraySHowDaysOfMonthStats</b></td> <td> <input size=10 name=AddDataArraySHowDaysOfMonthStats type=text value='$lconf->{'AddDataArrayShowDaysOfMonthStats'}'> </td> <td> ";
	print &hblink($text{'help_help'}, "help.cgi?param=AddDataArraySHowDaysOfMonthStats")." </td> </tr>\n";
	print "<tr> <td><b>AddDataArrayShowDaysOfWeekStats</b></td> <td> <input size=10 name=AddDataArrayShowDaysOfWeekStats type=text value='$lconf->{'AddDataArrayShowDaysOfWeekStats'}'> </td> <td> ";
	print &hblink($text{'help_help'}, "help.cgi?param=AddDataArrayShowDaysOfWeekStats")." </td> </tr>\n";
	print "<tr> <td><b>AddDataArrayShowHoursStats</b></td> <td> <input size=10 name=AddDataArrayShowHoursStats type=text value='$lconf->{'AddDataArrayShowHoursStats'}'> </td> <td> ";
	print &hblink($text{'help_help'}, "help.cgi?param=AddDataArrayShowHoursStats")." </td> </tr>\n";
	print "<tr> <td><b>IncludeInternalLinksInOriginSection</b></td> <td> <input size=10 name=IncludeInternalLinksInOriginSection type=text value='$lconf->{'IncludeInternalLinksInOriginSection'}'> </td> <td> ";
	print &hblink($text{'help_help'}, "help.cgi?param=IncludeInternalLinksInOriginSection")." </td> </tr>\n";
	print "<tr> <td><b>MaxNbOfDomain </b></td> <td> <input size=10 name=MaxNbOfDomain type=text value='$lconf->{'MaxNbOfDomain '}'> </td> <td> ";
	print &hblink($text{'help_help'}, "help.cgi?param=MaxNbOfDomain ")." </td> </tr>\n";
	print "<tr> <td><b>MinHitDomain  </b></td> <td> <input size=10 name=MinHitDomain type=text value='$lconf->{'MinHitDomain  '}'> </td> <td> ";
	print &hblink($text{'help_help'}, "help.cgi?param=MinHitDomain  ")." </td> </tr>\n";
	print "<tr> <td><b>MaxNbOfHostsShown </b></td> <td> <input size=10 name=MaxNbOfHostsShown  type=text value='$lconf->{'MaxNbOfHostsShown '}'> </td> <td> ";
	print &hblink($text{'help_help'}, "help.cgi?param=MaxNbOfHostsShown ")." </td> </tr>\n";
	print "<tr> <td><b>MinHitHost    </b></td> <td> <input size=10 name=MinHitHost     type=text value='$lconf->{'MinHitHost    '}'> </td> <td> ";
	print &hblink($text{'help_help'}, "help.cgi?param=MinHitHost    ")." </td> </tr>\n";
	print "<tr> <td><b>MaxNbOfLoginShown </b></td> <td> <input size=10 name=MaxNbOfLoginShown  type=text value='$lconf->{'MaxNbOfLoginShown '}'> </td> <td> ";
	print &hblink($text{'help_help'}, "help.cgi?param=MaxNbOfLoginShown ")." </td> </tr>\n";
	print "<tr> <td><b>MinHitLogin   </b></td> <td> <input size=10 name=MinHitLogin    type=text value='$lconf->{'MinHitLogin   '}'> </td> <td> ";
	print &hblink($text{'help_help'}, "help.cgi?param=MinHitLogin   ")." </td> </tr>\n";
	print "<tr> <td><b>MaxNbOfRobotShown </b></td> <td> <input size=10 name=MaxNbOfRobotShown  type=text value='$lconf->{'MaxNbOfRobotShown '}'> </td> <td> ";
	print &hblink($text{'help_help'}, "help.cgi?param=MaxNbOfRobotShown ")." </td> </tr>\n";
	print "<tr> <td><b>MinHitRobot   </b></td> <td> <input size=10 name=MinHitRobot    type=text value='$lconf->{'MinHitRobot   '}'> </td> <td> ";
	print &hblink($text{'help_help'}, "help.cgi?param=MinHitRobot   ")." </td> </tr>\n";
	print "<tr> <td><b>MaxNbOfPageShown </b></td> <td> <input size=10 name=MaxNbOfPageShown  type=text value='$lconf->{'MaxNbOfPageShown '}'> </td> <td> ";
	print &hblink($text{'help_help'}, "help.cgi?param=MaxNbOfPageShown ")." </td> </tr>\n";
	print "<tr> <td><b>MinHitFile    </b></td> <td> <input size=10 name=MinHitFile     type=text value='$lconf->{'MinHitFile    '}'> </td> <td> ";
	print &hblink($text{'help_help'}, "help.cgi?param=MinHitFile    ")." </td> </tr>\n";
	print "<tr> <td><b>MaxNbOfOsShown </b></td> <td> <input size=10 name=MaxNbOfOsShown  type=text value='$lconf->{'MaxNbOfOsShown '}'> </td> <td> ";
	print &hblink($text{'help_help'}, "help.cgi?param=MaxNbOfOsShown ")." </td> </tr>\n";
	print "<tr> <td><b>MinHitOs      </b></td> <td> <input size=10 name=MinHitOs       type=text value='$lconf->{'MinHitOs      '}'> </td> <td> ";
	print &hblink($text{'help_help'}, "help.cgi?param=MinHitOs      ")." </td> </tr>\n";
	print "<tr> <td><b>MaxNbOfBrowsersShown </b></td> <td> <input size=10 name=MaxNbOfBrowsersShown  type=text value='$lconf->{'MaxNbOfBrowsersShown '}'> </td> <td> ";
	print &hblink($text{'help_help'}, "help.cgi?param=MaxNbOfBrowsersShown ")." </td> </tr>\n";
	print "<tr> <td><b>MinHitBrowser </b></td> <td> <input size=10 name=MinHitBrowser  type=text value='$lconf->{'MinHitBrowser '}'> </td> <td> ";
	print &hblink($text{'help_help'}, "help.cgi?param=MinHitBrowser ")." </td> </tr>\n";
	print "<tr> <td><b>MaxNbOfScreenSizesShown </b></td> <td> <input size=10 name=MaxNbOfScreenSizesShown  type=text value='$lconf->{'MaxNbOfScreenSizesShown '}'> </td> <td> ";
	print &hblink($text{'help_help'}, "help.cgi?param=MaxNbOfScreenSizesShown ")." </td> </tr>\n";
	print "<tr> <td><b>MinHitScreenSize </b></td> <td> <input size=10 name=MinHitScreenSize  type=text value='$lconf->{'MinHitScreenSize '}'> </td> <td> ";
	print &hblink($text{'help_help'}, "help.cgi?param=MinHitScreenSize ")." </td> </tr>\n";
	print "<tr> <td><b>MaxNbOfRefererShown </b></td> <td> <input size=10 name=MaxNbOfRefererShown  type=text value='$lconf->{'MaxNbOfRefererShown '}'> </td> <td> ";
	print &hblink($text{'help_help'}, "help.cgi?param=MaxNbOfRefererShown ")." </td> </tr>\n";
	print "<tr> <td><b>MinHitRefer   </b></td> <td> <input size=10 name=MinHitRefer    type=text value='$lconf->{'MinHitRefer   '}'> </td> <td> ";
	print &hblink($text{'help_help'}, "help.cgi?param=MinHitRefer   ")." </td> </tr>\n";
	print "<tr> <td><b>MaxNbOfKeyphrasesShown </b></td> <td> <input size=10 name=MaxNbOfKeyphrasesShown  type=text value='$lconf->{'MaxNbOfKeyphrasesShown '}'> </td> <td> ";
	print &hblink($text{'help_help'}, "help.cgi?param=MaxNbOfKeyphrasesShown ")." </td> </tr>\n";
	print "<tr> <td><b>MinHitKeyphrase </b></td> <td> <input size=10 name=MinHitKeyphrase  type=text value='$lconf->{'MinHitKeyphrase '}'> </td> <td> ";
	print &hblink($text{'help_help'}, "help.cgi?param=MinHitKeyphrase ")." </td> </tr>\n";
	print "<tr> <td><b>MaxNbOfKeywordsShown </b></td> <td> <input size=10 name=MaxNbOfKeywordsShown  type=text value='$lconf->{'MaxNbOfKeywordsShown '}'> </td> <td> ";
	print &hblink($text{'help_help'}, "help.cgi?param=MaxNbOfKeywordsShown ")." </td> </tr>\n";
	print "<tr> <td><b>MinHitKeyword </b></td> <td> <input size=10 name=MinHitKeyword  type=text value='$lconf->{'MinHitKeyword '}'> </td> <td> ";
	print &hblink($text{'help_help'}, "help.cgi?param=MinHitKeyword ")." </td> </tr>\n";
	print "<tr> <td><b>MaxNbOfEMailsShown </b></td> <td> <input size=10 name=MaxNbOfEMailsShown  type=text value='$lconf->{'MaxNbOfEMailsShown '}'> </td> <td> ";
	print &hblink($text{'help_help'}, "help.cgi?param=MaxNbOfEMailsShown ")." </td> </tr>\n";
	print "<tr> <td><b>MinHitEMail   </b></td> <td> <input size=10 name=MinHitEMail    type=text value='$lconf->{'MinHitEMail   '}'> </td> <td> ";
	print &hblink($text{'help_help'}, "help.cgi?param=MinHitEMail   ")." </td> </tr>\n";
	print "<tr> <td><b>FirstDayOfWeek</b></td> <td> <input size=10 name=FirstDayOfWeek type=text value='$lconf->{'FirstDayOfWeek'}'> </td> <td> ";
	print &hblink($text{'help_help'}, "help.cgi?param=FirstDayOfWeek")." </td> </tr>\n";
	print "<tr> <td><b>ShowFlagLinks</b></td> <td> <input size=30 name=ShowFlagLinks type=text value='$lconf->{'ShowFlagLinks'}'> </td> <td> ";
	print &hblink($text{'help_help'}, "help.cgi?param=ShowFlagLinks")." </td> </tr>\n";
	print "<tr> <td><b>ShowLinksOnUrl</b></td> <td> <input size=10 name=ShowLinksOnUrl type=text value='$lconf->{'ShowLinksOnUrl'}'> </td> <td> ";
	print &hblink($text{'help_help'}, "help.cgi?param=ShowLinksOnUrl")." </td> </tr>\n";
	print "<tr> <td><b>UseHTTPSLinkForUrl</b></td> <td> <input size=10 name=UseHTTPSLinkForUrl type=text value='$lconf->{'UseHTTPSLinkForUrl'}'> </td> <td> ";
	print &hblink($text{'help_help'}, "help.cgi?param=UseHTTPSLinkForUrl")." </td> </tr>\n";
	print "<tr> <td><b>MaxLengthOfShownURL</b></td> <td> <input size=10 name=MaxLengthOfShownURL type=text value='$lconf->{'MaxLengthOfShownURL'}'> </td> <td> ";
	print &hblink($text{'help_help'}, "help.cgi?param=MaxLengthOfShownURL")." </td> </tr>\n";
#	print "<tr> <td><b>LinksToWhoIs</b></td> <td> <input size=40 name=LinksToWhoIs type=text value='$lconf->{'LinksToWhoIs'}'> </td> <td> ";
#	print &hblink($text{'help_help'}, "help.cgi?param=LinksToWhoIs")." </td> </tr>\n";
#	print "<tr> <td><b>LinksToIPWhoIs</b></td> <td> <input size=40 name=LinksToIPWhoIs type=text value='$lconf->{'LinksToIPWhoIs'}'> </td> <td> ";
#	print &hblink($text{'help_help'}, "help.cgi?param=LinksToIPWhoIs")." </td> </tr>\n";
	print "<tr> <td><b>HTMLHeadSection</b></td> <td> <input size=30 name=HTMLHeadSection type=text value='$lconf->{'HTMLHeadSection'}'> </td> <td> ";
	print &hblink($text{'help_help'}, "help.cgi?param=HTMLHeadSection")." </td> </tr>\n";
	print "<tr> <td><b>HTMLEndSection</b></td> <td> <input size=40 name=HTMLEndSection type=text value='$lconf->{'HTMLEndSection'}'> </td> <td> ";
	print &hblink($text{'help_help'}, "help.cgi?param=HTMLEndSection")." </td> </tr>\n";
	print "<tr> <td><b>Logo</b></td> <td> <input size=30 name=Logo type=text value='$lconf->{'Logo'}'> </td> <td> ";
	print &hblink($text{'help_help'}, "help.cgi?param=Logo")." </td> </tr>\n";
	print "<tr> <td><b>LogoLink</b></td> <td> <input size=30 name=LogoLink type=text value='$lconf->{'LogoLink'}'> </td> <td> ";
	print &hblink($text{'help_help'}, "help.cgi?param=LogoLink")." </td> </tr>\n";
	print "<tr> <td><b>BarWidth / BarHeight</b></td> <td> <input size=10 name=BarWidth    type=text value='$lconf->{'BarWidth   '}'> / <input size=10 name=BarHeight   type=text value='$lconf->{'BarHeight  '}'></td> <td> ";
	print &hblink($text{'help_help'}, "help.cgi?param=BarWidth   ")." </td> </tr>\n";
	print "<tr> <td><b>StyleSheet</b></td> <td> <input size=20 name=StyleSheet type=text value='$lconf->{'StyleSheet'}'> </td> <td> ";
	print &hblink($text{'help_help'}, "help.cgi?param=StyleSheet")." </td> </tr>\n";
#	print "<tr> <td><b>color_Background</b></td> <td> <input size=10 name=color_Background type=text value='$lconf->{'color_Background'}'> </td> <td> ";
#	print &hblink($text{'help_help'}, "help.cgi?param=color_Background")." </td> </tr>\n";
#	print "<tr> <td><b>color_TableBGTitle</b></td> <td> <input size=10 name=color_TableBGTitle type=text value='$lconf->{'color_TableBGTitle'}'> </td> <td> ";
#	print &hblink($text{'help_help'}, "help.cgi?param=color_TableBGTitle")." </td> </tr>\n";
#	print "<tr> <td><b>color_TableTitle</b></td> <td> <input size=10 name=color_TableTitle type=text value='$lconf->{'color_TableTitle'}'> </td> <td> ";
#	print &hblink($text{'help_help'}, "help.cgi?param=color_TableTitle")." </td> </tr>\n";
#	print "<tr> <td><b>color_TableBG</b></td> <td> <input size=10 name=color_TableBG type=text value='$lconf->{'color_TableBG'}'> </td> <td> ";
#	print &hblink($text{'help_help'}, "help.cgi?param=color_TableBG")." </td> </tr>\n";
#	print "<tr> <td><b>color_TableRowTitle</b></td> <td> <input size=10 name=color_TableRowTitle type=text value='$lconf->{'color_TableRowTitle'}'> </td> <td> ";
#	print &hblink($text{'help_help'}, "help.cgi?param=color_TableRowTitle")." </td> </tr>\n";
#	print "<tr> <td><b>color_TableBGRowTitle</b></td> <td> <input size=10 name=color_TableBGRowTitle type=text value='$lconf->{'color_TableBGRowTitle'}'> </td> <td> ";
#	print &hblink($text{'help_help'}, "help.cgi?param=color_TableBGRowTitle")." </td> </tr>\n";
#	print "<tr> <td><b>color_TableBorder</b></td> <td> <input size=10 name=color_TableBorder type=text value='$lconf->{'color_TableBorder'}'> </td> <td> ";
#	print &hblink($text{'help_help'}, "help.cgi?param=color_TableBorder")." </td> </tr>\n";
#	print "<tr> <td><b>color_text</b></td> <td> <input size=10 name=color_text type=text value='$lconf->{'color_text'}'> </td> <td> ";
#	print &hblink($text{'help_help'}, "help.cgi?param=color_text")." </td> </tr>\n";
#	print "<tr> <td><b>color_textpercent</b></td> <td> <input size=10 name=color_textpercent type=text value='$lconf->{'color_textpercent'}'> </td> <td> ";
#	print &hblink($text{'help_help'}, "help.cgi?param=color_textpercent")." </td> </tr>\n";
#	print "<tr> <td><b>color_titletext</b></td> <td> <input size=10 name=color_titletext type=text value='$lconf->{'color_titletext'}'> </td> <td> ";
#	print &hblink($text{'help_help'}, "help.cgi?param=color_titletext")." </td> </tr>\n";
#	print "<tr> <td><b>color_weekend</b></td> <td> <input size=10 name=color_weekend type=text value='$lconf->{'color_weekend'}'> </td> <td> ";
#	print &hblink($text{'help_help'}, "help.cgi?param=color_weekend")." </td> </tr>\n";
#	print "<tr> <td><b>color_link</b></td> <td> <input size=10 name=color_link type=text value='$lconf->{'color_link'}'> </td> <td> ";
#	print &hblink($text{'help_help'}, "help.cgi?param=color_link")." </td> </tr>\n";
#	print "<tr> <td><b>color_hover</b></td> <td> <input size=10 name=color_hover type=text value='$lconf->{'color_hover'}'> </td> <td> ";
#	print &hblink($text{'help_help'}, "help.cgi?param=color_hover")." </td> </tr>\n";
#	print "<tr> <td><b>color_u</b></td> <td> <input size=10 name=color_u type=text value='$lconf->{'color_u'}'> </td> <td> ";
#	print &hblink($text{'help_help'}, "help.cgi?param=color_u")." </td> </tr>\n";
#	print "<tr> <td><b>color_v</b></td> <td> <input size=10 name=color_v type=text value='$lconf->{'color_v'}'> </td> <td> ";
#	print &hblink($text{'help_help'}, "help.cgi?param=color_v")." </td> </tr>\n";
#	print "<tr> <td><b>color_p</b></td> <td> <input size=10 name=color_p type=text value='$lconf->{'color_p'}'> </td> <td> ";
#	print &hblink($text{'help_help'}, "help.cgi?param=color_p")." </td> </tr>\n";
#	print "<tr> <td><b>color_h</b></td> <td> <input size=10 name=color_h type=text value='$lconf->{'color_h'}'> </td> <td> ";
#	print &hblink($text{'help_help'}, "help.cgi?param=color_h")." </td> </tr>\n";
#	print "<tr> <td><b>color_k</b></td> <td> <input size=10 name=color_k type=text value='$lconf->{'color_k'}'> </td> <td> ";
#	print &hblink($text{'help_help'}, "help.cgi?param=color_k")." </td> </tr>\n";
#	print "<tr> <td><b>color_s</b></td> <td> <input size=10 name=color_s type=text value='$lconf->{'color_s'}'> </td> <td> ";
#	print &hblink($text{'help_help'}, "help.cgi?param=color_s")." </td> </tr>\n";
#	print "<tr> <td><b>color_e</b></td> <td> <input size=10 name=color_e type=text value='$lconf->{'color_e'}'> </td> <td> ";
#	print &hblink($text{'help_help'}, "help.cgi?param=color_e")." </td> </tr>\n";
#	print "<tr> <td><b>color_x</b></td> <td> <input size=10 name=color_x type=text value='$lconf->{'color_x'}'> </td> <td> ";
#	print &hblink($text{'help_help'}, "help.cgi?param=color_x")." </td> </tr>\n";
	print "<tr> <td colspan=3 align=center><a href='edit_config.cgi?".($in{'new'}?"new=1&":"")."&file=$in{'file'}'>$text{'index_hideadvanced'}</a></td></tr>\n";
}
else {
	print "<tr> <td colspan=3 align=center><a href='edit_config.cgi?".($in{'new'}?"new=1&":"")."advanced=3&file=$in{'file'}'>$text{'index_advanced3'}</a></td></tr>\n";
}
print "<tr> <td colspan=3><br></td> </tr>\n";

print "<tr> <td colspan=3><br>PLUGINS SETUP SECTION (Not required but increase AWStats features)<br><hr></td> </tr>\n";
if ($in{'advanced'} == 4) {
	my $conflinenb = 0;
	my @pconfparam=();
	my @pconfvalue=();
	my @pconfvaluep=();
	my %pluginlinefound=();
	# Search the loadable plugins in edited config file
	open(FILE, $filetoopen) || error("Failed to open $filetoopen for reading plugins' config");
	while(<FILE>) {
		my $savline=$_;
		chomp $_; s/\r//;
		$conflinenb++;
		if ($_ =~ /^#?LoadPlugin/i) {
			# Extract param and value
			my ($load,$value)=split(/=/,$_,2);
			# Remove comments not at beginning of line
			$param =~ s/^\s+//; $param =~ s/\s+$//;
			$value =~ s/#.*$//; 
			$value =~ s/^[\s\'\"]+//g; $value =~ s/[\s\'\"]+$//g;
			($value1,$value2)=split(/\s/,$value,2);
			if ($value1 =~ /^graph3d$/i) { next; }
			if (! $pluginlinefound{$value1}) {	# To avoid plugin to be shown twice
				$pluginlinefound{$value1}=1;
				push @pconfparam, $value1;
				push @pconfvaluep, $value2;
    			my $active=0;
    			if ($load !~ /#.*LoadPlugin/i) { $active=1; }
				push @pconfactive, $active;
			}
		}	
	}
	close FILE;
	# Search the loadable plugins in sample config file (if not new)
	if (! $in{'new'}) {
		open(FILE, $config{'alt_conf'}) || error("Failed to open $config{'alt_conf'} for reading available plugins");
		while(<FILE>) {
			my $savline=$_;
			chomp $_; s/\r//;
			$conflinenb++;
			if ($_ =~ /^#?LoadPlugin/i) {
				# Extract param and value
				my ($load,$value)=split(/=/,$_,2);
				# Remove comments not at beginning of line
				$param =~ s/^\s+//; $param =~ s/\s+$//;
				$value =~ s/#.*$//; 
				$value =~ s/^[\s\'\"]+//g; $value =~ s/[\s\'\"]+$//g;
				($value1,$value2)=split(/\s/,$value,2);
				if ($value1 =~ /^graph3d$/i) { next; }
				if (! $pluginlinefound{$value1}) {	# To avoid plugin to be shown twice
					push @pconfparam, $value1;
					push @pconfvaluep, $value2;
                    # Plugin in sample but not in config file is by default not enabled.
        			my $active=0;
					push @pconfactive, $active;
				}
			}	
		}
		close FILE;
	}

	print "<tr> <td>Loaded plugins</td> <td>Plugin's parameters</td> <td> &nbsp; </td> </tr>\n";
	foreach my $key (0..(@pconfparam-1)) {
		print "<tr> <td> <input size=10 name=plugin_$pconfparam[$key] type=checkbox ".($pconfactive[$key]?" checked":"")."><b>$pconfparam[$key]</b></td> <td> <input size=30 name=plugin_param_$pconfparam[$key] type=text value='$pconfvaluep[$key]'> ";
        my ($type,$p,$geoipdatafile)=();
        if ($pconfparam[$key] =~ /^geoip$/) { $type="geoip_country"; $p="GeoIP Country"; $geoipdatafile=$config{'plugin_1_geoip'}||"/usr/local/share/GeoIP/GeoIP.dat"; }
        if ($pconfparam[$key] =~ /^geoip_region_maxmind$/) { $type="geoip_region"; $p="GeoIP Region"; $geoipdatafile=$config{'plugin_2_geoip_region_maxmind'}||"/usr/local/share/GeoIP/GeoIPRegion.dat"; }
        if ($pconfparam[$key] =~ /^geoip_city_maxmind$/) { $type="geoip_city"; $p="GeoIP City"; $geoipdatafile=$config{'plugin_3_geoip_city_maxmind'}||"/usr/local/share/GeoIP/GeoIPCity.dat"; }
        if ($pconfparam[$key] =~ /^geoip_isp_maxmind$/) { $type="geoip_isp"; $p="GeoIP ISP"; $geoipdatafile=$config{'plugin_4_geoip_isp_maxmind'}||"/usr/local/share/GeoIP/GeoIPISP.dat"; }
        if ($pconfparam[$key] =~ /^geoip_org_maxmind$/) { $type="geoip_org"; $p="GeoIP Organization"; $geoipdatafile=$config{'plugin_5_geoip_org_maxmind'}||"/usr/local/share/GeoIP/GeoIPOrg.dat"; }
        if ($p) {
            # If a geoip plugin
            my $datafile=$geoipdatafile;
            if ($pconfvaluep[$key] =~ /^\w+\s+(.+)$/) { $datafile=$1; }
            print "<a href=\"geoip_info.cgi?file=$datafile&type=$type\">$p database version</a>";
        }
		print " </td> <td> ";
		print &hblink($text{'help_help'}, "help.cgi?param=plugin_$pconfparam[$key]")." </td> </tr>\n";
	}	
	print "<tr> <td colspan=3 align=center><a href='edit_config.cgi?".($in{'new'}?"new=1&":"")."&file=$in{'file'}'>$text{'index_hideadvanced'}</a> <input type=\"hidden\" name=\"advanced\" value=\"4\"></td></tr>\n";
} else {
	print "<tr> <td colspan=3 align=center><a href='edit_config.cgi?".($in{'new'}?"new=1&":"")."advanced=4&file=$in{'file'}'>$text{'index_advanced4'}</a></td></tr>\n";
}	
print "<tr> <td colspan=3><br></td> </tr>\n";


if ($advanced) {
	print "<tr> <td colspan=3><br><hr></td> </tr>\n";
	print "<tr> <td colspan=3 align=center><a href='edit_config.cgi?".($in{'new'}?"new=1&":"")."file=$in{'file'}'>$text{'index_hideadvanced'}</a></td></tr>\n";
	print "<tr> <td colspan=3><hr></td> </tr>\n";
}
print "</table>\n";
print "</td></tr></table>\n";

@b=();
if ($in{'new'}) {
	push(@b, "<input type=submit value='$text{'create'}' onClick=\"return Submit_onClick();\">");
	}
else {
	if ($access{'global'}) {
		push(@b, "<input type=submit value='$text{'save'}' onClick=\"return Submit_onClick();\">");
	}
	if ($access{'add'}) {
		push(@b, "<input type=submit name='delete' value='$text{'delete'}'>");
	}
}

&spaced_buttons(@b);


print "</form>\n";

# Back to config list
print "<hr>\n";
&footer("", $text{'index_return'});

awstats/config.info.zh_TW.UTF-80000664000175000017500000000276212410217071020472 0ustar  ldestailleurldestailleurawstats=更新 AWStats 紀錄的完整檔案路徑和指令<br>(例如:/usr/local/awstats/wwwroot/cgi-bin/awstats.pl),0
awstats_cgi=AWStats CGI 的 URL 絕對或者是相對路徑<br>(例如:/awstats/awstats.pl),0
alt_conf=AWStats 設定檔樣本,3,/etc/awstats/awstats.model.conf
plugin_1_geoip=<a href="http://www.maxmind.com/en/city?rId=awstats">Maxmind GeoIP 國家資料庫檔案</a> 路徑<br><small>(如果 AWStats geoip 擴充套件始啟動的情況下)</small>,3,/usr/local/share/GeoIP/GeoIP.dat
plugin_2_geoip_region_maxmind=<a href="http://www.maxmind.com/en/city?rId=awstats">Maxmind GeoIP 區域資料庫檔案</a> 路徑<br><small>(如果 AWStats geoip_region_maxmind 擴充套件始啟動的情況下)</small>,3,/usr/local/share/GeoIP/GeoIPRegion.dat
plugin_3_geoip_city_maxmind=<a href="http://www.maxmind.com/en/city?rId=awstats">Maxmind GeoIP 程式資料庫檔案</a> 路徑<br><small>(如果 AWStats geoip_city_maxmind 擴充套件始啟動的情況下)</small>,3,/usr/local/share/GeoIP/GeoIPCity.dat
plugin_4_geoip_isp_maxmind=<a href="http://www.maxmind.com/en/city?rId=awstats">Maxmind GeoIP isp 資料庫檔案</a> 路徑<br><small>(如果 AWStats geoip_isp_maxmind 擴充套件始啟動的情況下)</small>,3,/usr/local/share/GeoIP/GeoIPISP.dat
plugin_5_geoip_org_maxmind=<a href="http://www.maxmind.com/en/city?rId=awstats">Maxmind GeoIP org 資料庫檔案</a> 路徑<br><small>(如果 AWStats geoip_org_maxmind 擴充套件始啟動的情況下)</small>,3,/usr/local/share/GeoIP/GeoIPOrg.dat
awstats/help.cgi0000664000175000017500000000304512410217071016123 0ustar  ldestailleurldestailleur#!/usr/bin/perl
# help.cgi
# Show help for a config parameter

require './awstats-lib.pl';
&ReadParse();

# Display file contents
&header($title || $text{'help_title'}, "", undef, 0, 1, 1);
print "<hr>\n";

my $helpparam=$in{'param'};
my $isplugin=0;
if ($helpparam =~ s/^plugin_//) { $isplugin=1; }

if ($isplugin) { print &text('help_subtitleplugin',$helpparam)."<br><br>\n"; }
else { print &text('help_subtitle',$helpparam)."<br><br>\n"; }

open(CONF, $config{'alt_conf'}) || &error("Failed to open sample config file");
my $output="";
my $savoutput="";
my $found=0;
while(<CONF>) {
	chomp $_; s/\r//;

	my $line="$_";

	if ($line !~ /#LoadPlugin/i && $line =~ s/^#//) {
		if ($line =~ /-----------------/) { 
			if ($output) { $savoutput=$output; }
			$output="";
			next;
		}
		$line =~ s/</&lt;/g;
		$line =~ s/>/&gt;/g;
		$output.="$line<br>";
	}
	else {
		# Remove comments
		$_ =~ s/\s#.*$//;
		# Extract param and value
		my ($param,$value)=split(/=/,$_,2);
		$param =~ s/^\s+//; $param =~ s/\s+$//;
		
		if (defined($param) && defined($value)) {
			if ((! $isplugin && $param =~ /$helpparam/i) ||
			     ($isplugin && $value =~ /$helpparam/i)) {
				$found=1; last;
			}
			else {
				if ($output) { $savoutput=$output; }
				$output="";
			}
		}
	}
}
close(CONF);

if ($found) {
	if ($output) { print "$output\n"; }
	else { print "$savoutput"; }
}
else {
	print &text('help_notfound',$config{'alt_conf'});
#	print "Parameter not found in your sample file $config{'alt_conf'}.\nMay be your AWStats version does not support it, so no help is available.";
}
	
0;
awstats/config.info.zh_TW.Big50000664000175000017500000000314012410217071020444 0ustar  ldestailleurldestailleurawstats=��s AWStats ������ɮ׸��|�M��O<br>(�Ҧp:/usr/local/awstats/wwwroot/cgi-bin/awstats.pl),0
awstats_cgi=AWStats CGI �� URL ����Ϊ̬O�۹���|<br>(�Ҧp:/awstats/awstats.pl),0
alt_conf=AWStats �]�w�ɼ˥�,3,/etc/awstats/awstats.model.conf
plugin_1_geoip=<a href="http://www.maxmind.com/en/city?rId=awstats">Maxmind GeoIP ��a��Ʈw�ɮ�</a> ���|<br><small>(�p�G AWStats geoip �X�R�M��l�Ұʪ����p�U)</small>,3,/usr/local/share/GeoIP/GeoIP.dat
plugin_2_geoip_region_maxmind=<a href="http://www.maxmind.com/en/city?rId=awstats">Maxmind GeoIP �ϰ��Ʈw�ɮ�</a> ���|<br><small>(�p�G AWStats geoip_region_maxmind �X�R�M��l�Ұʪ����p�U)</small>,3,/usr/local/share/GeoIP/GeoIPRegion.dat
plugin_3_geoip_city_maxmind=<a href="http://www.maxmind.com/en/city?rId=awstats">Maxmind GeoIP �{����Ʈw�ɮ�</a> ���|<br><small>(�p�G AWStats geoip_city_maxmind �X�R�M��l�Ұʪ����p�U)</small>,3,/usr/local/share/GeoIP/GeoIPCity.dat
plugin_4_geoip_isp_maxmind=<a href="http://www.maxmind.com/en/city?rId=awstats">Maxmind GeoIP isp ��Ʈw�ɮ�</a> ���|<br><small>(�p�G AWStats geoip_isp_maxmind �X�R�M��l�Ұʪ����p�U)</small>,3,/usr/local/share/GeoIP/GeoIPISP.dat
plugin_5_geoip_org_maxmind=<a href="http://www.maxmind.com/en/city?rId=awstats">Maxmind GeoIP org ��Ʈw�ɮ�</a> ���|<br><small>(�p�G AWStats geoip_org_maxmind �X�R�M��l�Ұʪ����p�U)</small>,3,/usr/local/share/GeoIP/GeoIPOrg.dat
awstats/images/0000775000175000017500000000000012410217071015752 5ustar  ldestailleurldestailleurawstats/images/hv.png0000664000175000017500000000030312410217071017071 0ustar  ldestailleurldestailleur�PNG


IHDR
���'PLTE��R��c��{������ޜ�֌�΄νk��J��J��Z���bKGD�H	pHYs
�
�B�4�tIME�)���"IDATx�c```P`0`p``H`(`h`����a�(���IEND�B`�awstats/images/hh.png0000664000175000017500000000041212410217071017054 0ustar  ldestailleurldestailleur�PNG


IHDR%��/tEXtCreation Timejeu. 16 janv. 2003 13:50:24 +0100��O$tIME�2#s
fi	pHYs
�
�B�4�gAMA���a*PLTE����!��B��{�����������s��c��R��1������#W�4(IDATx�c���p�a��
�	!�^�
"��_h�*C�IEND�B`�awstats/images/icon.gif0000664000175000017500000000264612410217071017401 0ustar  ldestailleurldestailleurGIF87a00�JR{JR�JZ�RR{RR�RZ{RZ�RZ�RZ�RZ�RZ����ZZsZZ�Zc�Zc�Zc�Zc�Zc�Zc�Zk�Zk�Zk�Zk�cZZccscc{cc�cc�cc�ck�ck�ck�cs�kZZkc�kk�kk�kk�kk�ks�k{�ss�s{�s{�{cR{kR{kc{s{{{�{{�{��{��{�΄{������Ƅ����Ƅ�֌{���������������Ό�ތ�ޔ{��������{���k�����Μ�Μ�ޥ�k��k��������έ�������ε�{��{�����ε�Ƶ�ε�޽�{��������ֽ�ֽ���޽��ƥ�ƭ�ƭ�����s��{�΄�Ό�Δ�Δ�έ�έ�ε�ε�ε�������������ք�֌�֔�֜�֜�֥�ֵ�ֽ����������ޜ�ޥ�ޭ�ޭ�޵�޵�޽�޽��Ƶ���������Ɯ�����������������������������Υ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������,00�H����*\Ȱ�Ç#J�H��ŋ3j�ȱ�Ǐ�tx��g|�P�$�ˁ%�H�xF�?���r�S�%�@Z�1�zHq�Ǎ�2�J��F$I�
��@��2O�x�Ӈ�T�z�<�(4z�i0`�*n�r��7}~
,�v0�60Ѭ!��G�0�H��L�8���@�L�z�&ƺ�?�2x��
�2o�(��(Q`���U[2�@IgfP�AH�t��ʤ9Tt���٤��	a�]xA�0�O��
�8sJ�a���šM3�C�`��G����?��„5Ԑ�hY7�\P�-��Dy�h�%��B
C�D�F�8h�Npa�#�h��(���EC�Ȁ�l`�-��5BJXĘ@a���
68p�
*"��
(T�B��AZ,E^F�חK�t`i��9� ��s�@f+(���gD�K*�J�.�@����B+� '�@h�z*��0��$0�4�Are��D
C^p���[6tH}%=Q�&`��Rl#��QU�B���
^�
�rvp	����
�D;����@?0۠7�-
������"�hq���X"	|@Ǿe����9XK�.E���Wl��g���wLq@;awstats/images/smallicon.gif0000664000175000017500000000175712410217071020434 0ustar  ldestailleurldestailleurGIF89a�JR{JR�JZ�RR{RR�RZ{RZ�RZ�RZ�RZ�RZ����ZZsZZ�Zc�Zc�Zc�Zc�Zc�Zc�Zk�Zk�Zk�Zk�cZZccscc{cc�cc�cc�ck�ck�ck�cs�kZZkc�kk�kk�kk�kk�ks�k{�ss�s{�s{�{cR{kR{kc{s{{{�{{�{��{��{�΄{������Ƅ����Ƅ�֌{���������������Ό�ތ�ޔ{��������{���k�����Μ�Μ�ޥ�k��k��������έ�������ε�{��{�����ε�Ƶ�ε�޽�{��������ֽ�ֽ���޽��ƥ�ƭ�ƭ�����s��{�΄�Ό�Δ�Δ�έ�έ�ε�ε�ε�������������ք�֌�֔�֜�֜�֥�ֵ�ֽ����������ޜ�ޥ�ޭ�ޭ�޵�޵�޽�޽��Ƶ���������Ɯ�����������������������������Υ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������!�,�H����*\Ȱ�Ç��CI�0�<���7e��x��ahP�
�>5
<�f��5
xa�L�(�0N�9���`pQ�M�R,j̔YPf�Z8q��R�$B�H� �Q#B-Q�D2Ax�7�
QJ.�T�@�
Un�� p�i��j�F /���@$T@�3>�&{q��װc�^;awstats/images/.cvsignore0000664000175000017500000000000512410217071017745 0ustar  ldestailleurldestailleur*.db
awstats/images/info.png0000664000175000017500000000120112410217071017405 0ustar  ldestailleurldestailleur�PNG


IHDR(-SgAMA���aAPLTE>k>m>nDm@l
EqCq'\~,p�'h�V�Fl
0WCn*a�:�;�����HgT�
Cs)KGt<�G��I��$Roa�O~6a-O=i!a�B��Q��V��L��?{�5q�-n�M}?r6c.Nd�G��V��)Wt-n�X�Hv0Z-S<k_�@��&Rk+l�[�Jy6[,S6_V�4y�"Lg'e�^�Hw3[*R7`Cj#h�<��H`Z�U�?k0V+L*S
Ky!f����>`?l,R%K*NM}O�Q~Pz9c2V&G8c:k)J%F.P-T,Q'O)J��[�tRNS@��fbKGD�H	pHYs��~�tIME�
8|"�n�IDATx�c` 021��"�l��\�<�lP>��������TD\BRJHHZFVN�WPTRVQUS�����	0���		�����-�U��,��ml�@�� 3��]\��A�^�BB>�~��`S��CB����GDB����s[TR�}DJ*�i��Yؽ	�@�|�q�IEND�B`�awstats/images/hp.png0000664000175000017500000000041512410217071017067 0ustar  ldestailleurldestailleur�PNG


IHDR%��/tEXtCreation Timejeu. 16 janv. 2003 13:54:20 +0100�MtIME�6?d�	pHYs
�
�B�4�gAMA���a-PLTEB�J�!c�B��{�������������s��c��R{�)Z�9�R�i;�(IDATx�cx���p����
��e��kIEND�B`�awstats/images/hu.png0000664000175000017500000000025612410217071017077 0ustar  ldestailleurldestailleur�PNG


IHDR
絓�bKGD�������	pHYs
�
�B�4�tIME�*}h��;IDATx����0A�!Cч*#u�ϤC��X��=R�uYto��w����|Y+���$9���vIEND�B`�awstats/images/hk.png0000664000175000017500000000040612410217071017062 0ustar  ldestailleurldestailleur�PNG


IHDR%��/tEXtCreation Timejeu. 16 janv. 2003 13:51:50 +0100�	tIME�39�s�R	pHYs
�
�B�4�gAMA���a'PLTEN2�Q�V�q%��R��?��.����
�}�mxLfA5Q�'IDATx�c8���p�a��	
	@�`��� �y��&��-IEND�B`�awstats/acl_security.pl0000664000175000017500000000463212410217071017535 0ustar  ldestailleurldestailleur
do 'awstats-lib.pl';

# acl_security_form(&options)
# Output HTML for editing security options for the awstats module
sub acl_security_form
{
print "<tr> <td colspan=2><b>$text{'acl_view'}</b></td>\n";
printf "<td colspan=2 nowrap><input type=radio name=view value=1 %s> %s\n",
	$_[0]->{'view'} ? "checked" : "", $text{'yes'};
printf "<input type=radio name=view value=0 %s> %s</td> </tr>\n",
	$_[0]->{'view'} ? "" : "checked", $text{'no'};

print "<tr> <td colspan=2><b>$text{'acl_global'}</b></td>\n";
printf "<td colspan=2 nowrap><input type=radio name=global value=1 %s> %s\n",
	$_[0]->{'global'} ? "checked" : "", $text{'yes'};
printf "<input type=radio name=global value=0 %s> %s</td> </tr>\n",
	$_[0]->{'global'} ? "" : "checked", $text{'no'};

print "<tr> <td colspan=2><b>$text{'acl_add'}</b></td>\n";
printf "<td colspan=2 nowrap><input type=radio name=add value=1 %s> %s\n",
	$_[0]->{'add'} ? "checked" : "", $text{'yes'};
printf "<input type=radio name=add value=0 %s> %s</td> </tr>\n",
	$_[0]->{'add'} ? "" : "checked", $text{'no'};

print "<tr> <td colspan=2><b>$text{'acl_update'}</b></td>\n";
printf "<td colspan=2 nowrap><input type=radio name=update value=1 %s> %s\n",
        $_[0]->{'update'} ? "checked" : "", $text{'yes'};
printf "<input type=radio name=update value=0 %s> %s</td> </tr>\n",
        $_[0]->{'update'} ? "" : "checked", $text{'no'};

print "<tr> <td colspan=2><b>$text{'acl_user'}</b></td>\n";
printf "<td colspan=2><input type=radio name=user_def value=1 %s> %s\n",
	$_[0]->{'user'} eq "" ? "checked" : "", $text{'acl_this'};
printf "<input type=radio name=user_def value=2 %s> %s\n",
	$_[0]->{'user'} eq "*" ? "checked" : "", $text{'acl_any'};
printf "<input type=radio name=user_def value=0 %s>\n",
	$_[0]->{'user'} eq "*" || $_[0]->{'user'} eq "" ? "" : "checked";
printf "<input name=user size=8 value='%s'> %s</td> </tr>\n",
	$_[0]->{'user'} eq "*" ? "" : $_[0]->{'user'},
	&user_chooser_button("user");

print "<tr> <td colspan=2><b>$text{'acl_dir'}</b></td>\n";
print "<td colspan=2><input name=dir size=50 value='$_[0]->{'dir'}'></td> </tr>\n";
}

# acl_security_save(&options)
# Parse the form for security options for the shell module
sub acl_security_save
{
$_[0]->{'view'} = $in{'view'};
$_[0]->{'global'} = $in{'global'};
$_[0]->{'add'} = $in{'add'};
$_[0]->{'update'} = $in{'update'};
$_[0]->{'dir'} = $in{'dir'};
$_[0]->{'user'} = $in{'user_def'} == 2 ? "*" : $in{'user_def'} == 1 ? "" : $in{'user'};
}

awstats/geoip_info.cgi0000664000175000017500000000353112410217071017311 0ustar  ldestailleurldestailleur#!/usr/bin/perl
# geoip_info.cgi
# Report geoip informations

require './awstats-lib.pl';
&ReadParse();

if (! $access{'update'}) { &error($text{'geoip_cannot'}); }

my $conf=""; my $dir="";
if ($in{'file'} =~ /awstats\.(.*)\.conf$/) { $conf=$1; }
if ($in{'file'} =~ /^(.*)[\\\/][^\\\/]+$/) { $dir=$1; }


# Display file contents
&header($title || $text{'geoip_title'}, "");

print "<hr>\n";

my $type=$in{'type'};
my $size=-1;

print "GeoIP information for file <b>".$in{'file'}."</b><br><br>\n";


# Try to get the GeoIP data file version at end of file
if (-f "$in{'file'}") {
    my @st=stat($in{'file'});
    my $size = $st[7];
    my ($sec,$min,$hour,$day,$month,$year,$wday,$yday) = localtime($st[9]);
    $year+=1900; $month++;

    print "Geoip data file type: <b>$type</b><br>\n";
    print "Geoip data file size: <b>$size</b> bytes<br>\n";
    printf("Geoip data file date: <b>%04s-%02s-%02s %02s:%02s:%02s</b><br>\n",$year,$month,$day,$hour,$min,$sec);

    my $version='unknown';

    # Try to get version from API



    # Try to get version from file
    if (! $version || $version eq 'unknown') {
       if (open(GEOIPFILE,"<$in{'file'}")) {
            my $seekpos=($size-100);
            if ($seekpos < 0) { $seekpos=0; }
            binmode GEOIPFILE;
            seek(GEOIPFILE,$seekpos,0);
            my $nbread=0;
            while (($nbread < 100) && ($line=<GEOIPFILE>)) {
                $nbread++;
                if ($line =~ /(Geo-.*)Copyright/i) { 
                    $version=$1;
                    last;
                }
            }
            close (GEOIPFILE);
        }
    }
    
    print "Geoip data file version: <b>$version</b><br>\n";

} else {
    print "GeoIP datafile <b>$in{'file'}</b> does not exist or can not be read.<br>\n";
}


print "<br>\n";

# Back to config list
print "<hr>\n";
&footer("", $text{'index_return'});

0;

awstats/defaultacl0000664000175000017500000000011412410217071016530 0ustar  ldestailleurldestailleurnoconfig=0
view=1
update=1
dir=/etc/awstats ~/awstats
user=*
global=1
add=1
awstats/install_check.pl0000664000175000017500000000057512410217071017654 0ustar  ldestailleurldestailleur# install_check.pl

do 'awstats-lib.pl';

# is_installed(mode)
# For mode 1, returns 2 if AWStats is installed and configured for use by
# Webmin, 1 if installed but not configured, or 0 otherwise.
# For mode 0, returns 1 if installed, 0 if not
sub is_installed
{
if (! -r $config{'awstats'}) { return 0; }

if ($_[0]) { 
	if (-r $config{'alt_conf'}) { return 2; }
}

return 1;
}

awstats/config0000664000175000017500000000021612410217071015674 0ustar  ldestailleurldestailleurawstats=/usr/local/awstats/wwwroot/cgi-bin/awstats.pl
awstats_cgi=http://127.0.0.1/awstats/awstats.pl
alt_conf=/etc/awstats/awstats.model.confawstats/postinstall.pl0000664000175000017500000000007312410217071017416 0ustar  ldestailleurldestailleur
require 'awstats-lib.pl';

sub module_install
{



}

1;

awstats/config.info.fr0000664000175000017500000000257212410217071017243 0ustar  ldestailleurldestailleurawstats=Chemin absolu du programme AWStats de mise a jour des statistiques<br>(Exemple:/usr/local/awstats/wwwroot/cgi-bin/awstats.pl),0
awstats_cgi=URL absolue ou relative d'AWStats en CGI (Exemple:/awstats/awstats.pl),0
alt_conf=Fichier mod�le de configuration AWStats,3,/etc/awstats/awstats.model.conf
plugin_1_geoip=Chemin du fichier de la base <a href="http://www.maxmind.com/en/city?rId=awstats">Maxmind GeoIP country</a><br><small>(pour plugin AWStats geoip)</small>,3,/usr/local/share/GeoIP/GeoIP.dat
plugin_2_geoip_region_maxmind=Chemin du fichier de la base <a href="http://www.maxmind.com/en/city?rId=awstats">Maxmind GeoIP region</a><br><small>(pour plugin geoip_region_maxmind)</small>,3,/usr/local/share/GeoIP/GeoIPRegion.dat
plugin_3_geoip_city_maxmind=Chemin du fichier de la base <a href="http://www.maxmind.com/en/city?rId=awstats">Maxmind GeoIP city</a><br><small>(pour plugin geoip_city_maxmind)</small>,3,/usr/local/share/GeoIP/GeoIPCity.dat
plugin_4_geoip_isp_maxmind=Chemin du fichier de la base <a href="http://www.maxmind.com/en/city?rId=awstats">Maxmind GeoIP isp</a><br><small>(pour plugin geoip_isp_maxmind)</small>,3,/usr/local/share/GeoIP/GeoIPISP.dat
plugin_5_geoip_org_maxmind=Chemin du fichier de la base <a href="http://www.maxmind.com/en/city?rId=awstats">Maxmind GeoIP org</a><br><small>(pour plugin geoip_org_maxmind)</small>,3,/usr/local/share/GeoIP/GeoIPOrg.dat
awstats/awstats-webmin_changelog.txt0000664000175000017500000000467712760361365022256 0ustar  ldestailleurldestailleurAWStats-Webmin module Changelog
-------------------------------

2.0

Just minor bug fixes.

1.9

Just minor bug fixes.

1.800

Just minor bug fixes.

1.700

Just minor bug fixes.


1.600

New features/improvements:
- Added Spanish translation by Patricio Mart�nez Ros

Fixes:
- Update version of webmin module


1.500

Fixes:
- Minor fixes


1.400

New features/improvements:
- Some change to add scheduler management for update process.
- Creating new config files can be done by copying an old one.
- Add a page for a summary of all config files on same pages.
- Added a row number on each row of index page.
- Translation more complete.
- Report GeoIP country, regions, city, isp and organizations versions.


1.300

New features/improvements:
- Added a warning to explain to add '/private/etc' to webmin ACL for
  MacOS users.
- A first screen for the schedule update feature.
- Better description for ACL page.

Fixes:
- Translation was in french for some texts, regardless of the chosen language.



1.210

New features/improvements:
- Added following parameters parameter in edit config area:
  BuildHistoryFormat
  BuildReportFormat
  LevelForFileTypesDetection
  LevelForWormsDetection
  URLWithQueryWithOnlyFollowingParameters
  ShowWormsStats
- Removed LinkToIPWhoIs and LinkToWhoIs obsolete parameters.
- Module setup parameter awstats_conf has been removed since now
  directories into which you can scan/edit AWStats configuration files
  are defined in ACL users. Defined to /etc/awstats by default.
  Also added a link the the ACL page to edit this directory listing.
- Added a streaming server log file type.

Fixes:
- Better error messages
- Fixed ACL management on directory that contains config files.

Other/Documentation:
- Added german translation.



1.100

New features/improvements:
- All AWStats config parameters can be edited.
- Added management of plugins
- Added a file/dir selector for parameters that are files or directories.
- Added javascript test in edit config pages.
- Added a check that LogFile used with maillogconvert.pl has a 'Mail' type.

Fixes:
- Modify of old config files add the new parameters if not found.
- Fixed wrong value saved for LogSeparator parameter.
- Better check of old versions incompatibility.
- Fix help page for parameters not found in model config file.
- Fixed check of logfile for piped values.
- Minor bug fixes.

Other/Documentation:
- Added French translation.
- Removed unused files.



1.000

- First release version.
awstats/lang/0000775000175000017500000000000012760361365015444 5ustar  ldestailleurldestailleurawstats/lang/en0000664000175000017500000001226212760361365015774 0ustar  ldestailleurldestailleurall_gb=GB
all_mb=MB
all_kb=KB
all_b=Bytes

index_title=AWStats Logfile Analyzer
index_version=AWStats version $1
index_eawstats=The logfile analysis command $1 was not found on your system. Maybe AWStats is not installed, or your <a href='$2'>module configuration</a> is incorrect.
index_econfdir=The AWStats configuration directory $1 was not found on your system. Maybe AWStats is not installed, or your <a href='$2'>module configuration</a> is incorrect.
index_econf=The AWStats sample configuration file $1 was not found on your system. Maybe AWStats is not installed, or your <a href='$2'>module configuration</a> is incorrect.
index_cgi=<a href='$1'>CGI path not configured</a>
index_add=Add a new config file for analysis.
index_path=Config file
index_type=Type
index_size=Size
index_create=Created/Modified
index_databasesize=Database file size
index_noconfig=No config files were found or have been added for analysis.
index_edit=Edit/Delete config
index_del=Delete config
index_scheduled=Scheduled
index_sched2=Scheduler
index_now=Now
index_update=Update stats 
index_update2=Update
index_view=View stats
index_view2=View
index_return=Config files list
index_eversion=The AWStats command $1 on your system is version $2, but this module only supports versions $3 and above.
index_egetversion=Failed to get the version of AWStats. Command $1 returned : $2.<br>May be your <a href='$3'>module configuration</a> is incorrect.
index_advanced1=View directives for OPTIONAL SETUP SECTION
index_advanced2=View directives for OPTIONAL ACCURACY SETUP SECTION
index_advanced3=View directives for OPTIONAL APPEARANCE SETUP SECTION
index_advanced4=View directives for OPTIONAL PLUGINS SETUP SECTION
index_advanced5=View directives for OPTIONAL EXTRA SETUP SECTION
index_hideadvanced=Hide optional directives
index_nodirallowed=Your user $1 has no allowed directory to read/store AWStats configuration files.
index_allowed=Your account $1 is allowed to view/edit config files into (or that are links to)
index_changeallowed=Permissions on directories into which you are allowed to scan/edit AWStats configuration files can be granted to you by a webmin administrator from the Webmin user ACL editor (Menu $1 then clic on $2)
index_viewall=Show a summary of all available configurations

edit_title1=Add config File
edit_title2=Edit config File
edit_header=Editor Assistant for config file $1
edit_headernew=Config file Builder Assistant
edit_file=File content
edit_add=Config file name to create
edit_create_by_copy=Create a new config file by copying an existing one
edit_create_from_scratch=Create a new config file with the following parameters
edit_config_to_copy=Config file name to copy
edit_user=Run AWStats as user
edit_ecannot=You are not allowed to edit this config file
edit_efilecannot=The config file '$1' is not in an allowed directory

save_err=Error in config file build
save_efile=Config file name was not entered
save_fileexists=Config file already exists
save_edir=Directory '$1' chosen to write your config file into is not allowed by Webmin permissions.
save_ecannot=You are only allowed to view or generate reports for config under $1
save_errLogFile=Error in LogFile parameter. Log file $1 does not exists or is not readable
save_errLogFormat=Error in LogFormat parameter. Parameter is not defined
save_errSiteDomain=Error in SiteDomain parameter. Parameter is not defined
save_errDirData=Error in DirData parameter. Parameter is not defined or directory does not exists
save_dirnotexists=Directory does not exists

update_title=Update statistics
update_ecannot=You are not allowed to update statistics
update_run=Run update process with command
update_finished=Update process finished
update_wait=Please wait

schedule_title=Schedule statistic's update
schedule_ecannot=You are not allowed to update or schedule update process

log_create_log=Created AWStats config file $1
log_modify_log=Modified AWStats config file $1
log_delete_log=Deleted AWStats config file $1
log_generate_log=Update AWStats statistics for $1

acl_view=Can view reports for existing config files?
acl_global=Can edit awstats config files?
acl_add=Can add and delete config files?
acl_update=Can update stats for existing config files?
acl_user=Run AWStats as Unix user
acl_this=Current webmin user
acl_any=Any user
acl_dir=Only allow viewing reports and editing config for config files under (hard directory paths, no links)

help_title=Help page
help_subtitle=<b>Help for config file parameter $1</b>
help_subtitleplugin=<b>Help for plugin $1</b>
help_notfound=Parameter not found in your sample file $1.<br>May be your AWStats version does not support it, so no help is available.
help_help=Help
help_starrequired=required parameters with no default value. They can't be empty.

viewall_title=Summary for all configurations files
viewall_notallowed=You don't have rights to see statisitics
viewall_allowed=This page presents a summary of all configurations files found in directories allowed to user $1
viewall_period=Period
viewall_u=Unique visitors
viewall_v=Visits
viewall_p=Pages
viewall_h=Hits
viewall_k=Bandwidth

month01=January
month02=February
month03=Mars
month04=April
month05=May
month06=June
month07=July
month08=August
month09=September
month10=October
month11=November
month12=December
awstats/lang/es0000664000175000017500000001405412410217071015764 0ustar  ldestailleurldestailleurall_gb=GB
all_mb=MB
all_kb=KB
all_b=Bytes

index_title=AWStats Logfile Analyzer
index_version=AWStats versi�n $1
index_eawstats=La orden de an�lisis $1 no se encontr� en su sistema. Puede que AWStats no est� instalado, o que su <a href='$2'>Configuraci�n de m�dulo</a> sea incorrecta.
index_econfdir=El directorio de configuraci�n de AWStats $1 no se encontr� en su sistema. Puede que AWStats no est� instalado, o que su <a href='$2'>Configuraci�n de m�dulo</a> sea incorrecta.
index_econf=El fichero de configuraci�n de ejemplo de AWStats $1 no se encontr� en su sistema. Puede que AWStats no est� instalado, o que su <a href='$2'>Configuraci�n de m�dulo</a> sea incorrecta.
index_cgi=<a href='$1'>Ruta del CGI no configurada</a>
index_add=A�adir un nuevo fichero de configuraci�n para analizar.
index_path=Fichero de configuraci�n
index_type=Tipo
index_size=Tama�o
index_create=Creado/Modificado
index_databasesize=Tama�o de la base de datos
index_noconfig=Ning�n fichero de configuraci�n se ha encontrado o ha sido a�adido para analizar.
index_edit=Editar/Borrar configuraci�n
index_del=Borrar configuraci�n
index_scheduled=Planificado
index_sched2=Planificador
index_now=Ahora
index_update=Actualizar estad�sticas
index_update2=Actualizar
index_view=Ver estad�sticas
index_view2=Ver
index_return=Lista de ficheros de configuraci�n
index_eversion=La orden de AWStats $1 en su sistema tiene la versi�n $2, pero este m�dulo s�lo acepta versiones $3 y superiores.
index_egetversion=Fallo al obtener la versi�n de AWStats. La orden $1 devolvi� : $2.<br>Puede que su <a href='$3'>Configuraci�n de m�dulo</a> sea incorrecta.
index_advanced1=Ver directivas para 'OPTIONAL SETUP SECTION'
index_advanced2=Ver directivas para 'OPTIONAL ACCURACY SETUP SECTION'
index_advanced3=Ver directivas para 'OPTIONAL APPEARANCE SETUP SECTION'
index_advanced4=Ver directivas para 'OPTIONAL PLUGINS SETUP SECTION'
index_advanced5=Ver directivas para 'OPTIONAL EXTRA SETUP SECTION'
index_hideadvanced=Ocultar directivas opcionales
index_nodirallowed=Su usuario $1 no tiene permisos para leer/escribir los ficheros de configuraci�n de AWStats.
index_allowed=Su cuenta $1 tiene permisos para leer/editar los ficheros de configuraci�n (o sus enlaces)
index_changeallowed=Los permisos de los directorios donde usted puede buscan/editar los ficheros de configuraci�n de AWStats le pueden otorgados por un administrador de Webmin desde el editor de ACL de Webmin (Men� $1 y luego haga clic en $2)
index_viewall=Ver un resumen de todas las configuraciones disponibles

edit_title1=A�adir un fichero de configuraci�n
edit_title2=Editar un fichero de configuraci�n
edit_header=Asistente de edici�n del fichero de configuraci�n $1
edit_headernew=Asistente de creaci�n de un nuevo fichero de configuraci�n
edit_file=Contenido del fichero
edit_add=Nombre del fichero de configuraci�n a crear
edit_create_by_copy=Crear un nuevo fichero de configuraci�n copiando uno existente
edit_create_from_scratch=Crear un nuevo fichero de configuraci�n con los siguientes par�metros
edit_config_to_copy=Fichero de configuraci�n a copiar
edit_user=Ejecutar AWStats como usuario
edit_ecannot=No tiene permisos para editar este fichero de configuraci�n
edit_efilecannot=El fichero de configuraci�n '$1' no est� en un directorio permitido

save_err=Error en la construcci�n del fichero de configuraci�n
save_efile=No se ha introducido el nombre del fichero de configuraci�n
save_fileexists=El fichero de configuraci�n ya existe
save_edir=El directorio '$1' elegido para escribir su fichero de configuraci�n no tiene permisos de Webmin.
save_ecannot=S�lo tiene permisos para ver o generar informes para la configuraici�n en $1
save_errLogFile=Error en el par�metro LogFile. El fichero de log $1 no existe o no se puede leer
save_errLogFormat=Error en el par�metro LogFile. El par�metro no est� definido
save_errSiteDomain=Error en el par�metro SiteDomain. El par�metro no est� definido
save_errDirData=Error en el par�metro DirData. El par�metro no est� definido o el directorio no existe
save_dirnotexists=El directorio no existe

update_title=Actualizar estad�sticas
update_ecannot=No est� autorizado para actualizar estad�sticas
update_run=Ejecutar el poceso actualizaci�n con la orden
update_finished=Porceso de actualizaci�n finalizado
update_wait=Por favor, espere

schedule_title=Planificar actualizaciones de las estad�sticas
schedule_ecannot=No est� autorizado para actualizar o planificar el proceso de actualizaci�n

log_create_log=Fichero de configuraci�n de AWStats $1 creado
log_modify_log=Fichero de configuraci�n de AWStats $1 modificado
log_delete_log=Fichero de configuraci�n de AWStats $1 borrado
log_generate_log=Actualizar estad�sticas AWStats para $1

acl_view=�Puede ver los informes para los ficheros de configuraci�n?
acl_global=�Puede editar los ficheros de configuraci�n de AWStats?
acl_add=�Puede a�adir y borrar ficheros de configuraci�n?
acl_update=�Puede actualizar las estad�sticas para los ficheros de configuraci�n existentes?
acl_user=Ejecutar AWStats como usuario Unix
acl_this=Usuario actual de Webmin
acl_any=Cualquier usuario
acl_dir=S�lo permitir ver informes y editar ficheros de configuraci�n en (rutas reales de directorios, no enlaces)

help_title=Pagina de ayuda
help_subtitle=<b>Ayuda sobre los par�metros del fichero de configuraci�n $1</b>
help_subtitleplugin=<b>Ayuda sobre el plugin $1</b>
help_notfound=Par�metro no encontrado en su fichero de ejemplo $1.<br>Puede que su versi�n de AWStata no lo soporte, as� que no hay ayuda disponible.
help_help=Ayuda
help_starrequired=parametros requeridos sin valor por defecto. No pueden estar vac�os.

viewall_title=Summary for all configurations files
viewall_notallowed=You don't have rights to see statisitics
viewall_allowed=This page presents a summary of all configurations files found in directories allowed to user $1
viewall_period=Period
viewall_u=Visitantes distintos
viewall_v=Visitas
viewall_p=P�ginas
viewall_h=Solicitudes
viewall_k=Ancho de banda

month01=Enero
month02=Febrero
month03=Marzo
month04=Abril
month05=Mayo
month06=Junio
month07=Julio
month08=Agosto
month09=Septiembre
month10=Octubre
month11=Noviembre
month12=Diciembreawstats/lang/fr0000664000175000017500000001410412410217071015760 0ustar  ldestailleurldestailleurall_gb=Go
all_mb=Mo
all_kb=Ko
all_b=Octets

index_title=Analyseur de Logs AWStats
index_version=AWStats version $1
index_eawstats=La commande du log analyseur $1 n'a pas �t� trouv�e sur le syst�me. Peut-etre AWStats n'est-il pas install�, ou la <a href='$2'>configuration du module</a> est incorrecte.
index_econfdir=Le r�pertoire des fichiers de configuration AWStats $1 n'a pas �t� trouv� sur le syst�me. Peut-etre AWStats n'est-il pas install�, ou la <a href='$2'>configuration du module</a> est incorrecte.
index_econf=Le fichier de configuration mod�le $1 n'a pas �t� trouv� sur le syst�me. Peut-etre AWStats n'est-il pas install�, ou la <a href='$2'>configuration du module</a> est incorrecte.
index_cgi=<a href='$1'>CGI path non configur�</a>
index_add=Ajout d'un nouveau fichier de configuration d'analyse
index_path=Fichier configuration
index_type=Type
index_size=Taille
index_create=Cr��/Modifi�
index_databasesize=Taille des fichiers de la base
index_noconfig=Aucun fichier de configuration n'a �t� trouv� ou ajout� pour analyse, dans le ou les r�pertoires autoris�s.
index_edit=Edition/Suppression
index_del=Suppression config
index_scheduled=Programm�e
index_now=Imm�diate
index_sched2=Programme
index_update=Mise � jour stats 
index_update2=Mettre � jour
index_view=Voir les stats
index_view2=Voir
index_return=Liste des fichiers de configuration
index_eversion=La commande AWStats $1 sur votre syst�me est en version $2, mais ce module ne g�re que les version $3 ou sup�rieures.
index_egetversion=Echec de la r�cup�ration de la varsion d'AWStats. La command $1 a retourn� : $2.<br>Peut-etre la <a href='$3'>configuration du module</a> est incorrecte.
index_advanced1=Voir param�tres de la 'OPTIONAL SETUP SECTION'
index_advanced2=Voir param�tres de la 'OPTIONAL ACCURACY SETUP SECTION'
index_advanced3=Voir param�tres de la 'OPTIONAL APPEARANCE SETUP SECTION'
index_advanced4=Voir param�tres de la 'OPTIONAL PLUGINS SETUP SECTION'
index_advanced5=Voir param�tres de la 'OPTIONAL EXTRA SETUP SECTION'
index_hideadvanced=Cacher param�tres optionnels
index_allowed=Votre login $1 est autoris� � voir/editer les fichiers de config dans (ou pointant vers)
index_nodirallowed=Votre compte $1 n'a aucun r�pertoire autoris� en lecture/�criture de fichier de configuration AWStats.
index_changeallowed=Les permissions des r�pertoires dans lesquels vous pouvez voir/�diter des fichiers de configuration AWStats peuvent vous �tre accord�es par un administrateur Webmin via l'�diteur des ACL utilisateurs Webmin (Menu $1 puis clic sur $2)
index_viewall=Voir un r�sum� pour toutes les configurations disponibles

edit_title1=Ajout d'un fichier de config
edit_title2=Edition d'un fichier de config
edit_header=Assistant d'�dition du fichier de configuration $1
edit_headernew=Assistant de cr�ation de nouveau fichier de configuration
edit_file=Contenu du fichier
edit_add=Nom du fichier de config � cr�er
edit_create_by_copy=Cr�er une nouvelle configuration par recopie d'une existante
edit_create_from_scratch=Cr�er une nouvelle configuration avec les param�tres suivants
edit_config_to_copy=Nom de la configuration � recopier
edit_user=Lancer AWStats sous l'utilisateur
edit_ecannot=Vous n'�tes pas autoris�s � �diter ce fichier de configuration
edit_efilecannot=Le fichier de configuration '$1' n'est pas dans un r�pertoire autoris�

save_err=Erreur dans la construction du fichier de configuration
save_efile=Le nom du fichier de configuration n'a pas �t� entr�
save_fileexists=Fichier de configuration d�j� existant
save_edir=Le r�pertoire '$1', choisi pour le fichier de configuration n'est pas autoris� par les permissions Webmin.
save_ecannot=Vous n'�tes autoris�s � voir ou g�n�rer des rapports que pour des fichiers de config dans $1
save_errLogFile=Erreur sur le param�tre LogFile. Le fichier de log $1 n'existe pas ou n'est pas lisible
save_errLogFormat=Erreur sur le param�tre LogFormat. Param�tre non d�fini
save_errSiteDomain=Erreur sur le param�tre SiteDomain. Param�tre non d�fini
save_errDirData=Erreur sur le param�tre DirData. Param�tre non d�fini ou r�pertoire inexistant
save_dirnotexists=R�pertoire inexistant

update_title=Mise � jour des statistiques
update_ecannot=Vous n'�tes pas autoris� � mettre � jour les statistiques
update_run=Lancement de la mise � jour par la commande
update_finished=Mise a jour termin�e
update_wait=Merci de patienter

schedule_title=Programmation de mise � jour
schedule_ecannot=Vous n'�tes pas autoris� � mettre � jour ou programmer une mise � jour des statistiques

log_create_log=Fichier de config AWStats $1 cr��
log_modify_log=Fichier de config AWStats $1 modifi�
log_delete_log=Fichier de config AWStats $1 effac�
log_generate_log=Mise � jour statistiques AWStats pour $1

acl_view=Peut voir les stats pour les fichiers config existant?
acl_global=Peut editer les fichiers config AWStats?
acl_add=Peut ajouter/supprimer des fichiers config?
acl_update=Peut mettre � jour les stats pour les fichiers config existants?
acl_user=Lancer AWStats sour l'utilisateur Unix
acl_this=Utilisateur webmin actuel
acl_any=Tout utilisateur
acl_dir=Autorise la vue de stats et l'�dition de fichier de config pour les fichiers config dans (chemin de r�pertoires en durs, pas de liens)

help_title=Page d'aide
help_subtitle=<b>Aide sur le param�tre de configuration $1</b>
help_subtitleplugin=<b>Aide sur le plugin $1</b>
help_notfound=Param�tre non trouv� dans votre fichier de configuration mod�le $1.<br>Peut-�tre votre version d'AWStats ne le supporte pas, aussi aucune aide n'est disponible.
help_help=Aide
help_starrequired=param�tres obligatoires sans valeurs par d�faut. Ils ne peuvent etre vide.

viewall_title=R�sum� pour tout fichier de configuration
viewall_notallowed=Vous n'avez pas les droits pour voir les stats
viewall_allowed=Cette page pr�sente un r�sum� de toutes les configurations trouv�s dans les r�pertoires autoris�s � l'utilisateur $1
viewall_period=P�riode
viewall_u=Visiteurs uniques
viewall_v=Visites
viewall_p=Pages
viewall_h=Hits
viewall_k=Bande passante

month01=Janvier
month02=F�vrier
month03=Mars
month04=Avril
month05=Mai
month06=Juin
month07=Juillet
month08=Aout
month09=Septembre
month10=Octobre
month11=Novembre
month12=D�cembreawstats/lang/de0000664000175000017500000001143212410217071015742 0ustar  ldestailleurldestailleurindex_title=AWStats Logfile Analyse
index_version=AWStats Version $1
index_eawstats=Das Logfile Analyse Programm $1 wurde nicht auf Ihrem System gefunden. Vieleicht ist es nicht installiert, oder Ihre <a href='$2'>module configuration</a> ist fehlerhaft.
index_econfdir=Das AWStats Konfigurations Verzeichniss $1 wurde nicht auf Ihrem System gefunden. Vieleicht ist es nicht installiert, oder Ihre <a href='$2'>module configuration</a> ist fehlerhaft.
index_econf=Die AWStats Beispiel-Konfigurations Datei $1 wurde nicht auf ihrem System gefunden. Vieleicht ist es nicht installiert, oder Ihre <a href='$2'>module configuration</a> ist fehlerhaft.
index_cgi=<a href='$1'>CGI path not configured</a>
index_add=Hinzuf�gen einer neuen Analyse-Konfiguration.
index_path=Konfigurations Datei
index_type=Typ
index_size=Gr��e
index_create=Erstellt/Ge�ndert
index_noconfig=Es wurden keine Analyse-Konfigurations Dateien gefunden bzw. hinzugef�gt.
index_edit=Konfiguration Bearbeiten/L�schen
index_del=Konfiguration L�schen
index_scheduled=Eingeplant
index_now=Jetzt
index_update=Statistik aktualisieren
index_update2=Aktualisieren
index_view=Statistik anzeigen
index_view2=Anzeigen
index_return=Konfigurations Dateien
index_eversion=Das AWStats Programm auf Ihrem System hat die Version $2, aber dieses Modul unterst�zt nur Versionen $3 und aufw�rts.
index_egetversion=Die Versions Nr. Ihrer AWStats Installation konnte nicht ermittelt werden. Die Abfrage ergab : $2.<br>May be your <a href='$3'>module configuration</a> fehlerhaft.
index_advanced1=Direktiven f�r den OPTIONALEN EINSTELLUNGS BEREICH anzeigen
index_advanced2=Direktiven f�r die OPTIONALEN DETAIL-EINSTELLUNGEN anzeigen
index_advanced3=Direktiven f�r das OPTIONALE ERSCHEINUNGSBILD anzeigen
index_advanced4=Direktiven f�r die OPTIONALEN PLUGINS anzeigen
index_advanced5=Direktiven f�r die OPTIONALEN EXTRA EINSTGELLUNGEN anzeigen
index_hideadvanced=Optionale Direktiven verbergen
index_nodirallowed=Der Benutzer $1 hat kein berechtigtes Verzeichniss zum lesen/speichern von AWStats Konfigurationen
index_allowed=Ihr Benutzer-Konto $1 ist berechtigt, um Dateien anzusehen/bearbeiten in
index_changeallowed=Berechtigungen f�r Verzeichnisse, die es Ihnen erlaube AWStats Konfigurationen zu  listen/berabeiten, kann Ihnen der Webmin Administrator �ber den Benutzer ACL Editor zuweisen (Menu $1 then clic on $2)

edit_title1=Konfiguration hinzuf�gen
edit_title2=Konfiguration bearbeiten
edit_header=Bearbeitungs Assisitent f�r die Konfiguration $1
edit_headernew=Assistent zum Erstellen von Konfigurationen
edit_file=Datei Inhalt
edit_add=Dateiname der zu erstellenden Konfigurationsdatei
edit_user=AWStats unter folgendem Benutzer ausf�hren
edit_ecannot=Sie sind nicht berechtigt, diese Konfiguration zu bearbeiten
edit_efilecannot=Die Konfigurationsdatei '$1' liegt nicht in einem berechtigten Verzeichniss.
save_err=Fehler beim Erzeugen der Konfigurationsdatei
save_efile=Dateiname f�r die Konfigurationsdatei wurde nicht angegeben
save_fileexists=Konfigurationsdatei existiert bereits

save_edir=F�r das gew�hlte Verzeichniss '$1' zum speichern der Konfigurationen existieren keine Webmin Rechte.
save_ecannot=Sie haben keinen Berechtigung zum erzeugen/ansehen von Auswertugen unter $1
save_errLogFile=Fehler im LogFile Parameter. Das Logfile $1 existiert nicht, oder nicht lesbar
save_errLogFormat=Fehler im LogFormat Parameter. Der parameter ist nicht definiert
save_errSiteDomain=Fehler im SiteDomain Parameter. Der Parameter ist nicht definiert
save_errDirData=Fehler im DirData Parameter. Der Parameter ist nicht definiert oder das verzeichniss existiert nicht
save_dirnotexists=Verzeichniss existiert nicht

update_title=Statistik aktualisieren
update_ecannot=Sie sind nicht berechtigt die Statistik zu aktualisieren
scheduled_title=Statistik Aktualisierung einplanen
scheduled_ecannot=Sie sind nicht berechtigt, die Statistik zu aktualisieren oder einzuplanen

log_create_log=Erstellte Awstats Konfigurationsdatei $1
log_modify_log=AWStats Konfigurationsdatei ge�ndert $1
log_delete_log=Gel�schte AWStats Konfigurationsdatei $1
log_generate_log=Aktualisiere folgende AWStats Konfigurationsdatei $1

acl_view=Darf Auswertungen f�r Bestehende Konfigurationen anzeigen ?
acl_global=Darf AWStats Konfigurationen bearbeiten ?
acl_add=Darf Konfigurationen bearbeiten und l�schen ?
acl_update=Darf Auswertungen f�r Bestehende Konfigurationen anzeigen ?

acl_user=AWStats unter folgendem Unix benutzer ausf�hren
acl_this=Aktueller Webmin Benutzer
acl_any=Jeder Benutzer
acl_dir=Berechtigung zum Ansehen und Berabeiten von Konfigurationen unter

help_title=Hilfe Seite
help_subtitle=<b>Help for config file parameter $1</b>
help_subtitleplugin=<b>Help for plugin $1</b>
help_notfound=Parameter wurde nicht in Ihrer Beispiel Datei $1 gefunden.<br>May be your AWStats version does not support it, so no help is available. 
help_help=Hilfeawstats/lang/zh_TW.Big50000664000175000017500000000757612410217071017210 0ustar  ldestailleurldestailleurall_gb=GB
all_mb=MB
all_kb=KB
all_b=Bytes

index_title=AWStats �O���ɤ��R��
index_version=AWStats ���� $1
index_eawstats=�O���ɤ��R���O $1 �b�z���t�Τ��䤣��. �]�\ AWStats �|���w��, �Ϊ̱z�� <a href='$2'>�ҲղպA</a> �����D.
index_econfdir=AWStats �]�w�ؿ� $1 �b�z���t�Τ��䤣��. �]�\ AWStats �|���w��, �Ϊ̱z�� <a href='$2'>�ҲղպA</a> �����D.
index_econf=AWStats �]�w�ɽd�� $1 �b�z���t�Τ��䤣��. �]�\ AWStats �|���w��, �Ϊ̱z�� <a href='$2'>�ҲղպA</a> �����D.
index_cgi=<a href='$1'>CGI ��|�S���]�w</a>
index_add=�s�W�@�Ӥ��R�]�w��.
index_path=�]�w��
index_type=���
index_size=�j�p
index_create=�إ�/�ק��
index_databasesize=��Ʈw�ɮפj�p
index_noconfig=�䤣��]�w�ɩΤw���R��.
index_edit=�s��/�R���]�w
index_del=�R���]�w
index_scheduled=�w�Ƶ{��s
index_sched2=�Ƶ{
index_now=�{�b
index_update=��s���A
index_update2=�ߧY��s
index_view=�˵����A
index_view2=�˵�
index_return=�]�w�ɦC��
index_eversion=AWStats ���O $1 �b�z���t�Τ��������O $2, ���O�o�ӼҲնȤ䴩���� $3 �ΥH�W����.
index_egetversion=AWStats �������o����. ���O $1 �Ǧ^ : $2.<br>�]�\�z�� <a href='$3'>�ҲղպA</a> �����D.
index_advanced1=�˵� OPTIONAL SETUP SECTION �U���ﶵ 
index_advanced2=�˵� OPTIONAL ACCURACY SETUP SECTION �U���ﶵ 
index_advanced3=�˵� OPTIONAL APPEARANCE SETUP SECTION �U���ﶵ 
index_advanced4=�˵� OPTIONAL PLUGINS SETUP SECTION �U���ﶵ 
index_advanced5=�˵� OPTIONAL EXTRA SETUP SECTION �U���ﶵ 
index_hideadvanced=���ëD���n�ﶵ
index_nodirallowed=�z���ϥΪ� $1 �����\�s�� AWStats �]�w��.
index_allowed=�z���b�� $1 ���\�z�˵��M�ק����ɨ� (�Ϊ̬O�s����)
index_changeallowed=�b AWStats �]�w�ɤ��i�s������|�A�z�i�b webmin ����� Webmin �ϥΪ̪�����v�����]�w (��� $1 �M���� $2)
index_viewall=�˵��������Ī��]�w��

edit_title1=�s�W�]�w��
edit_title2=�s��]�w��
edit_header=�]�w�� $1 ���U�s�边
edit_headernew=�]�w�ɲ��ͧU��
edit_file=�ɮפ��e
edit_add=�n�s�W���]�w�ɦW
edit_create_by_copy=�q�w�����]�w�ɽƻs��t�~�@�ӷs���]�w��
edit_create_from_scratch=�إߤ@�ӷs���]�w�ɦp�H�U�ѼƩM�]�w
edit_config_to_copy=�n�ƻs���]�w�ɦW��
edit_user=���� AWStats ���ϥΪ�
edit_ecannot=�z���i�H�s��o�ӳ]�w��
edit_efilecannot=�]�w�ɦW '$1' ���b�z�i�H�s�����ؿ���

save_err=���ͳ]�w�ɥ���
save_efile=�]�w�ɦW�S����J
save_fileexists=�]�w�ɤw�s�b
save_edir=�b�z�� Webmin �v����������\ '$1' �ؿ��g�J�z���]�w��.
save_ecannot=�z�ȥi�H�˵��β��ͳ���b $1 ���U
save_errLogFile=LogFile �ѼƳ]�w�����D. �O���� $1 ���s�b�εL�kŪ��.
save_errLogFormat=LogFormat �ѼƳ]�w�����D. �ѼƨS���w�q.
save_errSiteDomain=SiteDomain �ѼƳ]�w�����D. �ѼƨS���w�q.
save_errDirData=DirData �ѼƳ]�w�����D. �ѼƨS���w�q�Υؿ����s�b.
save_dirnotexists=��|���s�b

update_title=��s���A
update_ecannot=�z���i�H��s���A
update_run=�z�L���O�����s�@�~
update_finished=��s�@�~����
update_wait=�еy��

schedule_title=�Ƶ{���A��s
schedule_ecannot=�z�L�k��s�αƵ{��s

log_create_log=�إ� AWStats �]�w�� $1
log_modify_log=�ק� AWStats �]�w�� $1
log_delete_log=�R�� AWStats �]�w�� $1
log_generate_log=��s AWStats ���A�� $1

acl_view=�w�s�b���]�w�ɥi�H�˵�����?
acl_global=�i�H�s�� awstats �]�w��?
acl_add=�i�H�s�W�M�R���]�w��?
acl_update=�ثe�w�s�b���]�w�ɥi�H�ܧ󪬺A?
acl_user=���� AWStats �� Unix ��
acl_this=�ثe webmin �Τ�
acl_any=����
acl_dir=�Ȥ��\�˵�����M�s��]�w�b (�ؿ���|�A���i���s��)

help_title=��������
help_subtitle=<b>�]�w�ɰѼƻ��� $1</b>
help_subtitleplugin=<b>�~���M�󻡩� $1</b>
help_notfound=�ѼƦb�z���d���� $1 ���S�����.<br>�]�\�z�� AWStats �������䴩, �ҥH�S����k���Ѭ��������U.
help_help=����
help_starrequired=�w�]�ȨèS�����]�w�A�B�ӿﶵ�����]�w�Ѽ�. ����O�ť�.

viewall_title=�˵������]�w��
viewall_notallowed=�z�S���v���ݳo�Ӫ��A
viewall_allowed=�H�U��Ƨ����A���ϥΪ� $1 �i�s�����]�w��
viewall_period=�϶�
viewall_u=�ߤ@�X�ȼ�
viewall_v=�X�ȼ�
viewall_p=����
viewall_h=�I��
viewall_k=�W�e

month01=�@��
month02=�G��
month03=�T��
month04=�|��
month05=����
month06=����
month07=�C��
month08=�K��
month09=�E��
month10=�Q��
month11=�Q�@��
month12=�Q�G��awstats/lang/zh_TW.UTF-80000664000175000017500000001137612410217071017216 0ustar  ldestailleurldestailleurall_gb=GB
all_mb=MB
all_kb=KB
all_b=Bytes

index_title=AWStats 記錄檔分析器
index_version=AWStats 版本 $1
index_eawstats=記錄檔分析指令 $1 在您的系統中找不到. 也許 AWStats 尚未安裝, 或者您的 <a href='$2'>模組組態</a> 有問題.
index_econfdir=AWStats 設定目錄 $1 在您的系統中找不到. 也許 AWStats 尚未安裝, 或者您的 <a href='$2'>模組組態</a> 有問題.
index_econf=AWStats 設定檔範本 $1 在您的系統中找不到. 也許 AWStats 尚未安裝, 或者您的 <a href='$2'>模組組態</a> 有問題.
index_cgi=<a href='$1'>CGI 路徑沒有設定</a>
index_add=新增一個分析設定檔.
index_path=設定檔
index_type=類型
index_size=大小
index_create=建立/修改日期
index_databasesize=資料庫檔案大小
index_noconfig=找不到設定檔或已分析檔.
index_edit=編輯/刪除設定
index_del=刪除設定
index_scheduled=已排程更新
index_sched2=排程
index_now=現在
index_update=更新狀態
index_update2=立即更新
index_view=檢視狀態
index_view2=檢視
index_return=設定檔列表
index_eversion=AWStats 指令 $1 在您的系統中的版本是 $2, 但是這個模組僅支援版本 $3 或以上版本.
index_egetversion=AWStats 版本取得失敗. 指令 $1 傳回 : $2.<br>也許您的 <a href='$3'>模組組態</a> 有問題.
index_advanced1=檢視 OPTIONAL SETUP SECTION 下的選項 
index_advanced2=檢視 OPTIONAL ACCURACY SETUP SECTION 下的選項 
index_advanced3=檢視 OPTIONAL APPEARANCE SETUP SECTION 下的選項 
index_advanced4=檢視 OPTIONAL PLUGINS SETUP SECTION 下的選項 
index_advanced5=檢視 OPTIONAL EXTRA SETUP SECTION 下的選項 
index_hideadvanced=隱藏非必要選項
index_nodirallowed=您的使用者 $1 不允許存取 AWStats 設定檔.
index_allowed=您的帳號 $1 允許您檢視和修改紀錄檔到 (或者是連結到)
index_changeallowed=在 AWStats 設定檔中可存取的路徑,您可在 webmin 內關於 Webmin 使用者的相關權限中設定 (選單 $1 然後選擇 $2)
index_viewall=檢視全部有效的設定檔

edit_title1=新增設定檔
edit_title2=編輯設定檔
edit_header=設定檔 $1 輔助編輯器
edit_headernew=設定檔產生助手
edit_file=檔案內容
edit_add=要新增的設定檔名
edit_create_by_copy=從已有的設定檔複製到另外一個新的設定檔
edit_create_from_scratch=建立一個新的設定檔如以下參數和設定
edit_config_to_copy=要複製的設定檔名稱
edit_user=執行 AWStats 的使用者
edit_ecannot=您不可以編輯這個設定檔
edit_efilecannot=設定檔名 '$1' 不在您可以存取的目錄中

save_err=產生設定檔失敗
save_efile=設定檔名沒有輸入
save_fileexists=設定檔已存在
save_edir=在您的 Webmin 權限控制中不允許 '$1' 目錄寫入您的設定檔.
save_ecannot=您僅可以檢視或產生報表在 $1 之下
save_errLogFile=LogFile 參數設定有問題. 記錄檔 $1 不存在或無法讀取.
save_errLogFormat=LogFormat 參數設定有問題. 參數沒有定義.
save_errSiteDomain=SiteDomain 參數設定有問題. 參數沒有定義.
save_errDirData=DirData 參數設定有問題. 參數沒有定義或目錄不存在.
save_dirnotexists=路徑不存在

update_title=更新狀態
update_ecannot=您不可以更新狀態
update_run=透過指令執行更新作業
update_finished=更新作業完成
update_wait=請稍候

schedule_title=排程狀態更新
schedule_ecannot=您無法更新或排程更新

log_create_log=建立 AWStats 設定檔 $1
log_modify_log=修改 AWStats 設定檔 $1
log_delete_log=刪除 AWStats 設定檔 $1
log_generate_log=更新 AWStats 狀態給 $1

acl_view=已存在的設定檔可以檢視報表?
acl_global=可以編輯 awstats 設定檔?
acl_add=可以新增和刪除設定檔?
acl_update=目前已存在的設定檔可以變更狀態?
acl_user=執行 AWStats 為 Unix 用戶
acl_this=目前 webmin 用戶
acl_any=任何用戶
acl_dir=僅允許檢視報表和編輯設定在 (目錄路徑,不可為連結)

help_title=說明頁面
help_subtitle=<b>設定檔參數說明 $1</b>
help_subtitleplugin=<b>外掛套件說明 $1</b>
help_notfound=參數在您的範本檔 $1 內沒有找到.<br>也許您的 AWStats 版本不支援, 所以沒有辦法提供相關說明協助.
help_help=說明
help_starrequired=預設值並沒有任何設定,且該選項必須設定參數. 不能是空白.

viewall_title=檢視全部設定檔
viewall_notallowed=您沒有權限看這個狀態
viewall_allowed=以下資料夾中,找到使用者 $1 可存取的設定檔
viewall_period=區間
viewall_u=唯一訪客數
viewall_v=訪客數
viewall_p=頁面
viewall_h=點擊
viewall_k=頻寬

month01=一月
month02=二月
month03=三月
month04=四月
month05=五月
month06=六月
month07=七月
month08=八月
month09=九月
month10=十月
month11=十一月
month12=十二月awstats/config.info0000664000175000017500000000264012410217071016631 0ustar  ldestailleurldestailleurawstats=Absolute filesystem path to AWStats update statistics command<br>(Example:/usr/local/awstats/wwwroot/cgi-bin/awstats.pl),0
awstats_cgi=Absolute or relative URL path to AWStats CGI (Example:/awstats/awstats.pl),0
alt_conf=Sample AWStats configuration file,3,/etc/awstats/awstats.model.conf
plugin_1_geoip=Path for <a href="http://www.maxmind.com/en/city?rId=awstats">Maxmind GeoIP country database file</a><br><small>(if AWStats geoip plugin is enabled)</small>,3,/usr/local/share/GeoIP/GeoIP.dat
plugin_2_geoip_region_maxmind=Path for <a href="http://www.maxmind.com/en/city?rId=awstats">Maxmind GeoIP region database file</a><br><small>(if AWStats geoip_region_maxmind plugin is enabled)</small>,3,/usr/local/share/GeoIP/GeoIPRegion.dat
plugin_3_geoip_city_maxmind=Path for <a href="http://www.maxmind.com/en/city?rId=awstats">Maxmind GeoIP city database file</a><br><small>(if AWStats geoip_city_maxmind plugin is enabled)</small>,3,/usr/local/share/GeoIP/GeoIPCity.dat
plugin_4_geoip_isp_maxmind=Path for <a href="http://www.maxmind.com/en/city?rId=awstats">Maxmind GeoIP isp database file</a><br><small>(if AWStats geoip_isp_maxmind plugin is enabled)</small>,3,/usr/local/share/GeoIP/GeoIPISP.dat
plugin_5_geoip_org_maxmind=Path for <a href="http://www.maxmind.com/en/city?rId=awstats">Maxmind GeoIP org database file</a><br><small>(if AWStats geoip_org_maxmind plugin is enabled)</small>,3,/usr/local/share/GeoIP/GeoIPOrg.dat
awstats/update_stats.cgi0000664000175000017500000000161212410217071017671 0ustar  ldestailleurldestailleur#!/usr/bin/perl
# update_stats.cgi
# Run AWStats update process

require './awstats-lib.pl';
&ReadParse();

if (! $access{'update'}) { &error($text{'update_ecannot'}); }

my $conf=""; my $dir="";
if ($in{'file'} =~ /awstats\.(.*)\.conf$/) { $conf=$1; }
if ($in{'file'} =~ /^(.*)[\\\/][^\\\/]+$/) { $dir=$1; }


# Display file contents
&header($title || $text{'update_title'}, "");
print "<hr>\n";

my $command=$config{'awstats'}." -update -config=$conf -configdir=$dir";
print $text{'update_run'}.":\n<br>\n";
print "$command<br>\n";
print $text{'update_wait'}."...<br>\n";
print "<br>\n";

&foreign_require("proc", "proc-lib.pl");
proc::safe_process_exec_logged($command,$config{'user'},undef, STDOUT,undef, 1, 1, 0);


#$retour=`$command 2>&1`;
#print "$retour\n";

print "<hr>\n";
print $text{'update_finished'}.".<br>\n";
print "<br>\n";


# Back to config list
&footer("", $text{'index_return'});

0;
awstats/schedule_stats.cgi0000664000175000017500000000641512410217071020211 0ustar  ldestailleurldestailleur#!/usr/bin/perl
# schedule_stats.cgi
# schedule AWStats update process from cron or logrotate

require './awstats-lib.pl';
&ReadParse();

if (! $access{'update'}) { &error($text{'schedule_cannot'}); }

my $conf=""; my $dir="";
if ($in{'file'} =~ /awstats\.(.*)\.conf$/) { $conf=$1; }
if ($in{'file'} =~ /^(.*)[\\\/][^\\\/]+$/) { $dir=$1; }


# Display file contents
&header($title || $text{'schedule_title'}, "");

print "<hr>\n";

print "AWStats scheduled update processes detected for config file <b>".$in{'file'}."</b><br>\n";
print "<br>\n";
print "<br>\n";

# Load other modules lib
&foreign_require("cron", "cron-lib.pl");
&foreign_require("logrotate", "logrotate-lib.pl");

# For global update
print "<u>List of update processes scheduled by a <b>cron</b> task :</u><br><br>";
print "<table border width=100%>\n";
print "<tr $tb><td align=left>User</td>";
print "<td>Task</td><td align=center>Active</td><td>Note on task</td><td>Action</td></tr>\n";

my $globalupdate=0;
my $confupdate=0;
if ( foreign_installed('cron', 0) ) {
    # Show cron found
    my $regupdateall="awstats_updateall\.pl";
    my $regupdate="awstats\.pl";
    foreach my $j (grep { $_->{'command'} =~ /$regupdate/ || $_->{'command'} =~ /$regupdateall/ } &foreign_call("cron","list_cron_jobs")) {
        my $global=0;
        if ($j->{'command'} =~ /$regupdateall/) { $globalupdate++; $global=1; }
        my $confparam="";
        if ($j->{'command'} =~ /$regupdate/) {
            $j->{'command'} =~ /config=(\S+)/;
            $confparam=$1;
            if ($confparam ne $conf) { next; }
        }
        print "<tr>";
        print "<td><b>".$j->{'user'}."</b></td>";
        print "<td>".$j->{'command'}."</td>";
        print "<td align=center>".($j->{'active'}?'yes':'no')."</td>";
        if ($global) { print "<td>Update all config files</td>"; }
        else { print  "<td>Update this config file only</td>"; }
        print "<td><a href=\"/cron/edit_cron.cgi?idx=".$j->{'index'}."\">Jump to cron task</a></td>";
        print "</tr>";
    }
}
else {
    print "<tr><td colspan=4>Webmin cron module is not installed. It is required to setup cron scheduled tasks</td></tr>";
}
print "</table>";
print "<br>\n";
print "<a href=\"/cron/edit_cron.cgi?new=1\">Add an AWStats cron task to update all AWStats config files</a><br>";
print "(You must add the command \"/usr/local/awstats/tools/awstats_updateall.pl now >/dev/null\")<br>\n";
print "<br>\n";
print "<a href=\"/cron/edit_cron.cgi?new=1\">Add an AWStats cron task to update config file $conf</a><br>\n";
print "(You must add the command \"$config{'awstats'} -update -config=$conf >/dev/null\")<br>\n";
print "<br>\n";


print "<br>\n";
print "<br>\n";


# For logrotate scheduling
print "<u>List of update processes scheduled by a <b>logrotate</b> task :</u><br><br>";
print "<table border width=100%>\n";
print "<tr $tb><td>Logrotate file</td>";
print "<td>Task</td><td>Note on task</td><td>Action</td></tr>\n";

if ( foreign_installed('logrotate', 0) ) {
    print "<tr><td colspan=4>This feature is not yet available</td></tr>";
}
else {
    print "<tr><td colspan=4>Webmin logrotate module is not installed. It is required to setup logrotate scheduled tasks</td></tr>";
}
print "</table>";

print "<br><br>\n";


# Back to config list
print "<hr>\n";
&footer("", $text{'index_return'});

0;

awstats/uninstall.pl0000664000175000017500000000016112410217071017051 0ustar  ldestailleurldestailleur# uninstall.pl
# Called when webmin is uninstalled

require 'awstats-lib.pl';

sub module_uninstall
{




}

1;