Предговор
За личне потребе код куће сам инсталирао ВСпхере на коме покрећем виртуелни рутер и Убунту сервер као медијски сервер и гомилу других доброта, а овом серверу треба да се приступи са интернета. Али проблем је што мој провајдер даје статичне податке за новац, који се увек могу користити у корисније сврхе. Стога сам користио комбинацију ддцлиент + цлоудфларе.
Све је било у реду док ддцлиент није престао да ради. Након што сам мало чачкао, схватио сам да је дошло време за штаке и бицикле, јер је требало превише времена да се пронађе проблем. На крају се све претворило у мали демон који само ради, и не треба ми ништа друго.
Ако је неко заинтересован, добродошао у мачку.
Коришћени алати и како „то“ функционише
Дакле, прва ствар коју сам сазнао на веб локацији цлоудфларе је све о чему треба да знате
Генерално, омот је узет као основа
Узео сам један од примера за ажурирање ДНС-а и додао коришћење конфигурационог фајла и могућност ажурирања неколико А записа унутар зоне и, наравно, неограничен број зона.
Логика је следећа:
- Скрипта прима листу зона из конфигурационе датотеке и пролази кроз њих
- У свакој зони, скрипта пролази кроз сваки ДНС запис типа А или АААА и проверава јавни ИП са записом
- Ако је ИП другачији, мења га; ако није, прескаче итерацију петље и прелази на следећу.
- Заспи на време наведено у конфигурацији
Инсталација и конфигурација
Вероватно би било могуће направити .деб пакет, али ја нисам добар у овоме и није све тако тешко.
Процес сам описао веома детаљно у РЕАДМЕ.мд на
Али за сваки случај, описаћу га на руском уопштено:
- Уверите се да имате инсталиране питхон3 и питхон3-пип, ако не, инсталирајте их (на Виндовс-у, питхон3-пип је инсталиран заједно са Питхон-ом)
- Клонирајте или преузмите спремиште
- Инсталирајте потребне зависности.
python3 -m pip install -r requirements.txt
- Покрените инсталациону скрипту
За Линук:chmod +x install.sh sudo ./install.sh
За Виндовс: виндовс_инсталл.бат
- Уредите конфигурациону датотеку
За Линук:sudoedit /etc/zen-cf-ddns.conf
За Виндовс:
Отворите датотеку зен-цф-дднс.цонф у фасцикли у коју сте инсталирали скрипту.
Ово је обична ЈСОН датотека, подешавања нису ништа компликована - посебно сам описао 2 различите зоне у њој као пример.
Шта се крије иза инсталатера?
инсталл.сх за Линук:
- Корисник је креиран да покреће демон, без креирања кућног директоријума и без могућности да се пријави.
sudo useradd -r -s /bin/false zen-cf-ddns
- Датотека евиденције је креирана у /вар/лог/
- Поставите новокреираног корисника за власника датотеке евиденције
- Датотеке се копирају на своја места (конфигурација у /етц, извршна датотека у /уср/бин, сервисна датотека у /либ/системд/систем)
- Услуга је активирана
виндовс_инсталл.бат за Виндовс:
- Копира извршну и конфигурациону датотеку у фасциклу коју је одредио корисник
- Креира задатак у планеру за покретање скрипте при покретању система
schtasks /create /tn "CloudFlare Update IP" /tr "%newLocation%" /sc onstart
Након промене конфигурације, скрипту треба поново покренути; у Линуку је све једноставно и познато:
sudo service zen-cf-ddns start
sudo service zen-cf-ddns stop
sudo service zen-cf-ddns restart
sudo service zen-cf-ddns status
за Виндовс ћете морати да убијете питхонв процес и поново покренете скрипту (превише сам лењ да напишем услугу за Виндовс у Ц#):
taskkill /im pythonw.exe
Ово завршава инсталацију и конфигурацију, уживајте у своје здравље.
За оне који желе да виде не баш леп Питхон код, ево га
МИТ лиценциран, па радите са овим стварима шта желите.
ПС: Разумем да се испоставило да је мало штака, али ради свој посао са праском.
УПД: 11.10.2019 17:37
Нашао сам још 1 проблем и ако ми неко каже како да га решим, бићу веома захвалан.
Проблем је у томе што ако инсталирате зависности без судо питхон -м пип инсталл -р ..., онда модули неће бити видљиви од корисника услуге и не бих желео да присиљавам кориснике да инсталирају модуле под судо, а ово је неисправно.
Како да изгледа лепо?
УПД: 11.10.2019/19/16 XNUMX:XNUMX Проблем је решен коришћењем венв.
Било је неколико промена. Следеће издање биће у наредних неколико дана.
Извор: ввв.хабр.цом