{
    use esmith::config;
    use esmith::db;

    my %conf;
    tie %conf, 'esmith::config';

    my %dungog;
    tie %dungog, 'esmith::config', '/home/e-smith/db/dungog';

    my %accounts;

    my $fn2 = 'b';
    my $fn3 = 'c';
    my $fn4 = 'd';
    my $fn5 = 'e';
    my $f2  = db_get_prop(\%dungog, 'dansguardian', "f2") || '';
    my $f3  = db_get_prop(\%dungog, 'dansguardian', "f3") || '';
    my $f4  = db_get_prop(\%dungog, 'dansguardian', "f4") || '';
    my $f5  = db_get_prop(\%dungog, 'dansguardian', "f5") || '';

    my $auth = $squid{RequireAuth} || "";

    if ( $auth eq "ncsa")
    {
        tie %accounts, 'esmith::config', '/home/e-smith/db/proxyusers';

        my @userlist = ();
        foreach (sort keys %accounts)
        {
           push (@userlist, $_)
              if (db_get_type(\%accounts, $_) eq 'user');
        }

        foreach my $user (@userlist)
        {
            my $group  = db_get_prop(\%accounts, $user, "group")     || '';

            if ($f2 eq $group)
            {   $fn2 = 'yes';
                $OUT .= "$user=filter2\n";
            }
            elsif ($f3 eq $group)
            {   $fn3 = 'yes';
                $OUT .= "$user=filter3\n";
            }
            elsif ($f4 eq $group)
            {   $fn4 = 'yes';
                $OUT .= "$user=filter4\n";
            }
            elsif ($f5 eq $group)
            {   $fn5 = 'yes';
                $OUT .= "$user=filter5\n";
            }
        }
    }
    elsif ($auth =~ /(ident|pam)/)
    {
        tie %accounts, 'esmith::config', '/home/e-smith/db/accounts';

        my $users = db_get_prop(\%accounts, $f2, 'Members') || '';
        my @group = split (/,/, $users);
        my $group = @group || '0';
        if ($group > 0)
        {
          $fn2 = 'yes';
          foreach (sort @group)
          {  $OUT .= "$_=filter2\n"; }
        }

        $users = db_get_prop(\%accounts, $f3, 'Members') || '';
        @group = split (/,/, $users);
        $group = @group || '0';
        if ($group > 0)
        {
          $fn3 = 'yes';
          foreach (sort @group)
          { $OUT .= "$_=filter3\n"; }
        }

        $users = db_get_prop(\%accounts, $f4, 'Members') || '';
        @group = split (/,/, $users);
        $group = @group || '0';
        if ($group > 0)
        {
          $fn4 = 'yes';
          foreach (sort @group)
          { $OUT .= "$_=filter4\n"; }
        }

        $users = db_get_prop(\%accounts, $f5, 'Members') || '';
        @group = split (/,/, $users);
        $group = @group || '0';
        if ($group > 0)
        {
          $fn5 = 'yes';
          foreach (sort @group)
          { $OUT .= "$_=filter5\n"; }
        }
    }
    elsif ($auth =~ /(ldap)/)
    {
        my $uid  = db_get_prop(\%dungog, 'ldap', "memberUid") || 'memberUid';
        my $dn   = $squid{dn}   || "dc=232,dc=net";
        my $host = $squid{host} || "k8.232.net";

        $file = "/tmp/ldap";
        my $tmpfile = "/tmp/ldap2";
        unlink ($file);
        # my $file = "/etc/dansguardian/lists/filtergroupslist";

        open (FGL, ">$file") || die ("Can't open $file: $!");
        print FGL "#ldap users.\n";

        # f2
            system("ldapsearch -x -LLL -H $host -b $dn cn=$f2 $uid | /bin/grep $uid | /bin/cut -b 12-  > $tmpfile");
        print FGL "#ldapsearch -x -LLL -H $host -b $dn cn=$f2 $uid | /bin/grep $uid | /bin/cut -b 12- \n";

        open (TMP, "$tmpfile") || warn ("Can't open $tmpfile: $!");
        while (<TMP>)
        {
          chomp $_;
          unless ($_ =~ /(www|admin)/)  { print FGL "$_=filter2\n"; }
          $fn2 = 'yes';
        }
        close TMP;

        # f3
            system("ldapsearch -x -LLL -H $host -b $dn cn=$f3 $uid | /bin/grep $uid | /bin/cut -b 12-  > $tmpfile");
        print FGL "#ldapsearch -x -LLL -H $host -b $dn cn=$f3 $uid | /bin/grep $uid | /bin/cut -b 12- \n";

        open (TMP, "$tmpfile") || warn ("Can't open $tmpfile: $!");
        while (<TMP>)
        {
          chomp $_;
          unless ($_ =~ /(www|admin)/)  { print FGL "$_=filter3\n"; }
          $fn3 = 'yes';
        }
        close TMP;

        # f4
            system("ldapsearch -x -LLL -H $host -b $dn cn=$f4 $uid | /bin/grep $uid | /bin/cut -b 12-  > $tmpfile");
        print FGL "#ldapsearch -x -LLL -H $host -b $dn cn=$f4 $uid | /bin/grep $uid | /bin/cut -b 12- \n";

        open (TMP, "$tmpfile") || warn ("Can't open $tmpfile: $!");
        while (<TMP>)
        {
          chomp $_;
          unless ($_ =~ /(www|admin)/)  { print FGL "$_=filter4\n"; }
          $fn4 = 'yes';
        }
        close TMP;

        # f5
            system("ldapsearch -x -LLL -H $host -b $dn cn=$f5 $uid | /bin/grep $uid | /bin/cut -b 12-  > $tmpfile");
        print FGL "#ldapsearch -x -LLL -H $host -b $dn cn=$f5 $uid | /bin/grep $uid | /bin/cut -b 12- \n";

        open (TMP, "$tmpfile") || warn ("Can't open $tmpfile: $!");
        while (<TMP>)
        {
          chomp $_;
          unless ($_ =~ /(www|admin)/)  { print FGL "$_=filter5\n"; }
          $fn5 = 'yes';
        }
        close TMP;


        close FGL;

    }

    if ($fn5 eq 'yes')
    { db_set_prop(\%dungog, 'dansguardian', "fn", 5) || ''; }
    elsif ($fn4 eq 'yes')
    { db_set_prop(\%dungog, 'dansguardian', "fn", 4) || ''; }
    elsif ($fn3 eq 'yes')
    { db_set_prop(\%dungog, 'dansguardian', "fn", 3) || ''; }
    elsif ($fn2 eq 'yes')
    { db_set_prop(\%dungog, 'dansguardian', "fn", 2) || ''; }
    else
    { db_set_prop(\%dungog, 'dansguardian', "fn", 1) || ''; }

}
