NB acest proiect necesită utilizarea Google Cloud, iar Google Cloud necesită autentificare. Mai exact, în acest proiect și atunci când utilizați DNS-ul Google Cloud, este necesară o cheie API. Este efectiv gratuit să utilizați Google DNS pentru testare, dar este totuși necesar un cont.
am scris asta pentru a rezolva o problemă pe care o aveam acasă și a ajuns să-mi economisească 100 USD pe an. Mulțumesc, Python! Vă mulțumim CS50!
am deschis acest proiect pentru a fi utilizat de toți.
mai mult, aceasta este în mod deliberat o aplicație cu un singur fișier. Acesta este conceput pentru a fi ușor de clonat și de utilizat, prin urmare, open source, și este proiectat pentru a fi utilizat cu un serviciu Linux, astfel încât să poată rula în fundal. Teoretic poate fi rulat pe toate platformele, MAC, Windows, Linux, dispozitive Linux încorporate și echipamente de rețea de domiciliu.
am testat acest lucru pe Windows 10, Debian 9 Stretch și Max OSX Mojave.
am avut un hoot luând CS50 web și sunt în prezent lucrează la proiectul meu final pentru CS50 Web.
noroc,
Conor
client DNS dinamic Google Cloud
acesta este un script DNS dinamic simplu pentru Google Cloud DNS. Scriptul va verifica adresa IP publică și apoi, pe baza configurației sale, va citi din fișierul de configurare, va verifica dacă Google Cloud DNS are o intrare DNS corespunzătoare. Dacă nu se găsește nicio intrare corespunzătoare, scriptul va crea unul. Dacă se găsește o intrare corespunzătoare, dar are o adresă IP care nu se potrivește cu cea a scriptului găsit, atunci scriptul se va actualiza apoi intrarea Google Cloud (citiți ștergerea, apoi creați). În cele din urmă, dacă fișierul de configurare a scripturilor se potrivește cu cel al intrării Google Cloud DNS, atunci acesta va dormi pentru un interval de x, iar procesul se repetă.
acest proiect este format din următoarele componente:
- gcloud-ddns.py: scriptul client dns dinamic
- ddns-conf.yaml: fișier de configurare programe
- cerințe.txt: cerințe pentru a fi instalat
cerințe
acest script necesită Python 3.6 sau mai mare. F-siruri de caractere sunt utilizate pe scară largă. Cerințele pachetului sunt enumerate în cerințe.txt
utilizare
Usage: python gcloud-ddns.py
configurare
$ git clone [email protected]:conorcunningham/google-ddns.git$ cd google-ddns$ python3 gcloud-ddns.py
scriptul va rula în prim-plan. Mă voi juca cu el și îl voi testa pentru a vedea dacă poate funcționa în mod fiabil ca serviciu.
fișier de configurare
configurația scriptului este citită dintr-un fișier yaml. Iată conținutul exemplului ddns-conf.fișier yaml
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
scriptul acceptă un argument CLI opțional, care este calea către fișierul de configurare. Dacă nu este dat niciunul, scriptul va căuta ddns-config.yaml
în același director ca scriptul.
- gazdă: numele de domeniu complet calificat al gazdei pe care doriți să o setați. NB* trebuie să includă . după. com. Aceasta este o cerință Google/
- project_id: ID-ul dvs. de proiect în Google Cloud
- managed_zone: numele zonei gestionate în Google Cloud
- domeniu: numele dvs. de domeniu
- ttl: numărul de secunde pentru TTL
- interval: cât timp scriptul va dormi înainte de a rula din nou
- API-key: calea către cheia API în format JSON
- log-Path: Calea către fișierul jurnal
autentificare
pentru a utiliza API-ul Google Cloud, veți avea nevoie de o cheie API pentru contul dvs. Această cheie va fi un fișier json și trebuie configurată în fișierul de configurare.
scriptul va seta GOOGLE_APPLICATION_CREDENTIALS
variabila de mediu la calea cheii API, iar modulele Google vor folosi această variabilă de mediu pentru a gestiona autentificarea.
os.environ = api_key
Docker
un fișier Dockerfile este inclus în depozit, astfel încât să puteți lansa acest container în interiorul unei instanțe Docker.
docker build -t google-ddns .
comanda implicită docker așteaptă o configurare.fișier yaml în directorul /ddns
docker run -it --rm -v <path/to/config>:/ddns google-ddns
rețineți că căile din interiorul fișierului de configurare sunt relative la container
api-key: '/ddns/ddns-api-key.json'logfile: '/ddns/ddns.log'...
Iată un fișier docker-compose rapid și murdar dacă utilizați asta
version: '3'services: ddns: image: google-ddns volumes: - ./config:/ddns
ipify.org API
acest proiect face uz de snazzy ipify.org API pentru preluarea adresei IP publice a clienților.