#!/usr/bin/perl

#**** access log program *****
# アクセスログ解析プログラム
# Version 1.0 2002/01/30 mikio.fujio	: 初期版
#

# ファイル名の設定
$agent = "agent.log";					# ブラウザ情報格納ファイル名
$refer = "refer.log";					# リンク参照情報格納ファイル名
$host  = "host.log";					# ホスト情報格納ファイル名

# ブラウザ情報の取得
open(AGENT, "$agent");
$num = <AGENT>; chop($num);
$n = 0;
#print "num=$num\n";
while($n<$num){
  $line = <AGENT>; chop($line);         # ログの取得
  $cnt = <AGENT>; chop($cnt);           # アクセス数の取得
#print "$line $cnt\n";
  $agent{$line} = $cnt;                 # %agent への格納
  $n = $n + 1;
}
close(AGENT);

# リンク情報の取得
open(REFER, "$refer");
$num = <REFER>; chop($num);
$n = 0;
while($n<$num){
  $line = <REFER>; chop($line);         # リンク元の取得
  $cnt = <REFER>; chop($cnt);           # アクセス数の取得
  $refer{$line} = $cnt;                 # %refer への格納
  $n = $n + 1;
}
close(REFER);

# ホスト情報の取得
open(HOST, "$host");
$num = <HOST>; chop($num);
$n = 0;
while($n<$num){
  $line = <HOST>; chop($line);         # ログの取得
  $cnt = <HOST>; chop($cnt);           # アクセス数の取得
  $host{$line} = $cnt;                 # %host への格納
  $n = $n + 1;
}
close(HOST);

#HTML書き出し
print "Content-type: text/html\n\n";
print "<html>\n<head>\n";
print "<title>Access Log</title>\n";
print "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=Shift_JIS\">\n";
print "</head>\n<body>\n";
print "<h2>Access Log</h2>\n";
print "このページでは、藤尾研究室のＨＰにアクセス頂いた方のログを表\示しています";
print "<hr>\n";

#ブラウザ情報の書き出し
print "<table border=\"1\" width=\"700\">\n";
print "<tr bgcolor=\"#FFFFCC\"><td width=\"60\"><div align=\"center\">Rank</div></td>";
print "<td width=\"546\"><div align=\"center\">Browser name</div></td>";
print "<td width=\"80\"><div align=\"center\">number</div></td></tr>";
$n = 1;
@sort_agent = sort by_agent keys(%agent);
foreach(@sort_agent){
  print "<tr bgcolor=\"#FFFFCC\"><td width=\"60\"><div align=\"center\">$n</div></td>";  
  print "<td width=\"546\">$_</td>";
  print "<td width=\"80\"><div align=\"center\">$agent{$_}</div></td></tr>";
  $n = $n + 1;
}
print "</table>\n\n<p>\n\n";
print "<hr>\n";

#リンク元情報の書き出し
print "<table border=\"1\" width=\"700\">\n";
print "<tr bgcolor=\"#FFFFCC\"><td width=\"60\"><div align=\"center\">Rank</div></td>";
print "<td width=\"546\"><div align=\"center\">Link from</div></td>";
print "<td width=\"80\"><div align=\"center\">number</div></td></tr>";
$n = 1;
@sort_refer = sort by_refer keys(%refer);
foreach(@sort_refer){
  $link = $_;
  if($link eq ""){
    $link = "direct";
  }
  print "<tr bgcolor=\"#FFFFCC\"><td width=\"60\"><div align=\"center\">$n</div></td>";  
  print "<td width=\"546\">$link</td>";
  print "<td width=\"80\"><div align=\"center\">$refer{$_}</div></td></tr>";
  $n = $n + 1;
}
print "</table>\n\n<p>\n\n";
print "<hr>\n";

#ホスト情報の書き出し
print "<table border=\"1\" width=\"700\">\n";
print "<tr bgcolor=\"#FFFFCC\"><td width=\"60\"><div align=\"center\">Rank</div></td>";
print "<td width=\"546\"><div align=\"center\">Host from</div></td>";
print "<td width=\"80\"><div align=\"center\">number</div></td></tr>";
$n = 1;
@sort_host = sort by_host keys(%host);
foreach(@sort_host){
  print "<tr bgcolor=\"#FFFFCC\"><td width=\"60\"><div align=\"center\">$n</div></td>";  
  print "<td width=\"546\">$_</td>";
  print "<td width=\"80\"><div align=\"center\">$host{$_}</div></td></tr>";
  $n = $n + 1;
}
print "</table>\n\n<p>\n\n";
print "<hr>\n";

# HTML最終出力
print "</body>\n</html>\n";

sub by_agent{
  if($agent{$b} != $agent{$a}){
    $agent{$b} <=> $agent{$a};
  }else{
    $a cmp $b;
  }
}

sub by_refer{
  if($refer{$b} != $refer{$a}){
    $refer{$b} <=> $refer{$a};
  }else{
    $a cmp $b;
  }
}

sub by_host{
  if($host{$b} != $host{$a}){
    $host{$b} <=> $host{$a};
  }else{
    $a cmp $b;
  }
}
