Initial Commit

Start new branch for development on new 64bit x75 platfom.
This commit is contained in:
Cameron Thompson
2024-07-07 20:15:59 -04:00
parent 88d300303c
commit bfd4b31fea
83 changed files with 599 additions and 0 deletions

View File

@@ -0,0 +1,35 @@
#!/bin/bash
QUERY_STRING=$(echo "${QUERY_STRING}" | sed 's/;//g')
function urldecode() { : "${*//+/ }"; echo -e "${_//%/\\x}"; }
if [ "${QUERY_STRING}" ]; then
export IFS="&"
for cmd in ${QUERY_STRING}; do
if [ "$(echo $cmd | grep '=')" ]; then
key=$(echo $cmd | awk -F '=' '{print $1}')
value=$(echo $cmd | awk -F '=' '{print $2}')
eval $key=$value
fi
done
fi
x=$(urldecode "$atcmd")
MYATCMD=$(printf '%b\n' "${atcmd//%/\\x}")
if [ -n "${MYATCMD}" ]; then
# Initialize wait time to 200 ms
wait_time=200
while true; do
runcmd=$(echo -en "$x\r\n" | microcom -t $wait_time /dev/ttyOUT2)
# Check if "OK" or "ERROR" is present in the response
if [[ $runcmd =~ "OK" ]] || [[ $runcmd =~ "ERROR" ]]; then
break # Exit the loop if "OK" or "ERROR" is found
fi
# If neither "OK" nor "ERROR" is found, increment wait time by 1 second
((wait_time++))
done
fi
echo "Content-type: text/plain"
echo $x
echo ""
echo $runcmd

View File

@@ -0,0 +1,19 @@
#!/bin/bash
# This script will ping 8.8.8.8 and return the result
# If the ping is successful, it will return "OK"
# If the ping fails, it will return "ERROR"
# Send the ping command and store the output
ping_output=$(ping -c 1 8.8.8.8)
# Check if the output contains "0% packet loss"
if echo "$ping_output" | grep -q "0% packet loss"; then
echo "Content-type: text/plain"
echo ""
echo "OK"
else
echo "Content-type: text/plain"
echo ""
echo "ERROR"
fi

View File

@@ -0,0 +1,20 @@
#!/bin/bash
# Check iptables for ttlvalue
ttlvalue=$(/opt/bin/sudo /usr/sbin/iptables -w 5 -t mangle -vnL | grep TTL | awk '{print $13}' | head -n1)
ttlenabled=true;
# Set Variables
if [ -z "${ttlvalue}" ]; then
ttlvalue=0
ttlenabled=false
fi
echo "Content-type: text/json"
echo ""
cat <<EOT
{
"isEnabled": $ttlenabled,
"ttl": $ttlvalue
}
EOT

View File

@@ -0,0 +1,11 @@
#!/bin/bash
# Execute the uptime command and store the result
uptime_output=$(uptime)
# Set header for plain text content
echo "Content-Type: text/plain"
echo ""
# Output the uptime result
echo "$uptime_output"

View File

@@ -0,0 +1,17 @@
#!/bin/bash
# Content type header
echo "Content-type: application/json"
echo ""
# This script fetches the watchCat parameters from the /tmp/watchcat.json and returns it as JSON
# Example content of /tmp/watchcat:
# {"watchcat": {"enabled": true, "track_ip": "1.1.1.1", "ping_timeout": 30, "ping_failure_count": 10}}
# Check if the file exists
if [ -f /tmp/watchcat.json ]; then
cat /tmp/watchcat.json
else
# return an empty JSON object
echo "{}"
fi

View File

@@ -0,0 +1,31 @@
#!/bin/bash
QUERY_STRING=$(echo "${QUERY_STRING}" | sed 's/;//g')
urldecode() {
local data
data="${*//+/ }"
echo -e "${data//%/\\x}"
}
if [ "${QUERY_STRING}" ]; then
export IFS="&"
for cmd in ${QUERY_STRING}; do
if [[ "$cmd" == *=* ]]; then
key=$(echo "$cmd" | awk -F '=' '{print $1}')
value=$(echo "$cmd" | awk -F '=' '{print $2}')
eval "$key"="$(urldecode "$value")"
fi
done
fi
phone_number="$number"
message_encoded="$msg"
send_at_command() {
local cmd=$1
echo -en "$cmd\r" | microcom -t 100 /dev/ttyOUT2
}
send_at_command "AT+CMGS=\"$phone_number\","$Command""
runcmd=$((echo -en "$message_encoded"; echo -en "\x1A") | microcom -t 500 /dev/ttyOUT2)
echo "$runcmd"

View File

@@ -0,0 +1,64 @@
#!/bin/bash
# Debug log function
log_debug() {
local message="$1"
debug_logs+=("$message")
}
# Initialize debug logs array
declare -a debug_logs=()
# Get query
QUERY_STRING=$(echo "${QUERY_STRING}" | sed 's/;//g')
if [ "${QUERY_STRING}" ]; then
export IFS="&"
for cmd in ${QUERY_STRING}; do
if [ "$(echo $cmd | grep '=')" ]; then
key=$(echo $cmd | awk -F '=' '{print $1}')
value=$(echo $cmd | awk -F '=' '{print $2}')
eval $key=$value
log_debug "Received parameter: $key=$value"
fi
done
fi
setTTL=$(printf '%b\n' "${ttlvalue//%/\\x}")
if [ -n "${setTTL}" ]; then
log_debug "Stopping service to remove rules"
/usrdata/simplefirewall/ttl-override stop
# Convert ttlvalue to integer
if [ "${ttlvalue}" ]; then
ttlvalue_int=$(echo "${ttlvalue}" | sed 's/[^0-9]//g')
log_debug "Converted ttlvalue to integer: $ttlvalue_int"
fi
# Call the sh script with the appropriate parameters
if [ "${ttlvalue_int}" != 0 ]; then
log_debug "Enabling TTL with value: ${setTTL}"
/usrdata/simpleadmin/script/ttl_script.sh enable "${setTTL}"
commandRan="/usrdata/simpleadmin/script/ttl_script.sh enable ${setTTL}"
ttlenabled=true
ttlvalue=$ttlvalue_int
elif [ "${ttlvalue_int}" = 0 ]; then
log_debug "Disabling TTL"
/usrdata/simpleadmin/script/ttl_script.sh disable 0
commandRan="/usrdata/simpleadmin/script/ttl_script.sh disable 0"
ttlenabled=false
ttlvalue=0
fi
log_debug "Starting service to apply rules"
/usrdata/simplefirewall/ttl-override start
fi
echo "Content-type: text/text"
echo ""
cat <<EOT
{
"debug_logs": [
$(printf '"%s",' "${debug_logs[@]}")
]
}
EOT

View File

@@ -0,0 +1,125 @@
#!/bin/bash
QUERY_STRING=$(echo "${QUERY_STRING}" | sed 's/;//g')
function urldecode() { : "${*//+/ }"; echo -e "${_//%/\\x}"; }
if [ "${QUERY_STRING}" ]; then
export IFS="&"
for cmd in ${QUERY_STRING}; do
if [[ "$cmd" == *"="* ]]; then
key=$(echo $cmd | awk -F '=' '{print $1}')
value=$(echo $cmd | awk -F '=' '{print $2}')
eval $key=$(urldecode $value)
fi
done
fi
if [ -z "$status" ] || [ -z "$IpDNS" ] || [ -z "$cooldown" ] || [ -z "$failures" ] || [ -z "$action" ]; then
response="Missing parameters. Please provide the following parameters: IpDNS, cooldown, failures, action."
echo "Content-type: text/plain"
echo ""
echo "$response"
exit 1
fi
if [ "$status" == "enabled" ]; then
watch_script="/usrdata/simpleadmin/script/watchat.sh"
mount -o remount,rw /
cat <<EOF > $watch_script
#!/bin/bash
ip_or_dns="$IpDNS"
cooldown=$cooldown
action="$action"
fail_count=0
max_failures=$failures
# Process the action variable.
# Create a JSON file containing the parameters of the script
echo -n '{"ip_or_dns":"$ip_or_dns","cooldown":$cooldown,"action":"$action","fail_count":$fail_count,"max_failures":$max_failures}' > /tmp/watchatParams.json
while true; do
if ping -c 1 -W 1 \$ip_or_dns > /dev/null; then
fail_count=0
echo "Success at \$(date)" >> /tmp/watchat.log
# Convert /tmp/watchat.log to json format
echo -n '{"log":[' > /tmp/watchat.json
cat /tmp/watchat.log | sed 's/$/,/' | tr -d '\n' | sed 's/,$//' >> /tmp/watchat.json
echo -n ']}' >> /tmp/watchat.json
else
((fail_count++))
if [ \$fail_count -ge \$max_failures ]; then
case "\$action" in
reboot)
echo "Rebooting system..."
/sbin/reboot
;;
switch_sim)
echo "Switching SIM..."
echo -ne "AT+CNMI=2,1\r" > /dev/ttyOUT2
sleep 1
echo "Switching SIM at \$(date)" >> /tmp/watchat.log
;;
none)
echo "No action taken."
echo "No action taken at \$(date)" >> /tmp/watchat.log
;;
*)
echo "Unknown action: \$action"
;;
esac
# Reset fail count
fail_count=0
fi
fi
echo "Fail count: \$fail_count at \$(date)" >> /tmp/watchat.log
# Convert /tmp/watchat.log to json format
echo -n '{"log":[' > /tmp/watchat.json
cat /tmp/watchat.log | sed 's/$/,/' | tr -d '\n' | sed 's/,$//' >> /tmp/watchat.json
echo -n ']}' >> /tmp/watchat.json
sleep \$cooldown
done
EOF
chmod +x $watch_script
cat <<EOF > /lib/systemd/system/watchcat.service
[Unit]
Description=Ping Watcher Service
[Service]
ExecStart=$watch_script
Restart=always
[Install]
WantedBy=multi-user.target
EOF
ln -s /lib/systemd/system/watchcat.service /etc/systemd/system/multi-user.target.wants/watchcat.service
systemctl daemon-reload
systemctl start watchcat.service
response="Script created at $watch_script and made executable. Service created and started."
elif [ "$status" == "disabled" ]; then
watch_script="/usrdata/simpleadmin/script/watchat.sh"
rm -f $watch_script
systemctl stop watchcat.service
rm -f /lib/systemd/system/watchcat.service
rm -f /etc/systemd/system/multi-user.target.wants/watchcat.service
systemctl daemon-reload
response="Script removed at $watch_script. Service stopped and removed."
else
response="Invalid status. Please provide either enabled or disabled."
fi
echo "Content-type: text/plain"
echo ""
echo "$response"

View File

@@ -0,0 +1,72 @@
#!/bin/bash
# Decode URL-encoded strings
function urldecode() {
local data=${1//+/ }
printf '%b' "${data//%/\\x}"
}
# Parse QUERY_STRING
QUERY_STRING=$(echo "${QUERY_STRING}" | sed 's/;//g')
if [ "${QUERY_STRING}" ]; then
export IFS="&"
for cmd in ${QUERY_STRING}; do
if [[ "$cmd" == *"="* ]]; then
key=$(echo $cmd | awk -F '=' '{print $1}')
value=$(echo $cmd | awk -F '=' '{print $2}')
eval $key=$(urldecode $value)
fi
done
fi
# Set default values
WATCHCAT_ENABLED=${WATCHCAT_ENABLED:-"disable"}
TRACK_IP=${TRACK_IP:-"1.1.1.1"}
PING_TIMEOUT=${PING_TIMEOUT:-30}
PING_FAILURE_COUNT=${PING_FAILURE_COUNT:-3}
# Validate input
if ! [[ "$WATCHCAT_ENABLED" =~ ^(enable|disable)$ ]]; then
echo "Content-type: text/plain"
echo ""
echo "Invalid value for WATCHCAT_ENABLED. Use 'enable' or 'disable'."
exit 1
fi
if ! [[ "$TRACK_IP" =~ ^([0-9]{1,3}\.){3}[0-9]{1,3}$ ]]; then
echo "Content-type: text/plain"
echo ""
echo "Invalid IP address format for TRACK_IP."
exit 1
fi
if ! [[ "$PING_TIMEOUT" =~ ^[0-9]+$ ]] || [ "$PING_TIMEOUT" -le 0 ]; then
echo "Content-type: text/plain"
echo ""
echo "PING_TIMEOUT must be a positive integer."
exit 1
fi
if ! [[ "$PING_FAILURE_COUNT" =~ ^[0-9]+$ ]] || [ "$PING_FAILURE_COUNT" -le 0 ]; then
echo "Content-type: text/plain"
echo ""
echo "PING_FAILURE_COUNT must be a positive integer."
exit 1
fi
# Implement the Watchcat logic
if [ "$WATCHCAT_ENABLED" == "enable" ]; then
echo "Content-type: text/plain"
echo ""
echo "Watchcat is enabled. Tracking IP: $TRACK_IP, Ping timeout: $PING_TIMEOUT seconds, Ping failure count: $PING_FAILURE_COUNT"
# Call the create script here and use the needed parameters
sudo /usrdata/simpleadmin/script/create_watchcat.sh "$TRACK_IP" "$PING_TIMEOUT" "$PING_FAILURE_COUNT"
else
echo "Content-type: text/plain"
echo ""
echo "Watchcat is disabled."
# Call the remove script here
sudo /usrdata/simpleadmin/script/remove_watchcat.sh
fi
exit 0