From cac0363daf0529c71ba086051683216d5c3c58dc Mon Sep 17 00:00:00 2001 From: Jean-Claude Graf Date: Wed, 22 Apr 2020 19:31:53 +0200 Subject: [PATCH] NEW: Move hostpoint updater to dedicated class --- HpUpdater.py | 69 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 69 insertions(+) create mode 100644 HpUpdater.py diff --git a/HpUpdater.py b/HpUpdater.py new file mode 100644 index 0000000..9433d48 --- /dev/null +++ b/HpUpdater.py @@ -0,0 +1,69 @@ +#!/usr/bin/env python + +import time +import logging + +logger = logging.getLogger(__file__) + +from selenium import webdriver + +class HpUpdater(): + + def __init__(self): + logger.debug('Initiating HpUpdater') + + def _login(self, driver): + logger.debug('login called') + + driver.get('https://admin.hostpoint.ch/customer/Auth/Login') + driver.find_element_by_name('username').send_keys('jeanggi90@gmail.com') + driver.find_element_by_name('password').send_keys('`^0oVc2Yd9`tQ&l]&4X04QNV<') + driver.find_element_by_name('login').click() + + def _updateARecord(self, driver, ip): + logger.debug('updateARecord called') + + driver.get('https://admin.hostpoint.ch/customer/Domains/Overview') + driver.find_element_by_name('edit_dns').click() + + driver.implicitly_wait(10) + + tableRows = driver.find_element_by_id('dns-record-list').find_elements_by_class_name('b-record') + + # The last two entries are my A records + for e in tableRows[-2:]: + try: + e.find_element_by_name('edit').click() + + # For some reason with each iteration it return one more such element + editForm = driver.find_elements_by_class_name('dns-record-list-edit') + editForm[-1].find_element_by_name('ip_address').clear() + editForm[-1].find_element_by_name('ip_address').send_keys(ip) + + editForm[-1].find_element_by_name('apply').click() + + except Exception as e: + logger.error(f'Exception during update: {str(e)}') + + logger.info(f'Changed A records ip to {ip}') + + try: + + e = driver.find_element_by_name('execute_now') + driver.execute_script("arguments[0].click();", e) + + # Give the site some time to save + time.sleep(10) + + logger.info('Successfully saved changes') + + except Exception as e: + logger.error(f'Exception during save: {str(e)}') + + def update(self, ip): + logger.info('Start Hostpoint Record update') + + with webdriver.Firefox() as driver: + + self._login(driver) + self._updateARecord(driver, ip)