From 495dbbe3dc519626993536daff58dff425642bd0 Mon Sep 17 00:00:00 2001 From: Jonas Sulzer Date: Fri, 18 Dec 2020 23:55:25 +0100 Subject: [PATCH] =?UTF-8?q?=F0=9F=91=8C=20IMPROVE:=20allow=20specifying=20?= =?UTF-8?q?the=20domain=20to=20update=20this=20allows=20DynDNS=20to=20be?= =?UTF-8?q?=20used=20against=20Hostpoint=20accounts=20with=20multiple=20do?= =?UTF-8?q?mains=20the=20domain=20to=20update=20is=20to=20be=20configured?= =?UTF-8?q?=20via=20the=20.env=20variable=20'Domain'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Jonas Sulzer --- app.env_example | 1 + src/HpUpdater.py | 19 +++++++++++++++++-- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/app.env_example b/app.env_example index aa45408..f8be241 100644 --- a/app.env_example +++ b/app.env_example @@ -1,2 +1,3 @@ HpLogin= HpPass= +Domain= diff --git a/src/HpUpdater.py b/src/HpUpdater.py index 855e866..d70e9d1 100644 --- a/src/HpUpdater.py +++ b/src/HpUpdater.py @@ -9,6 +9,9 @@ from pyvirtualdisplay import Display logger = logging.getLogger(__file__) +class DomainNotFoundError(Exception): + pass + class HpUpdater(): def __init__(self): @@ -26,7 +29,16 @@ class HpUpdater(): logger.debug('updateARecord called') driver.get('https://admin.hostpoint.ch/customer/Domains/Overview') - driver.find_element_by_name('edit_dns').click() + + domainTableRows = driver.find_elements_by_class_name('b-table__body-row') + + for row in domainTableRows: + if os.environ.get('Domain') == row.find_element_by_class_name('domain-name-value').get_attribute('value'): + row.find_element_by_name('edit_dns').click() + logger.debug('domain found') + break + else: + raise DomainNotFoundError(f'Domain {os.environ.get("Domain")} can not be found in domain list.') driver.implicitly_wait(10) @@ -84,7 +96,10 @@ class HpUpdater(): logging.info('Initialized firefox browser..') self._login(driver) - self._updateARecord(driver, ip) + try: + self._updateARecord(driver, ip) + except DomainNotFoundError as e: + logging.error(e) driver.quit() display.stop()