ensure-port-fwd: selenium 4.10.0 compat, cleanup
Signed-off-by: Martin Matous <m@matous.dev>
This commit is contained in:
parent
75d39f3233
commit
51d030b919
1 changed files with 11 additions and 9 deletions
|
|
@ -1,25 +1,27 @@
|
||||||
#!/usr/bin/env python3
|
#!/usr/bin/env python3
|
||||||
|
|
||||||
# 3rd-party dependencies: selenium
|
# 3rd-party dependencies: selenium >=4.10.0, geckodriver
|
||||||
|
|
||||||
import os
|
import os
|
||||||
import sys
|
import sys
|
||||||
|
|
||||||
from selenium import webdriver
|
from selenium import webdriver
|
||||||
from selenium.webdriver.common.by import By
|
from selenium.webdriver.common.by import By
|
||||||
from selenium.webdriver.common.keys import Keys
|
from selenium.webdriver.firefox.service import Service
|
||||||
|
|
||||||
username = os.environ['ROUTER_USERNAME']
|
username = os.environ['ROUTER_USERNAME']
|
||||||
password = os.environ['ROUTER_PASSWORD']
|
password = os.environ['ROUTER_PASSWORD']
|
||||||
target_ip = sys.argv[1]
|
target_ip = sys.argv[1]
|
||||||
|
|
||||||
PORTS = {22, 25, 80, 443, 465, 993}
|
PORTS = {22, 25, 80, 443, 465, 993, 51820}
|
||||||
|
|
||||||
options = webdriver.FirefoxOptions()
|
options = webdriver.FirefoxOptions()
|
||||||
options.add_argument('-headless')
|
options.add_argument('-headless')
|
||||||
browser = webdriver.Firefox(options)
|
service = Service(executable_path='/usr/local/bin/geckodriver', service_log_path=os.devnull)
|
||||||
|
browser = webdriver.Firefox(options=options, service=service)
|
||||||
|
browser.delete_all_cookies()
|
||||||
browser.implicitly_wait(1)
|
browser.implicitly_wait(1)
|
||||||
browser.get('http://192.168.0.1/')
|
browser.get('http://192.168.0.1/login.asp')
|
||||||
|
|
||||||
username_text_box = browser.find_element(By.ID, 'loginUsername')
|
username_text_box = browser.find_element(By.ID, 'loginUsername')
|
||||||
username_text_box.send_keys(username)
|
username_text_box.send_keys(username)
|
||||||
|
|
@ -39,17 +41,17 @@ forwarded = { int(port.get_attribute('value').split('-')[0]) for port in forward
|
||||||
missing = PORTS - forwarded
|
missing = PORTS - forwarded
|
||||||
n_missing = len(missing)
|
n_missing = len(missing)
|
||||||
add_row = browser.find_element(By.XPATH, '/html/body/div/div[4]/div[1]/form/button[1]')
|
add_row = browser.find_element(By.XPATH, '/html/body/div/div[4]/div[1]/form/button[1]')
|
||||||
for i in range(n_missing):
|
for _ in range(n_missing):
|
||||||
add_row.click()
|
add_row.click()
|
||||||
|
|
||||||
n_fwd = len(forwarded)
|
n_fwd = len(forwarded)
|
||||||
for i, port in enumerate(missing):
|
for i, port in enumerate(missing):
|
||||||
browser.find_element(By.NAME, f'ForwardingPortRange{i + n_fwd}').clear()
|
browser.find_element(By.NAME, f'ForwardingPortRange{i + n_fwd}').clear()
|
||||||
browser.find_element(By.NAME, f'ForwardingPortRange{i + n_fwd}').send_keys(port)
|
browser.find_element(By.NAME, f'ForwardingPortRange{i + n_fwd}').send_keys(str(port))
|
||||||
browser.find_element(By.NAME, f'ForwardingTargetIp{i + n_fwd}').clear()
|
browser.find_element(By.NAME, f'ForwardingTargetIp{i + n_fwd}').clear()
|
||||||
browser.find_element(By.NAME, f'ForwardingTargetIp{i + n_fwd}').send_keys(target_ip)
|
browser.find_element(By.NAME, f'ForwardingTargetIp{i + n_fwd}').send_keys(target_ip)
|
||||||
browser.find_element(By.NAME, f'ForwardingTargetPort{i + n_fwd}').clear()
|
browser.find_element(By.NAME, f'ForwardingTargetPort{i + n_fwd}').clear()
|
||||||
browser.find_element(By.NAME, f'ForwardingTargetPort{i + n_fwd}').send_keys(port)
|
browser.find_element(By.NAME, f'ForwardingTargetPort{i + n_fwd}').send_keys(str(port))
|
||||||
submit = browser.find_element(By.XPATH, '/html/body/div/div[4]/div[1]/form/button[2]')
|
submit = browser.find_element(By.XPATH, '/html/body/div/div[4]/div[1]/form/button[2]')
|
||||||
submit.click()
|
submit.click()
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue