conorcunningham / google-ddns

N. B Tämä projekti edellyttää Google Cloudin käyttöä, ja Google Cloud vaatii todennuksen. Erityisesti tässä projektissa ja Google Cloudin DNS: ää käytettäessä tarvitaan API-avain. Google DNS: n käyttäminen testaukseen on käytännössä ilmaista, mutta tili kuitenkin vaaditaan.

kirjoitin tämän ratkaistakseni kotona olleen ongelman, ja se päätyi säästämään minulta 100 dollaria vuodessa. Kiitos, Python! Kiitos CS50!

olen avannut tämän projektin kaikkien käytettäväksi.

lisäksi kyseessä on tarkoituksellisesti yhden tiedoston hakemus. Se on suunniteltu helposti kloonattavaksi ja käytettäväksi, siis avoimeen lähdekoodiin, ja se on suunniteltu käytettäväksi Linux-palvelun kanssa niin, että se voi toimia taustalla. Sitä voidaan teoriassa ajaa kaikilla alustoilla, MAC -, Windows -, Linux -, sulautetut linux-laitteet ja kotiverkkolaitteet.

Olen testannut tätä Windows 10: ssä, Debian 9 Stretchissä ja Max OSX Mojavessa.

minulla on ollut huuhaata ottaen CS50 Web ja olen parhaillaan työstämässä viimeistä projektiani CS50 Webille.

Cheers,

Conor

Google Cloud Dynamic DNS Client

tämä on yksinkertainen dynaaminen DNS-skripti Google Cloud DNS: lle. Skripti tarkistaa julkisen IP-osoitteensa, ja sen jälkeen konfiguraatiotiedoston perusteella se lukee, onko Google Cloud DNS: llä vastaava DNS-merkintä. Jos vastaavaa merkintää ei löydy, skripti luo sellaisen. Jos vastaava merkintä löytyy, mutta on IP-osoite, joka ei vastaa mitä skripti löytyi, sitten skripti päivittää sitten Google Cloud merkintä (Lue poista, sitten luoda). Lopuksi, jos skriptit asetustiedosto vastaa Google Cloud DNS merkintä, niin se nukkuu välein x, ja prosessi toistaa.

tämä hanke koostuu seuraavista osista:

  • gcloud-ddns.py: dynaaminen DNS-asiakaskomentosarja
  • ddns-conf.yaml: programs configuration file
  • requirements.txt: asennettavat vaatimukset

vaatimukset

tämä skripti vaatii Python 3.6: n tai uudemman. f-kieliä käytetään paljon. Pakettivaatimukset on lueteltu vaatimuksissa.txt

käyttö

Usage: python gcloud-ddns.py 

Asetukset

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

käsikirjoitus pyörii etualalla. Aion leikkiä sen kanssa ja testata sitä nähdäkseni, voiko se toimia luotettavasti palveluna.

asetustiedosto

käsikirjoituksen kokoonpano on luettavissa yaml-tiedostosta. Tässä on esimerkin ddns-conf sisältö.yaml-tiedosto

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

skripti hyväksyy yhden valinnaisen CLI-argumentin, joka on asetustiedoston polku. Jos mitään ei anneta, skripti etsii ddns-config.yaml samasta hakemistosta kuin skripti.

  • isäntä: asetettavan palvelimen täysin pätevä verkkotunnus. HUOM* sinun täytyy sisällyttää . . Comin jälkeen tämä on Googlen vaatimus/
  • project_id: Projektitunnuksesi Google Cloudissa
  • managed_zone: hallinnoidun alueesi nimi Google Cloudissa
  • domain: verkkotunnuksesi nimi
  • ttl: TTL: n sekuntimäärä
  • interval: How long the script will sleep before running again
  • API-avain: polku API-avaimeen JSON-muodossa

  • LOKIPOLKU: Polku lokitiedostoon

todennus

käyttääksesi Google Cloud API: ta tarvitset API-avaimen tilillesi. Tämä avain on JSON-tiedosto ja se on määritettävä asetustiedostossa.

skripti asettaa GOOGLE_APPLICATION_CREDENTIALS ympäristömuuttujan API-avaimen polulle ja Googlen moduulit käyttävät tätä ympäristömuuttujaa todennuksen käsittelyyn.

os.environ = api_key

Docker

telakkatiedosto sisältyy arkistoon, joten voit käynnistää sen säiliönä Docker-instanssin sisällä.

docker build -t google-ddns .

default docker komento odottaa config.yaml-tiedosto / ddns-kansiossa

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

muista, että asetustiedoston sisällä olevat polut ovat suhteessa säiliöön

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

tässä on nopea ja likainen docker-compose-tiedosto, Jos käytät sitä

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

ipify.org API

tämä projekti käyttää snazzya ipify.org API asiakkaiden julkisen IP-osoitteen hakemiseen.

Vastaa

Sähköpostiosoitettasi ei julkaista.

Previous post miten puhdistaa kahvimylly ja sen pursot
Next post Parhaat Mikrofonit elokuvantekoon: vuoden 2020 opas