- Had postinst copy login.html to index.html -Made all files in cgi-bin +x - Generated ipk
94 lines
3.5 KiB
Bash
Executable File
94 lines
3.5 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
echo "Content-type: application/json"
|
|
echo ""
|
|
|
|
ttl_file="/etc/firewall.user.ttl"
|
|
lan_utils_script="/etc/data/lanUtils.sh"
|
|
|
|
setup_persistent_config() {
|
|
if [ ! -f "$lan_utils_script" ]; then
|
|
echo "{\"success\": false, \"error\": \"lanUtils.sh not found\"}"
|
|
return 1
|
|
fi
|
|
|
|
# Backup the original script if not already done
|
|
if [ ! -f "${lan_utils_script}.bak" ]; then
|
|
cp "$lan_utils_script" "${lan_utils_script}.bak"
|
|
fi
|
|
|
|
# Add the local ttl_firewall_file line if it's not already present
|
|
if ! grep -q "local ttl_firewall_file" "$lan_utils_script"; then
|
|
sed -i '/local tcpmss_firewall_filev6/a \ local ttl_firewall_file=/etc/firewall.user.ttl' "$lan_utils_script"
|
|
fi
|
|
|
|
# Add the condition to include the ttl_firewall_file if it's not already present
|
|
if ! grep -q "if \[ -f \"\$ttl_firewall_file\" \]; then" "$lan_utils_script"; then
|
|
sed -i '/if \[ -f "\$tcpmss_firewall_filev6" \]; then/i \ if [ -f "\$ttl_firewall_file" ]; then\n cat \$ttl_firewall_file >> \$firewall_file\n fi' "$lan_utils_script"
|
|
fi
|
|
}
|
|
|
|
clear_existing_rules() {
|
|
local current_ttl=$1
|
|
if [ -n "$current_ttl" ]; then
|
|
iptables -t mangle -D POSTROUTING -o rmnet+ -j TTL --ttl-set "$current_ttl" 2>/dev/null
|
|
ip6tables -t mangle -D POSTROUTING -o rmnet+ -j HL --hl-set "$current_ttl" 2>/dev/null
|
|
fi
|
|
}
|
|
|
|
case "$REQUEST_METHOD" in
|
|
GET)
|
|
# Ensure consistent JSON format for GET requests
|
|
if [ -s "$ttl_file" ]; then
|
|
ttl_value=$(grep 'iptables -t mangle -A POSTROUTING' "$ttl_file" | awk '{for(i=1;i<=NF;i++){if($i=="--ttl-set"){print $(i+1)}}}')
|
|
# Ensure ttl_value is a number, default to 0 if not
|
|
if ! [[ "$ttl_value" =~ ^[0-9]+$ ]]; then
|
|
ttl_value=0
|
|
fi
|
|
echo "{\"isEnabled\": true, \"currentValue\": $ttl_value}"
|
|
else
|
|
echo "{\"isEnabled\": false, \"currentValue\": 0}"
|
|
fi
|
|
;;
|
|
POST)
|
|
read -r post_data
|
|
ttl_value=$(echo "$post_data" | sed 's/ttl=//')
|
|
|
|
# Ensure ttl_file exists
|
|
touch "$ttl_file" 2>/dev/null
|
|
if [ ! -f "$ttl_file" ]; then
|
|
echo "{\"success\": false, \"error\": \"Cannot create TTL file\"}"
|
|
exit 1
|
|
fi
|
|
|
|
# Setup persistent configuration
|
|
setup_persistent_config
|
|
|
|
# Get current TTL value for cleanup
|
|
current_ttl=$(grep 'iptables -t mangle -A POSTROUTING' "$ttl_file" | awk '{for(i=1;i<=NF;i++){if($i=="--ttl-set"){print $(i+1)}}}')
|
|
|
|
if ! [[ "$ttl_value" =~ ^[0-9]+$ ]]; then
|
|
echo "{\"success\": false, \"error\": \"Invalid TTL value\"}"
|
|
elif [ "$ttl_value" = "0" ]; then
|
|
clear_existing_rules "$current_ttl"
|
|
> "$ttl_file"
|
|
echo "{\"success\": true}"
|
|
else
|
|
# Clear existing rules
|
|
clear_existing_rules "$current_ttl"
|
|
|
|
# Set new rules
|
|
echo "iptables -t mangle -A POSTROUTING -o rmnet+ -j TTL --ttl-set $ttl_value" > "$ttl_file"
|
|
echo "ip6tables -t mangle -A POSTROUTING -o rmnet+ -j HL --hl-set $ttl_value" >> "$ttl_file"
|
|
|
|
# Apply the rules
|
|
iptables -t mangle -A POSTROUTING -o rmnet+ -j TTL --ttl-set "$ttl_value"
|
|
ip6tables -t mangle -A POSTROUTING -o rmnet+ -j HL --hl-set "$ttl_value"
|
|
|
|
echo "{\"success\": true}"
|
|
fi
|
|
;;
|
|
*)
|
|
echo "{\"success\": false, \"error\": \"Invalid request method\"}"
|
|
;;
|
|
esac |