2025-05-06 03:31:31 -07:00

45 lines
1.4 KiB
Python
Executable File

#!/usr/bin/env python3
import requests
import time
from ipaddress import ip_network
from pathlib import Path
if __name__ == "__main__":
link = Path("discord.txt").read_text()
old_ipv4, old_ipv6 = None, None
while True:
# get current ips
try:
ipv4 = requests.get("https://v4.ident.me").text
ipv6 = requests.get("https://v6.ident.me").text
ipv6 = str(ip_network(ipv6 + "/64", strict=False).network_address) # xfinity gives /64
except Exception as e:
print("Error while getting IP", e)
time.sleep(60)
continue
# send message if either changed
if ipv4 != old_ipv4 or ipv6 != old_ipv6:
try:
print(f"IP changed to {ipv4} and {ipv6}")
resp = requests.post(link, json={
"content": "\n".join([
f"old ipv4: {old_ipv4}",
f"old ipv6: {old_ipv6}",
f"new ipv4: {ipv4}",
f"new ipv6: {ipv6}",
])
})
assert(resp.status_code == 204)
except Exception as e:
print("Error while sending update", e)
time.sleep(60)
continue
# retry every hour
print("Retrying in 1 hour...")
old_ipv4, old_ipv6 = ipv4, ipv6
time.sleep(3600)