IPが入ったファイルからHOST一覧を作成

提供: TeaPot
移動: 案内, 検索

「NucleusのブロックするIPアドレスを同期」をしたとき、IPアドレスが並んだファイルが作成されますが、それを元にHOST一覧を作成するもの。

gethostbyaddrという関数でHOSTを取得するのですが、時間がかかるので、MySQLで変換結果をキャッシュするようにしてあります。そのため、2回目以降は速いです。

showhost.php

<?
$ipfile = "/tmp/blockip.pbl";
 
$DBHOST = "localhost";
$DBNAME = "test";
$DBUSER = "test";
$DBPASS = "test";
$DB_TABLE = "showhost";
 
if (!($mysql = mysql_connect($DBHOST,$DBUSER,$DBPASS))) {
echo "Can't Connect DBHost $DBHOST (1)";}
 
if (!(mysql_select_db($DBNAME))) {
echo "Can't Connect Database $DBNAME (2)";}
 
$result = mysql_query('CREATE TABLE IF NOT EXISTS showhost
 (id int(11) unsigned NOT NULL auto_increment, ip char(15),
  host varchar(100) default NULL, PRIMARY KEY  (id) )');
 
$excludes = file($ipfile);
 
print "<TABLE><TBODY>";
foreach($excludes as $exclude_ip)
{
print "<TR><TD>".chop($exclude_ip)."</TD><TD>";
print get_host(chop($exclude_ip))."</TD></TR>\n";
}
print "</TBODY></TABLE>";
 
exit();
 
//===============================================================
 
function get_host($ip)
{
  $query = "SELECT * FROM showhost WHERE ip='".$ip."'";
  $res = mysql_query($query);
  $num = mysql_num_rows($res);
 
  if ($num == 0) {
    $host = gethostbyaddr($ip);
    $query2 = "INSERT INTO showhost VALUES ('','$ip', '$host')";
    mysql_query($query2);
    $host .= ' ***NEW!!';
  } else {
    $row = mysql_fetch_object($res);
    $host = $row->host;
  }
 
  return $host;
}
 
?>

(2006/12/14)

個人用ツール
名前空間

変種
操作
案内
情報
ツール