Added cgi-bin scripts

This commit is contained in:
Russel Yasol
2025-01-17 14:57:15 +08:00
parent 397e0de45a
commit b8f9feef20
46 changed files with 3603 additions and 0 deletions

View File

@@ -0,0 +1,97 @@
#!/bin/sh
echo "Content-type: application/json"
echo "Access-Control-Allow-Origin: *"
echo "Access-Control-Allow-Methods: GET, POST, OPTIONS"
echo "Access-Control-Allow-Headers: Content-Type"
echo ""
# Configuration
RESULT_FILE="/tmp/at_results.json"
LOG_FILE="/var/log/at_commands.log"
# Function to log messages
log_message() {
echo "$(date '+%Y-%m-%d %H:%M:%S') - $1" >> "${LOG_FILE}"
}
# Function to return error response
send_error() {
local message="$1"
jq -n \
--arg msg "${message}" \
--arg time "$(date '+%H:%M:%S')" \
'{
status: "error",
message: $msg,
timestamp: $time
}'
exit 1
}
# Parse query parameters
eval $(echo "${QUERY_STRING}" | tr '&' '\n' | sed 's/\([^=]*\)=\([^=]*\)/\1="\2"/')
# Check if results file exists
if [ ! -f "${RESULT_FILE}" ]; then
send_error "No results found"
fi
# Validate results file contains valid JSON
if ! cat "${RESULT_FILE}" | jq . >/dev/null 2>&1; then
log_message "Invalid JSON in results file"
send_error "Invalid results data"
fi
# Handle different query types
case "${action}" in
"get_by_id")
# Fetch specific result by ID
if [ -z "${id}" ]; then
send_error "No ID provided"
fi
result=$(cat "${RESULT_FILE}" | jq --arg id "${id}" '. | map(select(.id == $id)) | .[0]')
if [ "${result}" = "null" ]; then
send_error "No result found for ID: ${id}"
else
echo "${result}"
fi
;;
"get_latest")
# Fetch the most recent N results (default to 10)
limit=${limit:-10}
cat "${RESULT_FILE}" | jq --arg limit "${limit}" 'reverse | limit(($limit|tonumber); .)'
;;
"get_by_status")
# Fetch results by status
if [ -z "${status}" ]; then
send_error "No status provided"
fi
cat "${RESULT_FILE}" | jq --arg status "${status}" '. | map(select(.status == $status))'
;;
"clear")
# Clear all results (optional)
if [ "${confirm}" = "true" ]; then
echo "[]" > "${RESULT_FILE}"
jq -n \
--arg time "$(date '+%H:%M:%S')" \
'{
status: "success",
message: "Results cleared",
timestamp: $time
}'
else
send_error "Confirmation required to clear results"
fi
;;
*)
# Default: return all results
cat "${RESULT_FILE}"
;;
esac