#!/bin/sh

# Reliable local-only hotspot using Android SoftAP
# 1. Turn Android Hotspot ON first
# 2. Run this script

IFACE="wlan1"
AP_IP="192.168.43.1"
NET="192.168.43.0/24"
DHCP_RANGE="192.168.43.10,192.168.43.50,12h"

[ "$(id -u)" -ne 0 ] && { echo "Need root"; exit 1; }

if ! ip link show "$IFACE" >/dev/null 2>&1; then
    echo "Turn the Android Hotspot ON first, then run this script."
    exit 1
fi

echo "[*] Taking control of Android SoftAP on $IFACE..."

# Only kill DHCP, leave Android's hostapd running
killall dnsmasq 2>/dev/null
sleep 1

# Disable reverse path filter
echo 0 > /proc/sys/net/ipv4/conf/all/rp_filter
echo 0 > /proc/sys/net/ipv4/conf/$IFACE/rp_filter 2>/dev/null

# Add our gateway IP (keep whatever Android already has)
ip addr add $AP_IP/24 broadcast 192.168.43.255 dev $IFACE 2>/dev/null
ip link set $IFACE up
ip route add $NET dev $IFACE src $AP_IP 2>/dev/null

# Allow traffic
iptables -C INPUT  -i $IFACE -j ACCEPT 2>/dev/null || iptables -I INPUT  -i $IFACE -j ACCEPT
iptables -C OUTPUT -o $IFACE -j ACCEPT 2>/dev/null || iptables -I OUTPUT -o $IFACE -j ACCEPT
iptables -C FORWARD -i $IFACE -j ACCEPT 2>/dev/null || iptables -I FORWARD -i $IFACE -j ACCEPT
iptables -C FORWARD -o $IFACE -j ACCEPT 2>/dev/null || iptables -I FORWARD -o $IFACE -j ACCEPT

# Start our DHCP
dnsmasq \
    --interface=$IFACE \
    --bind-interfaces \
    --dhcp-range=$DHCP_RANGE \
    --dhcp-option=3,$AP_IP \
    --dhcp-option=6,$AP_IP \
    --port=0 \
    --no-resolv \
    --pid-file=/tmp/dnsmasq-$IFACE.pid &

sleep 2

echo
echo "=== Local-only Hotspot Ready ==="
echo "SSID & Password = whatever you set in Android Hotspot settings"
echo "Gateway         = $AP_IP"
echo
ip -4 addr show $IFACE
echo
echo "Connect your PC and ping 192.168.43.1"
