conorcunningham / google-DDNS

N. B Dit project vereist het gebruik van Google Cloud, en Google Cloud vereist authenticatie. Specifiek, in dit project, en bij het gebruik van Google Cloud DNS, een vereist een API-sleutel. Het is effectief gratis om Google DNS te gebruiken voor het testen, maar een account is toch vereist.

ik schreef dit om een probleem op te lossen dat ik thuis had, en het bespaarde me $100 USD per jaar. Dank je, Python! Dank u CS50!

ik heb sourced dit project geopend voor iedereen om te gebruiken.

bovendien is dit doelbewust een één-bestandstoepassing. Het is ontworpen om gemakkelijk te klonen en te gebruiken, vandaar de open source, en het is ontworpen om te worden gebruikt met een Linux-service, zodat het op de achtergrond kan draaien. Het kan theoretisch worden uitgevoerd op alle platforms, MAC, Windows, Linux, embedded linux-apparaten en thuisnetwerk apparatuur.

ik heb dit getest op Windows 10, Debian 9 Stretch en Max OSX Mojave.

ik heb een giller gehad met CS50 Web en ben momenteel bezig met mijn laatste project voor CS50 Web.

Cheers,

Conor

Google Cloud Dynamic DNS Client

Dit is een eenvoudig dynamisch DNS-script voor Google Cloud DNS. Het script zal controleren op zijn openbare IP-adres, en vervolgens op basis van de configuratie die het leest uit het configuratiebestand, controleren of Google Cloud DNS heeft een overeenkomstige DNS-vermelding. Als er geen overeenkomstige ingang wordt gevonden, zal het script er een aanmaken. Als een overeenkomstige ingang wordt gevonden, maar heeft een IP-adres dat niet overeenkomt met dat van wat het script gevonden, dan zal het script updaten dan Google Cloud entry (lees verwijderen, dan maken). Tot slot, als de scripts configuratie bestand overeenkomt met die van de Google Cloud DNS-ingang, dan zal slapen voor een interval van x, en het proces herhaalt.

dit project bestaat uit de volgende onderdelen:

  • gcloud-ddns.py: het dynamische DNS client script
  • ddns-conf.yaml: programma configuratiebestand
  • vereisten.txt: te installeren vereisten

vereisten

dit script vereist Python 3.6 of hoger. f-strings worden veelvuldig gebruikt. Package requirements staan vermeld in requirements.txt

gebruik

Usage: python gcloud-ddns.py 

instellen

$ git clone [email protected]:conorcunningham/google-ddns.git$ cd google-ddns$ python3 gcloud-ddns.py

het script zal op de voorgrond draaien. Ik ga ermee spelen en het testen om te zien of het betrouwbaar kan draaien als een service.

configuratiebestand

de configuratie voor het script wordt gelezen uit een yaml-bestand. Hier is de inhoud van het voorbeeld ddns-conf.yaml-bestand

api-key: './ddns-api-key.json'logfile: './ddns.log'hosts: - host: 'firewall.example.com.' project_id: 'fluffy-penguin-242411' managed_zone: 'example' domain: 'example.com' ttl: 60 interval: 600 - host: 'www.example-two.com.' project_id: 'fluffy-penguin-242411' managed_zone: 'example-two' domain: 'example-two.com' ttl: 60 interval: 600

het script accepteert één optioneel CLI argument, namelijk het pad naar het configuratiebestand. Als er geen wordt gegeven, zal het script zoeken naar ddns-config.yaml in dezelfde map als het script.

  • host: de volledig gekwalificeerde domeinnaam van de host die u wilt instellen. NB * u moet de . na de .com. Dit is een Google-vereiste/
  • project_id: uw project-ID binnen Google Cloud
  • managed_zone: de naam van uw beheerde zone in Google Cloud
  • Domein: uw domeinnaam
  • ttl: het aantal seconden voor de TTL
  • interval: hoe lang het script zal slapen voordat het opnieuw wordt uitgevoerd
  • api-key: pad naar de API-sleutel in JSON-formaat
  • Log-pad: Pad naar logbestand

authenticatie

om de Google Cloud API te kunnen gebruiken, heeft u een API-sleutel nodig voor uw account. Deze sleutel zal een json-bestand zijn en moet geconfigureerd worden in het configuratiebestand.

het script zal GOOGLE_APPLICATION_CREDENTIALS omgevingsvariabele instellen op het pad van uw API-sleutel en de modules van Google zullen deze omgevingsvariabele gebruiken om authenticatie af te handelen.

os.environ = api_key

Docker

een Docker-bestand is opgenomen in de repository, zodat u dit kunt starten als een container in een Docker-instantie.

docker build -t google-ddns .

het standaard docker Commando verwacht een configuratie.yaml-bestand in de map / ddns

docker run -it --rm -v <path/to/config>:/ddns google-ddns

Houd er rekening mee dat de paden in het configuratiebestand relatief zijn aan de container

api-key: '/ddns/ddns-api-key.json'logfile: '/ddns/ddns.log'...

hier is een quick-and-dirty Docker-compose bestand als je dat gebruikt

version: '3'services: ddns: image: google-ddns volumes: - ./config:/ddns

ipify.org API

dit project maakt gebruik van de snazzy ipify.org API voor het ophalen van het publieke IP-adres van de clients.

Geef een antwoord

Het e-mailadres wordt niet gepubliceerd.

Previous post hoe een koffiemolen en de bramen goed schoon te maken
Next post De beste microfoons voor het maken van films: The 2020 guide