#!/bin/bash

# This is a script that will allow you to open a btsnooz log
# in wireshark directly from a zip file. This script will handle
# the unzipping if it is a zip file, or will convert the btsnooz
# directly in the case of a plain text file for use with wireshark.
# After wireshark closes, it will clean up all the temporary files
# used.

WIRESHARK="${WIRESHARK:-wireshark}"
BTSNOOZ="${BTSNOOZ:-btsnooz.py}"

if ! hash "${WIRESHARK}" 2>/dev/null;
then
    echo "Please make sure wireshark is in your path before running."
    exit 1;
fi

if ! hash btsnooz.py 2>/dev/null;
then
    echo "Please make sure btsnooz.py is in your path before running."
    exit 2;
fi

if [ $# -eq 0 ];
then
    echo "Usage: $0 bugreport(.txt|.zip)"
    exit 3;
fi

BUGREPORT="$1"
FILENAME="$(basename ${BUGREPORT})"
TMPDIR=$(mktemp --tmpdir -d "viewbtsnooz_XXXXX")
LOGFILE="${TMPDIR}/${FILENAME%.*}.btsnooz"

trap ctrl_c INT
function ctrl_c() {
    rm -rf "${TMPDIR}"
}

if [ ! -f "${BUGREPORT}" ];
then
    echo "File ${BUGREPORT} does not exist."
    exit 4;
fi

if [ ! -d "${TMPDIR}" ];
then
    echo "Unable to create temp. dir (${TMPDIR}) :("
    exit 5;
fi

if [ "${BUGREPORT: -4}" == ".zip" ];
then
    unzip "${BUGREPORT}" -d "${TMPDIR}"
    BUGREPORT="${TMPDIR}/${FILENAME%.*}.txt"
fi

if [ -f "${BUGREPORT}" ];
then
    ${BTSNOOZ} "${BUGREPORT}" > "${LOGFILE}"
    if [ ! $? -eq 0 ];
    then
        echo "Could not extract btsnooz data from ${BUGREPORT}."
        rm -rf "${TMPDIR}"
        exit 6;
    fi

    ${WIRESHARK} "${LOGFILE}"
else
    echo "Looks like there is no plain text bugreport (${BUGREPORT})?"
fi

rm -rf "${TMPDIR}"