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