#!/bin/bash

PYTHON_HOOK_PATH="/var/lib/umop/resources/pyhook"
PYTHON_PTH_FILE="umopagent.pth"
PYTHON_HANDLER_FILE="umopagent_handler3.py"
LIB64_PATH="/usr/lib64"
SITE_PACKAGES="site-packages"
PYTHON_BINS=$(find /usr/lib64 -type d -name site-packages | sort -nr | cut -d '/' -s -f 4)
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
    for i in $PYTHON_BINS; do
        if [[ $i = "python3"* ]]; then
            if [ ! -f "${LIB64_PATH}/${i}/${SITE_PACKAGES}/${PYTHON_PTH_FILE}" ]; then
                cp "${PYTHON_HOOK_PATH}/${PYTHON_PTH_FILE}" "${LIB64_PATH}/${i}/${SITE_PACKAGES}/${PYTHON_PTH_FILE}"
            fi
            if [ ! -f "${LIB64_PATH}/${i}/${SITE_PACKAGES}/${PYTHON_HANDLER_FILE}" ]; then
                cp "${PYTHON_HOOK_PATH}/${PYTHON_HANDLER_FILE}" "${LIB64_PATH}/${i}/${SITE_PACKAGES}/${PYTHON_HANDLER_FILE}"
            fi
            # 防止受abrt影响
            if [ -f "${LIB64_PATH}/${i}/${SITE_PACKAGES}/abrt3.pth" ]; then
                mv "${LIB64_PATH}/${i}/${SITE_PACKAGES}/abrt3.pth" "${LIB64_PATH}/${i}/${SITE_PACKAGES}/abrt3.pth.bak"
            fi
        fi
    done
}

stop() {
    for i in $PYTHON_BINS; do
        if [[ $i = "python3"* ]]; then
            if [ -f "${LIB64_PATH}/${i}/${SITE_PACKAGES}/${PYTHON_PTH_FILE}" ]; then
                rm -f "${LIB64_PATH}/${i}/${SITE_PACKAGES}/${PYTHON_PTH_FILE}"
            fi
            if [ -f "${LIB64_PATH}/${i}/${SITE_PACKAGES}/${PYTHON_HANDLER_FILE}" ]; then
                rm -f "${LIB64_PATH}/${i}/${SITE_PACKAGES}/${PYTHON_HANDLER_FILE}"
            fi
            if [ -f "${LIB64_PATH}/${i}/${SITE_PACKAGES}/abrt3.pth.bak" ]; then
                mv "${LIB64_PATH}/${i}/${SITE_PACKAGES}/abrt3.pth.bak" "${LIB64_PATH}/${i}/${SITE_PACKAGES}/abrt3.pth"
            fi
        fi
    done
}

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