#!/bin/bash

# Common DRM Configuration
KEY_FILE="/home/user/RIDSYSPACKAGE/riptv/live/Testing_drm/enc.key"
KEY_URI="http://ajkmadurai.ridsys.in:8080/R-IPTV/getKeyfile"
KEY_IV="2aa96af110f99fd7cfccddee74f52e86"
DRM_ENABLE="0"

preset_hls()
{
    echo "Starting $STREAM_NAME..."

    MCAST=$(echo "$INPUT_URL" | cut -d: -f1)
    PORT=$(echo "$INPUT_URL" | cut -d: -f2)

    mkdir -p "$OUTPUT_PATH"

    echo "MCAST=$MCAST"
    echo "PORT=$PORT"
    echo "OUTPUT_PATH=$OUTPUT_PATH"
    echo "INPUT_INTERFACE=$INPUT_INTERFACE"

    # Check if stream is already running
    EXISTING_PID=$(pgrep -f "udp_hls.*$OUTPUT_PATH" | head -n1)

    if [ -n "$EXISTING_PID" ]; then
        if ps -p "$EXISTING_PID" > /dev/null 2>&1; then
            echo "$STREAM_NAME already running with PID=$EXISTING_PID"
            echo "$EXISTING_PID" > "$STREAM_PID_PATH"
            return 0
        fi
    fi

    rm -f "$STREAM_PID_PATH"

    nohup /home/user/RIDSYSPACKAGE/udp_hls \
        "$MCAST" \
        "$PORT" \
        "$OUTPUT_PATH" \
        "index" \
        "$INPUT_INTERFACE" \
        "$KEY_FILE" \
        "$KEY_URI" \
        "$KEY_IV" \
        "$DRM_ENABLE" \
        >> "$OUTPUT_PATH/stream.log" 2>&1 &

    PID=$!

    sleep 2

    if ps -p "$PID" > /dev/null 2>&1; then
        echo "$PID" > "$STREAM_PID_PATH"
        echo "Started $STREAM_NAME PID=$PID"
    else
        echo "udp_hls exited immediately!"
        cat "$OUTPUT_PATH/stream.log"
        return 1
    fi
}

# Same function as preset_hls
preset_hls_drm()
{
    preset_hls "$@"
}

stop_stream()
{
    if [ -f "$STREAM_PID_PATH" ]; then
        PID=$(cat "$STREAM_PID_PATH")

        if ps -p "$PID" > /dev/null 2>&1; then
            kill -9 "$PID" 2>/dev/null
            echo "Stopped $STREAM_NAME PID=$PID"
        fi

        rm -f "$STREAM_PID_PATH"
    fi

    pkill -9 -f "udp_hls.*$OUTPUT_PATH" 2>/dev/null
}

status_stream()
{
    PID=$(pgrep -f "udp_hls.*$OUTPUT_PATH" | head -n1)

    if [ -n "$PID" ] && ps -p "$PID" > /dev/null 2>&1; then
        echo "$STREAM_NAME is RUNNING (PID=$PID)"
    else
        echo "$STREAM_NAME is STOPPED"
    fi
}

case "$1" in
    stop)
        stop_stream
        ;;
    status)
        status_stream
        ;;
    *)
        $FUNCTION_TO_CALL
        ;;
esac
