conorcunningham / google-DDNS

N. B ten projekt wymaga użycia Google Cloud, a Google Cloud wymaga uwierzytelnienia. W szczególności w tym projekcie i podczas korzystania z DNS Google Cloud potrzebny jest klucz API. Korzystanie z Google DNS do testowania jest całkowicie bezpłatne, ale mimo to wymagane jest konto.

napisałem to, aby rozwiązać problem, który miałem w domu, i skończyło się na oszczędzaniu mi $100 USD rocznie. Dziękuję, Python! Dziękujemy CS50!

otworzyłem ten projekt dla wszystkich.

co więcej, jest to celowo aplikacja o jednym pliku. Został zaprojektowany tak, aby był łatwy do klonowania i używania, stąd open source, i został zaprojektowany do użycia z usługą Linuksową, aby mógł działać w tle. Teoretycznie może być uruchamiany na wszystkich platformach, MAC, Windows, Linux, urządzeniach z wbudowanym Linuksem i sprzęcie sieci domowej.

testowałem to na Windows 10, Debian 9 Stretch i Max OSX Mojave.

miałem hoot biorąc CS50 Web i obecnie pracuję nad moim ostatecznym projektem dla CS50 Web.

Google Cloud Dynamic DNS Client

jest to prosty dynamiczny skrypt DNS dla Google Cloud DNS. Skrypt sprawdzi jego publiczny adres IP, a następnie na podstawie jego konfiguracji odczytany z pliku konfiguracyjnego, sprawdzi, czy Google Cloud DNS ma odpowiedni wpis DNS. Jeśli nie zostanie znaleziony odpowiedni wpis, skrypt go utworzy. Jeśli odpowiedni wpis zostanie znaleziony, ale ma adres IP, który nie pasuje do tego, co znalazł skrypt, skrypt zaktualizuje następnie wpis Google Cloud (przeczytaj usuń, a następnie utwórz). Na koniec, jeśli plik konfiguracyjny skryptów odpowiada wpisowi Google Cloud DNS, zostanie on uśpiony przez interwał x, a proces się powtórzy.

ten projekt składa się z następujących elementów:

  • gcloud-ddns.py: dynamiczny skrypt klienta dns
  • DDNS-conf.yaml: programs configuration file
  • requirements.txt: wymagania do zainstalowania

wymagania

ten skrypt wymaga Pythona w wersji 3.6 lub nowszej. f-stringi są szeroko stosowane. Wymagania dotyczące pakietu są wymienione w wymaganiach.txt

Usage: python gcloud-ddns.py 

Konfiguracja

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

skrypt zostanie uruchomiony na pierwszym planie. Zamierzam się z nim pobawić i przetestować, aby sprawdzić, czy może działać niezawodnie jako usługa.

plik konfiguracyjny

konfiguracja skryptu jest odczytywana z pliku yaml. Oto zawartość przykładowego ddns-conf.plik 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

skrypt akceptuje jeden opcjonalny argument CLI, który jest ścieżką do pliku konfiguracyjnego. Jeśli nie podano żadnej, skrypt będzie szukał ddns-config.yaml w tym samym katalogu co skrypt.

  • host: w pełni kwalifikowana nazwa domeny hosta, który chcesz ustawić. NB * musisz dołączyć . po .com. jest to wymaganie Google/
  • project_id: Twój identyfikator projektu w Google Cloud
  • managed_zone: nazwa zarządzanej strefy w Google Cloud
  • domena: Twoja nazwa domeny
  • ttl: liczba sekund dla TTL
  • interwał: jak długo skrypt będzie spał przed ponownym uruchomieniem
  • klucz API: ścieżka do klucza API w formacie JSON
  • ścieżka dziennika: Ścieżka do pliku dziennika

uwierzytelnianie

aby korzystać z interfejsu API Google Cloud, potrzebujesz klucza API dla swojego konta. Ten klucz będzie plikiem json i musi być skonfigurowany w pliku konfiguracyjnym.

skrypt ustawi zmienną środowiskową GOOGLE_APPLICATION_CREDENTIALS na ścieżkę Twojego klucza API, a Moduły Google będą używać tej zmiennej środowiskowej do obsługi uwierzytelniania.

os.environ = api_key

Docker

plik Dockerfile jest zawarty w repozytorium, dzięki czemu można go uruchomić jako kontener wewnątrz instancji Dockera.

docker build -t google-ddns .

domyślne polecenie dokowania oczekuje konfiguracji.plik yaml wewnątrz katalogu /DDNS

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

należy pamiętać, że ścieżki wewnątrz pliku konfiguracyjnego są względne do kontenera

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

oto szybki i brudny plik docker-compose, jeśli go użyjesz

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

ipify.org API

ten projekt wykorzystuje ipify.org API do pobierania publicznego adresu IP klientów.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.

Previous post jak prawidłowo czyścić młynek do kawy i jego zadziory
Next post Najlepsze Mikrofony do filmowania: przewodnik 2020