123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- #!/bin/bash
- wifi_device=$(ynh_app_setting_get --app=$app --key=wifi_device)
- captive_portal=$(ynh_app_setting_get --app=$app --key=captive_portal)
- ip4_prefix=$(ynh_app_setting_get --app=$app --key=ip4_nat_prefix)
- ip6_prefix=$(ynh_app_setting_get --app=$app --key=ip6_net)
- iptables -w -N hotspot_fwd
- ip6tables -w -N hotspot_fwd
- if [[ "${captive_portal}" != "1" ]]
- then
- exit 0
- fi
- for iptables_cmd in iptables ip6tables;
- do
- if [[ "${iptables_cmd}" == "iptables" ]]; then
- prefix="${ip4_prefix}"
- ip="${ip4_prefix}.1"
- subnet="${ip4_prefix}.0/24"
- else
- prefix="${ip6_prefix}"
- ip="${ip6_prefix}1"
- subnet="${ip6_prefix}1/64"
- fi
- mac_addresses=$(grep "${prefix}" /etc/hostapd/$app/allowed.csv | cut -d, -f3)
-
- $iptables_cmd -w -A INPUT -i "${wifi_device}" -m udp -p udp --dport 4253 -j ACCEPT
-
- $iptables_cmd -w -A hotspot_fwd -s "${subnet}" -j DROP
-
- $iptables_cmd -w -A PREROUTING -i "${wifi_device}" -s "${subnet}" -p udp --dport 53 -j DNAT --to-destination "${ip}:4253"
-
-
-
-
- $iptables_cmd -w -A PREROUTING -i "${wifi_device}" -s "${subnet}" -p tcp --dport 80 -j DNAT --to-destination "${ip}:80"
-
-
-
-
- for mac in ${mac_addresses}; do
- $iptables_cmd -w -I hotspot_fwd 1 -s "${subnet}" -m mac --mac-source "${mac}" -j ACCEPT
- $iptables_cmd -t nat -w -I PREROUTING 1 -i "${wifi_device}" -s "${subnet}" -m mac --mac-source "${mac}" -j ACCEPT
- done
- $iptables_cmd -w -I FORWARD 1 -i "${wifi_device}" -j hotspot_fwd
- done
- exit 0
|