#!/bin/bash

echo "#########################################################"
echo "                  ××× 安装 修复 添加 转发                 "
echo "                        BY:VER007                       "
echo "                    OS = Centos 6 32                  "
echo "#########################################################"

function install×××(){
        echo "开始安装×××服务";
        #check wether vps suppot ppp and tun

        yum remove -y pptpd ppp
        iptables --flush POSTROUTING --table nat
        iptables --flush FORWARD
        rm -rf /etc/pptpd.conf
        rm -rf /etc/ppp

        arch=`uname -m`

        wget http://www.hi-vps.com/downloads/dkms-2.0.17.5-1.noarch.rpm
        wget http://wty.name/linux/sources/kernel_ppp_mppe-1.0.2-3dkms.noarch.rpm
        wget http://www.hi-vps.com/downloads/kernel_ppp_mppe-1.0.2-3dkms.noarch.rpm
        wget http://www.hi-vps.com/downloads/pptpd-1.3.4-2.el6.$arch.rpm
        wget http://www.hi-vps.com/downloads/ppp-2.4.5-17.0.rhel6.$arch.rpm

        yum -y install make libpcap iptables gcc-c++ logrotate tar cpio perl pam tcp_wrappers
        rpm -ivh dkms-2.0.17.5-1.noarch.rpm
        rpm -ivh kernel_ppp_mppe-1.0.2-3dkms.noarch.rpm
        rpm -qa kernel_ppp_mppe
        rpm -Uvh ppp-2.4.5-17.0.rhel6.$arch.rpm
        rpm -ivh pptpd-1.3.4-2.el6.$arch.rpm

        rm /dev/ppp
        mknod /dev/ppp c 108 0
        echo 1 > /proc/sys/net/ipv4/ip_forward
        echo "mknod /dev/ppp c 108 0" >> /etc/rc.local
        echo "echo 1 > /proc/sys/net/ipv4/ip_forward" >> /etc/rc.local
        echo "localip 192.168.9.1" >> /etc/pptpd.conf
        echo "remoteip 192.168.9.2-254" >> /etc/pptpd.conf
        mkdir /etc/ppp/
        chmod +x /etc/ppp/
        echo "ms-dns 8.8.8.8" >> /etc/ppp/options.pptpd
        echo "ms-dns 8.8.4.4" >> /etc/ppp/options.pptpd

        #pass=`openssl rand 6 -base64`
        #if [ "$1" != "" ]
        #then pass=$1
        #fi
        echo -n "请输入要设置的账号:"
        read username

        echo -n "请输入要设置的密码:"
        read password

        echo "${username} pptpd ${password} *" >> /etc/ppp/chap-secrets

        iptables -t nat -A POSTROUTING -s 192.168.9.0/255.255.255.0 -j SNAT --to-source `ifconfig  | grep 'inet addr:'| grep -v '127.0.0.1' | cut -d: -f2 | awk 'NR==1 { print $1}'`
        service iptables save

        chkconfig iptables on
        chkconfig pptpd on

        service iptables start
        service pptpd start
        echo "装×××服务,您的用户名是${username},密码 ${password}"
        echo "安装完成 请重启服务器!"

}

function repaire×××(){
        echo "开始修复×××...";
        mknod /dev/ppp c 108 0
        service iptables restart
        service pptpd start
        echo "修复结束"
        exit
}

function porttoport(){
        echo ""
        echo "----端口转发设置----"
        echo ""
        echo "请输入内网IP:"
        read neiwangip
        echo "请输入外网IP(留空为自动获取):"
        read waiwangip
        if [ -z ${neiwangip} ] ;then
            waiwangip=$(ifconfig  | grep 'inet addr:'| grep -v '127.0.0.1' | cut -d: -f2 | awk 'NR==1 { print $1}')
        fi
        echo "请输入要转发的端口:"
        read port
        if [ -z ${port} ] ;then
            echo "ERROR:没有提供可用端口,将退出设置"
            exit
        else
            if [ -z ${neiwangip} ] ;then
                echo "ERROR: 没有提供内网的IP,将退出设置"
                exit
            else
                if [ -z ${waiwangip} ] ;then
                    echo "ERROR:未设置外网IP 将退出设置"
                    exit
                else
                    echo 外网IP是"${waiwangip}" 内网IP是"${neiwangip}" 转发端口是"${port}"
                    iptables -t nat -A PREROUTING -d ${waiwangip} -p tcp -m tcp --dport ${port} -j DNAT --to-destination ${neiwangip}:${port}
                    iptables -t nat -A POSTROUTING -s 192.168.9.0/24 -d ${neiwangip} -p tcp -m tcp --dport ${port} -j SNAT --to-source 192.168.9.1
                    echo 转发外网" ${waiwangip}":"${port} "端口\-\>内网" ${neiwangip}":"${port} "
                    echo "是否保存转发记录 或者 临时转发(N)(Y/N)?"
                    read ok
                    if [[${ok}="Y"]]||[[${ok}="y"]] ;then
                        service iptables save
                        service iptables restart
                    fi
                    exit
        fi
    fi
fi
}

function add×××user(){
        echo ""
        echo "----新建账号设置----"
        echo ""
        echo "请输入账号:"
        read username
        echo "请输入密码:"
        read userpassword
        echo "${username} pptpd ${userpassword} *" >> /etc/ppp/chap-secrets
        service iptables restart
        service pptpd start
}

function exiter(){ exit }

echo "请输入服务编号."
echo "1. 安装 ××× 服务"
echo "2. 修复 ××× 服务"
echo "3. 新建 ××× 账号"
echo "4. 内网端口转发设置"
echo "5. 退出安装或设置"
read num

case "$num" in
[1] ) (install×××);;
[2] ) (repaire×××);;
[3] ) (add×××user);;
[4] ) (porttoport);;
[5] ) (exiter);;
*) echo "取消退出";;
esac