#!/bin/sh
#
# 注意，该文件，需要保持utf-8编码
#

. /etc/PG.conf

if [ "`uname -m`" = "aarch64" ]; then
	CURL="/usr/pabin/pacu  --connect-timeout 5 "
else
	CURL="curl --connect-timeout 5"
fi

FLOWEYE="/usr/ramdisk/bin/floweye"
ICONV="/usr/ramdisk/bin/ipe_iconv"
URLENCODE="/usr/ramdisk/bin/urlencode"
ESCTOOL="/usr/ramdisk/bin/esctool"
SYSLOG="/usr/ramdisk/bin/ipe_logger"
PUSH_CONF="${PGETC}/web/internet_push.conf"

WEIXIN_API="http://weixin.panabit.com/webappwx/wxpush.php"
PUSH_LOG="/usr/ramdisk/tmp/wxpush.log"


ret_msg()
{
	echo $2
	exit $1
}


env_init()
{
	SYSNAME="Panabit"

	[ -f "${PUSH_CONF}" ] && . ${PUSH_CONF}
	[ -f "${PGETC}/sysname.conf" ] && . ${PGETC}/sysname.conf
	
	SYSNAME=`${ICONV} gb2312toutf8 "${SYSNAME}"`

	for val in `${FLOWEYE} key info`
	do
		export "L_${val}"
	done
}


list_weixin_user()
{
	api="${WEIXIN_API}?act=info&app=opser&guid=${L_oem}&result=json"
	${CURL} -s -o ${PUSH_LOG} ${api} 
	result=`sed -e "s/ /_/g" ${PUSH_LOG}`

	if [ "${result}" = "" ]; then
		echo "[]"
	else
		echo ${result}
	fi
}


delete_weixin_user()
{
	uid=${1}
    api="${WEIXIN_API}?act=rmv&app=opser&guid=${L_oem}&id=${uid}"

	${CURL} -s -o ${PUSH_LOG} ${api} 

    if [ ! -f ${PUSH_LOG} ]; then
		ret_msg 1 "DELETE_USER_FAIL"
	else
		ret_msg 0 "OK"
	fi
}


sendto_weixin()
{
	api="${WEIXIN_API}?act=send&app=sysalarm&guid=${L_oem}"
	
	[ "${API_gb2312}" = "" -o "${API_gb2312}" = "0" ] && gb2312=0 || gb2312=1
	
	# 【详情】方式的消息推送
	if [ "${API_msg_type}" = "json" ]; then
		api="${api}&name=${SYSNAME}&msgtitle=${API_msg_title}&gb2312=${gb2312}"
		api="${api}&report=${msg}&msgtype=${type}&version=2"
		${CURL} -s -o ${PUSH_LOG} ${api}
		return
	fi
	
	_years=`date +"%Y-%m-%d"`
	_days=`date +"%H:%M:%S"`
	_sysname="${SYSNAME}%20%5B${L_oem}%5D"
	
	api="${api}&msgtype=src&no_remark=1&evt_dev=${_sysname}"
	api="${api}&evt_time=${_years}%20${_days}&evt_name=${API_msg_title}"
	
	# 直接发送原始参数，不截取
	if [ "${API_weixin_src}" = "1" ]; then
		api="${api}&evt_type=提醒&evt_ctx=${API_msg_ctx}"
		${CURL} -s -o ${PUSH_LOG} ${api}
		return
	fi
	
	_ctx_=""
	_val_=""
	_key_=""
	_lev_=""
	wx_msg_ctx=`echo ${API_msg_ctx} | sed 's/%0a/ /g'`
	
	for item in ${wx_msg_ctx}
	do
		key=`echo ${item} | cut -d":" -f1`
		key=`${ESCTOOL} -e ${key}`
		val=`echo ${item} | cut -d":" -f2-`
		
		# 告警内容
		if [ "${key}" = "dd70346ae1571eb82ecfdfdf8f191911" ] ;then
			_ctx_=`echo "${val}" | sed 's/%20/ /g' | awk '{print $1}'`
		fi

		[ "${key}" = "b63c9080123ad20419506fff21bd7416" ] && _val_="首次触发值:${val}"
		[ "${key}" = "323b401f756fe7e8a62997f551907ea0" ] && _key_="已持续${val}"
		[ "${key}" = "873d4cc4b7d2cb99cc2446d542964d2a" ] && _lev_="${val}"
	done

	api="${api}&evt_type=${_lev_}&evt_ctx=${_ctx_}%20${_val_}"
	
	${CURL} -s -o ${PUSH_LOG} ${api}

	[ ! -f ${PUSH_LOG} ] && ret_msg 1 "SEND_TO_WEIXIN_ERR"
	
	return 0
}


sendto_qyweixin()
{
	api=`${ESCTOOL} -d ${qyweixin_webhook}`
	qywx_msg_title=`echo ${API_msg_title} | sed 's/%20/ /g'`
	qywx_msg_desc=`echo ${API_msg_desc} | sed 's/%20/ /g'`
	qywx_msg_ctx=`echo ${API_msg_ctx} | sed 's/%20/ /g'`
	qywx_msg_ctx=`echo ${qywx_msg_ctx} | sed 's/%0a/\\\n/g'`

	${CURL} -s -k -o ${PUSH_LOG} ${api} -H 'Content-Type: application/json' \
	-d "{
		\"msgtype\": \"markdown\",
		\"markdown\": {
			\"content\":\"消息来源: ${SYSNAME}[${L_oem}]\n<font color='warning'>**消息标题: ${qywx_msg_title}**</font>\n \n${qywx_msg_ctx}\n \n${qywx_msg_desc}\"
		}
	}"

	[ ! -f ${PUSH_LOG} ] && ret_msg 1 "SEND_TO_QYWEIXIN_ERR"
	return 0
}


sendto_dingding()
{
	api=`${ESCTOOL} -d ${dingding_webhook}`
	dd_msg_title=`echo "${API_msg_title}" | sed 's/%20/ /g'`
	dd_msg_desc=`echo "${API_msg_desc}" | sed 's/%20/ /g'`
	dd_msg_ctx=`echo ${API_msg_ctx} | sed 's/%20/ /g'`
	dd_msg_ctx=`echo "${dd_msg_ctx}" | sed 's/%0a/\\\n\\\n/g'`

	${CURL} -s -k -o ${PUSH_LOG} ${api} -H 'Content-Type: application/json' \
	-d "{
		\"msgtype\": \"markdown\",
		\"markdown\": {
			\"title\":\"${dingding_keyword}-${dd_msg_title}\",
			\"text\":\"#### 消息来源: ${SYSNAME}[${L_oem}]\n\n ### 消息标题：${dd_msg_title}\n\n \n\n-------------------\n\n${dd_msg_ctx}\n\n-------------------\n\n${dd_msg_desc}\"
		}
	}"
	
	[ ! -f ${PUSH_LOG} ] && ret_msg 1 "SEND_TO_DINGDING_ERR"
	return 0
}


sendto_feishu()
{
	api=`${ESCTOOL} -d ${feishu_webhook}`
	fs_msg_title=`echo "${API_msg_title}" | sed 's/%20/ /g'`
	fs_msg_desc=`echo "${API_msg_desc}" | sed 's/%20/ /g'`
	fs_msg_ctx=`echo ${API_msg_ctx} | sed 's/%20/ /g'`
	fs_msg_ctx=`echo "${fs_msg_ctx}" | sed 's/%0a/\\\n/g'`

	${CURL} -s -k -o ${PUSH_LOG} ${api} -H 'Content-Type: application/json' \
	-d "{
		\"msg_type\": \"post\",
		\"content\": {
			\"post\": {
				\"zh_cn\": {
					\"title\": \"消息来源: ${SYSNAME}[${L_oem}]\",
					\"content\": [
						[{
							\"tag\": \"text\",
							\"text\": \"消息标题: ${fs_msg_title}\"
						}, {
							\"tag\": \"text\",
							\"text\": \"\n${fs_msg_ctx}\"
						}, {
							\"tag\": \"text\",
							\"text\": \"\n\n${feishu_keyword}\"
						}]
					]
				}
			}
		}
	}"
	
	[ ! -f ${PUSH_LOG} ] && ret_msg 1 "SEND_TO_FEISHU_ERR"
	return 0
}


sendto_email()
{
	email_password=`${ESCTOOL} -d ${email_password}`
	email_msg_title=`echo "${API_msg_title}" | sed 's/%20/ /g'`
	email_msg_desc=`echo "${API_msg_desc}" | sed 's/%20/ /g'`
	email_msg_ctx=`echo ${API_msg_ctx} | sed 's/%20/ /g'`
	email_msg_ctx=`echo ${email_msg_ctx} | sed 's/%0a/<br>/g'`

	cat > mail.txt <<EOF
From: ${SYSNAME}<${email_sender}>
To: <${email_reciver}>
Date: `date +%s`
Subject: ${SYSNAME} [${L_oem}] -> ${email_msg_title}
Content-Type: text/html;charset="utf-8"
Content-Transfer-Encoding: quoted-printable

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
		<style>
			.paui-email-app{box-sizing:border-box; min-width:320px; max-width:660px; border:1px solid #f6f6f6; background-color:#F0F2F5; margin:auto;}
			.paui-email-head{padding: 0px 10px; background-color: #2E8AE3; height: 42px;}
			.paui-email-body{padding: 15px; margin: 15px; background-color: #FFFFFF;}
			.paui-email-title{border-bottom: 1px solid #ccc; font-size:13px; font-weight: bold}
			.paui-email-content{padding: 15px 0px; font-size: 12px; height: 300px;}
			.paui-email-desc{padding-top: 10px; color:#999999; font-size:12px; border-top:1px solid #ccc;}
		</style>
	</head>
	<body>
		<div class="paui-email-app">
			<div class="paui-email-head">
				<a href="https://www.panabit.com/">
					<img src="data:image/png;base64,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" style="height:42px!important">
				</a>
			</div>
			<div class="paui-email-body">
				<div class="paui-email-title">设备通知信息</div>
				<div class="paui-email-content">
					<div>消息来源: ${SYSNAME} [${L_oem}]</div>
					<div>消息标题: ${email_msg_title}</div>

					<p>${email_msg_ctx}</p>
				</div>
				<div class="paui-email-desc">
					<div>${email_msg_desc}</div>
				</div>
			</div>
		</div>
	</body>
</html>

EOF

	if [ "${email_crypto}" = "1" ]; then
		${CURL} -ks --ssl \
		--url "smtps://${email_server}:${email_port}" \
		--user "${email_sender}:${email_password}" \
		--mail-from "${email_sender}" \
		--mail-rcpt "${email_reciver}" \
		--upload-file mail.txt
	elif [ "${email_crypto}" = "2" ]; then
		${CURL} -ks --ssl-reqd \
		--url "smtps://${email_server}:${email_port}" \
		--user "${email_sender}:${email_password}" \
		--mail-from "${email_sender}" \
		--mail-rcpt "${email_reciver}" \
		--upload-file mail.txt
	else
		${CURL} -s \
		--url "smtp://${email_server}:${email_port}" \
		--user "${email_sender}:${email_password}" \
		--mail-from "${email_sender}" \
		--mail-rcpt "${email_reciver}" \
		--upload-file mail.txt
	fi

	rm -rf mail.txt

	[ ! -f ${PUSH_LOG} ] && ret_msg 1 "SEND_TO_EMAIL_ERR"
	return 0
}


sendto_all_platforms()
{
	# Build MSG
	[ $# -lt 1 ] && script_help

	for val in $@
	do
		export "API_${val}"
	done
	
	# 默认处理逻辑，发给不同平台
	[ "${API_msg_ctx}"   = "" ] && ret_msg 1 "NO_MSG_CTX"
	[ "${API_msg_title}" = "" ] && ret_msg 1 "NO_MSG_TITLE" 

	API_msg_ctx="`${ICONV} gb2312toutf8 ${API_msg_ctx}`"
	API_msg_title="`${ICONV} gb2312toutf8 ${API_msg_title}`"
	
	_years=`date +"%Y-%m-%d"`
	_days=`date +"%H:%M:%S"`
	cur_time="推送时间:${_years}%20${_days}"

	if [ "${API_msg_desc}" = "" ]; then
		export API_msg_desc=${cur_time}
	else
		API_msg_desc="`${ICONV} gb2312toutf8 ${API_msg_desc}`"
	fi
	
	# Send MSG
	local send_ok
	send_ok=0

	if [ "${weixin_enable}"	= "on" ]; then
		sendto_weixin && send_ok=1 || send_ok=0
	fi

	if [ "${qyweixin_enable}" = "on" ]; then
		sendto_qyweixin && send_ok=1 || send_ok=0
	fi

	if [ "${dingding_enable}" = "on" ]; then
		sendto_dingding && send_ok=1 || send_ok=0
	fi

	if [ "${feishu_enable}" = "on" ]; then
		sendto_feishu && send_ok=1 || send_ok=0
	fi
	
	if [ "${email_enable}" = "on" ]; then
		sendto_email && send_ok=1 || send_ok=0
	fi
	
	if [ "${syslog_enable}" = "on" ]; then
		sendto_syslog && send_ok=1 || send_ok=0
	fi
	
	[ "${send_ok}" = "0" ] && ret_msg 1 "SEND_FAIL"
	
	return 0
}


sendto_syslog()
{
	syslog_msg_ctx=`echo ${API_msg_ctx} | sed 's/%20/ /g'`
	syslog_msg_ctx=`echo ${syslog_msg_ctx} | sed 's/%0a/. /g'`
	
	deviceid=`${FLOWEYE} logger stat | grep deviceid | cut -d"=" -f2`
	syslog_msg_ctx="[${L_oem}:${deviceid}]${syslog_msg_ctx}"
	
	${SYSLOG} host="${syslog_serverip}:${syslog_serverport}" log="${syslog_msg_ctx}"
	
	return 0
}


sendto_saas()
{
	if [ "${saas_enable}" = "on" ]; then
		api="https://${saas_server}:${saas_port}/netev_alarm"
		data=`echo "${*}" | sed 's/ /%20/g'`
		url="${api}?logs=${data}&license=${L_oem}"
		
		${CURL} -s -k -o ${PUSH_LOG} ${url} -X POST \
		-H 'Content-Type: application/x-www-form-urlencoded'
		
		[ ! -f ${PUSH_LOG} ] && ret_msg 1 "SEND_TO_SAAS_ERR"
	fi
	
	if [ "${saas_enable1}" = "on" ]; then
		api="https://${saas_server1}:${saas_port1}/netev_alarm"
		url="${api}?logs=${data}&license=${L_oem}"
		${CURL} -s -k -o ${PUSH_LOG} ${url} -X POST \
		-H 'Content-Type: application/x-www-form-urlencoded'
		
		[ ! -f ${PUSH_LOG} ] && ret_msg 1 "SEND_TO_SAAS_ERR"
	fi

	return 0
}


only_send_email()
{
	[ $# -lt 1 ] && script_help

	for val in $@
	do
		export "API_${val}"
	done
	
	[ "${API_receiver}" = "" ] && ret_msg 1 "NO_REVEIVER"
	[ "${API_msg_ctx}"   = "" ] && ret_msg 1 "NO_MSG_CTX"
	[ "${API_msg_title}" = "" ] && ret_msg 1 "NO_MSG_TITLE" 

	API_msg_ctx="`${ICONV} gb2312toutf8 ${API_msg_ctx}`"
	API_msg_title="`${ICONV} gb2312toutf8 ${API_msg_title}`"
	
	if [ "${API_msg_desc}" = "" ]; then
		export API_msg_desc="推送时间:`date +"%Y-%m-%d %H:%M:%S"`"
	else
		API_msg_desc="`${ICONV} gb2312toutf8 ${API_msg_desc}`"
	fi
	
	export email_reciver=${API_receiver}
	sendto_email && send_ok=1 || send_ok=0
	
	return 0
}


script_help()
{
	printf "usage:\t $0 [-l/-d/-s]\n"
	printf "      \t -l|list_user\n"
	printf "      \t -d|delete_user UID\n"
	printf "      \t -s|send_msg msg_title=XXX msg_ctx=XXX msg_desc=XXX gb2312=[1/0]\n"
	printf "      \t send_email msg_title=XXX msg_ctx=XXX msg_desc=XXX receiver=xxx \n"
	printf "      \t -t|to_saas XXX\n"
	exit 1
}


env_init

case "${1}" in
	"-l"|"list_user")
		list_weixin_user
		;;

	"-d"|"delete_user")
		delete_weixin_user $2
		;;

	"-s"|"send_msg")
		shift
		sendto_all_platforms $*
		;;
		
	"send_email")
		# eg: 
		#  /usr/ramdisk/bin/ipe_msgpush \
		#		send_email msg_title=test msg_ctx="<br><b>test</b>aaaa" receiver=test@qq.com
		#
		# msg_ctx, 支持HTML，中文使用gb2312编码传入
		shift
		only_send_email $*
		;;

	"-t"|"to_saas")
		shift
		sendto_saas $*
		;;
		
	*)
		script_help
		;;
esac

