NB Questo progetto richiede l’uso di Google Cloud e Google Cloud richiede l’autenticazione. In particolare, in questo progetto e quando si utilizza il DNS di Google Cloud, è necessaria una chiave API. È effettivamente gratuito utilizzare Google DNS per i test, ma è comunque necessario un account.
Ho scritto questo per risolvere un problema che avevo a casa, e alla fine mi ha fatto risparmiare USD 100 USD all’anno. Grazie, Python! Grazie CS50!
Ho aperto questo progetto per tutti da usare.
Inoltre, questo è volutamente un’applicazione di un file. È progettato per essere facile da clonare e utilizzare, quindi l’open source, ed è progettato per essere utilizzato con un servizio Linux in modo che possa essere eseguito in background. Può teoricamente essere eseguito su tutte le piattaforme, MAC, Windows, Linux, dispositivi linux embedded e apparecchiature di rete domestica.
L’ho testato su Windows 10, Debian 9 Stretch e Max OSX Mojave.
Ho avuto uno spasso prendendo CS50 Web e attualmente sto lavorando al mio progetto finale per CS50 Web.
Saluti,
Conor
Google Cloud Dynamic DNS Client
Questo è un semplice script DNS dinamico per Google Cloud DNS. Lo script controllerà il suo indirizzo IP pubblico e, in base alla sua configurazione letta dal file di configurazione, controllerà se Google Cloud DNS ha una voce DNS corrispondente. Se non viene trovata alcuna voce corrispondente, lo script ne creerà una. Se viene trovata una voce corrispondente, ma ha un indirizzo IP che non corrisponde a quello dello script trovato, lo script verrà aggiornato quindi Google Cloud entry (leggi elimina, quindi crea). Infine, se il file di configurazione degli script corrisponde a quello della voce DNS di Google Cloud, verrà sospeso per un intervallo di x e il processo si ripeterà.
Questo progetto è costituito dai seguenti componenti:
- gcloud-ddns.py: lo script del client dns dinamico
- ddns-conf.yaml: file di configurazione programmi
- requisiti.txt: requisiti da installare
Requisiti
Questo script richiede Python 3.6 o superiore. f-stringhe sono ampiamente utilizzati. I requisiti del pacchetto sono elencati in requisiti.txt
Utilizzo
Usage: python gcloud-ddns.py
Impostazione
$ git clone [email protected]:conorcunningham/google-ddns.git$ cd google-ddns$ python3 gcloud-ddns.py
Lo script verrà eseguito in primo piano. Ho intenzione di giocare con esso e testarlo per vedere se può funzionare in modo affidabile come servizio.
File di configurazione
La configurazione dello script viene letta da un file yaml. Ecco i contenuti dell’esempio ddns-conf.file 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
Lo script accetta un argomento CLI opzionale che è il percorso del file di configurazione. Se non viene specificato nessuno, lo script cercherà ddns-config.yaml
nella stessa directory dello script.
- host: il nome di dominio completo dell’host che si desidera impostare. NB * È necessario includere il . dopo l’ .com. Questo è un Google requisito/
- project_id: il Tuo ID di un progetto all’interno di Google Cloud
- managed_zone: Il nome del tuo gestito zona di Google Cloud
- dominio: Il nome a dominio
- ttl: Il numero di secondi per il TTL
- intervallo: da Quanto tempo lo script viene sonno prima di eseguire di nuovo
- api-key: Percorso per la chiave API in formato JSON
- log-percorso: Percorso del file di log
Autenticazione
Per utilizzare l’API di Google Cloud, è necessaria una chiave API per il proprio account. Questa chiave sarà un file json e deve essere configurata nel file di configurazione.
Lo script imposterà GOOGLE_APPLICATION_CREDENTIALS
variabile ambientale sul percorso della chiave API e i moduli di Google utilizzeranno questa variabile ambientale per gestire l’autenticazione.
os.environ = api_key
Docker
Un Dockerfile è incluso nel repository in modo da poterlo avviare come contenitore all’interno di un’istanza Docker.
docker build -t google-ddns .
Il comando docker predefinito prevede una configurazione.yaml file all’interno di /ddns directory
docker run -it --rm -v <path/to/config>:/ddns google-ddns
Tenete a mente che i percorsi all’interno del file di configurazione sono relativi al contenitore
api-key: '/ddns/ddns-api-key.json'logfile: '/ddns/ddns.log'...
Ecco un quick-and-dirty mobile-comporre file se si utilizza l’
version: '3'services: ddns: image: google-ddns volumes: - ./config:/ddns
ipify.org API
Questo progetto fa uso di snazzy ipify.org API per il recupero di clienti indirizzo IP pubblico.