diff --git a/logger.conf b/logger.conf new file mode 100644 index 0000000..7d2c6a3 --- /dev/null +++ b/logger.conf @@ -0,0 +1,33 @@ +[loggers] +keys=root + +[handlers] +keys=consoleHandler, fileHandler, debugHandler + +[formatters] +keys=defaultFormatter + +[logger_root] +level=DEBUG +handlers=consoleHandler, fileHandler, debugHandler + +[handler_consoleHandler] +class=StreamHandler +level=DEBUG +formatter=defaultFormatter +args=(sys.stdout,) + +[handler_fileHandler] +class=FileHandler +level=INFO +formatter=defaultFormatter +args=('%(logfilename)s',) + +[handler_debugHandler] +class=FileHandler +level=DEBUG +formatter=defaultFormatter +args=('%(debuglogfilename)s',) + +[formatter_defaultFormatter] +format='%(asctime)s:%(levelname)s:%(message)s' diff --git a/main.py b/main.py index 716b3d9..ee62e09 100644 --- a/main.py +++ b/main.py @@ -1,62 +1,33 @@ - #!/usr/bin/env python +import logging +import logging.config +import os +import requests import time + from selenium import webdriver -def login(driver): - 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() +from HpUpdater import HpUpdater +from IpManager import IpManager -def updateARecord(driver, ip): +loggerConfigPath = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'logger.conf') +logging.config.fileConfig(fname=loggerConfigPath, defaults={'logfilename': 'log/main.log', 'debuglogfilename': 'log/debug.log'}, disable_existing_loggers=False) - rowId = ['record-70642858', 'record-70642859'] +logger = logging.getLogger(__name__) - 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: - print(f"Except: {str(e)}") - - 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) - except Exception as e: - print(f"Except: {str(e)}") - -# try: -# if driver.find_element_by_id('dns-editor-content-success').get_attribute('display') != 'none': -# print('Success') -# -# else: -# print('Not successful') -# except Exception as e: -# print("Not successful") +ipFile = "lastIp" +timeout = 60 if __name__ == "__main__": - with webdriver.Firefox() as driver: - login(driver) - updateARecord(driver, '46.127.188.60') - time.sleep(60) + logger.info('Start script') + + manager = IpManager(ipFile) + + fetch = manager.hasIpChanged() + if fetch is not None: + logger.debug('Fetch successful, updating ip') + HpUpdater().update(fetch) + else: + logger.debug('no need to update') +