NEW: Ip change detector

This commit is contained in:
Jean-Claude 2020-04-22 19:32:43 +02:00
parent cac0363daf
commit 0bd9684348
Signed by: jeanclaude
GPG Key ID: 8A300F57CBB9F63E
1 changed files with 73 additions and 0 deletions

73
IpManager.py Normal file
View File

@ -0,0 +1,73 @@
#!/bin/env python
import requests
import logging
import os
logger = logging.getLogger(__file__)
class IpManager():
ipFile = None
def __init__(self, ipFile):
logger.debug('Initialozing IpManager')
self.ipFile = ipFile
def _getLastIp(self):
"""
Extracts the ip from the ipFile, and creates the file if it does not exist
"""
logger.debug('getLastIp called')
try:
with open(self.ipFile, 'r') as f:
ip = f.read()
logger.info(f'Found ip {ip}')
return ip
except FileNotFoundError:
logger.info('IP File not found, creating new one')
open(self.ipFile, 'a').close()
return None
except Exception as e:
logger.error(f'Error: {str(e)}')
return None
def _storeNewIp(self, ip):
"""
Stores the ip in the ipFile
"""
logger.debug(f'Store {ip} to file')
with open(self.ipFile, 'w') as f:
f.write(ip)
def _fetchCurrentIp(self):
logger.debug('Fetching current ip')
current = requests.get('https://api.ipify.org').text.strip()
logger.debug(f'current ip is {current}')
return current
def hasIpChanged(self):
"""
Checks if the ip has changed and returns it if so, else return False
"""
last = self._getLastIp()
current = self._fetchCurrentIp()
if last is None or last != current:
logger.debug(f'Ip has changed from {last} to {current}')
self._storeNewIp(current)
return current
return None