peers2bind.pl 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. #!/usr/bin/perl -w
  2. use strict;
  3. use XML::Twig;
  4. use POSIX qw(strftime);
  5. exit -1 unless (scalar(@ARGV) eq 2);
  6. #my $version = strftime "%Y%m%d%H", gmtime();
  7. my $version = strftime "%s", gmtime();
  8. print "
  9. \$TTL 7200
  10. @ IN SOA ns.gitoyen.net. hostmaster.gitoyen.net. ( $version 21600 3600 3600000 259200 )
  11. IN NS ns.gitoyen.net.
  12. IN NS ns2.gitoyen.net.
  13. @ IN MX 10 mail.gitoyen.net.
  14. ";
  15. my ($filename, $pop) = @ARGV;
  16. sub writeArecord {
  17. my ($t, $peer) = @_;
  18. if ($peer->{'att'}->{'ix'} =~ /$pop/) {
  19. my $ip = $peer->first_child('ip');
  20. my $name = $peer->first_child('name');
  21. my $as = $peer->first_child('as');
  22. my $contact = $peer->first_child('contact');
  23. if ($ip->text =~ /:/o) {
  24. print "AS" . $as->text . "\tIN AAAA ". $ip->text . "\n";
  25. } else {
  26. print "AS" . $as->text . "\tIN A ". $ip->text . "\n";
  27. }
  28. print "\tIN TXT " . $contact->text . "\n" if defined $contact;
  29. print "\tIN HINFO \"" . $name->text . "\" \"$pop\"\n" if defined $name;
  30. }
  31. }
  32. my $t = XML::Twig->new( twig_handlers => { 'peer' => \&writeArecord } );
  33. $t->parsefile($filename);