#!/usr/bin/perl -w
#%# family=auto
#%# capabilities=autoconf

$showruntimestats="/opt/open-xchange/sbin/showruntimestats";
$showexec="$showruntimestats -i";

if ( $ARGV[0] and $ARGV[0] eq "autoconf") {
    if (-x $showruntimestats) {
        print "yes\n";
        exit 0;
    } else {
        print "no\n";
        exit 0;
    }
}

if ( $ARGV[0] and $ARGV[0] eq "config") {
    my @shortvals;
    my @longvals;
    open(SHOWRUNTIME, "$showexec |") || die "can not read monitoring output";
    while (<SHOWRUNTIME>) {
        chomp;
        if ( $_ =~ /SessionD Toolkit,NumberOfShortTermSessions/ ) {
            s/.*\= \[(.*)\]/$1/;
            @shortvals = split(/,[\s]/, $_);
        }
        if ( $_ =~ /SessionD Toolkit,NumberOfLongTermSessions/ ) {
            s/.*\= \[(.*)\]/$1/;
            @longvals = split(/,[\s]/, $_);
        }
    }
    close(SHOWRUNTIME);
    print "multigraph ox_sessioncontainer\n";
    print "graph_title Sessions per Container combined\n";
    print "graph_args --base 1000 -l 0\n";
    print "graph_category Open Xchange\n";
    print "graph_vlabel Number total\n";
    print "short.label Short term sessions combined\n";
    print "short.draw AREASTACK\n";
    print "long.label Long term sessions combined\n";
    print "long.draw AREASTACK\n";

	print "multigraph ox_sessioncontainer.short\n";
	print "graph_title Short term sessions\n";
	print "graph_args --base 1000 -l 0\n";
	print "graph_category Open Xchange\n";
	print "graph_vlabel Number total\n";
	my $colour = 0;
	for (my $i = 0; $i < @shortvals; $i++) {
		print "short$i.label Short term session container $i\n";
		print "short$i.draw AREASTACK\n";
		print "short$i.colour COLOUR$colour\n";
		$colour = $colour + 1;
		if ($colour == 29) {
			$colour = 0;
		}
	}
	
	print "multigraph ox_sessioncontainer.long\n";
	print "graph_title Long term sessions\n";
	print "graph_args --base 1000 -l 0\n";
	print "graph_category Open Xchange\n";
	print "graph_vlabel Number total\n";
	my $colour = 0;
	for (my $i = 0; $i < @longvals; $i++) {
		print "long$i.label Long term session container $i\n";
		print "long$i.draw AREASTACK\n";
		print "long$i.colour COLOUR$colour\n";
		$colour = $colour + 1;
		if ($colour == 29) {
			$colour = 0;
		}
	}
    exit 0
}

my @shortvals;
my @longvals;
open(SHOWRUNTIME, "$showexec |") || die "can not read monitoring output";
while (<SHOWRUNTIME>) {
    chomp;
    if ( $_ =~ /SessionD Toolkit,NumberOfShortTermSessions/ ) {
        s/.*\= \[(.*)\]/$1/;
        @shortvals = split(/,[\s]/, $_);
    }
    if ( $_ =~ /SessionD Toolkit,NumberOfLongTermSessions/ ) {
        s/.*\= \[(.*)\]/$1/;
        @longvals = split(/,[\s]/, $_);
    }
}
close (SHOWRUNTIME);

my $shortcombined = 0;
my $longcombined = 0;

print "multigraph ox_sessioncontainer.short\n";
for (my $i = 0; $i < @shortvals; $i++) {
	print "short$i.value $shortvals[$i]\n";
	$shortcombined = $shortcombined + $shortvals[$i];
}

print "multigraph ox_sessioncontainer.long\n";
for (my $i = 0; $i < @longvals; $i++) {
	print "long$i.value $longvals[$i]\n";
	$longcombined = $longcombined + $longvals[$i];
}

print "multigraph ox_sessioncontainer\n";
print "short.value $shortcombined\n";
print "long.value $longcombined\n";