Nb dette prosjektet krever Bruk Av Google Cloud, Og Google Cloud krever godkjenning. Spesielt i dette prosjektet, og når Du bruker Google Cloud DNS, krever MAN EN API-nøkkel. Det er effektivt gratis Å bruke Google DNS for testing, men en konto er likevel nødvendig.
jeg skrev dette for å løse et problem jeg hadde hjemme, og det endte med å spare meg $100 USD i året. Takk, Python! Takk CS50!
jeg har åpnet hentet dette prosjektet for alle å bruke.
Videre er dette bevisst en en fil søknad. Den er designet for å være enkel å klone og bruke, derav åpen kildekode, og den er designet for å brukes med En Linux-tjeneste slik at den kan kjøre i bakgrunnen. Det kan teoretisk kjøres på ALLE plattformer, MAC, Windows, Linux, innebygde linux-enheter og hjemmenettverksutstyr.
jeg har testet Dette På Windows 10, Debian 9 Stretch Og Max OSX Mojave.
jeg har hatt en hoot å ta CS50 Web Og jobber for tiden med mitt siste prosjekt FOR CS50 Web.
Skål,
Conor
Google Cloud Dynamic DNS Client
Dette er et enkelt dynamisk DNS-skript For Google Cloud DNS. Skriptet vil sjekke for sin offentlige IP-adresse, og deretter basert på konfigurasjonen den leser fra konfigurasjonsfilen, sjekk om Google Cloud DNS har en tilsvarende DNS-oppføring. Hvis ingen tilsvarende oppføring er funnet, vil skriptet opprette en. Hvis en tilsvarende oppføring er funnet, men har EN IP-adresse som ikke samsvarer med det som skriptet fant, vil skriptet oppdatere Deretter Google Cloud entry(les slett, og opprett deretter). Til slutt, hvis skriptkonfigurasjonsfilen samsvarer Med Google Cloud DNS-oppføringen, vil den sove i et intervall på x, og prosessen gjentas.
dette prosjektet består av følgende komponenter:
- gcloud-ddns.py: det dynamiske dns-klientskriptet
- ddns-conf.yaml: programmer konfigurasjonsfil
- krav.txt: krav som skal installeres
Krav
dette skriptet krever Python 3.6 eller nyere. f-strenger er mye brukt. Pakkekrav er oppført i krav.txt
Bruk
Usage: python gcloud-ddns.py
Oppsett
$ git clone [email protected]:conorcunningham/google-ddns.git$ cd google-ddns$ python3 gcloud-ddns.py
skriptet vil kjøre i forgrunnen. Jeg skal leke med den og teste den for å se om den kan kjøre pålitelig som en tjeneste.
Konfigurasjonsfil
konfigurasjonen for skriptet leses fra en yaml-fil. Her er innholdet i eksemplet ddns-conf.yaml fil
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
skriptet godtar ett valgfritt cli-argument som er banen til konfigurasjonsfilen. Hvis ingen er gitt, vil skriptet se etter ddns-config.yaml
i samme katalog som skriptet.
- vert: det fullt kvalifiserte domenenavnet til verten du vil angi. NB* Du ma inkludere det . etter. com. This er Et Google-krav/
- project_id: prosjekt-ID-EN din i Google Cloud
- managed_zone: navnet på den administrerte sonen I Google Cloud
- domene: domenenavnet ditt
- ttl: antall sekunder FOR TTL
- intervall: hvor lenge skriptet vil sove før du kjører igjen
- Api-nøkkel: bane til api-nøkkelen i json-format
- LOGGBANE: Sti til loggfilen
Autentisering
FOR å kunne bruke Google Cloud API trenger du EN API-nøkkel for kontoen din. Denne nøkkelen vil være en json-fil og må konfigureres i konfigurasjonsfilen.
skriptet vil sette GOOGLE_APPLICATION_CREDENTIALS
miljøvariabel til BANEN TIL API-nøkkelen din, Og Googles moduler vil bruke denne miljøvariabelen til å håndtere godkjenning.
os.environ = api_key
Docker
En Dockerfile er inkludert i depotet, slik at du kan starte dette som en beholder inne I En Docker-forekomst.
docker build -t google-ddns .
standard docker-kommandoen forventer en config.yaml-fil inne i / ddns-katalogen
docker run -it --rm -v <path/to/config>:/ddns google-ddns
Husk at banene i config-filen er i forhold til beholderen
api-key: '/ddns/ddns-api-key.json'logfile: '/ddns/ddns.log'...
Her er en rask og skitten docker-compose-fil hvis du bruker det
version: '3'services: ddns: image: google-ddns volumes: - ./config:/ddns
ipify.org API
dette prosjektet gjør bruk av snazzy ipify.org API for å hente klientens offentlige IP-adresse.