You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
zeus/framework/shells/misc_scripts/lnx_logic_serverhttp.sh

57 lines
1.7 KiB
Bash

# linux script server http interactive logic functions encapsulation.
# Longwei Lai
###################################################################
source "${____FWK_SCRIPT_PATH}/lnx_fwk_path.sh"
source "${____FWK_SCRIPT_PATH}/lnx_fwk_server.sh"
source "${____LOGIC_SCRIPT_PATH}/lnx_logic_defs.sh"
source "${____LOGIC_SCRIPT_PATH}/lnx_logic_serversql.sh"
# send http message to specific node
# arguments:
# arg1: node
# arg2: message cmd(integer)
# arg3: sub message cmd(integer)
# arg4: http message(what message do you want to send?)
# returns:
# echo style:
# server return message
# return style:
# 0: success
# <other>: failed
function send_httpmsg_to_node()
{
local node="$1"
local msg_cmd="$2"
local msg_subcmd="$3"
local http_msg="$4"
local verify_key="${____SERVER_HTTP_KEY}"
local now_time=`date "+%s"`
# calculate sign
local verify_sign="`echo -n "${now_time}${verify_key}" | md5sum | cut -d ' ' -f 1`"
# get http access info
local http_info=(`exec_sql_cmd_on_confdb "SELECT web, port FROM conf_http WHERE nodeid = ${node}"`)
if [ $? -ne 0 ]; then
log_err "failed to get http access port from mysql!"
log_err "failed to send http message[${http_msg}] to node: ${node}!"
return 1
fi
local http_addr="http://${http_info[0]}:${http_info[1]}"
local http_packet="{\"cmd\":${msg_cmd}, \"subcmd\": ${msg_subcmd}, \"data\": ${http_msg}, \"sign\": \"${verify_sign}\", \"time\":${now_time}}"
local curl_ret="`curl --max-time 8 -s -d "${http_packet}" "${http_addr}"`"
local curl_ret_code=$?
if [ ${curl_ret_code} -ne 0 ]; then
echo -n "${curl_ret}"
return ${curl_ret_code}
else
echo -n "${curl_ret}"
return 0
fi
}