commit 130313cfb610827740f7841f2efae730c63ff906 Author: David Itehua Xalamihua Date: Sun Jun 15 17:38:07 2025 -0600 inicio repositorio gitea trackeo de ip con API cloudflare diff --git a/README.md b/README.md new file mode 100644 index 0000000..e1fed25 --- /dev/null +++ b/README.md @@ -0,0 +1,35 @@ +1.- **Guarda el script cloudflare_script.sh**, por ejemplo en `/home/usuario/scripts/cloudflare_script.sh` + +2.- Dar permisos de ejecución: + +```bash +chmod +x /home/usuario/scripts/cloudflare_script.sh +``` + +3.- Programar la tarea con `cron` para que el script se ejecute automáticamente (por ejemplo, cada 4 minutos), primero ejecutamos crontab: + +```bash +crontab -e +``` + +4.- Añade la siguiente línea al final al final del archivo (esto ejecutará el script cada 4 minutos.): + +```bash +# actualizar ip pública a cloudflare en algun subdominio que hayas creado +*/4 * * * * /home/usuario/scripts/cloudflare_script.sh >/dev/null 2>&1 +``` + +## 🔐 Seguridad + +NO PUBLIQUES ESTE SCRIPT EN REPOSITORIOS PÚBLICOS, MANTENLO EN TU SERVIDOR DE GITEA + +--- + +## Notas adicionales + +- El script solo notifica y actualiza si detecta un cambio real de IP. + +- La TTL del registro DNS se establece `AUTOMÁTICO`. + +- El registro es proxied (`"proxied": false`). + diff --git a/cloudflare_script.sh b/cloudflare_script.sh new file mode 100644 index 0000000..f6eda24 --- /dev/null +++ b/cloudflare_script.sh @@ -0,0 +1,30 @@ +#!/bin/bash + +# echo "[$(date '+%Y-%m-%d %H:%M:%S')] Ejecutando actualización de IP..." + +# Configuración +ZONE_ID="e70540b388ab9d20bfe27d9a31cd474b" +RECORD_ID="5d05a48c9d76c7767302442fffa096bd" +API_TOKEN="9BD-GB7PtGd5pgXTEBxnv3k1eJlJYJoIWx9HgLLs" +DOMAIN="ip.xala.dev" + +# Obtener IP pública actual +IP=$(curl -s https://api.ipify.org) + +# Obtener IP registrada en Cloudflare +DNS_IP=$(curl -s -X GET "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/dns_records/$RECORD_ID" \ + -H "Authorization: Bearer $API_TOKEN" \ + -H "Content-Type: application/json" | jq -r '.result.content') + +# Comparar IPs +if [ "$IP" != "$DNS_IP" ]; then + echo "La IP cambió: $DNS_IP → $IP. Actualizando en Cloudflare..." + + curl -s -X PUT "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/dns_records/$RECORD_ID" \ + -H "Authorization: Bearer $API_TOKEN" \ + -H "Content-Type: application/json" \ + --data "{\"type\":\"A\",\"name\":\"$DOMAIN\",\"content\":\"$IP\",\"ttl\":120,\"proxied\":true}" | jq + + # Notificación vía ntfy + curl -d "🌎 [$(date '+%Y-%m-%d %H:%M:%S')] IP actualizada: $DNS_IP → $IP" ntfy.xala.dev/alerts +fi \ No newline at end of file