#!/usr/bin/perl -w

use POSIX;
use strict;
use JSON;
use Data::Dumper;

$ENV{'PATH'}='/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin';
$ENV{'BASH_ENV'}=''; 
$ENV{'ENV'}='';
my $PROGNAME = "check_icinga";
my $ICINGA_CONFIG = '/etc/zabbix/zabbix_agent2.d/icinga.json';

if (!$ARGV[0]) {
	die ("No key");
}

open(my $fh, '<', $ICINGA_CONFIG) or die "Nelze otevřít soubor $ICINGA_CONFIG: $!";
my $json_text = do { local $/; <$fh> }; # Načte celý soubor naráz
close($fh);

my $data = eval { decode_json($json_text) };
if ($@) {
    die "Chyba při parsování JSONu: $@";
}

foreach my $check ( @$data ) {
	my $cmd = $check->{'{#ICINGA_CMD}'};
	my $key = $check->{'{#ICINGA_KEY}'};

	if ($key eq $ARGV[0]) {
		my $output = qx"$cmd 2>&1";
		my $rc = $? >> 8;
		
		my %json = (
			"OUTPUT" => $output, 
			"RETURN" => $rc
		);
		print JSON->new->utf8->canonical->pretty->encode(\%json);
		exit();
	}
}

die ("Key $ARGV[0] not found in $ICINGA_CONFIG");
