Skip to content

Instantly share code, notes, and snippets.

@ThomasChiroux
Created March 3, 2017 16:07
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ThomasChiroux/00f033557803bc28cf905006c6da9f0b to your computer and use it in GitHub Desktop.
Save ThomasChiroux/00f033557803bc28cf905006c6da9f0b to your computer and use it in GitHub Desktop.
protonvpn connector
#!/bin/env python
# connect to proton mail
import argparse
import random
import subprocess
import time
zones = {
'ch': [
'ch-02.protonvpn.com.udp1194',
'ch-03.protonvpn.com.udp1194',
'ch-04.protonvpn.com.udp1194', ],
'de': [
'de-01.protonvpn.com.udp1194',
'de-02.protonvpn.com.udp1194',
'de-03.protonvpn.com.udp1194',
'de-04.protonvpn.com.udp1194', ],
'es': [
'es-01.protonvpn.com.udp1194',
'es-02.protonvpn.com.udp1194',
'es-03.protonvpn.com.udp1194',
'es-04.protonvpn.com.udp1194', ],
'fr': [
'fr-01.protonvpn.com.udp1194',
'fr-02.protonvpn.com.udp1194',
'fr-03.protonvpn.com.udp1194',
'fr-04.protonvpn.com.udp1194', ],
'nl': [
'nl-01.protonvpn.com.udp1194',
'nl-02.protonvpn.com.udp1194',
'nl-03.protonvpn.com.udp1194',
'nl-04.protonvpn.com.udp1194', ],
'se': [
'se-01.protonvpn.com.udp1194',
'se-02.protonvpn.com.udp1194',
'se-03.protonvpn.com.udp1194',
'se-04.protonvpn.com.udp1194', ],
'uk': [
'uk-01.protonvpn.com.udp1194',
'uk-02.protonvpn.com.udp1194',
'uk-03.protonvpn.com.udp1194',
'uk-04.protonvpn.com.udp1194', ],
'us': [
'us-01.protonvpn.com.udp1194',
'us-02.protonvpn.com.udp1194',
'us-03.protonvpn.com.udp1194',
'us-04.protonvpn.com.udp1194',
'us-05.protonvpn.com.udp1194',
'us-06.protonvpn.com.udp1194',
'us-07.protonvpn.com.udp1194',
'us-08.protonvpn.com.udp1194',
'us-09.protonvpn.com.udp1194',
'us-10.protonvpn.com.udp1194',
'us-11.protonvpn.com.udp1194', ],
'us_tor': [
'us-12-tor.protonvpn.com.udp1194', ],
'is': [
'is-01.protonvpn.com.udp1194',
'is-02.protonvpn.com.udp1194', ],
'hk': [
'hk-01.protonvpn.com.udp1194',
'hk-02.protonvpn.com.udp1194',
'hk-03.protonvpn.com.udp1194',
'hk-04.protonvpn.com.udp1194', ],
'jp': [
'jp-01.protonvpn.com.udp1194',
'jp-02.protonvpn.com.udp1194',
'jp-03.protonvpn.com.udp1194',
'jp-04.protonvpn.com.udp1194', ],
'au': [
'au-01.protonvpn.com.udp1194',
'au-02.protonvpn.com.udp1194',
'au-03.protonvpn.com.udp1194',
'au-04.protonvpn.com.udp1194', ],
'ca': [
'ca-01.protonvpn.com.udp1194',
'ca-02.protonvpn.com.udp1194',
'ca-03.protonvpn.com.udp1194',
'ca-04.protonvpn.com.udp1194', ],
'core': [
'is-ca-01.protonvpn.com.udp1194',
'is-de-01.protonvpn.com.udp1194',
'is-es-01.protonvpn.com.udp1194',
'is-nl-01.protonvpn.com.udp1194',
'is-us-01.protonvpn.com.udp1194',
'se-au-01.protonvpn.com.udp1194',
'se-fr-01.protonvpn.com.udp1194',
'se-hk-01.protonvpn.com.udp1194',
'se-jp-01.protonvpn.com.udp1194',
'se-uk-01.protonvpn.com.udp1194', ], }
zones['eu_ok'] = []
zones['eu_ok'].extend(zones['ch'])
zones['eu_ok'].extend(zones['de'])
zones['eu_ok'].extend(zones['es'])
zones['eu_ok'].extend(zones['fr'])
zones['eu_ok'].extend(zones['nl'])
zones['eu_ok'].extend(zones['se'])
if __name__ == '__main__':
parser = argparse.ArgumentParser(description='Protonvpn connector.')
parser.add_argument('zone', nargs='?', default='eu_ok',
help='a zone to connect to (or off to disconnect)')
args = parser.parse_args()
result = subprocess.run("nmcli c show --active | grep protonvpn",
stdout=subprocess.PIPE, shell=True)
if result.stdout:
active_cnx = result.stdout.decode('utf-8').split(' ')[0]
if active_cnx:
print("deactivate %s" % active_cnx)
subprocess.run("nmcli c down id %s" % active_cnx, shell=True)
time.sleep(1)
if args.zone.lower() != 'off':
new_cnx = random.choice(zones[args.zone.lower()])
print("connect to %s" % new_cnx)
subprocess.run("nmcli c up id %s" % new_cnx, shell=True)
time.sleep(1)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment