#!/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