#!/usr/bin/perl

# usage: generate-raddb radius-server/raddb/dictionary* >raddb.pm
#  i.e.: generate-raddb ~/freeradius/freeradius-1.0.5/share/dictionary* ~/wirelessoceans/dictionary.ip3networks ~/wtxs/dictionary.mot.canopy >raddb.pm.new
print <<END;
package FS::raddb;
use vars qw(%attrib);

%attrib = (
END

while (<>) {
  next if /^(#|\s*$|\$INCLUDE\s+)/;
  next if /^(VALUE|VENDOR|BEGIN\-VENDOR|END\-VENDOR)\s+/;
  /^(ATTRIBUTE|ATTRIB_NMC)\s+([\w\-\/]+)\s+/ or die $_;
  $attrib = $2;
  $dbname = lc($2);
  $dbname =~ s/[\-\/]/_/g;
  $dbname = substr($dbname,0,24);
  while ( exists $hash{$dbname} ) {
    #warn $dbname;
    $dbname =~ s/(.)$//;
    my $w = $1;
    $w =~ tr/_a-z0-9/a-z0-9_/;
    $dbname = "$dbname$w";
  }
  $hash{$dbname} = $attrib;
  #print "$2\n";
}

foreach ( sort keys %hash ) {
#  print "$_\n" if length($_)>24;
#  print substr($_,0,24),"\n" if length($_)>24; 
#  $max = length($_) if length($_)>$max;
# have to fudge things since everything >24 is *not* unique

  #print "  '". substr($_,0,24). "' => '$hash{$_}',\n";
  print "  '$_' ". ( " " x (24-length($_) ) ). "=> '$hash{$_}',\n";
}

print <<END;

  #NETC.NET.AU (RADIATOR?)
  'authentication_type'      => 'Authentication-Type',

  #wtxs (dunno)
  #'radius_operator'          => 'Radius-Operator',

);

1;
END