vpnbook.com Sitesinden VPN Şifresini Otomatik Almak

Şubat 2nd, 2015 § Yorum yok

vpnbook güzel bir hizmet veriyor fakat şifrelerini belirsiz aralıklarla güncelliyorlar.
vpnbook.com dan şifreleri otomatik almak için ben vpnbook-utils kullanıyorum.

crontab’a aşağıdaki scripti koydum.

[root@FOZTURK vpnbook-utils-master]# crontab -l
9 */3 * * * /root/vpnbook.sh

vpnbook programının kodu:

[root@FOZTURK vpnbook-utils-master]# cat vpnbook 
#!/bin/sh
# The MIT License (MIT)
# Copyright (c) 2014 Tobias Bell <tobias.bell@gmail.com>

PROGRAM="vpnbook"
# URL to the site containing user and password
SITE="http://www.vpnbook.com/freevpn"
# URL to the site containing OpenVPN configs
OPENVPN_SITE="http://www.vpnbook.com"
# File where VPNBook credentials get stored
AUTH_FILE="./vpnbook.auth"
# Path to temporary file
AUTH_FILE_TMP="/tmp/vpnbook.$$"
# Folder where OpenVPN configs are created
CONFIG_FOLDER="./"
# Path to temporary folder for config generation
CONFIG_FOLDER_TEMP="/tmp/vpnbook-config.$$"

cleanup() {
        rm -f "$AUTH_FILE_TMP"
        rm -rf "$CONFIG_FOLDER_TEMP"
}

trap cleanup HUP INT TERM

usage() {
        cat << EOF
Usage: $PROGRAM <command> [parameter]

Commands are
    config  Generate OpenVPN configs for non-interactive usage based on configs provided
            on $OPENVPN_SITE
    auth    Extract user and password from $OPENVPN_SITE and save to auth-user-pass file
            (default: $AUTH_FILE)

Parameters are
    -a <file>    Path to the auth_user_pass file (default: $AUTH_FILE)
    -c <folder>  Folder where OpenVPN configs are generated (default: $CONFIG_FOLDER)
    -h           Show this help
EOF
}

download_site() {
        local site="$1"
        wget "$site" -q -O -
}

extract_credentials() {
        awk -F '[<>]' '
        BEGIN { exit_value = 1 }
        /Username:/ && !user_found { print $5; user_found = 1; next }
        /Password:/ && user_found { print $5; exit_value = 0; exit } 
        END { exit exit_value }
        '
}

extract_config_urls() {
        local site="$1"
        awk -F '[<>]' -v site=$site '
        /free-openvpn-account/ { split($4, a, /"/); print site a[2] }
        '
}

generate_auth() {
        local data="$1"
        if (echo "$data" | extract_credentials) > "$AUTH_FILE_TMP"; then
                mv "$AUTH_FILE_TMP" "$AUTH_FILE"
                chmod 600 "$AUTH_FILE"
        fi
}

generate_vpn_config() {
        awk -v auth_file="$AUTH_FILE" '
        # Remove windows newline
        { sub(/\r$/, "") }
        # Add both ports in config file and let OpenVPN select them remote-random
        /^remote/ {
                host = $2; print
                print $1, host, 25000
                if (!remote_random_printed) {
                        print "remote-random"
                        remote_random_printed = 1
                }
                next
        }
        # Switch authentication from interactive to file based
        /^auth-user-pass/ {
                print $1, auth_file
                print "auth-retry nointeract"
                next
        }
        # Let OpenVPN check the remote certificate
        /^<ca>/ {
                print "ns-cert-type server"
        }
        # Output everything else unchanged
        { print }
        '
}

generate_config() {
        local data="$1"
        mkdir "$CONFIG_FOLDER_TEMP" || return
        #Bu alanı ben kaldirdim
        cd /root/vpnbook_config/
        for url in $(echo "$site_data" | extract_config_urls "$OPENVPN_SITE"); do
                local file="$CONFIG_FOLDER_TEMP/${url##*/}"
                local conf_file="vpnbook-${file##*-}"
                conf_file=${conf_file%.zip}.ovpn
                conf_file="$CONFIG_FOLDER/$(echo $conf_file | tr 'A-Z' 'a-z')"
                wget "$url" -O "$file" -q
                unzip -p "$file"  '*udp53*.ovpn' | generate_vpn_config > "$conf_file"
        done

        wget "http://www.vpnbook.com/free-openvpn-account/VPNBook.com-OpenVPN-Euro1.zip"
        wget "http://www.vpnbook.com/free-openvpn-account/VPNBook.com-OpenVPN-Euro2.zip"

        unzip VPNBook.com-OpenVPN-Euro1.zip
        unzip VPNBook.com-OpenVPN-Euro2.zip
        rm -f VPNBook.com-OpenVPN-Euro1.zip
        rm -f VPNBook.com-OpenVPN-Euro2.zip
        generate_auth "$data"
}

main() {
        case $1 in
                config | auth )
                        generator_func="generate_$1"
                        ;;
                * )
                        usage
                        exit 1
                        ;;
        esac
        shift

        while getopts 'a:c:h' options; do
                case $options in
                        a )
                                auth_file=$OPTARG
                                ;;
                        c )
                                config_folder=$OPTARG
                                ;;
                        h | \?)
                                usage
                                exit 1
                                ;;
                esac
        done

        AUTH_FILE=${auth_file:-$AUTH_FILE}
        CONFIG_FOLDER=${config_folder:-$CONFIG_FOLDER}

        local site_data="$(download_site "$SITE")"
        $generator_func "$site_data"
        retval=$?
        cleanup
        return $retval
}

if [ "$PROGRAM" = ${0##*/} ]; then
        main "$@"
        exit $?
fi

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Ne yapıyorum ben!?

vpnbook.com Sitesinden VPN Şifresini Otomatik Almak başlıklı yazıyı okuyorsun.

Üst Veri