From 9feb8acb2827eb2b8f62ff74bf3994ec337c4713 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Eckl=2C=20M=C3=A1t=C3=A9?= <ecklm@sch.bme.hu> Date: Thu, 24 Dec 2015 16:43:54 +0100 Subject: [PATCH] =?UTF-8?q?Tutorial=20aka=20felhaszn=C3=A1l=C3=B3i=20dokum?= =?UTF-8?q?ent=C3=A1ci=C3=B3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit CsinĂĄltam egy kis tutorialt. A windowsos dolgok egy rĂŠsze mĂŠg hiĂĄnyzik belĹle, illetve mĂŠg meg kell nĂŠzni, hogy mac-re pl mennyire igazak, azok, amiket ĂŠn linuxos fejjel leĂrtam. --- README.md | 137 ++++++++++++++++++++++++++++++++++++++++++++++++ conf_example.py | 6 ++- 2 files changed, 141 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index e69de29..4bc197e 100644 --- a/README.md +++ b/README.md @@ -0,0 +1,137 @@ +# Tartalom + +* Tartalom +* A DDNS tipikus felhasznĂĄlĂĄsa +* AjĂĄnlott updater + * Python interpreter telepĂtĂŠse, kiprĂłbĂĄlĂĄsa + * TelepĂtĂŠs ĂŠs futtatĂĄs Windowson + * TelepĂtĂŠs ĂŠs futtatĂĄs UNIX alapĂş rendszereken +* debian/ubuntu ĂŠs leszĂĄrmazottaik +* fedora +* archlinux + * KonfigurĂĄciĂł + * FuttatĂĄs, ĂźtemezĂŠs Windowson + * KĂŠzi futtatĂĄs, adatok ellenĹrzĂŠse + * ĂtemezĂŠs + * FuttatĂĄs, ĂźtemezĂŠs UNIX-on + * KĂŠzi futtatĂĄs, adatok ellenĹrzĂŠse + * ĂtemezĂŠs + * 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 DynDNS vagy DDNS lehetĹvĂŠ teszi, hogy egy dinamikus IP cĂmmel rendelkezĹ eszkĂśz rĂśgzĂtett DNS 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 lejjebb), 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. + +## Python interpreter telepĂtĂŠse, kiprĂłbĂĄlĂĄsa +A Python nyelven Ărt szkript minden elterjedt operĂĄciĂłs rendszeren futtathatĂł, ehhez az adott operĂĄciĂłs rendszerre egy python2.7 (az updater 2.7-es verziĂłt hasznĂĄl) interpreter telepĂtĂŠse szĂźksĂŠges. Ez Windowsra legegyszerĹąbben [itt (Windows x86(-64) MSI installer)](https://www.python.org/downloads/release/python-2711/) tĂślthetĹ le. A linken UNIX alapĂş rendszerekhez is elĂŠrhetĹ interpreter, de ezeken a rendszereken inkĂĄbb ajĂĄnlott a disztribĂşciĂł fejlesztĹje ĂĄltal karbantartott csomagrepĂłbĂłl telepĂteni, azok ĂĄltalĂĄban rĂśgtĂśn telepĂtĂŠs utĂĄn jĂłl mĹąkĂśdnek. + +### TelepĂtĂŠs ĂŠs futtatĂĄs Windowson +MielĹtt leĂrjuk a telepĂtĂŠst ĂŠs hasznĂĄlatot Windowson, felhĂvjuk rĂĄ a figyelmet, hogy kĂŠszĂźlt egy, a windows lelkĂźletĂŠhez kĂśzelebb ĂĄllĂł frissĂtĹ is, ami az [alĂĄbbi linken ĂŠrhetĹ el](). Ezt igyekszĂźnk ugyancsak naprakĂŠszen tartani. + +A Python honpapjĂĄrĂłl (fenti link) letĂśltĂśtt telepĂtĹ egy tipikus next-next-finish telepĂtĹ. Egyetlen dologra kell figyelni telepĂtĂŠs kĂśzben: Ha jĂłt akarunk magunknak, akkor a *Customize Python 2.7.x* menĂźpontban az *Add python.exe to Path* melletti ĂŠrtĂŠket ĂĄllĂtsuk *Will be installed on local hard drive*-ra. Ez azĂŠrt szĂźksĂŠges, hogy ha esetleg valamikor parancssorbĂłl szeretnĂŠnk hasznĂĄlni a python parancsot, akkor ne kelljen teljes elĂŠrĂŠsi Ăşttal beĂrni ahhoz, hogy elinduljon. + +A telepĂtĂŠs utĂĄn, ha semmi mĂĄst nem vĂĄltoztattunk, akkor a *.py* kiterjesztĂŠsĹą fĂĄjlokat mĂĄr dupla kattintĂĄsra, vagy parancssorbĂłl indĂtĂĄsra pythonnal futtatja a rendszer. Ez rĂŠszben jĂł, mert kattintĂĄsra is lehet majd futtatni az updatert, viszont cserĂŠbe nem lĂĄtjuk, ha esetleg hibĂĄval tĂŠr vissza (errĹl mĂŠg lesz szĂł). Emellett egy alap szerkesztĹ is felkerĂźl, amivel kĂłdszĂnezĂŠs mellett meg lehet nĂŠzni/szerkeszteni a kĂłdot, illetve kitĂślteni a konfigurĂĄciĂłs fĂĄjlt. + +### TelepĂtĂŠs ĂŠs futtatĂĄs UNIX alapĂş rendszereken +A UNIX alapĂş rendszerek tĂśbbsĂŠge rendelkezik csomagdisztribĂşciĂłs rendszerrel, Ăgy ĂĄltalĂĄban az ilyen alapvetĹ komponenseket egyetlen parancs kiadĂĄsĂĄval lehet telepĂteni, valamint ezeket rĂśgtĂśn ezutĂĄn hasznĂĄlni is lehet minden kĂźlĂśnĂśsebb beĂĄllĂtĂĄs nĂŠlkĂźl. + +Erre adunk pĂĄr pĂŠldĂĄt: +```bash +# debian/ubuntu ĂŠs leszĂĄrmazottaik +apt-get install python2.7 + +# fedora +dnf install python2.7 + +# archlinux +pacman -S python2.7 +``` + +Ez utĂĄn a python2.7 konzolban bĂĄrmikor futtathatĂłk python parancsok. + +**Fontos!** TelepĂtĂŠskor ĂŠrdemes mindenkĂŠppen python**2.7**-kĂŠnt telepĂteni simĂĄn *python* helyett, ugyanis nĂŠhĂĄny disztribĂşciĂłn a sima *python* mĂĄr a python**3.5**-re utal. + +## 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. + +## FuttatĂĄs, ĂźtemezĂŠs Windowson + +### KĂŠzi futtatĂĄs, adatok ellenĹrzĂŠse + +### ĂtemezĂŠs +http://windows.microsoft.com/hu-hu/windows/schedule-task#1TC=windows-7 + +## FuttatĂĄs, ĂźtemezĂŠs UNIX-on + +### KĂŠzi futtatĂĄs, adatok ellenĹrzĂŠse +ElĹszĂśr egy kĂŠzi futtatĂĄssal bizonyosodjunk meg arrĂłl, a megadott kofigurĂĄciĂłs adatok helyesek-e. Ehez nyiss egy terminĂĄlt, majd menj el abba a mappĂĄba, ahovĂĄ letĂśltĂśtted az updatert. + +Ahhoz, hogy futtathatĂł legyen a szkript, engedĂŠnyezni kell a futtatĂĄsĂĄt. EzutĂĄn kĂźldjĂźnk egy validĂĄciĂłs kĂŠrĂŠst. +```bash +cd /path/to/updater +chmod +x update_i42_domain.py +./update_i42_domain.py -v +``` +Ha ez sikeres visszajelzĂŠst ad, akkor a konfigurĂĄciĂłs fĂĄjlban megadott adatok helyesek. + +### ĂtemezĂŠs +UNIX-szerĹą rendszereken ilyen feladatok ĂźtemezĂŠsĂŠre szolgĂĄl a cron. Ennek hasznĂĄlata tĂśbbfĂŠle lehet, most azt mutatjuk be, hogy tud a felhasznĂĄlĂł a sajĂĄt hatĂĄskĂśrĂŠben Ăźtemezett feladatot megadni. +Ennek mĹąkĂśdĂŠsĂŠhez **futnia kell** a gĂŠpen egy cron daemonnak (pl *cronie*). Ez disztribĂşciĂłfĂźggĹ, ĂŠs nem feltĂŠtlenĂźl fut alapĂŠrtelmezetten, folytatĂĄs elĹtt nĂŠzz utĂĄna, hogy a sajĂĄt disztribĂşciĂłdhoz mit ajĂĄnlanak, ĂŠs hogy hogy lehet elindĂtani/engedĂŠlyezni. + +AlapvetĹen a cron arra valĂł, hogy egy-egy parancsot bizonyos idĹnkĂŠnt lefuttassunk. Ehhez a crontab-ban kell megadni az ĂźtemezĂŠst egy megadott formĂĄtum szerint, majd utĂĄna a parancsot, amit futtatni szeretĂŠnk. + +Ehhez a terminĂĄlban futtassuk a `crontab -e` parancsot, amire egy karakteres szĂśvegszerkesztĹ fog megnyĂlni. Ide Ărjuk be pĂŠldĂĄul a kĂśvetkezĹt. +```cron + * */1 * * * /path/to/updater/update_i42_domain.py +``` +Ez ĂłrĂĄnkĂŠnt lefuttatja az updatert. Ezt az esetek tĂśbbsĂŠgĂŠben egy optimĂĄlis ĂŠrtĂŠknek tartjuk, ha nincs rĂĄ kĂźlĂśnĂśsebb okod ne ĂĄllĂtsd ĂĄt. +A tĂşl gyakori kĂŠrĂŠsek terhelĂŠsĂŠnek elkerĂźlĂŠse ĂŠrdekĂŠben szerver oldalon erre korlĂĄtozĂĄs van beĂĄllĂtva, ha ezt tĂşllĂŠped, akkor esetleg olyan hibaĂźzeneteket kaphatsz, ami arra utal, hogy a szolgĂĄltatĂĄs nem elĂŠrhetĹ. + +Aki szeretnĂŠ jobban szemĂŠlyre szabni a frissĂtĂŠsi idĹt, vagy csak ĂŠrdeklĹdik a crontab irĂĄnt, az olvasson utĂĄna a fĂĄjl formĂĄtumĂĄnak [ezen a linken](https://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man5/crontab.5.html#//apple_ref/doc/man/5/crontab), vagy terminĂĄlban a `man crontab` parancs kiadĂĄsa utĂĄn. + +## 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 +``` + diff --git a/conf_example.py b/conf_example.py index 8427f8a..5edad2f 100644 --- a/conf_example.py +++ b/conf_example.py @@ -6,13 +6,14 @@ """ # Prefix, amit regisztrĂĄltĂĄl +# Pl: valami.i42.hu-nĂĄl valami, x.valami.i42.hu-nĂĄl pedig x.valami MY_PREFIX = "" # az i42.hu domain hozzĂĄfĹązĂŠsre kerĂźl -# Token, amit regisztrĂĄltĂĄl +# Token, amit a honlapon generĂĄltĂĄl MY_TOKEN = "" # Az IP cĂm, amire frissĂteni akarod a domain rekordod. Ha errĹl a gĂŠprĹl akarod hasznĂĄlni, akkor hagyd el. -# Ha nem muszĂĄj ne hasznĂĄld! +# Ha nem muszĂĄj ne vĂĄltoztasd meg! # Ha nem vĂĄltoztatod meg, akkor az ĂŠppen aktuĂĄlis publikus cĂmed kerĂźl beĂĄllĂtĂĄsra MY_IP_V4 = "" # opcionĂĄlis MY_IP_V6 = "" # szintĂŠn opcionĂĄlis @@ -28,3 +29,4 @@ UPDATE_IP_VERSION = 0 # Ătemezett hasznĂĄlat esetĂŠn ĂŠrdemes ilyet megadni. # Ha Ăźresen hagyod, minden a standard hibakimenetre fog ĂrĂłdni. LOG_FILE = "" # LehetĹleg teljes elĂŠrĂŠsi utat hasznĂĄlj. + -- GitLab