From aa88d0e6ab26480c67b0edbf3d6e25776aaead2a Mon Sep 17 00:00:00 2001
From: Dmitry <b4tm4n@mail.ru>
Date: Tue, 20 Feb 2024 16:09:39 +0300
Subject: [PATCH] upd README

---
 README.md | 50 +++++++++++++++++++++++++++++++++++++++++++++++++-
 1 file changed, 49 insertions(+), 1 deletion(-)

diff --git a/README.md b/README.md
index 4c3d79d..d9848d8 100644
--- a/README.md
+++ b/README.md
@@ -1,9 +1,57 @@
 # pddnsc
 
-Возможно ddns клиент
+Возможно `DDNS` клиент
 
 ## запуск
 
 ~~~sh
 python -m pddnsc.cli
 ~~~
+
+## конфигурация
+
+Конфигурация находится в файле `settings/config.toml`.
+Пример конфигурации:
+
+~~~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`.
+
+### TODO
+
+- Добавить названия python классов и их параметры.