#!/bin/sh

. ../common/ajax_common

IPE_MSGPUSH="/usr/ramdisk/bin/ipe_msgpush"
PUSH_CONF="${PGETC}/web/internet_push.conf"
wx_user_file="${PGETC}/web/wx_user_note.txt"


load_internet_conf()
{
    if [ ! -f ${PUSH_CONF} ]; then
        printf "{}"
        return
    fi

    awk -F"=" \
    'BEGIN{
        dot = "";
        printf "{";
    }{
        gsub(/"/, "", $2);
        printf "%s\"%s\":\"%s\"", dot, $1, $2;
        if(dot == "") dot = ",";
    }END{
        printf "}";   
    }' ${PUSH_CONF}
}


set_internet_conf()
{
    mkdir -p ${PGETC}/web/
    
    echo "weixin_enable=\"${CGI_weixin_enable}\"" > ${PUSH_CONF}
    echo "qyweixin_enable=\"${CGI_qyweixin_enable}\"" >> ${PUSH_CONF}
    echo "qyweixin_webhook=\"${CGI_qyweixin_webhook}\"" >> ${PUSH_CONF}
    echo "dingding_enable=\"${CGI_dingding_enable}\"" >> ${PUSH_CONF}
    echo "dingding_keyword=\"${CGI_dingding_keyword}\"" >> ${PUSH_CONF}
    echo "dingding_webhook=\"${CGI_dingding_webhook}\"" >> ${PUSH_CONF}
    echo "feishu_enable=\"${CGI_feishu_enable}\"" >> ${PUSH_CONF}
    echo "feishu_keyword=\"${CGI_feishu_keyword}\"" >> ${PUSH_CONF}
    echo "feishu_webhook=\"${CGI_feishu_webhook}\"" >> ${PUSH_CONF}
    echo "email_enable=\"${CGI_email_enable}\"" >> ${PUSH_CONF}
    echo "email_server=\"${CGI_email_server}\"" >> ${PUSH_CONF}
    echo "email_port=\"${CGI_email_port}\"" >> ${PUSH_CONF}
    echo "email_sender=\"${CGI_email_sender}\"" >> ${PUSH_CONF}
    echo "email_password=\"${CGI_email_password}\"" >> ${PUSH_CONF}
    echo "email_reciver=\"${CGI_email_reciver}\"" >> ${PUSH_CONF}
    echo "email_crypto=\"${CGI_email_crypto}\"" >> ${PUSH_CONF}
    echo "saas_enable=\"${CGI_saas_enable}\"" >> ${PUSH_CONF}
    echo "saas_enable1=\"${CGI_saas_enable1}\"" >> ${PUSH_CONF}
    echo "saas_server=\"${CGI_saas_server}\"" >> ${PUSH_CONF}
    echo "saas_port=\"${CGI_saas_port}\"" >> ${PUSH_CONF}
    echo "saas_server1=\"${CGI_saas_server1}\"" >> ${PUSH_CONF}
    echo "saas_port1=\"${CGI_saas_port1}\"" >> ${PUSH_CONF}
    echo "syslog_enable=\"${CGI_syslog_enable}\"" >> ${PUSH_CONF}
    echo "syslog_serverip=\"${CGI_syslog_serverip}\"" >> ${PUSH_CONF}
    echo "syslog_serverport=\"${CGI_syslog_serverport}\"" >> ${PUSH_CONF}

    retjson 0 "ɹ"
}


list_weixin_user()
{
    printf "{"
    printf "\"note\":{"
    
    if [ -f ${wx_user_file} ]; then
        awk \
        'BEGIN{
            dot = "";
        }{
            printf "%s\"u_%s\":\"%s\"", dot, $1, $2;
            if(dot == "") dot = ",";
        }' ${wx_user_file}
    fi

    printf "},\"bind\":`${IPE_MSGPUSH} -l 2>/dev/null`"
    printf "}"
}


del_weixin_user()
{
    errmsg=`${IPE_MSGPUSH} -d ${CGI_id}`

    if [ -f ${wx_user_file} ]; then
        grep -v "${CGI_id} " ${wx_user_file} > ${wx_user_file}.bak
        mv ${wx_user_file}.bak ${wx_user_file}
    fi

    if [ $? -ne 0 ]; then
        retjson 1 "ʧܣ${errmsg}"
    else
        retjson 0 "ɹ"
    fi
}


edit_weixin_user()
{
    mkdir -p "${PGETC}/web"

    grep -v "${CGI_id} " ${wx_user_file} > ${wx_user_file}.bak
    echo "${CGI_id} ${CGI_name}" >> ${wx_user_file}.bak
    mv ${wx_user_file}.bak ${wx_user_file}

    WEB_LOGGER "΢ûע" "${CGI_id}=${CGI_name}"
    retjson 0 ""
}


send_msg_test()
{
    now=`date +%s`
    sleep_file="${RAMDISK}/tmp/ipe_msg_push_test.log"

    if [ -f ${sleep_file} ]; then
        . ${sleep_file}
        diff=$((${now} - ${last}))
        [ ${diff} -le 60 ] && retjson 1 "̫Ƶ,$((60 - ${diff}))ٳ"
    fi

    ${IPE_MSGPUSH} -s msg_title="Ϣ" msg_ctx="${CGI_msg_ctx}" > /dev/null

    if [ $? -ne 0 ]; then
        retjson 1 "ʧܣ"
    else
        echo "last=`date +%s`" > ${sleep_file}
        retjson 0 "ͳɹ"
    fi
}


case "${CGI_action}" in
    "load_internet_conf")
        retjson 0 "OK" "`load_internet_conf`"
        ;;

    "set_internet_conf")
        action_check
        set_internet_conf
        ;;

    "list_weixin_user")
        retjson 0 "OK" "`list_weixin_user`"
        ;;

    "del_weixin_user")
        action_check
        del_weixin_user
        ;;

    "edit_weixin_user")
        action_check
        edit_weixin_user
        ;;

    "send_msg_test")
        action_check
        send_msg_test
        ;;

    *)
        retjson 1 "UNKNOW_ACTION"
        ;;
esac
