5 @subsection Релиз 8.8.1
9 Исправлено падение @command{nncp-daemon} при неопознанном подключении и
10 включённом @option{-autotoss}.
13 Обновлены зависимые библиотеки.
18 @subsection Релиз 8.8.0
22 Исправлена невозможность сборки под Go 1.19.
25 Минимальная требуемая версия Go 1.17.
28 Обновлены зависимые библиотеки.
33 @subsection Релиз 8.7.2
37 Более интуитивное, понятное и немного более гибкое поведение @command{nncp-rm}.
40 @command{nncp-rm} также удаляет соответствующий @file{hdr/} файл для
41 каждого удалённого пакета.
46 @subsection Релиз 8.7.1
50 @command{nncp-xfer} теперь корректно проверяет наличие @file{seen/}
51 файлов для входящих пакетов.
56 @subsection Релиз 8.7.0
60 @command{nncp-ack} не подтверждает ACK-пакеты, предотвращая бесконечную
64 В прошлом, @command{nncp-ack} не удаляла соответствующие @file{hdr/} файлы.
67 @command{nncp-rm} теперь берёт список пакетов из @code{stdin}, при
68 использовании @option{-pkt} опции.
71 @command{nncp-ack} теперь генерирует список ACK пакетов, которые были
72 созданы, что может использоваться в качестве ввода для @command{nncp-rm}
73 команды, чтобы удалить исходящие ACK пакеты.
78 @subsection Релиз 8.6.0
82 @command{nncp-xfer} проверяет сходится ли контрольная сумма
83 скопированного локально пакета и исходного.
86 @command{nncp-call} имеет плохой код возврата если в очередях на приём и
87 отправку остаются незаконченные задания.
90 Появилась @command{nncp-ack} команда, которая отправляет явное
91 подтверждение доставки пакета (ACK пакет). Это подтверждение удаляет
92 упомянутый пакет из исходящего spool-а.
95 Появилась возможность отключения @code{fsync} операции
96 @env{$NNCPNOSYNC=1} переменной окружения.
99 Добавлены разнообразные индексы в документации, что должно помочь при
105 @subsection Релиз 8.5.0
109 Исправлена работоспособность @command{nncp-bundle}.
112 По ошибке @option{-mcd-wait} опция у @command{nncp-call} была включена
116 Возможность переопределять внутренний timeout по умолчанию для протокола
117 синхронизации через @env{$NNCPDEADLINE} переменную окружения. Может быть
118 полезно для каналов с очень большими задержками.
121 NNCP собирается на OpenBSD.
126 @subsection Релиз 8.4.0
130 Имена интерфейсов относящихся к multicast (@code{mcd-listen} и
131 @code{mcd-send} опции конфигурации) теперь являются регулярными
132 выражениями. По умолчанию @command{nncp-cfgnew} не комментирует
133 их теперь и прописывает @code{.*} имя интерфейса.
136 У @command{nncp-call} команды появился @option{-mcd-wait} аргумент,
137 позволяющий дожидаться multicast сообщения об адресе ноды.
140 @command{nncp-file} команда пропускает всё что не является регулярным
141 файлом или директорией во время создания pax-архива.
146 @subsection Релиз 8.3.0
150 Исправлена возможность сборки на 32-бит системах.
155 @subsection Релиз 8.2.0
159 Yggdrasil использует IPv6+TCP сетевой стэк написанный полностью на Go,
160 вместо голого μTP транспортного протокола, делая возможным работу в
161 качестве обычного TCP сервера внутри overlay сети.
164 Конфигурационные строки Yggdrasil вида @code{prv;bind1,bind2;pub@dots{}}
165 заменены на URL-подобные (@code{yggdrasils://PRV?bind=BIND1&bind=BIND2&pub=PUB}).
168 Возможно передавать параметры Yggdrasil конфигурации связанные с multicast.
171 @command{nncp-daemon} может слушать одновременно и на TCP и на
172 Yggdrasil-управляемом сокетах.
175 Слушание на endpoint сокете для пиринга в @command{nncp-daemon}
176 опционально -- вы можете быть доступны и через связь с peer-ами.
181 @subsection Релиз 8.1.0
185 @command{nncp-cfgdir} команда не требует обязательного наличия
186 @code{self} секции конфигурационного файла.
189 Появилась возможность работы в качестве клиента overlay сети Yggdrasil,
190 используя online протокол поверх неё.
195 @subsection Релиз 8.0.2
199 Исправлена возможность отправки мультивещательных пакетов.
204 @subsection Релиз 8.0.1
208 Исправлено некорректное вычисление @code{freq.chunked} значения, при
209 отсутствии которого всё равно форсированно включалась chunked передача.
212 Исправлено некорректное вычисление значения полного размера файла в
218 @subsection Релиз 8.0.0
222 @strong{Несовместимое} изменение формата зашифрованных пакетов: размеры
223 полезной нагрузки и дополнения посылаются прямо внутри зашифрованного
224 потока. Это даёт возможность потоково создавать шифрованные пакеты, без
225 знания размеров заранее, без создания временного файла или буферизации в
229 Производится корректная проверка дополнения зашифрованного пакета. Это
230 не критичная проблема, но прежде ни размер, ни значение дополнения не
231 были аутентифицированы, позволяя циклично откусывать по байту с конца и
232 узнавать размер полезной нагрузки, наблюдая за реакцией по обработке
233 такого зашифрованного пакета.
236 @command{nncp-exec} больше не имеет @option{-use-tmp} опции, из-за
237 совместимого с потоковой работой формата зашифрованных пакетов.
240 У @command{nncp-file} и @command{nncp-exec} команд появилась опция
241 @option{-maxsize}, ограничивающая максимальный результирующий размер
242 зашифрованного пакета (возвращая ошибку если он превышен). Может быть
243 полезно, так как размер полезной нагрузки может быть неизвестен заранее.
248 @subsection Релиз 7.7.0
252 Экспериментальная поддержка @code{kqueue} и @code{inotify} оповещений об
253 изменениях в spool директориях, для сокращения накладных расходов на их
257 @file{.seen} и @file{.hdr} файлы находятся в @file{seen/} и @file{hdr/}
258 поддиректориях теперь, дабы ускорить сканирование spool областей.
259 Необходима миграция текущих файлов:
262 $ find $NNCPSPOOL -type f -name "*.hdr" -exec rm @{@} +
264 $ find $NNCPSPOOL -type d -name rx | while read rx ; do
267 find . -type f -name "*.seen" | while read fn ; do
268 mv $fn seen/$@{fn%.seen@}
272 $ find $NNCPSPOOL -type d -name area | while read area ; do
273 find $area -type f -name "*.seen" | while read fn ; do
282 @subsection Релиз 7.6.0
286 Журналирование может производиться в назначенный открытый файловый
287 дескриптор (@env{$NNCPLOG=FD:5} например).
288 Что дружелюбно к использованию под @command{daemontools}.
291 Добавлены дополнительные проверки наличия публичных ключей в
292 конфигурационном файле, предотвращающие падения некоторых команд.
297 @subsection Релиз 7.5.1
301 NNCP собирается на NetBSD.
306 @subsection Релиз 7.5.0
310 @command{nncp-daemon} соблюдает UCSPI-TCP интерфейс, благодаря чему в
311 журнале будет присутствовать адрес удалённой системы (при запуске под
312 совместимой утилитой). Желательно применять @option{-ucspi} опцию вместо
316 @command{nncp-call} может быть UCSPI-TCP клиентом, используя
317 @option{-ucspi} опцию.
320 Не выходить если не получается слушать на каком-либо MCD сетевом
321 интерфейсе -- только предупреждать об ошибке.
326 @subsection Релиз 7.4.0
330 Исправлена работоспособность MCD при одновременном использовании
331 @command{nncp-daemon} и @command{nncp-caller}.
336 @subsection Релиз 7.3.2
340 @command{hjson-cli} утилита теперь собирается в vendor-режиме.
345 @subsection Релиз 7.3.1
349 Исправлена проблема с возможно остающимся открытым файловым
350 дескриптором в online командах.
353 Существенно снижено потребление памяти MTH хэширования.
358 @subsection Релиз 7.3.0
362 Поправлены проблемы работоспособности на 32-бит системах с большими файлами.
365 Возможность использовать конфигурацию в виде директории с набором
366 файлов. Появилась команда @command{nncp-cfgdir}.
371 @subsection Релиз 7.2.1
375 Небольшие оптимизации в online командах.
380 @subsection Релиз 7.2.0
384 Появилась @command{nncp-trns} команда для ручного создания транзитных пакетов.
387 Если у целевой ноды транзитного пакета задан @option{via} маршрут, то
388 использовать его, а не игнорировать.
391 Не отправлять multicast пакет оригинатору сообщения, очевидно точно
392 видящего свой собственный пакет.
395 Намного меньшее потребление памяти во время MTH хэширования когда
396 смещение равно нулю: когда пакет не является докачиванием, а например
397 проверяется @command{nncp-check} командой.
402 @subsection Релиз 7.1.1
406 Исправлено падение при @code{fsync} директорий после создания @file{.seen} файлов.
411 @subsection Релиз 7.1.0
415 Появилась возможность мультивещательной (multicast) рассылки пакетов.
416 Реализовано всего лишь дополнительным типом простых пакетов и изменением
417 @command{nncp-toss}, @command{nncp-file} и @command{nncp-exec} команд.
420 Исправлена работоспособность @command{nncp-file} и @command{nncp-exec}
421 команд использующих временный файл (@code{stdin} и @option{-use-tmp}).
424 Исправлен пропадающий плохой код возврата в @command{nncp-exec} команде.
427 Исправлено некорректное генерирование @file{.hdr} при использовании
431 У @command{nncp-rm} команды появилась @option{-all} опция, применяемая
435 У @command{nncp-check} команды появилась @option{-cycle} опция, вводящая
436 проверку в бесконечный цикл.
439 У @command{nncp-rm} команды можно указывать alias-ы имён нод.
442 @command{nncp-pkt} может парсить @file{.hdr} файлы.
447 @subsection Релиз 7.0.0
451 Минимальная требуемая версия Go 1.13.
454 Хэширование с BLAKE3 на базе деревьев Меркле (Merkle Tree Hashing, MTH)
455 используется вместо BLAKE2b. Из-за этого, обратно @strong{несовместимое}
456 изменение формата шифрованных файлов (всего что находится в spool
457 области) и формата @file{.meta} файла при chunked передаче.
459 Текущая реализация далека от оптимальной: в ней нет распараллеливания
460 вычислений и имеет повышенное потребление памяти: около 512 KiB на
461 каждый 1 GiB данных файла. Будущая оптимизация производительности и
462 потребления памяти не должна привести к изменению формата пакетов. Но
463 это всё равно в несколько раз быстрее BLAKE2b.
466 Из-за использования MTH, докачиваемые в online режиме файлы потребуют
467 чтения с диска только предшествующей части, а не полностью всего файла,
471 Добавлена @command{nncp-hash} утилита для вычисления MTH хэша файла.
474 В шифрованных пакетах BLAKE2 KDF и XOF функции заменены на BLAKE3. Ещё
475 уменьшая количество примитивов. А также заголовок шифрованного файла
476 теперь является ассоциированными данными при шифровании.
479 MultiCast Discovery использует
480 @verb{|ff02::4e4e:4350|} адрес вместо @verb{|ff02::1|}.
483 @command{nncp-cfgenc} ошибочно трижды спрашивал парольную фразу при шифровании.
486 @command{nncp-stat} выводит сводку о частично скачанных пакетах.
489 Обновлены зависимые библиотеки.
494 @subsection Релиз 6.6.0
498 @command{nncp-daemon}, @command{nncp-call} и @command{nncp-caller}
499 ожидают завершения всех процессов фоновой проверки контрольных сумм,
500 после того как соединение закрыто.
503 Добавлена возможность определения адреса через multicast оповещение в
504 локальной сети, так называемый MCD (MultiCast Discovery).
509 @subsection Релиз 6.5.0
513 Исправлено падение в @command{nncp-daemon} когда SP рукопожатие не было успешно.
516 Исправлено возможное игнорирование плохого кода возврата автоматического tosser.
519 Исправлена гонка при закрытии файловых дескрипторов во время завершения
520 работы online протокола, которая могла привести к ошибке записи
521 принятого фрагмента пакета.
524 Убирать показ прогресса передачи пакетов когда вызов уже завершён в
525 @command{nncp-daemon}, @command{nncp-call} и @command{nncp-caller}.
530 @subsection Релиз 6.4.0
534 Исправлена возможная гонка в online протоколе, приводящая к падению
540 @subsection Релиз 6.3.0
544 Исправлено возможное падение программы во время показа прогресса online
550 @subsection Релиз 6.2.1
554 В трёх местах сообщений журналов по ошибке остались лишние @code{%s}.
559 @subsection Релиз 6.2.0
563 Возвращена работоспособность @option{-autotoss*} опций @command{nncp-caller}.
566 Очередной рефакторинг и упрощение системы журналирования.
567 Не должно быть видимых изменений для конечного пользователя.
572 @subsection Релиз 6.1.0
576 Оптимизация: большинство команд теперь не держат открытыми файловые
577 дескрипторы. Прежде вы легко могли выйти за пределы максимально
578 допустимого количества открытых файлов, если у вас было много пакетов в
582 Оптимизация: не закрывать файловый дескриптор файла который мы качаем.
583 Прежде каждый его кусочек приводил к дорогим open/close вызовам.
586 Скачиваемые в режиме online файлы теперь сохраняются с @file{.nock}
587 суффиксом (non-checksummed), ожидая пока либо @command{nncp-check}, либо
588 online демоны не выполнят проверку целостности.
591 Оптимизация: для файлов, скачивание которых не было продолжено, сразу же
592 вычисляет контрольная сумма, пропуская промежуточный @file{.nock} шаг.
595 Возможность хранения заголовков зашифрованных пакетов в @file{.hdr}
596 файлах, рядом с самими пакетами. Это может существенно повысить скорость
597 получения списка пакетов на файловых системах с большим размером блока.
602 @subsection Релиз 6.0.0
606 Журнал использует человеко-читаемый и легко обрабатываемый машиной
607 @url{https://www.gnu.org/software/recutils/, recfile} формат для своих
608 записей, вместо структурированных строчек RFC 3339. Старый формат
609 журналов не поддерживается @command{nncp-log}.
612 Работоспособность @option{-autotoss*} опции с @option{-inetd} режимом
613 @command{nncp-daemon}.
616 @option{when-tx-exists} опция вызова в конфигурационном файле позволяет
617 делать вызов только если имеются исходящие сообщения. Совмещённая с cron
618 выражением содержащим секунды, это можно использовать как возможность
619 вызова только при появлении исходящих пакетов.
622 @command{nncp-cronexpr} команда позволяет проверить корректность и
623 ожидаемый результат от указанного cron выражения.
628 @subsection Релиз 5.6.0
632 @option{-autotoss*} опции запускают tosser не после завершения вызова, а
633 во время него ежесекундно.
636 В @option{calls} секции конфигурации появились опции
637 @option{autotoss}, @option{autotoss-doseen},
638 @option{autotoss-nofile}, @option{autotoss-nofreq},
639 @option{autotoss-noexec}, @option{autotoss-notrns}.
640 Вы можете настраивать опции автоматического tosser для каждого вызова.
643 Использовать vendoring вместо переопределения @env{$GOPATH} во время
644 установки tarball, так как текущая минимальная версия Go это 1.12,
645 поддерживающая модули.
650 @subsection Релиз 5.5.1
654 Уважать @env{$BINDIR}, @env{$INFODIR} и @env{$DOCDIR} переменные окружения
655 в @file{config} во время установки.
660 @subsection Релиз 5.5.0
664 Исправления ошибок в @command{nncp-call(er)}/@command{nncp-daemon},
665 @command{nncp-bundle}, @command{nncp-stat} командах.
668 У команды @command{nncp-rm} появились @option{-dryrun} и @option{-older} опции.
671 У команды @command{nncp-exec} появились @option{-use-tmp} и
672 @option{-nocompress} опции. Несжатые пакеты не совместимы с предыдущими
676 У команд @command{nncp-call}, @command{nncp-caller} и @command{nncp-daemon}
677 появились @option{-autotoss*} опции для запуска tosser после завершения звонка.
680 Обновлены зависимые библиотеки. Минимальная требуемая версия Go 1.12.
685 @subsection Релиз 5.4.1
689 Исправлена ошибка с учётом @code{SENDMAIL} переменной при сборке.
694 @subsection Релиз 5.4.0
698 Обновлены зависимые библиотеки.
701 Система сборки переведена с Makefile-ов на @url{http://cr.yp.to/redo.html, redo}.
702 Это не должно повлиять на мейнтейнеров пакетов, так как минимальная
703 реализация @command{redo} включена в tarball.
708 @subsection Релиз 5.3.3
712 Больше различных проверок в коде на ошибки.
715 Обновлены зависимые библиотеки.
720 @subsection Релиз 5.3.2
724 Исправлена некорректная логика @option{onlinedeadline} timeout-а, при
725 котором соединение могло не учитывать факты прихода пакетов и обрывать
731 @subsection Релиз 5.3.1
735 Исправлена работоспособность @option{onlinedeadline} с адресами вызова
736 использующими внешние команды (@verb{#"|somecmd"#}).
739 @command{nncp-stat} имеет опцию @option{-pkt} показывающую информацию по
740 каждому пакету в spool.
745 @subsection Релиз 5.3.0
749 Сообщения прогресса содержат префикс, поясняющий выполняемое действие.
752 Исправлено не происходящее дополнение (padding) handshake сообщений.
755 Завершать все порождаемые в SP протоколе горутины, меньше утечек памяти.
758 SP протокол порождает меньше вызовов записей (соответственно, и TCP
762 Проверять @option{onlinedeadline} и @option{maxonlinetime} ежесекундно,
763 независимо от чтения из сокета (раз в 10 секунд в худшем случае).
766 Раз в минуту, если нет более никакого другого трафика, посылаются PING
767 пакеты в SP-соединении. Это позволит быстрее понимать что соединение
768 более не работоспособно.
771 @command{nncp-toss} использует lock-file для предотвращения
772 одновременной обработки зашифрованных пакетов.
777 @subsection Релиз 5.2.1
781 Исправлена обработка ошибки SP протокола, иногда вызывающая панику программы.
786 @subsection Релиз 5.2.0
790 Большинство команд по умолчанию показывают однострочный прогресс
791 выполнения операции. Появились @option{-progress}, @option{-noprogress}
792 опции командной строки, @option{noprogress} опция конфигурационного
796 Исправлен некорректный код возврата @command{nncp-check} команды,
797 который возвращал ошибку когда всё хорошо.
800 Проверка свободного места для пакетов, во время выполнения
801 @command{nncp-bundle -rx}.
806 @subsection Релиз 5.1.2
810 Исправлена @strong{критичная} уязвимость: аутентификация online нод
811 могла приводить к некорректной идентификации удалённой стороны, позволяя
812 скачивать чужие зашифрованные пакеты.
815 Исправлена ошибка: в новосозданных конфигурационных файлах, приватный
816 публичный ключ Noise были поменяны местами, что приводило к
817 невозможности online аутентификации нод.
820 Явная синхронизация (@code{fsync}) директорий для гарантированного
821 переименования файлов.
826 @subsection Релиз 5.1.1
830 Исправлена работоспособность @command{nncp-file} с @option{-chunked 0} опцией.
835 @subsection Релиз 5.1.0
839 @command{nncp-file} может отправлять директории, автоматически на лету
843 Во время создания исходящих сообщений проверяется наличие свободного
844 места на файловой системе.
847 @option{freq}, @option{freqminsize}, @option{freqchunked} опции
848 конфигурационного файла заменены на структуру
849 @option{freq: @{path: @dots{}, minsize: @dots{}, chunked: @dots{}@}}.
852 Добавлена @option{freq.maxsize} опция конфигурационного файл,
853 запрещающая ответ на файловый запрос больше заданного размера.
856 Возможность оповещения об успешно выполненных командах (exec) через
857 @option{notify.exec} опцию конфигурационного файла.
862 @subsection Релиз 5.0.0
866 @strong{Несовместимое} изменение формата конфигурационного файла:
867 YAML заменён на Hjson, из-за его гораздо большей простоты, без
868 заметной потери функционала и удобства.
871 @strong{Несовместимое} изменение формата простых пакетов. Работа со
872 старыми версиями не поддерживается. @code{zlib} сжатие заменено на
873 @code{Zstandard}, так как оно значительно быстрее и эффективнее, не
874 смотря на то, что версия библиотеки ещё не проверена временем.
877 Возможность соединяться с удалёнными нодами не только по TCP, но и через
878 pipe вызов сторонней команды.
881 @command{nncp-cfgnew} генерирует конфигурационный файл с множеством
882 комментариев. Можно использовать @option{-nocomments} опцию для старого
886 Дубликаты имён файлов имеют суффикс @file{.CTR}, вместо @file{CTR},
887 чтобы избежать возможных коллизий с @file{.nncp.chunkCTR}.
890 Возможность переопределить umask процесса через опцию конфигурационного
894 По умолчанию файлы и директории создаются с 666/777 правами доступа,
895 позволяя управлять ими @command{umask}-ом.
898 Обновлены зависимости.
901 Полное использование go модулей для управления зависимостями
902 (используется @code{go.cypherpunks.ru/nncp/v5} namespace).
905 Отмена автоматического использования более новых версий GNU GPL
906 (лицензия проекта GNU GPLv3-только).
911 @subsection Релиз 4.1
913 @item Восстановлена работоспособность на GNU/Linux системах и Go версии 1.10.
917 @subsection Релиз 4.0
921 @strong{Несовместимое} изменение формата зашифрованных и eblob пакетов:
922 используется AEAD режим шифрования с 128 КиБ блоками, так как раньше
923 @command{nncp-toss} не проверял MAC зашифрованного пакета прежде чем
924 отсылать дешифрованные данные внешней команде. Старые версии не
928 Проверка доступного места перед копированием во время работы
929 @command{nncp-xfer}, @command{nncp-daemon}, @command{nncp-call(er)}.
932 @command{nncp-call} имеет возможность только показывать список пакетов
933 на удалённой машине, без их передачи.
936 @command{nncp-call} имеет возможность передавать только чётко указанные пакеты.
939 Восстановлена работоспособность @option{xxrate} настройки в
940 @option{calls} секции конфигурационного файла.
943 Зависимые библиотеки обновлены.
946 Небольшие исправления ошибок.
949 Начало использования @code{go.mod} подсистемы.
954 @subsection Релиз 3.4
956 @item @command{nncp-daemon} может быть запущен как @command{inetd}-служба.
960 @subsection Релиз 3.3
964 @command{nncp-daemon}, @command{nncp-call}, @command{nncp-caller}
965 проверяют существование @file{.seen} файла и расценивают его как то, что
966 файл уже был скачан. Возможно передача данных была осуществлена
967 сторонним способом и удалённая сторона должна быть оповещена об этом.
970 Если более высокоприоритетный пакет попадает в спул, то
971 @command{nncp-daemon} добавит его в очередь отправки первым, прерывая
972 низкоприоритетные передачи.
975 К средствам связанным с online-соединениями (@command{nncp-daemon},
976 @command{nncp-call}, @command{nncp-caller}) добавлен простой
977 ограничитель скорости.
980 Возможность задания приоритета символьными обозначениями:
981 @verb{|NORMAL|}, @verb{|BULK+10|}, @verb{|PRIORITY-5|}, итд.
984 Изменены значения приоритетов по-умолчанию:
985 для @command{nncp-exec} с 64 на 96,
986 для @command{nncp-freq} с 64 на 160,
987 для @command{nncp-file} с 196 на 224.
992 @subsection Релиз 3.2
995 @strong{Несовместимое} изменение формата @emph{bundle} архивов и
996 работоспособность @command{nncp-bundle} команды с Go 1.10+. Bundle
997 должен быть корректным tar архивом, но Go 1.9 делал его недействительным
998 из-за длинных путей внутри. NNCP нечаянно был зависим от этой баги.
999 Явное добавление @file{NNCP/} директории в архив восстанавливает
1000 работоспособность с корректными tar архивами.
1004 @subsection Релиз 3.1
1007 Возможность отключать пересылку через промежуточные ноды используя
1008 @verb{|-via -|} опцию командной строки.
1012 @subsection Релиз 3.0
1016 @strong{Несовместимое} изменение формата простых пакетов. Работа со
1017 старыми версиями не поддерживается.
1020 Добавлена возможность удалённого исполнения команд, путём
1021 конфигурирования @option{exec} опции конфигурационного файла и
1022 использования команды @command{nncp-exec}:
1025 Команда @command{nncp-mail} заменена более гибкой и широкой
1026 @command{nncp-exec}. Вместо вызова @verb{|nncp-mail NODE RECIPIENT|}
1027 нужно использовать @verb{|nncp-exec NODE sendmail RECIPIENT|}.
1029 @option{sendmail} опция конфигурационного файла заменена на более гибкую
1030 @option{exec}. @code{sendmail: [@dots{}]} нужно заменить на
1031 @code{exec: sendmail: [@dots{}]}.
1035 Возможность переопределить @option{via} опцию конфигурации для целевого
1036 узла через @option{-via} опцию командной строки для следующих команд:
1037 @command{nncp-file}, @command{nncp-freq}, @command{nncp-exec}.
1040 Chunked файлы, меньшего размера чем указанный chunk, отправляются просто
1041 в виде одного файла.
1044 Exec команды вызываются с дополнительными переменными окружения
1045 @env{$NNCP_NICE} и @env{$NNCP_SELF}.
1048 Отправляемые файлы в ответ на запрос имеют приоритет указанный в запросе.
1049 Указать их желаемый приоритет во время вызова @command{nncp-freq} можно
1050 аргументом @option{-replynice}.
1053 Команде @command{nncp-toss} можно сказать не обрабатывать определённые
1054 типы пакетов, за счёт опций @option{-nofile}, @option{-nofreq},
1055 @option{-noexec}, @option{-notrns}.
1058 По-умолчанию @command{nncp-file} команда для
1059 @option{-minsize}/@option{-chunked} опций использует
1060 @option{FreqMinSize}/@option{FreqChunked} из конфигурационного файла.
1061 Это можно отключить указав нулевое значение.
1066 @subsection Релиз 2.0
1070 @strong{Несовместимое} изменение формата зашифрованных и eblob пакетов.
1071 Работа со старыми версиями не поддерживается.
1074 Алгоритм шифрования Twofish заменён на ChaCha20. Он намного быстрее.
1075 Одним криптографическим примитивом меньше.
1078 HKDF-BLAKE2b-256 KDF алгоритм заменён на BLAKE2Xb XOF. Ещё одним
1079 криптографическим примитивом меньше (предполагая, что BLAKE2X
1080 практически идентичен BLAKE2).
1085 @subsection Релиз 1.0
1089 @strong{Несовместимое} изменение формата зашифрованных пакетов. Работа
1090 со старыми версиями не поддерживается.
1093 @command{nncp-bundle} команда может создавать потоки зашифрованных
1094 пакетов или потреблять их. Это полезно когда речь идёт о
1095 @code{stdin}/@code{stdout} методах передачи (например запись на CD-ROM
1096 без создания промежуточного подготовленного ISO образа или работа с
1097 ленточными накопителями).
1100 @command{nncp-toss} команда может создавать @file{.seen} файлы,
1101 предотвращая приём дублированных пакетов.
1104 В команде @command{nncp-call} разрешается иметь только одного
1105 обработчика контрольной суммы в фоне. Это полезно когда тысячи маленьких
1106 входящих пакетов могут создать много горутин.
1109 Возможность переопределить путь до spool директории и файла журнала
1110 через аргумент командной строки или переменную окружения.
1113 @command{nncp-rm} команда может удалять все исходящие/входящие,
1114 @file{.seen}, @file{.part}, @file{.lock} и временные файлы.
1119 @subsection Релиз 0.12
1121 @item Команда sendmail вызывается с @env{$NNCP_SENDER} переменной окружения.
1125 @subsection Релиз 0.11
1127 @item Вывод команды @command{nncp-stat} отсортирован по имени ноды.
1131 @subsection Релиз 0.10
1134 @file{DST} аргумент @command{nncp-freq} команды теперь опционален.
1135 По-умолчанию будет подставлен последний элемент @file{SRC} пути.
1139 @subsection Релиз 0.9
1142 Исправлена обработка @option{-rx}/@option{-tx} опций @command{nncp-call}
1143 команды. Они игнорировались.
1147 @subsection Релиз 0.8
1150 Небольшое исправление ошибки в команде @command{nncp-file}, где опция
1151 @option{-minsize} для передачи без разбиения на части была в байтах, а
1156 @subsection Релиз 0.7
1160 Возможность предоставлять данные для @command{nncp-file} через
1161 стандартный ввод, используя временный зашифрованный файл для этого.
1164 Появилась возможность передачи файлов разбитых на части, с сопутствующей
1165 @command{nncp-reass} командой и @option{freqchunked} опцией
1166 конфигурационного файла. Полезно для передачи больших файлов через
1167 маленькие устройства хранения.
1170 @option{freqminsize} опция конфигурационного файла, аналогичная
1174 Опция @option{-force} команды @command{nncp-xfer} переименована в
1175 @option{-mkdir} для ясности.
1178 Опция @option{-minsize} задаётся в KiB, а не байтах, для удобства.
1181 Команда @command{nncp-newcfg} переименована в @command{nncp-cfgnew},
1182 а @command{nncp-mincfg} в @command{nncp-cfgmin}, для того чтобы они
1183 имели общий префикс и были сгруппированы для удобства.
1186 Появилась команда @command{nncp-cfgenc}, позволяющая
1187 шифровать/дешифровать конфигурационный файл, чтобы безопасно его хранить
1188 без использования OpenPGP или других подобных инструментов.
1191 Обновлены зависимые криптографические библиотеки.
1196 @subsection Релиз 0.6
1198 @item Появилась небольшая команда @command{nncp-rm}.
1199 @item Обновлены зависимые криптографические библиотеки.
1203 @subsection Релиз 0.5
1206 Тривиальное небольшое исправление в значениях приоритетов по-умолчанию в
1207 @command{nncp-file} и @command{nncp-freq} командах.
1211 @subsection Релиз 0.4
1215 Небольшое исправление в @command{nncp-call}, @command{nncp-caller},
1216 @command{nncp-daemon}: иногда они могли падать с segmentation fault
1217 ошибкой (данные не терялись).
1220 @command{nncp-newnode} переименована в @command{nncp-newcfg} --
1221 это короче и удобнее для использования.
1224 Появилась команда @command{nncp-mincfg}: вспомогательная утилита
1225 позволяющая создать минималистичный урезанный конфигурационный файл без
1226 приватных ключей, что полезно во время использования @command{nncp-xfer}.
1231 @subsection Релиз 0.3
1233 @item Исправлена совместимость с Go 1.6.
1237 @subsection Релиз 0.2
1241 @strong{Несовместимое} изменение формата пакета (магическое число тоже
1242 изменено): поле размера пакета шифруется и не посылается в открытом виде.
1245 @option{-minsize} опция даёт возможность автоматически дополнять
1246 исходящие пакеты до указанного минимального размера.
1249 @command{nncp-daemon} и @command{nncp-call}/@command{nncp-caller} всегда
1250 в фоне проверяют появление исходящих @emph{tx} пакетов пока подключены.
1251 Удалённая сторона сразу же оповещается об этом.
1254 @option{-onlinedeadline} опция даёт возможность выставления timeout-а на
1255 неактивность в online соединении, когда оно должно быть отключено. Она
1256 может быть использована для сохранения соединения на долгое время.
1259 @option{-maxonlinetime} опция даёт возможность указания максимального
1260 возможного времени жизни соединения.
1263 Появилась @command{nncp-caller} команда: клиент TCP-демона работающий по
1267 @command{nncp-pkt} команда может разжимать данные.