#!/bin/bash

# Skrypt pobiera listę IP używanych przez CloudFlare
# i zapisuje je do pliku zgodnego z Nginx.
# Plik należy zapisać /etc/nginx/conf.d/cloudflare.conf
# i zrestartować Nginx (restart lub reload).
# Skrypt może to zrobić automatycznie (parametr: auto),
# lub dopiero gdy sami zdecydujemy (start bez parametru).

CF_IP4="/tmp/cf_ipv4"
CF_IP6="/tmp/cf_ipv6"
CF_TEMP_IP_LIST="/tmp/cf_temp_ip_list"
CF_NGINX_IP_LIST="/etc/nginx/conf.d/cloudflare.conf"

if [ "$CF_IP4" ]
then
	sudo rm $CF_IP4
fi

if [ "$CF_IP6" ]
then
	sudo rm $CF_IP6
fi

if [ "$CF_TEMP_IP_LIST" ]
then
	sudo rm $CF_TEMP_IP_LIST
fi


sudo wget -U "Download IP4" https://www.cloudflare.com/ips-v4 -O $CF_IP4
sudo wget -U "Download IP6" https://www.cloudflare.com/ips-v6 -O $CF_IP6


echo "# Cloudflare MyRealIP" | sudo tee $CF_TEMP_IP_LIST > /dev/null

while read line; do    
    echo "set_real_ip_from "$line";"    
done < $CF_IP4 | sudo tee -a $CF_TEMP_IP_LIST > /dev/null

while read line; do    
    echo "set_real_ip_from "$line";"    
done < $CF_IP6 | sudo tee -a $CF_TEMP_IP_LIST > /dev/null

echo "real_ip_header CF-Connecting-IP;" | sudo tee -a $CF_TEMP_IP_LIST > /dev/null
echo "real_ip_recursive on;" | sudo tee -a $CF_TEMP_IP_LIST > /dev/null

echo "# /Cloudflare MyRealIP" | sudo tee -a $CF_TEMP_IP_LIST > /dev/null
echo "# $(date +"%Y.%m.%d")" | sudo tee -a $CF_TEMP_IP_LIST > /dev/null

if [ "$1" = "auto" ]
then
	echo "AutoMode, start za 10 sekund..."
	sleep 10
	if [ "$CF_NGINX_IP_LIST" ]
	then
		sudo rm $CF_NGINX_IP_LIST
	fi
	sudo cp $CF_TEMP_IP_LIST $CF_NGINX_IP_LIST
	sudo service nginx reload
	echo "OK"
else
	echo "----- PLIK -----"
	sudo cat $CF_TEMP_IP_LIST
	echo "----- /PLIK -----"
	
	read -p "[Enter] -> Podmiana pliku"
	
	if [ "$CF_NGINX_IP_LIST" ]
	then
		sudo rm $CF_NGINX_IP_LIST
	fi
	
	sudo cp $CF_TEMP_IP_LIST $CF_NGINX_IP_LIST
	
	read -p "[Enter] -> Test Nginx"
	sudo nginx -t

	echo "Nginx: jeśli OK - 1, jeśli błąd - 0"
	read NGINX_RESTART
fi


	if [ "$NGINX_RESTART" = "0" ]
	then
		echo "0: Wyjscie"
		exit
	fi
	
	if [ "$NGINX_RESTART" = "1" ]
	then
		echo "1: restart za 10 sekund..."
		sleep 10
		sudo service nginx reload
	fi

exit 0
