#!/usr/bin/perl

#
# script for RRDtool to collect ipac-ng statistics 
#

$step=60;
$base="/var/rrd/ipac/";
$graphbase="/tmp/ipac/";
$cfg="/etc/ipac-ng/ipac2rrd.conf";
$chains;

open CFG,$cfg;
while(<CFG>){
    if (! /^\s*#.*/ ){
	($rn,$fn)=split /:/;
        if( ! $fn eq "" ){
	    $chains{trim($rn)}=trim($fn);
        }
    }
}
close CFG;

if ($ARGV[0] eq init){
    
    mkdir $base;    
    
    # now... create base doesn't exit
    foreach $key( keys %chains ){
#	print ("$key is to file \n");
    
    $n="$base$chains{$key}";
    #print $n;
    if( ! -e $n ){
	system("rrdtool create $base$chains{$key} --step $step".
        " DS:val:GAUGE:200:0:U".
	" RRA=AVERAGE:0.5:1:1440".	# 1440 samples every minute - day
        " RRA=AVERAGE:0.5:5:2016"); # 2016 samples every 5 minute - week
    }else{
	print("skipping existing base $base$chains{$key}\n");
    }
    }
    
    exit;
}

if ($ARGV[0] eq update){

	foreach $key( keys %chains ){
	$est=0;	
	open VAL,"ipacsum --exact -s 1m 2>/dev/null |";
	while(<VAL>){
	    if ( /^\s*$key\s*\:\s*(\d*)/ ){
		#print ("$key is $1");
		$est+=$1;
	    }
	}
	close VAL;
	
	$n=time;
	system("rrdtool update $base/$chains{$key} $n:$est");
    }

    exit;
}

if ($ARGV[0] eq day){

    if( ! -X -d $graphbase){
        mkdir $graphbase;    
    }
    foreach $key( keys %chains ){
    system("rrdtool graph $graphbase/$chains{$key}.gif -t \"ipac2rrd graph\" ".
	"DEF:val=$base$chains{$key}:val:AVERAGE ".
	"AREA:val#ff0000:\"$key\" ".
	"-h 200 ");    
    }

    exit;
}

if($ARGV[0] eq remove){

    foreach $key( keys %chains ){
	unlink ("$base$chains{$key}.gif");
    }
    
}

if($ARGV[0] eq descr){

    foreach $key( keys %chains ){
	print ("$key:$graphbase$chains{$key}.gif\r\n");
    }
}


#                                                                                        
# TRIM                                                                                   
#       remove spaces                                                                    
#                                                                                        
sub trim{                                                                                
    my @out=@_;                                                                          
    for(@out){                                                                           
        s/^\s+//;                                                                        
        s/\s+$//;                                                                        
    }                                                                                    
    return wantarray? @out : $out[0];                                                    
}                                                                                        
				







