import requests import time import os import logging from datetime import datetime, timedelta logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s') # Variables key = os.getenv('DDNS_MYADDR_KEY') # Récupère clé check_interval = 15 * 60 # Intervalle de vérification de 15 minutes no_update_limit = timedelta(days=30) # Limite de 30 jours def get_public_ip(): response = requests.get('https://api.ipify.org') return response.text.strip() def update_ip(ip): url = 'https://myaddr.tools/update' data = {'ip': ip, 'key': key} response = requests.post(url, data=data) return response.text if __name__ == '__main__': try: last_ip = None last_update_time = datetime.now() while True: public_ip = get_public_ip() current_time = datetime.now() if public_ip != last_ip: # Vérifie si l'IP a changé result = update_ip(public_ip) logging.info(f"IP mise à jour : {public_ip}, Réponse : {result}") last_ip = public_ip # Met à jour l'IP last_update_time = current_time # Réinitialise le temps elif current_time - last_update_time > no_update_limit: # Vérifie si 1 mois sans mise à jour result = update_ip(public_ip) logging.info(f"Aucune mise à jour depuis un mois, IP envoyée : {public_ip}, Réponse : {result}") last_update_time = current_time # Réinitialise le temps else: logging.info(f"Aucune mise à jour, l'IP reste la même : {public_ip}") time.sleep(check_interval) # Pause de 15 minutes except KeyboardInterrupt: logging.info("Arrêt en cours...")