Files
2026-08-05 05:47:45 -04:00

94 lines
2.7 KiB
Bash
Executable File

#!/usr/bin/env bash
set -euo pipefail
# POS: network hotspot — Wi-Fi hotspot via create_ap + wihotspot-gui
# POS_FLAGS: --foreground
LOGFILE=/var/log/linux_post_install_hotspot.log
usage() {
cat <<EOF
Usage: pos network hotspot [command] [args]
Manage Wi-Fi hotspots with create_ap (CLI) or wihotspot-gui (GUI).
These tools are precompiled and shipped in x64_bin/ (or arm64_bin/),
installed to /usr/local/bin/ by install.sh.
Commands:
(no args) Launch the wihotspot-gui
start [--foreground] <wifi-iface> [<internet-iface>] <ssid> [<passphrase>]
Create an access point; asks whether to run in the
background. Use --foreground to skip the prompt
and block until Ctrl+C.
stop [<id>] Stop the running access point. <id> is an interface
name or PID; if omitted it is detected automatically.
status List running access points
Examples:
pos network hotspot
pos network hotspot start wlan0 eth0 MyNet mypass
pos network hotspot start --foreground wlan0 eth0 MyNet mypass
pos network hotspot stop
pos network hotspot status
Background logs: $LOGFILE
EOF
exit 0
}
cmd="${1:-}"
case "$cmd" in
-h|--help) usage ;;
"") exec wihotspot-gui ;;
start)
shift
fg=0
bg=0
if [ "${1:-}" = "--foreground" ]; then
fg=1
shift
fi
[ $# -ge 2 ] || usage
if [ $fg -eq 0 ]; then
read -rp "Run in background? [y/N]: " bg
case "$bg" in
[yY]*) bg=1 ;;
*) bg=0 ;;
esac
fi
if [ $bg -eq 1 ]; then
sudo create_ap --daemon --logfile "$LOGFILE" "$@"
echo "[+] Hotspot started in background"
echo " Log : $LOGFILE"
echo " Status: pos network hotspot status"
echo " Stop : pos network hotspot stop"
else
exec sudo create_ap "$@"
fi
;;
stop)
shift
id="${1:-}"
if [ -z "$id" ]; then
ids=$(sudo create_ap --list-running | awk 'NF { print $2 }')
if [ -z "$ids" ]; then
echo "No hotspot running."
exit 0
fi
for id in $ids; do
sudo create_ap --stop "$id"
done
else
sudo create_ap --stop "$id"
fi
;;
status)
exec sudo create_ap --list-running
;;
*)
echo "ERROR: Unknown hotspot command '$cmd'"
echo "Run 'pos network hotspot --help' for usage."
exit 1
;;
esac