現在位置: Top/IPが入ったファイルからHOST一覧を作成

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

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;
}

?>