#!/usr/bin/perl

# Dieses vom Kunden gelieferte Script wurde von fany auf Wunsch von Team Admin
# und Jeremy überarbeitet, damit wir uns den Shell-Wrapper sparen können.
# Das Hauptdesignkriterium war, den Code des Kunden möglichst minimal zu
# modifizieren.

use strict;
use vars qw($job $start $ende $status @entries $zeroInput);
use vars qw($opt_h $opt_H $opt_u);

use Getopt::Std qw(getopt);
use LWP::Simple qw(get);

getopt 'hH:u:';

if ($opt_h) {
    print "Usage: $0 -H <host> (-u <urlpart>)";
    exit 0;
}

die "A -H(ost) must be given!\n" unless defined $opt_H;

# TODO?: Check if Preview is running, ex. it is not running when we get this with curl:
# "Transmission problems prevent your transaction from being processed correctly"

$opt_u = "promarkt-Site" unless defined $opt_u;
my $urlpart = $opt_u;
my $URL = "http://$opt_H/is-bin/INTERSHOP.enfinity/WFS/$urlpart/-/-/-/ViewProcessChain-Monitor";

my $page;
eval {
    local $SIG{ALRM} = sub { die "TIMEOUT\n" };
    alarm 10;

    $page = get($URL);
};

if ( !$page || $page =~ /A major error occured/ ) {
    print "Network problems (or Preview not running)?\n";
    exit 1;
}

@entries = $page =~ m|<td>(.*?)</td>|g;

map { s/&nbsp;/ /g; s/CEST//; s/ $//; } @entries;
($job, $start, $ende, $status) = splice (@entries, @entries-4);

print "$URL:";
if ($status eq "finished") { print uc($status) . " '$job' (Start: $start, Ende: $ende)" }
else                       { print uc($status) . " '$job' (Start: $start)" }
print "</a>\n";

# the exit values (0..3) are colored in the nagios like this:
# 0: green, 1: yellow, 2: red, 3: orange
exit 0 if ($status eq 'finished'); # war vorher implizit
exit 0 if ($status eq "running");
exit 2 if ($status eq "failed");
exit 2 if ($status eq "crashed");
exit 3;
