#!/bin/bash

if [ $(id -u) != "0" ]; then
    printf "Error: You must be root to run this tool!\n"
    exit 1
fi
clear
printf "
########################################################
#                                                      #
# This is a Shell-Based tool of making LAN to Internet #
# throuth NAT.                                         #
# There are 2 parts of the tool. This is for NAT_GW.   #
#                                                      #
########################################################
"

ip_file=/opt/ip.list
echo -e "Please input the path of the file,\nwhich is used to save the ip list of LAN:"
read -p "(Default ip_file: /opt/ip.list):" ip_file
if [ "$ip_file" = "" ]; then
	ip_file=/opt/ip.list
fi
if [[ -s $ip_file ]]; then
	rm -rf $ip_file
fi
touch $ip_file

END_CONDITION="0"
until [ "$END_CONDITION" = "$node_ip" ]
do
	node_ip=$(ifconfig eth0|awk -F"[: ]+" '/inet addr/{print $4}')
	echo "Please input a node ip, which is needed to do nat:"
	read -p "(like but not: $node_ip; \"$END_CONDITION\" to quit):" node_ip
	if [ "$node_ip" = "" ]; then
		echo "The node_ip can not be empty!"
	elif [ "$node_ip" = "$END_CONDITION" ]; then
		echo -e "\nThe NAT_Node ip list is:"
		cat $ip_file
	else
		echo $node_ip >>$ip_file
	fi
done

get_char()
{
SAVEDSTTY=`stty -g`
stty -echo
stty cbreak
dd if=/dev/tty bs=1 count=1 2> /dev/null
stty -raw
stty echo
stty $SAVEDSTTY
}
echo ""
echo "Press any key to start..."
char=`get_char`
echo ""

if [[ -s $ip_file ]]; then
	if [[ -s /etc/sysconfig/iptables ]]; then
		iptables-save > /etc/sysconfig/iptables
		service iptables restart
	fi
	iptables -F -t nat
	while read ip
	do
		iptables -t nat -A POSTROUTING -s $ip -j MASQUERADE
	done <$ip_file
else
	echo "no ip list file"
fi
sed -i 's/exit 0//g' /etc/rc.local
cat >>/etc/rc.local<<EOF
while read ip
do
	iptables -t nat -A POSTROUTING -s \$ip -j MASQUERADE
done <$ip_file
EOF

os=$(head -n1 /etc/issue|cut -d\  -f1)
forwarding_enabled=$(sysctl -a 2>/dev/null | grep -E '^net.ipv4.conf.all.forwarding' | awk -F'=' '{print $2}')
if [[ "$forwarding_enabled" -eq 0 ]]; then
	sed -i 's/.*net.ipv4.ip_forward.*/net.ipv4.ip_forward = 1/' /etc/sysctl.conf
	sysctl -p 2>/dev/null
fi

printf "
########################################################
#                                                      #
# This is a Shell-Based tool of making LAN to Internet #
# throuth NAT.                                         #
# There are 2 parts of the tool. This is for NAT_GW.   #
#                                                      #
########################################################
The alternative gateway ip is \"$(ifconfig eth0|awk -F"[: ]+" '/inet addr/{print $4}')\".

"