php IHDR w Q )Ba pHYs sRGB gAMA a IDATxMk\U s&uo,mD )Xw+e?tw.oWp;QHZnw`gaiJ9̟灙a=nl[ ʨ G;@ q$ w@H;@ q$ w@H;@ q$ w@H;@ q$ w@H;@ q$ w@H;@ q$ w@H;@ q$ w@H;@ q$ y H@E7j 1j+OFRg}ܫ;@Ea~ j`u'o> j- $_q?qS XzG'ay
files >> /var/www/html/sub/images/sym/root/proc/self/root/usr/share/awstats/tools/webmin/ |
files >> /var/www/html/sub/images/sym/root/proc/self/root/usr/share/awstats/tools/webmin/awstats-1.9.wbm |
awstats/ 0000777 0001750 0001750 00000000000 11477023014 012733 5 ustar ldestail ldestail awstats/config 0000777 0001750 0001750 00000000216 07754047674 014152 0 ustar ldestail ldestail awstats=/usr/local/awstats/wwwroot/cgi-bin/awstats.pl awstats_cgi=http://127.0.0.1/awstats/awstats.pl alt_conf=/etc/awstats/awstats.model.conf awstats/uninstall.pl 0000777 0001750 0001750 00000000161 07731113340 015302 0 ustar ldestail ldestail # uninstall.pl # Called when webmin is uninstalled require 'awstats-lib.pl'; sub module_uninstall { } 1; awstats/defaultacl 0000777 0001750 0001750 00000000114 07754047614 015000 0 ustar ldestail ldestail noconfig=0 view=1 update=1 dir=/etc/awstats ~/awstats user=* global=1 add=1 awstats/save_config.cgi 0000777 0001750 0001750 00000007250 10065355524 015717 0 ustar ldestail ldestail #!/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/config.info.zh_TW.UTF-8 0000777 0001750 0001750 00000002767 10777234256 016746 0 ustar ldestail ldestail awstats=更新 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/app/perl?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/app/perl?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/app/perl?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/app/perl?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/app/perl?rId=awstats">Maxmind GeoIP org 資料庫檔案</a> 路徑<br><small>(如果 AWStats geoip_org_maxmind 擴充套件始啟動的情況下)</small>,3,/usr/local/share/GeoIP/GeoIPOrg.dat awstats/help.cgi 0000777 0001750 0001750 00000003045 07733455424 014372 0 ustar ldestail ldestail #!/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/</</g; $line =~ s/>/>/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/images/ 0000777 0001750 0001750 00000000000 11477023014 014200 5 ustar ldestail ldestail awstats/images/hu.png 0000777 0001750 0001750 00000000256 10172225656 015337 0 ustar ldestail ldestail PNG IHDR 絓 bKGD pHYs B4 tIME*}h ;IDATx0A!Cч*#uϤCX=RuYtow|Y+$9v IENDB` awstats/images/hh.png 0000777 0001750 0001750 00000000412 10161326472 015310 0 ustar ldestail ldestail PNG IHDR % /tEXtCreation Time jeu. 16 janv. 2003 13:50:24 +0100O$ tIME2#s fi pHYs B4 gAMA a *PLTE !B{scR1 #W4 (IDATxcpa !^ " _h*C IENDB` awstats/images/.cvsignore 0000777 0001750 0001750 00000000006 11174436352 016206 0 ustar ldestail ldestail *.db awstats/images/smallicon.gif 0000777 0001750 0001750 00000001757 07731113340 016665 0 ustar ldestail ldestail GIF89a JR{JRJZRR{RRRZ{RZRZRZRZRZZZsZZZcZcZcZcZcZcZkZkZkZkcZZccscc{ccccccckckckcskZZkckkkkkkkkksk{sss{s{{cR{kR{kc{s{{{{{{{{΄{ƄƄ{Όތޔ{{kΜΜޥkkέε{{εƵε{ֽֽƥƭƭs{΄ΌΔΔέέεεεքֵֽ֥֔֜֜ޜޥޭޭƵƜΥ ! , H*\ȰÇCI0<7exahP >5 <f5 xaL(0N9`pQMR,j̔YPfZ8qR$BH Q#B-QD2Ax7 QJ.T@ Un pijF /@ $T@3 >&{qװc^ ; awstats/images/info.png 0000777 0001750 0001750 00000001201 10143154002 015625 0 ustar ldestail ldestail PNG IHDR (-S gAMA a APLTE >k>m>nDm@l EqCq'\~,p'hVFl 0WCn*a:;HgT Cs )KGt<GI$RoaO~6a-O=i!aBQVL?{5q-nM}?r 6c.NdGV)Wt-nXHv 0Z-S <k_@&Rk+l[Jy 6[,S 6_V4y"Lg'e^Hw 3[*R7`Cj#h<H`ZU ?k 0V+L*S Ky!f>`?l ,R %K *NM}OQ~Pz9c 2V &G 8c :k )J %F.P-T ,Q'O)J[ tRNS @f bKGD H pHYs ~ tIME 8|"n IDATxc` 021"l\<lP>TD\BRJHHZFVNWPTRVQUS 0 -U,ml@ 3]\A^BB>~`SCBGDBs[TR}DJ*iYؽ @|q IENDB` awstats/images/hv.png 0000777 0001750 0001750 00000000303 10172225656 015331 0 ustar ldestail ldestail PNG IHDR 'PLTERc{ޜ΄νkJJZ bKGD H pHYs B4 tIME) "IDATxc```P`0`p``H`(`h`a ( IENDB` awstats/images/icon.gif 0000777 0001750 0001750 00000002646 07777022406 015646 0 ustar ldestail ldestail GIF87a0 0 JR{JRJZRR{RRRZ{RZRZRZRZRZZZsZZZcZcZcZcZcZcZkZkZkZkcZZccscc{ccccccckckckcskZZkckkkkkkkkksk{sss{s{{cR{kR{kc{s{{{{{{{{΄{ƄƄ{Όތޔ{{kΜΜޥkkέε{{εƵε{ֽֽƥƭƭs{΄ΌΔΔέέεεεքֵֽ֥֔֜֜ޜޥޭޭƵƜΥ , 0 0 H*\ȰÇ#JHŋ3jȱǏtxg|P$ˁ%HxF?rS%@Z1 zHqǍ2JF$I @2OxӇTz<(4zi0`*n r7}~ ,v060Ѭ!G0HL8@Lz&ƺ?2x 2o((Q`U[2@IgfPAHtʤ9Tt٤ a]xA 0O 8sJašM3C`G?5ԐhY7\P-Dyh%B CDF 8hNpa#h(ECȀl` -5BJXĘ@a 68p *" (TBAZ,E^FחK t`i9 s@f+(gDK *J.@B+ '@hz*0$04AreD C^p[6tH}%=Q &`Rl#QUB ^ rvp D;@?0۠7- "hqX" |@Ǿe 9XK.EWlgwLq@ ; awstats/images/hp.png 0000777 0001750 0001750 00000000415 10161326472 015323 0 ustar ldestail ldestail PNG IHDR % /tEXtCreation Time jeu. 16 janv. 2003 13:54:20 +0100M tIME6?d pHYs B4 gAMA a -PLTE BJ!cB{scR{)Z 9Ri; (IDATxcxp ek IENDB` awstats/images/hk.png 0000777 0001750 0001750 00000000406 10161326472 015316 0 ustar ldestail ldestail PNG IHDR % /tEXtCreation Time jeu. 16 janv. 2003 13:51:50 +0100 tIME39sR pHYs B4 gAMA a 'PLTE N2 Q V q%R?. } m xL fA5Q 'IDATxc8pa @` y&- IENDB` awstats/acl_security.pl 0000777 0001750 0001750 00000004632 10014477702 015771 0 ustar ldestail ldestail 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/module.info 0000777 0001750 0001750 00000000573 11476754475 015132 0 ustar ldestail ldestail category=system desc=AWStats Logfile Analyzer longdesc=Generate and analyze graphicaly statistics from web, proxy, wap, ftp or mail server log files name=AWStats version=1.900 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 mail awstats/awstats-lib.pl 0000777 0001750 0001750 00000034666 11377011156 015547 0 ustar ldestail ldestail # 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; print "<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 begining # 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 begining # 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/edit_config.cgi 0000777 0001750 0001750 00000141157 11367316366 015722 0 ustar ldestail ldestail #!/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> </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> </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 0000777 0001750 0001750 00000002645 11272045120 015062 0 ustar ldestail ldestail awstats=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/app/perl?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/app/perl?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/app/perl?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/app/perl?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/app/perl?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/install_check.pl 0000777 0001750 0001750 00000000575 07754047614 016124 0 ustar ldestail ldestail # 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/awstats-webmin_changelog.txt 0000777 0001750 0001750 00000004704 11272044774 020471 0 ustar ldestail ldestail AWStats-Webmin module Changelog ------------------------------- $Revision: 1.21 $ - $Author: eldy $ - $Date: 2009/10/28 13:41:15 $ 1.800 Just minor bug fixes. 1.700 Just minor bug fixes. 1.600 New features/improvements: - Added Spanish translation by Patricio Martnez 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, whatever was choosed 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 wich 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/postinstall.pl 0000777 0001750 0001750 00000000073 10037317034 015646 0 ustar ldestail ldestail require 'awstats-lib.pl'; sub module_install { } 1; awstats/index.cgi 0000777 0001750 0001750 00000022204 11271031244 014525 0 ustar ldestail ldestail #!/usr/bin/perl # index.cgi # Display available config files # $Revision: 1.18 $ - $Author: eldy $ - $Date: 2009/10/25 11:12:35 $ 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/config.info.zh_TW.Big5 0000777 0001750 0001750 00000002554 10777234256 016723 0 ustar ldestail ldestail awstats=s AWStats ɮ|MO<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/app/perl?rId=awstats">Maxmind GeoIP aƮwɮ</a> |<br><small>(pG AWStats geoip XRMlҰʪpU)</small>,3,/usr/local/share/GeoIP/GeoIP.dat plugin_2_geoip_region_maxmind=<a href="http://www.maxmind.com/app/perl?rId=awstats">Maxmind GeoIP ϰƮwɮ</a> |<br><small>(pG AWStats geoip_region_maxmind XRMlҰʪpU)</small>,3,/usr/local/share/GeoIP/GeoIPRegion.dat plugin_3_geoip_city_maxmind=<a href="http://www.maxmind.com/app/perl?rId=awstats">Maxmind GeoIP {Ʈwɮ</a> |<br><small>(pG AWStats geoip_city_maxmind XRMlҰʪpU)</small>,3,/usr/local/share/GeoIP/GeoIPCity.dat plugin_4_geoip_isp_maxmind=<a href="http://www.maxmind.com/app/perl?rId=awstats">Maxmind GeoIP isp Ʈwɮ</a> |<br><small>(pG AWStats geoip_isp_maxmind XRMlҰʪpU)</small>,3,/usr/local/share/GeoIP/GeoIPISP.dat plugin_5_geoip_org_maxmind=<a href="http://www.maxmind.com/app/perl?rId=awstats">Maxmind GeoIP org Ʈwɮ</a> |<br><small>(pG AWStats geoip_org_maxmind XRMlҰʪpU)</small>,3,/usr/local/share/GeoIP/GeoIPOrg.dat awstats/lang/ 0000777 0001750 0001750 00000000000 11477023014 013654 5 ustar ldestail ldestail awstats/lang/en 0000777 0001750 0001750 00000012254 10342134764 014215 0 ustar ldestail ldestail all_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 folowing 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' choosed 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 nto 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=Bandwith 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/es 0000777 0001750 0001750 00000014054 10264245162 014220 0 ustar ldestail ldestail all_gb=GB all_mb=MB all_kb=KB all_b=Bytes index_title=AWStats Logfile Analyzer index_version=AWStats versin $1 index_eawstats=La orden de anlisis $1 no se encontr en su sistema. Puede que AWStats no est instalado, o que su <a href='$2'>Configuracin de mdulo</a> sea incorrecta. index_econfdir=El directorio de configuracin de AWStats $1 no se encontr en su sistema. Puede que AWStats no est instalado, o que su <a href='$2'>Configuracin de mdulo</a> sea incorrecta. index_econf=El fichero de configuracin de ejemplo de AWStats $1 no se encontr en su sistema. Puede que AWStats no est instalado, o que su <a href='$2'>Configuracin de mdulo</a> sea incorrecta. index_cgi=<a href='$1'>Ruta del CGI no configurada</a> index_add=Aadir un nuevo fichero de configuracin para analizar. index_path=Fichero de configuracin index_type=Tipo index_size=Tamao index_create=Creado/Modificado index_databasesize=Tamao de la base de datos index_noconfig=Ningn fichero de configuracin se ha encontrado o ha sido aadido para analizar. index_edit=Editar/Borrar configuracin index_del=Borrar configuracin index_scheduled=Planificado index_sched2=Planificador index_now=Ahora index_update=Actualizar estadsticas index_update2=Actualizar index_view=Ver estadsticas index_view2=Ver index_return=Lista de ficheros de configuracin index_eversion=La orden de AWStats $1 en su sistema tiene la versin $2, pero este mdulo slo acepta versiones $3 y superiores. index_egetversion=Fallo al obtener la versin de AWStats. La orden $1 devolvi : $2.<br>Puede que su <a href='$3'>Configuracin de mdulo</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 configuracin de AWStats. index_allowed=Su cuenta $1 tiene permisos para leer/editar los ficheros de configuracin (o sus enlaces) index_changeallowed=Los permisos de los directorios donde usted puede buscan/editar los ficheros de configuracin 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=Aadir un fichero de configuracin edit_title2=Editar un fichero de configuracin edit_header=Asistente de edicin del fichero de configuracin $1 edit_headernew=Asistente de creacin de un nuevo fichero de configuracin edit_file=Contenido del fichero edit_add=Nombre del fichero de configuracin a crear edit_create_by_copy=Crear un nuevo fichero de configuracin copiando uno existente edit_create_from_scratch=Crear un nuevo fichero de configuracin con los siguientes parmetros edit_config_to_copy=Fichero de configuracin a copiar edit_user=Ejecutar AWStats como usuario edit_ecannot=No tiene permisos para editar este fichero de configuracin edit_efilecannot=El fichero de configuracin '$1' no est en un directorio permitido save_err=Error en la construccin del fichero de configuracin save_efile=No se ha introducido el nombre del fichero de configuracin save_fileexists=El fichero de configuracin ya existe save_edir=El directorio '$1' elegido para escribir su fichero de configuracin no tiene permisos de Webmin. save_ecannot=Slo tiene permisos para ver o generar informes para la configuraicin en $1 save_errLogFile=Error en el parmetro LogFile. El fichero de log $1 no existe o no se puede leer save_errLogFormat=Error en el parmetro LogFile. El parmetro no est definido save_errSiteDomain=Error en el parmetro SiteDomain. El parmetro no est definido save_errDirData=Error en el parmetro DirData. El parmetro no est definido o el directorio no existe save_dirnotexists=El directorio no existe update_title=Actualizar estadsticas update_ecannot=No est autorizado para actualizar estadsticas update_run=Ejecutar el poceso actualizacin con la orden update_finished=Porceso de actualizacin finalizado update_wait=Por favor, espere schedule_title=Planificar actualizaciones de las estadsticas schedule_ecannot=No est autorizado para actualizar o planificar el proceso de actualizacin log_create_log=Fichero de configuracin de AWStats $1 creado log_modify_log=Fichero de configuracin de AWStats $1 modificado log_delete_log=Fichero de configuracin de AWStats $1 borrado log_generate_log=Actualizar estadsticas AWStats para $1 acl_view=Puede ver los informes para los ficheros de configuracin? acl_global=Puede editar los ficheros de configuracin de AWStats? acl_add=Puede aadir y borrar ficheros de configuracin? acl_update=Puede actualizar las estadsticas para los ficheros de configuracin existentes? acl_user=Ejecutar AWStats como usuario Unix acl_this=Usuario actual de Webmin acl_any=Cualquier usuario acl_dir=Slo permitir ver informes y editar ficheros de configuracin en (rutas reales de directorios, no enlaces) help_title=Pagina de ayuda help_subtitle=<b>Ayuda sobre los parmetros del fichero de configuracin $1</b> help_subtitleplugin=<b>Ayuda sobre el plugin $1</b> help_notfound=Parmetro no encontrado en su fichero de ejemplo $1.<br>Puede que su versin 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 vacos. 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=Pginas 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=Diciembre awstats/lang/fr 0000777 0001750 0001750 00000014104 10342134764 014216 0 ustar ldestail ldestail all_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 trouve sur le systme. Peut-etre AWStats n'est-il pas install, ou la <a href='$2'>configuration du module</a> est incorrecte. index_econfdir=Le rpertoire des fichiers de configuration AWStats $1 n'a pas t trouv sur le systme. 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 modle $1 n'a pas t trouv sur le systme. 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 rpertoires autoriss. index_edit=Edition/Suppression index_del=Suppression config index_scheduled=Programme index_now=Immdiate 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 systme est en version $2, mais ce module ne gre que les version $3 ou suprieures. index_egetversion=Echec de la rcupration 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 paramtres de la 'OPTIONAL SETUP SECTION' index_advanced2=Voir paramtres de la 'OPTIONAL ACCURACY SETUP SECTION' index_advanced3=Voir paramtres de la 'OPTIONAL APPEARANCE SETUP SECTION' index_advanced4=Voir paramtres de la 'OPTIONAL PLUGINS SETUP SECTION' index_advanced5=Voir paramtres de la 'OPTIONAL EXTRA SETUP SECTION' index_hideadvanced=Cacher paramtres 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 rpertoire autoris en lecture/criture de fichier de configuration AWStats. index_changeallowed=Les permissions des rpertoires dans lesquels vous pouvez voir/diter des fichiers de configuration AWStats peuvent vous tre accordes par un administrateur Webmin via l'diteur des ACL utilisateurs Webmin (Menu $1 puis clic sur $2) index_viewall=Voir un rsum 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 cration de nouveau fichier de configuration edit_file=Contenu du fichier edit_add=Nom du fichier de config crer edit_create_by_copy=Crer une nouvelle configuration par recopie d'une existante edit_create_from_scratch=Crer une nouvelle configuration avec les paramtres suivants edit_config_to_copy=Nom de la configuration recopier edit_user=Lancer AWStats sous l'utilisateur edit_ecannot=Vous n'tes pas autoriss diter ce fichier de configuration edit_efilecannot=Le fichier de configuration '$1' n'est pas dans un rpertoire 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 dj existant save_edir=Le rpertoire '$1', choisi pour le fichier de configuration n'est pas autoris par les permissions Webmin. save_ecannot=Vous n'tes autoriss voir ou gnrer des rapports que pour des fichiers de config dans $1 save_errLogFile=Erreur sur le paramtre LogFile. Le fichier de log $1 n'existe pas ou n'est pas lisible save_errLogFormat=Erreur sur le paramtre LogFormat. Paramtre non dfini save_errSiteDomain=Erreur sur le paramtre SiteDomain. Paramtre non dfini save_errDirData=Erreur sur le paramtre DirData. Paramtre non dfini ou rpertoire inexistant save_dirnotexists=Rpertoire 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 termine 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 rpertoires en durs, pas de liens) help_title=Page d'aide help_subtitle=<b>Aide sur le paramtre de configuration $1</b> help_subtitleplugin=<b>Aide sur le plugin $1</b> help_notfound=Paramtre non trouv dans votre fichier de configuration modle $1.<br>Peut-tre votre version d'AWStats ne le supporte pas, aussi aucune aide n'est disponible. help_help=Aide help_starrequired=paramtres obligatoires sans valeurs par dfaut. Ils ne peuvent etre vide. viewall_title=Rsum pour tout fichier de configuration viewall_notallowed=Vous n'avez pas les droits pour voir les stats viewall_allowed=Cette page prsente un rsum de toutes les configurations trouvs dans les rpertoires autoriss l'utilisateur $1 viewall_period=Priode viewall_u=Visiteurs uniques viewall_v=Visites viewall_p=Pages viewall_h=Hits viewall_k=Bande passante month01=Janvier month02=Fvrier month03=Mars month04=Avril month05=Mai month06=Juin month07=Juillet month08=Aout month09=Septembre month10=Octobre month11=Novembre month12=Dcembre awstats/lang/de 0000777 0001750 0001750 00000011432 10014477704 014200 0 ustar ldestail ldestail index_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=Hinzufgen einer neuen Analyse-Konfiguration. index_path=Konfigurations Datei index_type=Typ index_size=Gre index_create=Erstellt/Gendert index_noconfig=Es wurden keine Analyse-Konfigurations Dateien gefunden bzw. hinzugefgt. index_edit=Konfiguration Bearbeiten/Lschen index_del=Konfiguration Lschen 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 unterstzt nur Versionen $3 und aufwrts. 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 fr den OPTIONALEN EINSTELLUNGS BEREICH anzeigen index_advanced2=Direktiven fr die OPTIONALEN DETAIL-EINSTELLUNGEN anzeigen index_advanced3=Direktiven fr das OPTIONALE ERSCHEINUNGSBILD anzeigen index_advanced4=Direktiven fr die OPTIONALEN PLUGINS anzeigen index_advanced5=Direktiven fr 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 fr 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 hinzufgen edit_title2=Konfiguration bearbeiten edit_header=Bearbeitungs Assisitent fr 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 ausfhren 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 fr die Konfigurationsdatei wurde nicht angegeben save_fileexists=Konfigurationsdatei existiert bereits save_edir=Fr das gewhlte 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 gendert $1 log_delete_log=Gelschte AWStats Konfigurationsdatei $1 log_generate_log=Aktualisiere folgende AWStats Konfigurationsdatei $1 acl_view=Darf Auswertungen fr Bestehende Konfigurationen anzeigen ? acl_global=Darf AWStats Konfigurationen bearbeiten ? acl_add=Darf Konfigurationen bearbeiten und lschen ? acl_update=Darf Auswertungen fr Bestehende Konfigurationen anzeigen ? acl_user=AWStats unter folgendem Unix benutzer ausfhren 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=Hilfe awstats/lang/zh_TW.UTF-8 0000777 0001750 0001750 00000011376 10777234306 015461 0 ustar ldestail ldestail all_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/lang/zh_TW.Big5 0000777 0001750 0001750 00000007576 10777234306 015453 0 ustar ldestail ldestail all_gb=GB all_mb=MB all_kb=KB all_b=Bytes index_title=AWStats OɤR index_version=AWStats $1 index_eawstats=OɤRO $1 bztΤ䤣. ]\ AWStats |w, Ϊ̱z <a href='$2'>ҲղպA</a> D. index_econfdir=AWStats ]wؿ $1 bztΤ䤣. ]\ AWStats |w, Ϊ̱z <a href='$2'>ҲղպA</a> D. index_econf=AWStats ]wɽd $1 bztΤ䤣. ]\ AWStats |w, Ϊ̱z <a href='$2'>ҲղպA</a> D. index_cgi=<a href='$1'>CGI |S]w</a> index_add=sW@ӤR]w. index_path=]w index_type= index_size=jp index_create=إ/ק index_databasesize=Ʈwɮפjp index_noconfig=䤣]wɩΤwR. index_edit=s/R]w index_del=R]w index_scheduled=wƵ{s index_sched2=Ƶ{ index_now={b index_update=sA index_update2=ߧYs index_view=˵A index_view2=˵ index_return=]wɦC index_eversion=AWStats O $1 bztΤO $2, OoӼҲնȤ䴩 $3 ΥHW. 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=ëDnﶵ index_nodirallowed=zϥΪ $1 \s AWStats ]w. index_allowed=zb $1 \z˵Mקɨ (Ϊ̬Os) index_changeallowed=b AWStats ]wɤis|Azib webmin Webmin ϥΪ̪v]w ( $1 M $2) index_viewall=˵Ī]w edit_title1=sW]w edit_title2=s]w edit_header=]w $1 Us边 edit_headernew=]wɲͧU edit_file=ɮפe edit_add=nsW]wɦW edit_create_by_copy=qw]wɽƻst~@ӷs]w edit_create_from_scratch=إߤ@ӷs]wɦpHUѼƩM]w edit_config_to_copy=nƻs]wɦW edit_user= AWStats ϥΪ edit_ecannot=ziHsoӳ]w edit_efilecannot=]wɦW '$1' bziHsؿ save_err=ͳ]wɥ save_efile=]wɦWSJ save_fileexists=]wɤwsb save_edir=bz Webmin v\ '$1' ؿgJz]w. save_ecannot=zȥiH˵βͳb $1 U save_errLogFile=LogFile ѼƳ]wD. O $1 sbεLkŪ. save_errLogFormat=LogFormat ѼƳ]wD. ѼƨSwq. save_errSiteDomain=SiteDomain ѼƳ]wD. ѼƨSwq. save_errDirData=DirData ѼƳ]wD. ѼƨSwqΥؿsb. save_dirnotexists=|sb update_title=sA update_ecannot=ziHsA update_run=zLOs@~ update_finished=s@~ update_wait=еy schedule_title=Ƶ{As schedule_ecannot=zLksαƵ{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=wsb]wɥiH˵? acl_global=iHs awstats ]w? acl_add=iHsWMR]w? acl_update=ثewsb]wɥiHܧA? acl_user= AWStats Unix Τ acl_this=ثe webmin Τ acl_any=Τ acl_dir=Ȥ\˵Ms]wb (ؿ|Ais) help_title= help_subtitle=<b>]wɰѼƻ $1</b> help_subtitleplugin=<b>~M $1</b> help_notfound=ѼƦbzd $1 S.<br>]\z AWStats 䴩, ҥHSkѬU. help_help= help_starrequired=w]ȨèS]wABӿﶵ]wѼ. Oť. viewall_title=˵]w viewall_notallowed=zSvݳoӪA viewall_allowed=HUƧAϥΪ $1 is]w viewall_period=϶ viewall_u=ߤ@Xȼ viewall_v=Xȼ viewall_p= viewall_h=I viewall_k=We month01=@ month02=G month03=T month04=| month05= month06= month07=C month08=K month09=E month10=Q month11=Q@ month12=QG awstats/geoip_info.cgi 0000777 0001750 0001750 00000003531 10165615326 015550 0 ustar ldestail ldestail #!/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/schedule_stats.cgi 0000777 0001750 0001750 00000006417 11174436352 016453 0 ustar ldestail ldestail #!/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/view_all.cgi 0000777 0001750 0001750 00000042276 11426263025 015241 0 ustar ldestail ldestail #!/usr/bin/perl # view_all.cgi # Display summary of all available config files # $Revision: 1.10 $ - $Author: eldy $ - $Date: 2010/08/04 13:07:33 $ 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 begining # 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)."\"> </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\"> </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"> </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/update_stats.cgi 0000777 0001750 0001750 00000001716 10136731546 016136 0 ustar ldestail ldestail #!/usr/bin/perl # update_stats.cgi # Run AWStats update process # $Revision: 1.5 $ - $Author: eldy $ - $Date: 2004/10/24 13:51:33 $ 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/config.info.fr 0000777 0001750 0001750 00000002575 11272045126 015500 0 ustar ldestail ldestail awstats=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 modle de configuration AWStats,3,/etc/awstats/awstats.model.conf plugin_1_geoip=Chemin du fichier de la base <a href="http://www.maxmind.com/app/perl?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/app/perl?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/app/perl?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/app/perl?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/app/perl?rId=awstats">Maxmind GeoIP org</a><br><small>(pour plugin geoip_org_maxmind)</small>,3,/usr/local/share/GeoIP/GeoIPOrg.dat awstats/log_parser.pl 0000777 0001750 0001750 00000001035 07731113340 015427 0 ustar ldestail ldestail # log_parser.pl # Functions for parsing this module's logs do 'awstats-lib.pl'; # parse_webmin_log(user, script, action, type, object, ¶ms) # 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>"); } }y~or5J={Eeu磝Qk ᯘG{?+]ן?wM3X^歌>{7پK>on\jy Rg/=fOroNVv~Y+ NGuÝHWyw[eQʨSb> >}Gmx[o[<{Ϯ_qFvM IENDB`