EessÔna
Isiklikuks kasutamiseks kodus seadistasin VSphere'i, millel töötab virtuaalne ruuter ja Ubuntu server meediaserverina ning palju muid meeldivaid asju, ja see server peab olema Internetis ligipÀÀsetav. Kuid probleem seisneb selles, et minu teenusepakkuja pakub staatilist IP-aadressi raha eest, millele vÔiks leida palju kasulikumaid rakendusi. SeetÔttu kasutasin ddclient + Cloudflare'i kombinatsiooni.
KÔik oli hÀsti, kuni ddclient enam ei töötanud. Natuke seda nuputades sain aru, et on aeg mÔtlema alternatiivsete lahenduste ja tööriistade peale, kuna probleemide leidmiseks kulus liiga palju aega. LÔppkokkuvÔttes kujunes see vÀlja vÀikeseks demoniks, mis lihtsalt töötab, ja rohkem ei olegi vaja.
Kellel huvi, on oodatud lugema edasi.
Kasutatud tööriistad ja kuidas "see" töötab
Esmalt uurisin Cloudflare'i saidilt kĂ”ike, mida on vaja teada . Ja olin juba asumas seda Pythonis rakendama (pĂ€rast Pythoniga tutvumist kasutan seda jĂ€rjest sagedamini mĂ”nede lihtsate ĂŒlesannete jaoks vĂ”i kui on vaja kiiresti prototĂŒĂŒp luua), kui Ă€kki sattusin praktiliselt valmisse lahendusse.
KokkuvÔttes vÔeti aluseks wrapper .
VĂ”tsin ĂŒhe nĂ€itest DNS-i vĂ€rskendamiseks ja lisasin konfiguratsiooni faili kasutamise ning mitme A-kirje vĂ€rskendamise vĂ”imaluse tsoonis ja loomulikult piiramatu arvu tsoonide vĂ€rskendamise.
Loogika on jÀrgmine:
- Skripti kaudu saadakse konfiguratsioonifailist tsoonide nimekiri ja kĂ€iakse neist lĂ€bi tsĂŒklis
- Igas tsoonis kĂ€ib skript tsĂŒklis lĂ€bi iga A- vĂ”i AAAA tĂŒĂŒpi DNS-kirje ja vĂ”rdleb avalikku IP-aadressi kirjetega
- Kui IP-d on erinev, muudab selle, kui mitte, jĂ€tkab tsĂŒkli iteratsiooniga jĂ€rgmisele
- Magab konfiguratsioonifailis mÀÀratud aja
Paigaldamine ja seadistamine
TÔenÀoliselt oleksin saanud teha ka .deb paketi, aga ma ei ole selles tugev, ja tegelikult ei ole see kuigi keeruline.
Protsessi olen ĂŒsna pĂ”hjalikult kirjeldanud README.md-s .
Kuid igaks juhuks kirjeldan ĂŒldiselt vene keeles:
- Veenduge, et teil oleks paigaldatud python3 ja python3-pip, kui ei ole â installige need (Windowsis paigaldatakse python3-pip koos Pythoniga)
- Kloonige vÔi laadige alla repositoorium
- Paigaldage vajalikud sÔltuvused.
python3 -m pip install -r requirements.txt - KĂ€ivitage installatsiooniskript
Linuxi jaoks:chmod +x install.sh sudo ./install.shWindowsile: windows_install.bat
- Redigeerige konfiguratsioonifaili
Linuxi jaoks:sudoedit /etc/zen-cf-ddns.confWindowsi jaoks:
Avage fail zen-cf-ddns.conf kaustas, kuhu skript paigaldatud.
See on tavaline JSON-fail, konfiguratsioonide osas pole midagi keerulist â kirjutasin spetsiaalselt, et nĂ€idata kahte erinevat ala.
Mis peitub installijate taga?
install.sh Linuxile:
- Kasutaja luuakse deemonite kÀitamiseks, kodukausta loomata ja sisselogimist vÔimaldamata.
sudo useradd -r -s /bin/false zen-cf-ddns - Luuakse logifail /var/log/ jaoks.
- Muudame logifaili omanikuks hiljuti loodud kasutaja.
- Failid kopeeritakse oma kohtadesse (konfiguraatsioon /etc, kÀivitatav fail /usr/bin, teenuse fail /lib/systemd/system)
- Teenust aktiveeritakse.
windows_install.bat Windowsile:
- Kopeerib kÀivitatava faili ja konfigureerimisfaili kasutaja mÀÀratud kausta.
- Luuakse ĂŒlesanne ajakavades, et skripti kĂ€ivitada sĂŒsteemi kĂ€ivitamisel.
schtasks /create /tn "CloudFlare Update IP" /tr "%newLocation%" /sc onstart
PÀrast konfiguratsiooni muutmist tuleb skript uuesti kÀivitada, Linuxis on see lihtne ja harjumuspÀrane:
sudo service zen-cf-ddns start
sudo service zen-cf-ddns stop
sudo service zen-cf-ddns restart
sudo service zen-cf-ddns status
Windowsis tuleb tappida pythonw protsess ja skript uuesti kÀivitada (mul pole eriti tahtmist kirjutada teenust Windowsile C#-ga):
taskkill /im pythonw.exeSellega on install ja seadistamine lÔpetatud, nautige tervist.
Neile, kes soovivad vaadata mitte kÔige ilusamat Pythonikoodi, siin see on. .
MIT litsents, seega tehke sellega, mida soovite.
P.S.: MĂ”istan, et see tuli veidi kĂ€tsepuhkusele, kuid oma ĂŒlesande tĂ€idab see suurepĂ€raselt.
UPD: 11.10.2019 17:37
Leidsin veel 1 probleemi, ja kui keegi oskab öelda, kuidas seda lahendada â oleksin vĂ€ga tĂ€nulik.
Probleem on selles, et kui installida sÔltuvused ilma sudo-ita python -m pip install -r ..., siis teenuse kasutaja alt mooduleid ei nÀhta, aga ma ei tahaks, et kasutajad sunnitaksid mooduleid sudo alt paigaldama, see on vale.
Kuidas Ôigesti teha, et see oleks ilus?
UPD: 11.10.2019 19:16 Probleem lahendatud venv'i kasutamisega.
Tuli mitmeid muudatusi. Uus versioon tuleb varsti.
Allikas: habr.com
