bindの設定ファイル、named.confにincludeすれば良いだけ。リストのファイルを取得して、bindの設定ファイルの書式に変換する簡単な(汚い)phpで。この出力を/etc/named/named.nullとかに吐き出してinclude。
#!/usr/bin/php -q
<?php
define("URL", "https://280blocker.net/files/280blocker_domain_%d%02d.txt");
define("CONF_FMT", ' zone "%s" {
type master;
allow-query { localnet; };
file "null.zone";
allow-update { none; };
};
');
$now = getdate();
$url = sprintf(URL, $now["year"], $now["mon"]);
$list = array_unique(file($url));
foreach($list as $l){
$trimmed = preg_replace("/[\x01-\x1F\x80-\xFF]/", "", trim($l));
if(strlen($trimmed) > 1){
if(preg_match("/\w/", substr($trimmed, 0, 1) != "#")){
printf(CONF_FMT, $trimmed);
}
}
}
?>
追記:Pythonで書き直した。