iopsys-feed/userinterface/files/backend/nginx/userinterface_rpc
2025-03-06 10:15:36 +01:00

96 lines
1.7 KiB
Bash

#!/bin/sh
. /usr/share/libubox/jshn.sh
get_nginx_status() {
port="${1}"
nginx_pid=$(pgrep "nginx: master process")
json_init
if [ -z "${nginx_pid}" ]; then
json_add_string "server_status" "Error"
json_dump
return
fi
state="Error"
netstat -nltp | grep "${nginx_pid}/uci.conf" | awk '{print $4}' > /tmp/http_status
while read server; do
if [ -z "${server}" ]; then
continue
fi
sport=$(echo "${server##*:}")
if [ "${sport}" -eq "${port}" ]; then
state="Up"
break
fi
done < /tmp/http_status
rm -rf /tmp/http_status
json_add_string "server_status" "${state}"
json_dump
return
}
get_nginx_session_list() {
netstat -ntp | grep nginx | awk '{print $4,$5}' > /tmp/http_session
json_init
json_add_array "http_sessions"
while read server client; do
if [ -z "${server}" ] || [ -z "${client}" ]; then
continue
fi
sport=$(echo "${server##*:}")
cip=$(echo "${client}" | sed 's/:[^:]*$//g')
cport=$(echo "${client##*:}")
json_add_object ""
json_add_string "server_port" "${sport}"
json_add_string "client_ip" "${cip}"
json_add_string "client_port" "${cport}"
json_close_object
done < /tmp/http_session
json_close_array
json_dump
rm -rf /tmp/http_session
return
}
case "$1" in
list)
echo '{ "http_session": {}, "http_status": {"port":"String"} }'
;;
call)
case "$2" in
http_session)
out="$(get_nginx_session_list)"
if [ -z "${out}" ]; then
echo '{}'
else
echo "$out"
fi
;;
http_status)
read -r input
json_load "${input}"
json_get_var port "port"
json_cleanup
out="$(get_nginx_status "${port}")"
if [ -z "${out}" ]; then
echo '{}'
else
echo "$out"
fi
;;
esac
;;
esac