#!/bin/bash
set +x

G_INSPECT_MMLPATH="/opt/huawei/snas/script/inspect_mml"
source $G_INSPECT_MMLPATH/CheckItems
CurInspectNum="359"
CurInspectFun="$(GetInspectType $CurInspectNum)"
RESULTFILE="/tmp/tmpResult${CurInspectFun}"
>${RESULTFILE}

LOG_FILE="/var/log/inspect.log"

function LOG
{
   local time=$(date)
   echo [${time}][$$]$@ >> ${LOG_FILE}
}


function main
{
    local result="INFO:pass"
    local checkFilePath="/opt/huawei/snas/etc/cm.ini"
    local cminiLogName="/opt/product/snas/etc/cm.ini"
    local isPass=0
    local tmpCheckFile="/tmp/tmpCMiniFileSave"

    cat ${checkFilePath} | sed -n '/^\[.*\]\s*$/p;/^[^ ]*=[^ ]*\s*$/p' | sed 's/[ \t]*$//g' > ${tmpCheckFile}
    local skip="UUID_S UUID_C"
    local lineCountTotal=$(cat ${tmpCheckFile} | wc -l)   #ļ

    local section=($(cat ${tmpCheckFile} | grep -nE "^\[\S+\]$" |awk -F":" '{print $2}'))   #section
    declare -a sectionPos=($(cat ${tmpCheckFile} | grep -nE "^\[\S+\]$" |awk -F":" '{print $1}'))   #sectionʼк
    declare -a sectionInfo=($(cat ${tmpCheckFile} | grep -E "=" |awk -F"=" '{print $1}'))  #section
    if [ ${#sectionInfo[@]} -lt 40 ];then
        isPass=1
        echo "[ERR]INFO:section count(${#sectionInfo[@]}) in file(cm.ini) is less than normal." >>${RESULTFILE}
        LOG "${cminiLogName} sectionInfo count : ${#sectionInfo[@]}."
    fi
    for ((i=0;i<${#sectionInfo[@]}-1;i++));do
        for ((j=$i+1;j<${#sectionInfo[@]};j++));do
            if [ "${sectionInfo[$i]}" == "${sectionInfo[$j]}" ];then
                if [[ ! "${skip}" =~ "${sectionInfo[$i]}" ]];then
                    isPass=1
                    echo "[ERR]INFO:${sectionInfo[$i]} in file(cm.ini) appears twice." >>${RESULTFILE}
                    LOG "${cminiLogName} ${sectionInfo[$i]} appears twice.."
                fi
            fi
        done
    done

    # һsectionк  ȻжÿsectionǷ
    sectionPos[${#sectionPos[@]}]=$((${lineCountTotal}+1))
    for ((i=0;i<${#sectionPos[@]}-1;i++));do
        if (( ${sectionPos[${i}+1]}-1 <= ${sectionPos[${i}]} ));then
            isPass=1
            echo "[ERR]INFO:${section[${i}]} in file(cm.ini) has no sub item." >>${RESULTFILE}
            LOG "${cminiLogName} ${section[${i}]} has no info."
        fi
    done
    if [ ${isPass} -eq 0 ];then
        echo ${result} >>${RESULTFILE}
    fi

    echo "${CurInspectFun}_Pass ${isPass}" >>${RESULTFILE}
    LOG "[$FUNCNAME]${CurInspectFun}_Pass ${isPass}"
    rm ${tmpCheckFile}
}

main

