====== Ресид I2P ====== Ресид - служебный сервер в сети I2P, предоставляющий актуальную базу пиров при первом запуске роутера i2pd, посредством API. Подобно BitCoin DNS, инициализация осуществляется путём запроса пиров с "официальных" серверов, указанных в коде роутера или опциональных: [reseed] # urls = https://reseed.i2p-projekt.de/,https://i2p.mooo.com/netDb/,https://netdb.i2p2.no/ # yggurls = http://[324:71e:281a:9ed3::ace]:7070/,http://[301:65b9:c7cd:9a36::1]:18801/,http://[320:8936:ec1a:31f1::216]/,http://[316:f9e0:f22e:a74f::216]/ * в текущей версии i2pd, наличие слэша в конце строки URL - обязательно либо указывается путь к локальному файлу: [reseed] file = /path/to/i2pseeds.su3 ===== Pyseeder ===== [[ https://github.com/PurpleI2P/pyseeder | pyseeder ]] - утилита, позволяющая генерировать API дамп %%i2pseeds.su3%%, используя собранную в процессе работы роутера i2pd базу netDb (обычно расположена в %%/var/lib/i2pd/netDb%%) Поскольку в сети I2P ограниченное количество ресидов Yggdrasil, при наличии такой возможности, будет полезно организовать дополнительный сервер.\\ Для этого, достаточно сгенерировать сетевой дамп в директорию Веб-сервера, например Nginx: $ YOUR_PASSWORD="Pa55w0rd" $ echo $YOUR_PASSWORD | pyseeder reseed --netdb /path/to/netDb --private-key data/priv_key.pem --outfile /var/www/myhost/i2pseeds.su3 --signer-id user@mail.i2p * где %%output/i2pseeds.su3%% - условно может быть %%/var/www/myhost/i2pseeds.su3%% База netDb содержит пиры всех адресных типов, перед выполнением команды %%pyseeder reseed%% для ресида Yggdrasil полезно отфильтровать (в приоритете) только локальные узлы.\\ Делается это скриптом [[ https://github.com/PurpleI2P/pyseeder/blob/master/yggdrasil/y2r.sh | y2r.sh ]], предварительно указав актуальные пути: * %%netdb%% * %%outdb%% * %%temp%% * %%success%% * %%padding%% * %%sed -i "s/>[0-9]\{1,1000\}$yggaddr #!/bin/bash cd /path/to/pyseeder # фильтруем NetDb yggdrasil/y2r.sh # генерируем i2pseeds.su3 . venv/bin/activate #YOUR_PASSWORD="Pa55w0rd" #echo $YOUR_PASSWORD | pyseeder reseed --netdb /path/to/netDb --private-key /path/to/priv_key.pem --outfile /var/www/myhost/i2pseeds.su3 --signer-id noreply@localhost pyseeder reseed --no-encryption --netdb /path/to/netDb --private-key /path/to/priv_key.pem --outfile /var/www/myhost/i2pseeds.su3 --signer-id noreply@localhost deactivate * в примере, пароль сертификата не используется, вместо этого используется аргумент %%--no-encryption%% Пример конфигурации файла Nginx есть [[ https://github.com/PurpleI2P/pyseeder/blob/master/yggdrasil/reseed_nginx.conf | в репозитории ]] и может иметь следующий вид: limit_req_zone $binary_remote_addr zone=reseed:512k rate=10r/m; server { root /var/www/myhost; listen [302:68d0:f0d5:b88d::9216]:80; index seed.html; location /i2pseeds.su3 { limit_req zone=reseed burst=5; if ($http_user_agent !~* "Wget/1.11.4" ) { return 403; } } location /user_at_mail.i2p.crt { limit_req zone=reseed; } } Проверить работоспособность API можно командой: pyseeder transport.pull --urls http://[302:68d0:f0d5:b88d::9216]/ --outfile /path/to/i2pseeds.su3