# Tartalom * A DDNS tipikus felhasználása * Ajánlott updater * Konfiguráció * Parancssori paraméterek * API a rekordok frissítéséhez annak, aki saját kódot használna * A kérésben megadandó értékek * Egy példa # A DDNS tipikus felhasználása A Dinamikus DNS röviden DDNS lehetővé teszi, hogy egy dinamikus IP címmel rendelkező eszköz rögzített domain névvel rendelkezzen. Mivel az IP cím ezen szolgáltatás felhasználóinál dinamikus, így a kiszolgálón szokás **elévülési időt** beállítani. Ez azt jelenti, hogyha egy frissítés után az elévülési időn belül nem küldünk újabb kérést, akkor a kiszolgáló nem fogja többé feloldani a domain nevet, csak a legközelebbi frissítés után fog ez újra megtörténni. Ez nálunk jelen beállítás szerint **30 nap**. # Ajánlott updater A repóból letölthető Python nyelven írt szkript minden szükséges képességgel rendelkezik, ami egy egyszerű rekordfrissítéshez szükséges. Az egyszerűség és platformfüggetlenség kedvéért ez a szkript egyetlen frissítés után kilép és befejezi a futását. Az ütemezést a felhasználóra, vagy az operációs rendszerre bízzuk. Főleg az operációs rendszeren való ütemezés ajánlott (ehhez segítség később), illetve bizonyos gyakorisággal/áramszünetkor stb. publikus ip cím változhat, ekkor pedig nem ütemezett frissítés esetén a szerver elérhetetlenné válhat. A Python minden elterjedt operációs rendszeren futtatható, ehhez az adott operációs rendszerre egy python3 interpreter telepítése illetve a *requests* library szükséges. Külön leírás tartozik windowshoz és linuxhoz. Ezek a leírésok a README.windows.md és a README.linux.md fájlokban találhatóak. Azok a dolgok, amik függetlenek az operációs rendszertől, ebben a fájlban találhatók. ## Konfiguráció A repóban van egy conf_example.py nevű fájl, ami példaként szolgál a konfigurációs fájl kitöltésére. Ezt érdemes egy az egyben átmásolni conf.py névre (az updater ezt a fájlt fogja importálni), és itt a kommentben leírt magyarázatok alapján beírni a megfelelő adatokat. Aki nem szereti a parancssort, annak érdemes először is a `LOG_FILE` paramétert megadni, ugyanis kattintásra futtatáskor ugyan megjelenik egy konzol, de futás után rögtön be is zárul, így a frissítés kimenetele alig látható. `LOG_FILE` megadása esetén a kimenet kiíródik a megadott fájlba. **Figyelem!** Ha meg van adva logfájl, akkor parancssoros futtatás esetén is oda fog íródni a válasz. Ezt ideiglenesen meg lehet változtatni, a `-l ""` parancssori paraméterrel újra a standard kimenetre fog íródni. ## Parancssori paraméterek Az updaternek megadhatók a futást befolyásoló paraméterek parancssorban is. Ezek megismeréséhez `--help` kapcsolóval kell futtatni: `update_i42_domain.py --help`. **Figyelem!** A parancssori paraméterek magasabb prioritásúak, mint a konfigurációs fájlban megadott adatok. # API a rekordok frissítéséhez annak, aki saját kódot használna A frissítéshez egy POST kérést kell küldeni IP verziótól függően valamelyik címre. | Verzió | Cím | | -------- | ------------------------------ | | IPv4 | https://updaterv4.i42.hu:10053 | | IPv6 | https://updaterv6.i42.hu:10053 | Ezekhez a címekhez valid SSL cert tartozik. ## A kérésben megadandó értékek | Név | Érték | Megadása | | ---------- | ----------------------------------------------------------------------------------------------------------- | ---------- | | prefix | A rekord i42.hu előtti része. pl: az **val.ami**.i42.hu-ban a **val.ami**. | Kötelező | | token | A honlapon generált token. | Kötelező | | ip_address | A beírandó ip cím. Ha nincs a kérésben, akkor a küldő publikus ip címe kerül beírásra. | Opcionális | | validate | Nem tartozik hozzá érték. Ha meg van adva, akkor nem történik frissítés, csak a küldött adatok ellenőrzése. | Opcionális | Mivel ip_address paraméter megadása esetén a megadott érték kerül beírásra, így szükség esetén lehetséges IPv4-es kapcsolaton keresztül IPv6-os címet frissíteni. ## Egy példa A következő kis szkript linux rendszeren elküld egy-egy kérést IPv4-en és IPv6-on is. ```bash #! /bin/bash for x in 4 6 do curl -${x} https://updaterv${x}.i42.hu:10053 --data "token=my_token&prefix=my_prefix" && echo "" done ```