#!/usr/bin/perl
# cpanel - resellerresourceaccounts               Copyright(c) 2012 cPanel, Inc.
#                                                           All Rights Reserved.
# copyright@cpanel.net                                         http://cpanel.net
# This code is subject to the cPanel license. Unauthorized copying is prohibited

use strict;
use warnings;

my $reseller_res_acc = '/var/cpanel/reseller-resource-accounts';
my $package_dir      = '/var/cpanel/packages';

my $isterminal = -t STDOUT ? 1 : 0;

print '<pre>' if !$isterminal;

opendir my $dh, $package_dir or die 'Cannot read from ' . $package_dir . ': ' . $! . "\n";
my @files = grep { $_ !~ /^\./ } readdir $dh;

open my $rfh, '<', $reseller_res_acc or die 'Cannot open ' . $reseller_res_acc . ' for reading: ' . $! . "\n";

my $stash = {};
while ( defined( my $line = <$rfh> ) ) {
    chomp $line;
    my ( $reseller, $packages ) = split ':', $line;
    my @packages = split ',', $packages;
    for my $package (@packages) {
        next if !$package;
        $stash->{$reseller}{$package} = 1;
    }
}
close $rfh;

for my $file (@files) {
    next if $file !~ m/^(\S+)_.+/;
    if ( !exists $stash->{$1} ) {
        print "Adding reseller $1\n";
    }
    if ( !exists $stash->{$1}{$file} ) {
        print "Adding package $file for reseller $1\n";
    }
    $stash->{$1}{$file} = 1;
}

open my $wfh, '>', $reseller_res_acc or die 'Cannot open ' . $reseller_res_acc . ' for writing: ' . $! . "\n";

for my $reseller ( sort keys %{$stash} ) {
    printf {$wfh} "%s:%s\n", $reseller, ( join ',', sort keys %{ $stash->{$reseller} } );
}
close $wfh;

print '</pre>' if !$isterminal;
