#!/usr/bin/perl
#
# Tool to export netgroups from LDAP to /etc/netgroup format.
#
# TODO:
#  - wrap long groups

use strict;
use warnings;
use Net::LDAP;

use vars qw($ldaphost $base $debug);

$debug = 0;

$ldaphost = 'ldap'                                     || $ARGV[0];
$base     = 'ou=Netgroup,dc=skole,dc=skolelinux,dc=no' || $ARGV[1];

my $ldap = new Net::LDAP($ldaphost) || die "Unable to connect to LDAP host '$ldaphost'";

my $mesg = $ldap->bind ; # as anonymous
	    
die("Unable to bind anonymously: $mesg->error") unless ( 0 == $mesg->code );

$mesg = $ldap->search(
                      base   => $base,
                      filter => '(objectClass=nisNetgroup)'
                      );

$mesg->code && die $mesg->error;

foreach my $entry ($mesg->all_entries) {
    my $name    = $entry->get_value("cn");
    my @triples = $entry->get_attribute("nisNetgroupTriple");

    print "$name";
    for my $val (@triples) {
	print " $val";
    }
    print "\n";
    $entry->dump if $debug;
}

$ldap->unbind;   # take down session
