diff options
Diffstat (limited to 'skripti')
-rwxr-xr-x | skripti/ipranges.php | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/skripti/ipranges.php b/skripti/ipranges.php new file mode 100755 index 0000000..86fbe43 --- /dev/null +++ b/skripti/ipranges.php @@ -0,0 +1,52 @@ +#!/usr/bin/php +<?php +/** + * program izpiše bind9 aclje za države v ripe območku. + * privzeto izpiše vse, vendar bind9 umre ob prevelikem številu acljev + * uporaba: ./ipranges.php si de hr it + * v argumentih lahko torej povemo, za katere države želimo aclje + */ +$a = ""; +$p = []; +$c = []; +foreach (explode("\n", file_get_contents("https://ftp.ripe.net/pub/stats/ripencc/membership/alloclist.txt")) as $l) { + if ($l == "") + continue; + if ($l[0] != " ") { + $a = trim($l); + $p[$a] = []; + $c[explode(".", $a)[0]][] = $a; + continue; + } + if (strchr(trim($l), "\t") !== false) + $p[$a]["ranges"][] = explode("\t", trim($l)); + else + $p[$a]["name"] = trim($l); +} +ksort($p); +foreach ($p as $k => $v) { + if (sizeof($argv) > 1) + if (!in_array(explode(".", $k)[0], $argv)) + continue; + echo "acl $k {\t// {$v['name']}" . PHP_EOL; + foreach ($v["ranges"] as $r) { + echo "\t{$r[1]}; //\t{$r[0]}" . PHP_EOL; + } + echo "};" . PHP_EOL; +} +foreach ($c as $k => $v) { + if (sizeof($argv) > 1) + if (!in_array($k, $argv)) + continue; + echo "acl $k {" . PHP_EOL; + foreach ($v as $a) { + echo "\t$a;\t// {$p[$a]["name"]}" . PHP_EOL; + } + echo "};" . PHP_EOL; +} +$n = str_replace("/", "", str_replace(".", "", array_shift($argv))); +echo "acl $n {" . PHP_EOL; +foreach ($argv as $a) { + echo "\t$a;" . PHP_EOL; +} +echo "};" . PHP_EOL; |