OSDN Git Service

first commit
authorowata-programer <owata_programer@users.sourceforge.jp>
Sun, 20 Apr 2014 06:26:32 +0000 (15:26 +0900)
committerowata-programer <owata_programer@users.sourceforge.jp>
Sun, 20 Apr 2014 06:26:32 +0000 (15:26 +0900)
VPNGATESCRIPT [new file with mode: 0755]

diff --git a/VPNGATESCRIPT b/VPNGATESCRIPT
new file mode 100755 (executable)
index 0000000..4f5a272
--- /dev/null
@@ -0,0 +1,178 @@
+#!/bin/bash
+
+hostname=""
+ip=""
+score=0
+ping=0
+speed=0
+countrylong=""
+countryshort=""
+numvpnsessions=0
+uptime=0
+totalusers=0
+totaltraffic=0
+logtype=""
+operator=""
+message=""
+openvpn_configdata_base64=""
+servernum=1
+cmd=""
+loop=""
+
+outlist()
+{
+    number=$1
+    row=0
+    until [ $row = "15" ]; do
+       row=`expr $row + 1`
+       line=`cat ./tmp/vpnhostlist/${servernum} | awk "NR==${row}"`
+       case $row in
+           "1" ) hostname="$line";;
+           "2" ) ip="$line";;
+           "3" ) score="$line";;
+           "4" ) ping="$line";;
+           "5" ) speed="$line";;
+           "6" ) countrylong="$line";;
+           "7" ) countryshort="$line";;
+           "8" ) numvpnsessions="$line";;
+           "9" ) uptime="$line";;
+           "10" ) totalusers="$line";;
+           "11" ) totaltraffic="$line";;
+           "12" ) logtype="$line";;
+           "13" ) operator="$line";;
+           "14" ) message="$line";;
+           "15" ) openvpn_configdata_base64="$line";;
+       esac
+    done
+    clear
+    echo "${1}件目のサーバーを表示します"
+    echo "国・地域(物理的位置):${countrylong}"
+    echo "DDNS名:${hostname}"
+    echo "IPアドレス:${ip}"
+    echo "VPN接続数:${numvpnsessions}セッション"
+    # echo "連続稼働時間:
+    echo "過去${totalusers}人利用"
+    speed=`echo "scale=2; ${speed}/1000000" | bc`
+    echo "回線速度:${speed}Mpbs"
+    echo "Ping:${ping}ms"
+    totaltraffic=`echo "scale=2; ${totaltraffic}/1000000000" | bc`
+    echo "累計通信量${totaltraffic}GB"
+    echo "ログ記録ポリシー:${logtype}"
+    echo "ボランティア運営者名:${operator}"
+    echo "運営者によるメッセージ:${message}"
+    echo "スコア(品質):${score}"
+    echo ""
+    echo "Enter:次のサーバーを表示    BackSpace:前のサーバーを表示"
+    echo "C:このサーバーに接続"    "Q:終了"
+    while : ; do
+       read -s -n 1 cmd
+       case $cmd in
+           "" )
+               servernum=`expr $servernum + 1`
+               if [ -e ./tmp/vpnhostlist/${servernum} ]; then
+                   break
+               else
+                   echo "${servernum}番目のサーバーはありません"
+                   servernum=`expr $servernum - 1`
+               fi
+               ;;
+           $'\x7f' )
+               if [ $servernum = 1 ]; then
+                   echo "これ以上前のサーバーはありません"
+               else
+                   servernum=`expr $servernum - 1`
+                   break
+               fi
+               ;;
+           "c" | "C" )
+               break
+               ;;
+           "q" | "Q" )
+               break
+               ;;
+           * )
+               read -s -n 1 cmd
+               ;;
+       esac
+    done
+}
+               
+
+if [ "`id | grep root`" = "" ]; then
+    echo "root権限で実行してください"
+    exit 1
+fi
+
+if [ -e ./tmp ]; then
+    echo "一時ファイルを削除しています"
+    rm -rf ./tmp
+fi
+mkdir tmp
+
+vpngate_address="www.vpngate.net/"
+while getopts dm: OPTION; do
+    case $OPTION in
+       "m" )
+           echo "mオプションが指定されたので、指定されたミラーサーバーを使用します"
+           vpngate_address=$OPTARG 
+           ;;
+       "d" )
+           echo "dオプションが指定されたので、ipアドレスを直接指定して取得を試みます"
+           vpngate_address=$(echo `host www.vpngate.net | awk NR==1`/)
+           break
+           ;;
+    esac
+done
+
+echo "VPNサーバーの一覧を開始します"
+wget -O ./tmp/vpnlist "${vpngate_address}api/iphone/"
+
+if [ $? != 0 ]; then
+    echo "サーバー一覧の取得に失敗しました"
+    exit 1
+fi
+
+echo "VPNサーバーの一覧を処理しています"
+mkdir ./tmp/vpnhostlist
+cat ./tmp/vpnlist | tr "," "\n" > ./tmp/temp
+rm -f ./tmp/vpnlist
+mv ./tmp/temp ./tmp/vpnlist
+i=-17
+servernum=1
+cat ./tmp/vpnlist | while read line; do
+    i=`expr $i + 1`
+    if [ $i -ge 0 ]; then
+       echo "$line" >> ./tmp/vpnhostlist/$servernum
+       if [ $i = "14" ]; then
+           servernum=`expr $servernum + 1`
+           i=-1
+           echo -n "."
+       fi
+    fi
+done
+echo "\n"
+echo "完了しました"
+servernum=1
+loop="n"
+while : ; do
+    outlist $servernum
+    case $cmd in
+       "c" )
+           break;;
+       "q" )
+           echo "終了しました"
+           exit 0;;
+    esac
+done
+killall openvpn >/dev/null 2>&1
+echo "$openvpn_configdata_base64" > ./tmp/openvpn_base64
+base64 -d ./tmp/openvpn_base64 > ./tmp/openvpn.conf
+openvpn --config ./tmp/openvpn.conf > /dev/null &
+clear
+echo "接続を開始しました"
+echo "接続が完了するまで何秒かかかるので注意してください"
+echo "接続できない場合はopenvpnを終了させてからもう一度このスクリプトを起動して違うサーバーに接続してみてください"
+echo -n "キーを押すと終了します"
+read
+
+exit 0