#!/usr/bin/perl -w

# reload dansguardian if you add users to the system

package esmith;

use strict;
use Errno;
use esmith::ConfigDB;
use esmith::AccountsDB;

    our $adb = esmith::AccountsDB->open();
    our $ddb = esmith::ConfigDB->open('dungog') or die "Could not open dungog DB\n";

    # if any users exist in a group, expand template & restart dans
    my $f2  = $ddb->get_prop('dansguardian', 'f2') || '' ;
    my $users2  = $adb->get_prop($f2, 'Members')   || '' ;
    my $f3  = $ddb->get_prop('dansguardian', 'f3') || '' ;
    my $users3  = $adb->get_prop($f3, 'Members')   || '' ;
    my $f4  = $ddb->get_prop('dansguardian', 'f4') || '' ;
    my $users4  = $adb->get_prop($f4, 'Members')   || '' ;
    my $f5  = $ddb->get_prop('dansguardian', 'f5') || '' ;
    my $users5  = $adb->get_prop($f5, 'Members')   || '' ;

    my @group = split (/,/, $users2);
    my $group = @group || '0';
    my $restart = '';

    if ($group > 0)
    { $restart = 'yes'; }
    @group = split (/,/, $users3);
    $group = @group || '0';
    if ($group > 0)
    { $restart = 'yes'; }
    @group = split (/,/, $users4);
    $group = @group || '0';
    if ($group > 0)
    { $restart = 'yes'; }
    @group = split (/,/, $users5);
    $group = @group || '0';
    if ($group > 0)
    { $restart = 'yes'; }

    #restart with new group settings if dg is already running
    if ($restart eq 'yes')
    {
      if (-e '/var/run/dansguardian.pid')
      {
        system("/sbin/e-smith/expand-template /etc/dansguardian/lists/filtergroupslist");

        system("/usr/sbin/dansguardian -r") == 0
          or system("/usr/sbin/dansguardian") == 0
            or warn ("Error occurred restarting dansguardian.\n");
      }
    }

