#!/bin/bash

# Install coredump handler which saves segfault data
PATTERN_FILE="/proc/sys/kernel/core_pattern"
SAVED_PATTERN_DIR="/var/run/umop"
SAVED_PATTERN_FILE="/var/run/umop/saved_core_pattern"
HOOK_BIN="/usr/bin/umop-hook-coredump"
PATTERN="|$HOOK_BIN  %p %t"
PROCESS_DISABLE_RE='^\s*process_enabled:\s*false'
AGENT_CONFIG='/etc/umop/agent.yaml'

check() {
    if grep -E "${PROCESS_DISABLE_RE}" "${AGENT_CONFIG}" >/dev/null; then
        echo -e "\e[0;32mProcess harvest disabled\e[0m"
        echo -e "\e[0;32mSkip hook installation\e[0m"
        exit 0
    fi
}

start() {
    check
    cur=$(cat "$PATTERN_FILE")
    mkdir -p -- "$SAVED_PATTERN_DIR"
    printf "%s\n" "$cur" >"$SAVED_PATTERN_FILE"
    echo "$PATTERN" >"$PATTERN_FILE"
}

stop() {
    if test -f "$SAVED_PATTERN_FILE"; then
        cat "$SAVED_PATTERN_FILE" >"$PATTERN_FILE"
    fi
}

status() {
    cur=$(cat "$PATTERN_FILE")
    cur_first=$(printf "%s" "$cur" | sed 's/ .*//')
    # Is it already installed?
    if test x"$cur_first" = x"|$HOOK_BIN"; then # yes
        printf "Installed\n"
        return 0
    else
        printf "Not installed\n"
        return 1
    fi
}

case "$1" in
install)
    start
    ;;
uninstall)
    stop
    ;;
is-installed)
    status
    ;;
*)
    echo $"Usage: $0 {install|uninstall|is-installed}"
    exit 2
    ;;
esac
