#!/bin/bash

function installVPN(){
        apt-get update
        #remove ppp pptpd
        rm -rf /etc/pptpd.conf
        rm -rf /etc/ppp
        apt-get -y remove ppp pptpd
        apt-get -y install ppp pptpd iptables

        #注意，这里的一些refuse-pap之类的要注意，如果不能连接首先改这里。
        #如果一直出错，将require-mschap-v2和require-mppe-128 这两行加密注释掉，（对应源文件）
        echo name pptpd >> /etc/ppp/pptpd-options
        echo refuse-pap >> /etc/ppp/pptpd-options
        echo refuse-chap >> /etc/ppp/pptpd-options
        #refuse-mschap
        echo require-mschap-v2 >> /etc/ppp/pptpd-options
        echo require-mppe-128 >> /etc/ppp/pptpd-options
        echo proxyarp >> /etc/ppp/pptpd-options
        echo nodefaultroute >> /etc/ppp/pptpd-options
        echo lock >> /etc/ppp/pptpd-options
        echo nobsdcomp >> /etc/ppp/pptpd-options


        echo ms-dns 8.8.8.8 >> /etc/ppp/pptpd-options
        echo ms-dns 8.8.4.4 >> /etc/ppp/pptpd-options
        echo ms-dns 4.3.2.1 >> /etc/ppp/pptpd-options

        #写到pptpd.conf文件中
        echo option /etc/ppp/pptpd-options >> /etc/pptpd.conf
        echo logwtmp >> /etc/pptpd.conf
        echo localip 192.168.99.1 >> /etc/pptpd.conf
        echo remoteip 192.168.99.9-99 >> /etc/pptpd.conf

        #这个最好只能处理一次。否则每次都会修改,以防万一，改两次吧。。第一次应该失败
        sed -i 's/#net\.ipv4.ip_forward=0/net\.ipv4.ip_forward=1/' /etc/sysctl.conf
        sed -i 's/#net\.ipv4.ip_forward=1/net\.ipv4.ip_forward=1/' /etc/sysctl.conf
        #echo net.ipv4.ip_forward = 1 >> /etc/sysctl.conf
        sysctl -p
        #以下内容是for OPENVZ
        #iptables -t nat -A POSTROUTING -s 192.168.99.0/24 -j SNAT --to-source `ifconfig  | grep 'inet addr:'| grep -v '127.0.0' | cut -d: -f2 | awk 'NR==1 { print $1}'`
        #sed -i 's/exit\ 0/#exit\ 0/' /etc/rc.local

        #echo iptables -t nat -A POSTROUTING -s 192.168.99.0/24 -j SNAT --to-source `ifconfig  | grep 'inet addr:'| grep -v '127.0.0' | cut -d: -f2 | awk 'NR==1 { print $1}'` >> /etc/rc.local
        #echo exit 0 >> /etc/rc.local

        

        # --- the sentence below was remarked By yanwen ,  what are you doing ??-----

}

function installOpenVZ(){
        (installVPN)
        iptables -t nat -A POSTROUTING -s 192.168.99.0/24 -j SNAT --to-source `ifconfig  | grep 'inet addr:'| grep -v '127.0.0' | cut -d: -f2 | awk 'NR==1 { print $1}'`
        sed -i 's/exit\ 0/#exit\ 0/' /etc/rc.local

        echo iptables -t nat -A POSTROUTING -s 192.168.99.0/24 -j SNAT --to-source `ifconfig  | grep 'inet addr:'| grep -v '127.0.0' | cut -d: -f2 | awk 'NR==1 { print $1}'` >> /etc/rc.local
        echo exit 0 >> /etc/rc.local
        (setDefaultUser)
}
function installXen(){
        (installVPN)
        iptables -t nat -A POSTROUTING -s 192.168.99.0/24 -o eth0 -j MASQUERADE
        sed -i 's/exit\ 0/#exit\ 0/' /etc/rc.local

        echo iptables -t nat -A POSTROUTING -s 192.168.99.0/24 -o eth0 -j MASQUERADE >> /etc/rc.local
        echo exit 0 >> /etc/rc.local
        (setDefaultUser)
}

function setDefaultUser(){
        #默认用户
        echo gouki \* 123456 \* >> /etc/ppp/chap-secrets
        /etc/init.d/pptpd restart
}

function repaireVPN(){
        echo "begin to repaire VPN";
        mknod /dev/ppp c 108 0
        /etc/init.d/pptpd restart
}

function addVPNuser(){
        echo "input user name:"
        read username
        echo "input password:"
        read userpassword
        echo "${username} pptpd ${userpassword} *" >> /etc/ppp/chap-secrets
        /etc/init.d/pptpd restart
}
function disableEncyption(){
        sed -i 's/^require-mschap-v2/#require-mschap-v2/' /etc/ppp/pptpd-options
        sed -i 's/^require-mppe-128/#require-mppe-128/' /etc/ppp/pptpd-options
        /etc/init.d/pptpd restart
}
function enableEncyption(){
        sed -i 's/^#require-mschap-v2/require-mschap-v2/' /etc/ppp/pptpd-options
        sed -i 's/^#require-mppe-128/require-mppe-128/' /etc/ppp/pptpd-options
        /etc/init.d/pptpd restart
}
echo "which do you want to?input the number."
echo "1. install Xen VPN service"
echo "2. install OpenVz VPN service"
echo "3. repaire VPN service"
echo "4. add VPN user"
echo "5. disable encryption"
echo "6. disable encryption"
read num

case "$num" in
[1] ) (installXen);;
[2] ) (installOpenVZ);;
[3] ) (repaireVPN);;
[4] ) (addVPNuser);;
[5] ) (disableEncyption);;
[6] ) (enableEncyption);;
*) echo "nothing,exit";;
esac