NEW: Ip change detector
This commit is contained in:
parent
cac0363daf
commit
0bd9684348
|
@ -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
|
Loading…
Reference in New Issue