-
-
Save im-noob/15c20628c96d3ab4f3e5654ff293cd67 to your computer and use it in GitHub Desktop.
| #!/usr/bin/env python | |
| # Origal Soruce: https://gist.github.com/Lazza/bbc15561b65c16db8ca8 | |
| """Pick server and start connection with VPNGate (http://www.vpngate.net/en/)""" | |
| import requests, os, sys, tempfile, subprocess, base64, time | |
| __author__ = "Andrea Lazzarotto" | |
| __copyright__ = "Copyright 2014+, Andrea Lazzarotto" | |
| __license__ = "GPLv3" | |
| __version__ = "1.0" | |
| __maintainer__ = "Andrea Lazzarotto" | |
| __email__ = "[email protected]" | |
| if len(sys.argv) != 2: | |
| print('usage: ' + sys.argv[0] + ' [country name | country code]') | |
| exit(1) | |
| country = sys.argv[1] | |
| if len(country) == 2: | |
| i = 6 # short name for country | |
| elif len(country) > 2: | |
| i = 5 # long name for country | |
| else: | |
| print('Country is too short!') | |
| exit(1) | |
| try: | |
| vpn_data = requests.get('http://www.vpngate.net/api/iphone/').text.replace('\r','') | |
| servers = [line.split(',') for line in vpn_data.split('\n')] | |
| labels = servers[1] | |
| labels[0] = labels[0][1:] | |
| servers = [s for s in servers[2:] if len(s) > 1] | |
| except: | |
| print('Cannot get VPN servers data') | |
| exit(1) | |
| desired = [s for s in servers if country.lower() in s[i].lower()] | |
| found = len(desired) | |
| print('Found ' + str(found) + ' servers for country ' + country) | |
| if found == 0: | |
| exit(1) | |
| supported = [s for s in desired if len(s[-1]) > 0] | |
| print(str(len(supported)) + ' of these servers support OpenVPN') | |
| # We pick the best servers by score | |
| winner = sorted(supported, key=lambda s: float(s[2].replace(',','.')), reverse=True)[0] | |
| print("\n== Best server ==") | |
| pairs = list(zip(labels, winner))[:-1] | |
| for (l, d) in pairs[:4]: | |
| print(l + ': ' + d) | |
| print(pairs[4][0] + ': ' + str(float(pairs[4][1]) / 10**6) + ' MBps') | |
| print("Country: " + pairs[5][1]) | |
| print("\nLaunching VPN...") | |
| _, path = tempfile.mkstemp() | |
| # Creating File here | |
| path = 'tmp/config.conf' | |
| f = open(path, 'w') | |
| f.write(base64.b64decode(winner[-1]).decode('ascii')) | |
| f.write('\nscript-security 2\nup /etc/openvpn/update-resolv-conf\ndown /etc/openvpn/update-resolv-conf\npull-filter ignore auth-token') | |
| f.close() | |
| x = subprocess.Popen(['sudo', 'openvpn', '--auth-nocache', '--config', path]) | |
| try: | |
| while True: | |
| time.sleep(600) | |
| # termination with Ctrl+C | |
| except: | |
| try: | |
| x.kill() | |
| except: | |
| pass | |
| while x.poll() != 0: | |
| time.sleep(1) | |
| print('\nVPN terminated') |
not working in windows, i really need it
Lemme know what's the issue..?
not working in windows, i really need it
Lemme know what's the issue..?
C:\Grandes\Desktopp\tools>python vpngateP3.py us
Found 11 servers for country us
11 of these servers support OpenVPN
== Best server ==
HostName: vpn421828382
IP: 98.248.170.144
Score: 1661650
Ping: 40
Speed: 27.848518 MBps
Country: United States
Launching VPN...
Traceback (most recent call last):
File "C:\Grandes\Desktopp\tools\vpngateP3.py", line 73, in
x = subprocess.Popen(["openvpn", "--config", path])
File "C:\Users\bebor\AppData\Local\Programs\Python\Python39\lib\subprocess.py", line 947, in init
self._execute_child(args, executable, preexec_fn, close_fds,
File "C:\Users\bebor\AppData\Local\Programs\Python\Python39\lib\subprocess.py", line 1416, in _execute_child
hp, ht, pid, tid = _winapi.CreateProcess(executable, args,
FileNotFoundError: [WinError 2] O sistema não pode encontrar o arquivo especificado
use (cmd) instead of sudo
not working in windows, i really need it