Tillbaka till svenska Fidonet
English   Information   Debug  
FIDONEWS_OLD4   0/37224
FIDO_SYSOP   12852
FIDO_UTIL   0/180
FILEFIND   0/209
FILEGATE   0/212
FILM   0/18
FNEWS_PUBLISH   4436
FN_SYSOP   41706
FN_SYSOP_OLD1   71952
FTP_FIDO   0/2
FTSC_PUBLIC   4134/13613
FUNNY   0/4886
GENEALOGY.EUR   0/71
GET_INFO   105
GOLDED   0/408
HAM   0/16074
HOLYSMOKE   0/6791
HOT_SITES   0/1
HTMLEDIT   0/71
HUB203   466
HUB_100   264
HUB_400   39
HUMOR   0/29
IC   0/2851
INTERNET   0/424
INTERUSER   0/3
IP_CONNECT   719
JAMNNTPD   0/233
JAMTLAND   0/47
KATTY_KORNER   0/41
LAN   0/16
LINUX-USER   0/19
LINUXHELP   0/1155
LINUX   0/22112
LINUX_BBS   0/957
mail   18.68
mail_fore_ok   249
MENSA   0/341
MODERATOR   0/102
MONTE   0/992
MOSCOW_OKLAHOMA   0/1245
MUFFIN   0/783
MUSIC   0/321
N203_STAT   930
N203_SYSCHAT   313
NET203   321
NET204   69
NET_DEV   0/10
NORD.ADMIN   0/101
NORD.CHAT   0/2572
NORD.FIDONET   189
NORD.HARDWARE   0/28
NORD.KULTUR   0/114
NORD.PROG   0/32
NORD.SOFTWARE   0/88
NORD.TEKNIK   0/58
NORD   0/453
OCCULT_CHAT   0/93
OS2BBS   0/787
OS2DOSBBS   0/580
OS2HW   0/42
OS2INET   0/37
OS2LAN   0/134
OS2PROG   0/36
OS2REXX   0/113
OS2USER-L   207
OS2   0/4786
OSDEBATE   0/18996
PASCAL   0/490
PERL   0/457
PHP   0/45
POINTS   0/405
POLITICS   0/29554
POL_INC   0/14731
PSION   103
R20_ADMIN   1123
R20_AMATORRADIO   0/2
R20_BEST_OF_FIDONET   13
R20_CHAT   0/893
R20_DEPP   0/3
R20_DEV   399
R20_ECHO2   1379
R20_ECHOPRES   0/35
R20_ESTAT   0/719
R20_FIDONETPROG...
...RAM.MYPOINT
  0/2
R20_FIDONETPROGRAM   0/22
R20_FIDONET   0/248
R20_FILEFIND   0/24
R20_FILEFOUND   0/22
R20_HIFI   0/3
R20_INFO2   3249
R20_INTERNET   0/12940
R20_INTRESSE   0/60
R20_INTR_KOM   0/99
R20_KANDIDAT.CHAT   42
R20_KANDIDAT   28
R20_KOM_DEV   112
R20_KONTROLL   0/13300
R20_KORSET   0/18
R20_LOKALTRAFIK   0/24
R20_MODERATOR   0/1852
R20_NC   76
R20_NET200   245
R20_NETWORK.OTH...
...ERNETS
  0/13
R20_OPERATIVSYS...
...TEM.LINUX
  0/44
R20_PROGRAMVAROR   0/1
R20_REC2NEC   534
R20_SFOSM   0/341
R20_SF   0/108
R20_SPRAK.ENGLISH   0/1
R20_SQUISH   107
R20_TEST   2
R20_WORST_OF_FIDONET   12
RAR   0/9
RA_MULTI   106
RA_UTIL   0/162
REGCON.EUR   0/2056
REGCON   0/13
SCIENCE   0/1206
SF   0/239
SHAREWARE_SUPPORT   0/5146
SHAREWRE   0/14
SIMPSONS   0/169
STATS_OLD1   0/2539.065
STATS_OLD2   0/2530
STATS_OLD3   0/2395.095
STATS_OLD4   0/1692.25
SURVIVOR   0/495
SYSOPS_CORNER   0/3
SYSOP   0/84
TAGLINES   0/112
TEAMOS2   0/4530
TECH   0/2617
TEST.444   0/105
TRAPDOOR   0/19
TREK   0/755
TUB   0/290
UFO   0/40
UNIX   0/1316
USA_EURLINK   0/102
USR_MODEMS   0/1
VATICAN   0/2740
VIETNAM_VETS   0/14
VIRUS   0/378
VIRUS_INFO   0/201
VISUAL_BASIC   0/473
WHITEHOUSE   0/5187
WIN2000   0/101
WIN32   0/30
WIN95   0/4289
WIN95_OLD1   0/70272
WINDOWS   0/1517
WWB_SYSOP   0/419
WWB_TECH   0/810
ZCC-PUBLIC   0/1
ZEC   4

 
4DOS   0/134
ABORTION   0/7
ALASKA_CHAT   0/506
ALLFIX_FILE   0/1313
ALLFIX_FILE_OLD1   0/7997
ALT_DOS   0/152
AMATEUR_RADIO   0/1039
AMIGASALE   0/14
AMIGA   0/331
AMIGA_INT   0/1
AMIGA_PROG   0/20
AMIGA_SYSOP   0/26
ANIME   0/15
ARGUS   0/924
ASCII_ART   0/340
ASIAN_LINK   0/651
ASTRONOMY   0/417
AUDIO   0/92
AUTOMOBILE_RACING   0/105
BABYLON5   0/17862
BAG   135
BATPOWER   0/361
BBBS.ENGLISH   0/382
BBSLAW   0/109
BBS_ADS   0/5290
BBS_INTERNET   0/507
BIBLE   0/3563
BINKD   0/1119
BINKLEY   0/215
BLUEWAVE   0/2173
CABLE_MODEMS   0/25
CBM   0/46
CDRECORD   0/66
CDROM   0/20
CLASSIC_COMPUTER   0/378
COMICS   0/15
CONSPRCY   0/899
COOKING   33421
COOKING_OLD1   0/24719
COOKING_OLD2   0/40862
COOKING_OLD3   0/37489
COOKING_OLD4   0/35496
COOKING_OLD5   9370
C_ECHO   0/189
C_PLUSPLUS   0/31
DIRTY_DOZEN   0/201
DOORGAMES   0/2065
DOS_INTERNET   0/196
duplikat   6002
ECHOLIST   0/18295
EC_SUPPORT   0/318
ELECTRONICS   0/359
ELEKTRONIK.GER   1534
ENET.LINGUISTIC   0/13
ENET.POLITICS   0/4
ENET.SOFT   0/11701
ENET.SYSOP   33945
ENET.TALKS   0/32
ENGLISH_TUTOR   0/2000
EVOLUTION   0/1335
FDECHO   0/217
FDN_ANNOUNCE   0/7068
FIDONEWS   24159
FIDONEWS_OLD1   0/49742
FIDONEWS_OLD2   0/35949
FIDONEWS_OLD3   0/30874
Möte FTSC_PUBLIC, 13613 texter
 lista första sista föregående nästa
Text 2841, 206 rader
Skriven 2008-04-03 18:18:21 av Russell Tiedt (5:7105/1)
   Kommentar till text 2600 av Björn Felten (2:203/2)
Ärende: Proper nodelist format for Internet-only nodes?
=======================================================
Hello Björn.

01 Apr 08 00:32, you wrote to me:

 AV>>> ftp://ftp.grumbler.org/pub/nodelist2dns/nodelist2dns.pl working
 AV>>> on any

 RT>> Got it thank you, would have prefered python, but beggars cannot
 RT>> choosers be

 BF>    The link doesn't work for me (Error 425: Can't open data
 BF> connection), can you or someone else please mirror the file?
 BF> Preferably using http...

Seeing as the file is only 4.6KB, I'll post the content of the script here ...

#!/usr/bin/perl

my @Id    = split / /,'$Id: nodelist2dns.pl,v 1.1 2007/02/14 13:24:15 stas Exp 
$';
my $ver   = $Id[2];
my $banner= "nodelist2dns v.$ver - A perl script to convert nodelist to DNS 
(bind) zone file";
# (c) Copyleft Stas Degteff 2:5080/102@fidonet
# Distributes on GNU GPL v2, see http://www.gnu.org

# Features:
# - make "A" and "CNAME" records like "fNNNN.nMMMM.zZ" for nodes Z:MMMM/NNNN
# - make "A" and "CNAME" records like "f0.nMMMM.zZ" for host nodes Z:MMMM/0
# - IP address and domain name is taken from "BBS name" field of the nodelist
#   for nodes with IBN flag
# - parse INA flag
# - ignore "Down" and "Hold" nodes

# ToDo:
# - parse parameter of Ixx flags
# - parse flags "DOM", "DO4", "DO3", "DO2"

# What it's works.
# Scans nodelist:
# - skip any nodes without flag "IBN";
# - for lines begins with "Zone,", "Region,", "Host,", "Hub,", "Pvt,", "," 
check ",INA:"
#   and match address after this flag;
# - if "INA" not presented then math IP (numberic) address or fully-qualified
#   domain name in field 3 ("station/BBS name").

# Changelog.
# 1.0
# * first public release
# 1.1
# + parse "INA" flag
# ! parse "Region" lines (bugfix)
# ! fixed ip address detection (regexp bugfix)
# + display warnings if incorrect nodelist line is found
# + if domain name or IP address isn't specified then generate default domain
#   name (using template fXXX.nYYY.zZ.fidonet.net. "fidonet.net" is specified
#   in configuration section and may be changed)
# + multiple addresses: first taken from "INA" flag, second taken from BBS 
name
#   field

# configuration
#
my $TTL    =7200;                       # TTL for the DNS zone SOA record
my $server ="srv.grumbler.org";         # DNS host
my $person ="hostmaster.grumbler.org";  # responsible person (email address)
my $minttl =3600;                       # minimum zone's TTL
my $refresh=86400;                      # zone's refresh period
my $retry  =3600;                       # zone's retry period
my $expire =604800;                     # zone's expire time
my $default_root_domain="fidonet.net";  # domain for constucts hostname if
                                        # IP address/domain isn't specified in
                                        # nodelist line.
#
# configuration end
#
print "$banner\n";

if($#ARGV<0 || $#ARGV>1){

  print <<USAGE;

USAGE: nodelist2dns nodelist.file dns.zone.file

USAGE
  exit;
}

$person =~ s/@/./;  # if responsible person specified like name@email.domain

my ($nodelist,$zonefile)=@ARGV;

if( -f $nodelist && -r $nodelist){
  open NODELIST, $nodelist || die "Can't open $nodelist: $!\n";
}
open DNSZONE, ">$zonefile" || die "Can't create $zonefile: $!\n";

&process;

print "File '$zonefile' is generated\n";

close NODELIST;
close DNSZONE;
exit;

sub process{

$line = <NODELIST>;

# ;A FidoNet Nodelist for Friday, September 2, 2005 -- Day number 245 : 31474
# $sn="20052450";
if( $line =~ /;A FidoNet Nodelist for [\w\s,]+, (\d\d\d\d) -- Day number (\d+) 
/){
  my $year=$1;
  my $day=$2;
  $day="0".$day if($day<10);
  $day="0".$day if($day<100);
  $sn=$year.$day."0";
}else{
  die "Wrong nodelist!\n";
}

  print DNSZONE "
; FIDONET IP nodes DNS zone file
; Generated by $banner
;

\@      $TTL    IN      SOA     $server. $person. (
                        $sn     ; serial number: concantenate of year day 
version (0)
                        $refresh                ; refresh
                        $retry          ; retry
                        $expire         ; expire
                        $minttl         ; minimum TTL
                        )

\@              IN      NS      $server.

";

  my $zone,$net,$node;
  while(<NODELIST>){
    next if(/^;/);
    if(/^[^\w,]/) { print "Warning! Illegal line:\n", $_;};

    if(/^Zone,(\d+),/){
      $zone=$1;
      $net=$1;
      $node=0;
    }
    elsif(/^(Region|Host),(\d+),/){ # net/independent number
      $net=$2;
      $node=0;
    }
    elsif(/^(Down|Hold),/){      # skip nodes with Down/Hold status.
      next
    }
    elsif(/^(Hub|Pvt|),(\d+),/){ # node number
      $node=$2;
    }
    else{
      next;
    }

    s/[\r\n]$//;
    if(!/,IBN(:.*)?(,.*)?$/){ # see binkp nodes only
      next
    }
    my @host;

    if( 
/,INA:([\w][\w\.]+\.\w{2,3}|\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})(,.*)?$/){ # 
INA flag
      push @host, $1;
    }
    
if(/^(\w+)?,\d+,([\w][\w\.]+\.\w{2,3}|\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}),/ ){ 
# station name field
      push @host, $2;
    }
    if($#host==-1){
      push @host, "f$node.n$net.z$zone.$default_root_domain";
    }

    foreach $host (@host) {
      if( $host =~ /^(\d+\.){3}\d+$/ ) {
        print DNSZONE "f$node.n$net.z$zone      IN      A       $host\n";
      } else {
        print DNSZONE "f$node.n$net.z$zone      IN      CNAME   $host.\n";
      }
    }
#    print DNSZONE "f$node.n$net.z$zone IN      TXT 
\"$zone:$net/$node\@fidonet\"\n\n";

  }

}

__END__


Russell

--- GoldED+/LNX 1.1.5
 * Origin: Rusty's BBS - Bloemfontein, Free State, South Africa (5:7105/1)