-
Notifications
You must be signed in to change notification settings - Fork 0
/
connect_UHVPN.py
73 lines (67 loc) · 2.63 KB
/
connect_UHVPN.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
from webdriver_manager.chrome import ChromeDriverManager
from selenium import webdriver
from selenium.webdriver import Chrome
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.chrome.options import Options
from selenium.webdriver import ChromeOptions
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support.expected_conditions import title_is,presence_of_element_located
from getpass import getpass
import time
import os
import subprocess
import argparse
parser = argparse.ArgumentParser(description='Connect to the UH VPN from the command line,' +\
' obtaining the authentification cookie through a browser' +\
' that is controlled through Selenium.')
parser.add_argument('-u','--username', help="UH username (xx99xxx@herts.ac.uk)")
parser.add_argument('-s', '--silent', action='store_const', dest='silent',
const=True, default=False,
help="Use headless mode, i.e. don't show the browser window. " +\
"Be aware that you may not see error messages displayed in the browser.")
args = parser.parse_args()
username = args.username
if not username:
username = input("UH username: ")
if not username.endswith("@herts.ac.uk"):
username += "@herts.ac.uk"
pw = getpass('UH password: ')
service = Service(executable_path=ChromeDriverManager().install())
options = Options()
options.page_load_strategy = 'normal'
if args.silent:
options.headless = True
driver = webdriver.Chrome(service=service, options=options)
time.sleep(3)
driver.get("https://uhvpn.herts.ac.uk")
name = driver.find_element(By.NAME,'UserName')
name.send_keys(username)
passwdfield = driver.find_element(By.NAME, 'Password')
passwdfield.send_keys(pw)
del(pw)
signinbutton = driver.find_element(By.ID, 'submitButton')
signinbutton.click()
WebDriverWait(driver,timeout=60).until(title_is('Two-Factor Authentication'))
auth = driver.find_element(By.CLASS_NAME,'remember_me_label_field')
auth.send_keys('\n')
WebDriverWait(driver,timeout=60).until(title_is("Secure Connect Secure - Home"))
dsid_cookie = driver.get_cookie('DSID')
print(dsid_cookie['value'])
driver.quit()
time.sleep(1)
print()
print("running the command:")
print('sudo',
'openconnect',
'-u', username,
'--cookie=DSID={}'.format(dsid_cookie['value']),
'--protocol=nc',
'uhvpn.herts.ac.uk')
print("you may be prompted for your root password to run openconnect via sudo... ")
subprocess.run(['sudo',
'openconnect',
'-u', username,
'--cookie=DSID={}'.format(dsid_cookie['value']),
'--protocol=nc',
'uhvpn.herts.ac.uk'])