Added cgi-bin scripts
This commit is contained in:
@@ -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
|
||||
Reference in New Issue
Block a user