возможно будет клиент ddns
Go to file
Dmitry Belyaev 5e3805b567
Docker Image CI / test (push) Successful in 30s Details
Docker Image CI / push (push) Successful in 40s Details
fix StateHashFile encoding
2024-03-03 14:32:12 +03:00
.gitea/workflows add docker build ci 2024-02-27 12:35:21 +03:00
docs add docs 2024-02-22 18:24:36 +03:00
pddnsc fix StateHashFile encoding 2024-03-03 14:32:12 +03:00
settings add GenericHttpRegexSource provider 2024-02-25 17:32:00 +03:00
state hold state dir 2024-02-19 17:08:02 +03:00
.dockerignore add Dockerfile 2024-02-20 20:44:27 +03:00
.gitignore add docs 2024-02-22 18:24:36 +03:00
.pre-commit-config.yaml pre-commit: add check-toml 2024-02-21 11:10:23 +03:00
Dockerfile Dockerfile: add log datetime 2024-02-21 21:13:28 +03:00
LICENSE add LICENSE 2024-02-20 12:08:01 +03:00
README.md upd README 2024-02-29 15:56:53 +03:00
mkapi_conf.py add docs 2024-02-22 18:24:36 +03:00
mkdocs.yml upd README + docs 2024-02-25 23:00:34 +03:00
requirements.dev.txt add pre-commit 2024-02-21 11:07:23 +03:00
requirements.docs.txt add docs 2024-02-22 18:24:36 +03:00
requirements.txt add ip addrs validation 2024-02-21 09:41:51 +03:00

README.md

pddnsc

Возможно DDNS клиент

Запуск

python -m pddnsc.cli

либо в docker/podman (для запуска по расписанию в cron):

docker run -v .state:/app/state:rw \
           -v .settings:/app/settings:ro \
           -e SCHEDULE=@hourly \
           gitea.b4tman.ru/b4tman/pddnsc

Конфигурация

Конфигурация находится в файле settings/config.toml. Пример конфигурации:

[sources]
  # сервис https://www.ipify.org
  [sources.ipfy]
    provider = "IPIFYSource" # имя python класса

[filters]
  # этот фильтр означает, что если ip адреса не изменились (по хешу)
  # то не нужно никуда отсылать ничего
  [filters.state-hash]
    provider = "StateHashFilter"
    filepath = "state/hash.txt"

[outputs]
  # сохранение хеша всех ip адресов в файл,
  # чтобы потом проверить изменились ли они
  [outputs.hash-file]
    provider = "StateHashFile"
    filepath = "state/hash.txt"

  # сервис доменов на vscale (vds.selectel.ru)
  # токен в переменной окружения VSCALE_API_TOKEN
  [outputs.vscale]
    provider = "VscaleDomains"
    domain = "example.com"
    target = "www" # изменяем www.example.com
    ttl = 3600
    ipv4 = true # менять A запись
    ipv6 = false # НЕ менять AAAA запись

Конфигурация состоит из секций:

  • sources - источники ip адресов (выбирается результат от первого по времени сработавшего источника, который вернул хотябы один ipv4 или ipv6 адрес)
  • filters - фильтры, если хоть один вернет ложь то программа ничего никуда не запишет и не отправит, например проверка, что ip адрес не изменился
  • outputs - модули вывода, например вывод в консоль, запись в файл или создание dns записей на сервере

Все модули источников/фильтров/вывода работают конкурентно через asyncio и httpx.

Подробная документация

Её необходимо собрать с помошью mkdocs. Для этого нужно установить зависимости:

pip install -r requirements.txt
pip install -r requirements.docs.txt

После этого либо собрать документацию в каталог site/, либо запустить тестовый сервер.

# сборка
mkdocs build
# тестовый сервер
mkdocs serve