| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103 |
- #Captive portal iptables rule script
- #Copyright Deben Oldert
- #This script handles the rules for the captive portal
- #It is multifuncional
- #Initialize the new rules (startup)
- #Delete a rule for an ip to grand internet access
- #define version of the script
- version="V2.1.13"
- #load IPTables
- IPTABLES=/sbin/iptables
- #When it needs to initialize the rules, do this
- if [ "$1" == "initialize" ]
- then
- #First stop host apd so people can't connect
- sudo service hostapd stop
- #Flush all existing rules
- $IPTABLES -F
- $IPTABLES -X
- #Allow forwarding
- echo 1 > /proc/sys/net/ipv4/ip_forward
- #Boot up Wifi adapter
- echo "Booting up WiFi adapter..."
- sudo ifup wlan0
- #Add some basic rules to iptables
- while read rule
- do
- #Execute each rule in the file
- $($rule)
- done < /portal/firewall_Rules
- #Each ip from the list will be redirected to the captive portal
- echo "These IP's will be redirected to the Captive Portal"
- #define 1 (ip counter) and set it to zero
- i=0
- #Read all ips from ip file and make rule per ip
- #Read each line as $ip
- while read ip
- do
- #Shits getting serious now
- sudo $IPTABLES -t nat -A PREROUTING -s "$ip" -p tcp -j DNAT --to-destination 10.111.11.5:80
- #Print the ip
- echo $ip
- #Increment 1 on i so we can see how many ip where added
- ((i++))
- #Not the last line in file? Lets do it again!
- done < /portal/users
- #Show the amount of ip's
- echo "Added $i IP's to rule list"
- echo "Checking if site is up (might take a while)"
- #Set 1 to one, for another counter
- i=1
- #Lets check if our portal is online
- #The 3 here is for the amount of times you want to check (default is 3)
- while [ $i -le 3 ]
- do
- #Check if the site is online
- if curl -s --head http://localhost/Portal/ | head -n 1 | grep "200" >/dev/null 2>&1;
- then
- #If the site is up, do this:
- echo "Site is up!"
- echo "Starting hostapd"
- #Start hostapd so people can connect
- sudo service hostapd start
- #Set i to 4 to break the loop
- i=4
- echo "Everything is up and running!"
- else
- #If site is still down do this
- echo "Still checking if site is up ($i/3)"
- #Give Tomcat some time to think
- sleep 30s
- #Increment i with 1
- ((i++))
- #If i = 4, The site is still not up, Tell whats wrong!
- if [ "$i" == "4" ]
- then
- echo "Site is still not online!"
- echo "Exiting the program (maybe reboot)"
- fi
- fi
- done
- #Show some information
- echo "Captive Portal rule script"
- echo $version
- echo "Copy right: Deben Oldert"
- fi
- #If action is permitting acces to internet, delete rule to portal
- if [ "$1" == "grand" ]
- then
- #check if $2 (ip adress) not empty
- if [[ ! -z "$2" ]]
- then
- #Delete the rule
- sudo -u root $IPTABLES -t nat -D PREROUTING -s $2 -p tcp -j DNAT --to-destination 10.11$
- #Tell the system its fine
- echo "SUCCES"
- else
- #Missing the ip parameter
- echo "FAIL"
- fi
- fi
- #Uncomment for debugging
- #$IPTABLES -t nat -L PREROUTING
|