#!/bin/sh
# Licensed under GPLv2+
# call with nagios host name
CONFPATH="/etc/nrpe-logs"
HOSTNAME="$1"

. shell-config


help() {
    :
}

clean() {
    rm -f "$REGEXP"
    rm -f "$TIMES"
}

add() {
    REGEXP="$(mktemp -t mXXXX)"
    TIMES="$(mktemp -t mXXXX)"
    while : ;
    do
	Xdialog --wizard --separator '|'  \
	    --stdout  \
	    --3inputsbox \
	    "Выборка из логов" 20 70 "Название файла лога" "/var/log/audit.log" \
	    "Формат времени в логе, POSIX time options \n - man time для описания формата" "%b %d %H:%M:%S"\
	    "Регулярное выражение" "^SECURITY$" > "$REGEXP"
	if [ $? -gt 0 ]; then
	    clean
	    exit 1
	fi

	Xdialog --wizard --separator '|'  \
	    --stdout  \
	    --3inputsbox \
	    "Выборка из логов" 20 70 "За время в минутах " "5" \
	    "Столько-то раз - warning" "6" \
	    "Столько-то раз - critical" "12" > "$TIMES"

	case $? in
	0)  break;;
	2)  help;;
	1)  clean
	    exit 1;;
	esac
    done
}

save() {
    echo -n "$HOSTNAME|" >> "$CONFPATH/defined_$HOSTNAME"
    echo -n "$(cat "$REGEXP")|" >> "$CONFPATH/defined_$HOSTNAME"
    echo "$(cat "$TIMES")" >> "$CONFPATH/defined_$HOSTNAME"
}

generate() {
# generate local nagios config and remote check_log_N files
    for i in $CONFPATH/defined_*; do
	[ "$i" != "$CONFPATH/defined_*" ] ||
	    break
	NUM=0
	IFS="|"
	ssh "$HOSTNAME" mkdir -fp /var/lib/nagwad/checks
	while read hostname log timeformat regexp time warntimes crittimes; do
	    ssh "$HOSTNAME" /bin/sh -c "echo '#!/bin/bash\n/usr/sbin/check_timed_logs.pl -pattern \"$regex\" -logfile \"$log\" -timepattern \"$timeformat\" -interval \"$time\" -warning \"$warntimes\" -critical \"$crittimes\"' >> '/usr/lib/nagwad/check_timed_logs_$NUM'"
	    generate_service_entry "$hostname" "$NUM"
	    NUM=$(($NUM +1))
	done < "$i"
    done
}

generate_service_entry() {
# $1 is host $2 is name #what
#
    cat /etc/nagios/objects/p8.cfg <<EOF
    define service {
	use generic-service
	host_name $1
	service_description $2
	check_command check_nrpe|check_timed_logs_$NUM
    }
EOF
    ssh "$1" /bin/sh -c "echo 'command[check_timed_logs_$NUM]=/var/lib/nagwad/checks/check_timed_logs_$NUM' >> /etc/nagios/nrpe.cfg"
}


trap clean EXIT
[ -d "$CONFPATH" ] ||
    mkdir -pm755 -- "$CONFPATH"
add
save

