#!/bin/sh

# Created by jiaqiang.ye@lnxall.com
# New diag.sh for Non-openwrt systems
# 2023/12/08

DIAG_BIN=''
export PATH=/opt/lnxall_app/bin:/usr/bin:/usr/sbin:/bin:/sbin

check_diag() {
        local bpath="/tmp/sysinfo/board_name"
        if [ ! -f "${bpath}" ] ; then
                echo "Error, file not found: '${bpath}'" 1>&2
                return 1
        fi
        local bname="$(cat ${bpath})"
        if [ -z "${bname}" ] ; then
                echo "Error, cannot find value board_name." 1>&2
                return 2
        fi

        local DIAGBIN="/opt/lnxall_app/platspec/diag_${bname}.lua"
        if [ ! -f "${DIAGBIN}" ] ; then
                echo "Error, no diag script found for '${bname}'" 1>&2
                return 3
        fi

        DIAG_BIN="${DIAGBIN}"
        return 0
}

stop_services() {
        systemctl stop emsd >/dev/null 2>/dev/null
        systemctl stop linit.service >/dev/null 2>/dev/null
        systemctl stop proto_forward >/dev/null 2>/dev/null

        DEB4G="$(ps | grep -e deb4gnet.lua | grep -v -e grep)"
        [ -z "${DEB4G}" ] && DEB4G="$(ps aux | grep -e deb4gnet.lua | grep -v -e grep)"
        if [ -z "${DEB4G}" ] ; then
                nothup /opt/lnxall_app/bin/lua /opt/lnxall_app/bin/deb4gnet.lua
        fi
}

check_diag
[ -z "${DIAG_BIN}" ] && exit 1
stop_services
exec lua "${DIAG_BIN}"
exit 2
