5 @subsection Релиз 8.8.3
9 Исправлена @command{nncp-reass} команда, которая некорректно сообщала о
10 плохом размере последнего куска файла если он был кратен размеру chunk-а.
13 Обновлены зависимости. Теперь требуется Go 1.20+.
18 @subsection Релиз 8.8.2
22 Обновлена библиотека для работы с Yggdrasil, а также несколько других.
27 @subsection Релиз 8.8.1
31 Исправлено падение @command{nncp-daemon} при неопознанном подключении и
32 включённом @option{-autotoss}.
35 Обновлены зависимые библиотеки.
40 @subsection Релиз 8.8.0
44 Исправлена невозможность сборки под Go 1.19.
47 Минимальная требуемая версия Go 1.17.
50 Обновлены зависимые библиотеки.
55 @subsection Релиз 8.7.2
59 Более интуитивное, понятное и немного более гибкое поведение @command{nncp-rm}.
62 @command{nncp-rm} также удаляет соответствующий @file{hdr/} файл для
63 каждого удалённого пакета.
68 @subsection Релиз 8.7.1
72 @command{nncp-xfer} теперь корректно проверяет наличие @file{seen/}
73 файлов для входящих пакетов.
78 @subsection Релиз 8.7.0
82 @command{nncp-ack} не подтверждает ACK-пакеты, предотвращая бесконечную
86 В прошлом, @command{nncp-ack} не удаляла соответствующие @file{hdr/} файлы.
89 @command{nncp-rm} теперь берёт список пакетов из @code{stdin}, при
90 использовании @option{-pkt} опции.
93 @command{nncp-ack} теперь генерирует список ACK пакетов, которые были
94 созданы, что может использоваться в качестве ввода для @command{nncp-rm}
95 команды, чтобы удалить исходящие ACK пакеты.
100 @subsection Релиз 8.6.0
104 @command{nncp-xfer} проверяет сходится ли контрольная сумма
105 скопированного локально пакета и исходного.
108 @command{nncp-call} имеет плохой код возврата если в очередях на приём и
109 отправку остаются незаконченные задания.
112 Появилась @command{nncp-ack} команда, которая отправляет явное
113 подтверждение доставки пакета (ACK пакет). Это подтверждение удаляет
114 упомянутый пакет из исходящего spool-а.
117 Появилась возможность отключения @code{fsync} операции
118 @env{$NNCPNOSYNC=1} переменной окружения.
121 Добавлены разнообразные индексы в документации, что должно помочь при
127 @subsection Релиз 8.5.0
131 Исправлена работоспособность @command{nncp-bundle}.
134 По ошибке @option{-mcd-wait} опция у @command{nncp-call} была включена
138 Возможность переопределять внутренний timeout по умолчанию для протокола
139 синхронизации через @env{$NNCPDEADLINE} переменную окружения. Может быть
140 полезно для каналов с очень большими задержками.
143 NNCP собирается на OpenBSD.
148 @subsection Релиз 8.4.0
152 Имена интерфейсов относящихся к multicast (@code{mcd-listen} и
153 @code{mcd-send} опции конфигурации) теперь являются регулярными
154 выражениями. По умолчанию @command{nncp-cfgnew} не комментирует
155 их теперь и прописывает @code{.*} имя интерфейса.
158 У @command{nncp-call} команды появился @option{-mcd-wait} аргумент,
159 позволяющий дожидаться multicast сообщения об адресе ноды.
162 @command{nncp-file} команда пропускает всё что не является регулярным
163 файлом или директорией во время создания pax-архива.
168 @subsection Релиз 8.3.0
172 Исправлена возможность сборки на 32-бит системах.
177 @subsection Релиз 8.2.0
181 Yggdrasil использует IPv6+TCP сетевой стэк написанный полностью на Go,
182 вместо голого μTP транспортного протокола, делая возможным работу в
183 качестве обычного TCP сервера внутри overlay сети.
186 Конфигурационные строки Yggdrasil вида @code{prv;bind1,bind2;pub@dots{}}
187 заменены на URL-подобные (@code{yggdrasils://PRV?bind=BIND1&bind=BIND2&pub=PUB}).
190 Возможно передавать параметры Yggdrasil конфигурации связанные с multicast.
193 @command{nncp-daemon} может слушать одновременно и на TCP и на
194 Yggdrasil-управляемом сокетах.
197 Слушание на endpoint сокете для пиринга в @command{nncp-daemon}
198 опционально -- вы можете быть доступны и через связь с peer-ами.
203 @subsection Релиз 8.1.0
207 @command{nncp-cfgdir} команда не требует обязательного наличия
208 @code{self} секции конфигурационного файла.
211 Появилась возможность работы в качестве клиента overlay сети Yggdrasil,
212 используя online протокол поверх неё.
217 @subsection Релиз 8.0.2
221 Исправлена возможность отправки мультивещательных пакетов.
226 @subsection Релиз 8.0.1
230 Исправлено некорректное вычисление @code{freq.chunked} значения, при
231 отсутствии которого всё равно форсированно включалась chunked передача.
234 Исправлено некорректное вычисление значения полного размера файла в
240 @subsection Релиз 8.0.0
244 @strong{Несовместимое} изменение формата зашифрованных пакетов: размеры
245 полезной нагрузки и дополнения посылаются прямо внутри зашифрованного
246 потока. Это даёт возможность потоково создавать шифрованные пакеты, без
247 знания размеров заранее, без создания временного файла или буферизации в
251 Производится корректная проверка дополнения зашифрованного пакета. Это
252 не критичная проблема, но прежде ни размер, ни значение дополнения не
253 были аутентифицированы, позволяя циклично откусывать по байту с конца и
254 узнавать размер полезной нагрузки, наблюдая за реакцией по обработке
255 такого зашифрованного пакета.
258 @command{nncp-exec} больше не имеет @option{-use-tmp} опции, из-за
259 совместимого с потоковой работой формата зашифрованных пакетов.
262 У @command{nncp-file} и @command{nncp-exec} команд появилась опция
263 @option{-maxsize}, ограничивающая максимальный результирующий размер
264 зашифрованного пакета (возвращая ошибку если он превышен). Может быть
265 полезно, так как размер полезной нагрузки может быть неизвестен заранее.
270 @subsection Релиз 7.7.0
274 Экспериментальная поддержка @code{kqueue} и @code{inotify} оповещений об
275 изменениях в spool директориях, для сокращения накладных расходов на их
279 @file{.seen} и @file{.hdr} файлы находятся в @file{seen/} и @file{hdr/}
280 поддиректориях теперь, дабы ускорить сканирование spool областей.
281 Необходима миграция текущих файлов:
284 $ find $NNCPSPOOL -type f -name "*.hdr" -exec rm @{@} +
286 $ find $NNCPSPOOL -type d -name rx | while read rx ; do
289 find . -type f -name "*.seen" | while read fn ; do
290 mv $fn seen/$@{fn%.seen@}
294 $ find $NNCPSPOOL -type d -name area | while read area ; do
295 find $area -type f -name "*.seen" | while read fn ; do
304 @subsection Релиз 7.6.0
308 Журналирование может производиться в назначенный открытый файловый
309 дескриптор (@env{$NNCPLOG=FD:5} например).
310 Что дружелюбно к использованию под @command{daemontools}.
313 Добавлены дополнительные проверки наличия публичных ключей в
314 конфигурационном файле, предотвращающие падения некоторых команд.
319 @subsection Релиз 7.5.1
323 NNCP собирается на NetBSD.
328 @subsection Релиз 7.5.0
332 @command{nncp-daemon} соблюдает UCSPI-TCP интерфейс, благодаря чему в
333 журнале будет присутствовать адрес удалённой системы (при запуске под
334 совместимой утилитой). Желательно применять @option{-ucspi} опцию вместо
338 @command{nncp-call} может быть UCSPI-TCP клиентом, используя
339 @option{-ucspi} опцию.
342 Не выходить если не получается слушать на каком-либо MCD сетевом
343 интерфейсе -- только предупреждать об ошибке.
348 @subsection Релиз 7.4.0
352 Исправлена работоспособность MCD при одновременном использовании
353 @command{nncp-daemon} и @command{nncp-caller}.
358 @subsection Релиз 7.3.2
362 @command{hjson-cli} утилита теперь собирается в vendor-режиме.
367 @subsection Релиз 7.3.1
371 Исправлена проблема с возможно остающимся открытым файловым
372 дескриптором в online командах.
375 Существенно снижено потребление памяти MTH хэширования.
380 @subsection Релиз 7.3.0
384 Поправлены проблемы работоспособности на 32-бит системах с большими файлами.
387 Возможность использовать конфигурацию в виде директории с набором
388 файлов. Появилась команда @command{nncp-cfgdir}.
393 @subsection Релиз 7.2.1
397 Небольшие оптимизации в online командах.
402 @subsection Релиз 7.2.0
406 Появилась @command{nncp-trns} команда для ручного создания транзитных пакетов.
409 Если у целевой ноды транзитного пакета задан @option{via} маршрут, то
410 использовать его, а не игнорировать.
413 Не отправлять multicast пакет оригинатору сообщения, очевидно точно
414 видящего свой собственный пакет.
417 Намного меньшее потребление памяти во время MTH хэширования когда
418 смещение равно нулю: когда пакет не является докачиванием, а например
419 проверяется @command{nncp-check} командой.
424 @subsection Релиз 7.1.1
428 Исправлено падение при @code{fsync} директорий после создания @file{.seen} файлов.
433 @subsection Релиз 7.1.0
437 Появилась возможность мультивещательной (multicast) рассылки пакетов.
438 Реализовано всего лишь дополнительным типом простых пакетов и изменением
439 @command{nncp-toss}, @command{nncp-file} и @command{nncp-exec} команд.
442 Исправлена работоспособность @command{nncp-file} и @command{nncp-exec}
443 команд использующих временный файл (@code{stdin} и @option{-use-tmp}).
446 Исправлен пропадающий плохой код возврата в @command{nncp-exec} команде.
449 Исправлено некорректное генерирование @file{.hdr} при использовании
453 У @command{nncp-rm} команды появилась @option{-all} опция, применяемая
457 У @command{nncp-check} команды появилась @option{-cycle} опция, вводящая
458 проверку в бесконечный цикл.
461 У @command{nncp-rm} команды можно указывать alias-ы имён нод.
464 @command{nncp-pkt} может парсить @file{.hdr} файлы.
469 @subsection Релиз 7.0.0
473 Минимальная требуемая версия Go 1.13.
476 Хэширование с BLAKE3 на базе деревьев Меркле (Merkle Tree Hashing, MTH)
477 используется вместо BLAKE2b. Из-за этого, обратно @strong{несовместимое}
478 изменение формата шифрованных файлов (всего что находится в spool
479 области) и формата @file{.meta} файла при chunked передаче.
481 Текущая реализация далека от оптимальной: в ней нет распараллеливания
482 вычислений и имеет повышенное потребление памяти: около 512 KiB на
483 каждый 1 GiB данных файла. Будущая оптимизация производительности и
484 потребления памяти не должна привести к изменению формата пакетов. Но
485 это всё равно в несколько раз быстрее BLAKE2b.
488 Из-за использования MTH, докачиваемые в online режиме файлы потребуют
489 чтения с диска только предшествующей части, а не полностью всего файла,
493 Добавлена @command{nncp-hash} утилита для вычисления MTH хэша файла.
496 В шифрованных пакетах BLAKE2 KDF и XOF функции заменены на BLAKE3. Ещё
497 уменьшая количество примитивов. А также заголовок шифрованного файла
498 теперь является ассоциированными данными при шифровании.
501 MultiCast Discovery использует
502 @verb{|ff02::4e4e:4350|} адрес вместо @verb{|ff02::1|}.
505 @command{nncp-cfgenc} ошибочно трижды спрашивал парольную фразу при шифровании.
508 @command{nncp-stat} выводит сводку о частично скачанных пакетах.
511 Обновлены зависимые библиотеки.
516 @subsection Релиз 6.6.0
520 @command{nncp-daemon}, @command{nncp-call} и @command{nncp-caller}
521 ожидают завершения всех процессов фоновой проверки контрольных сумм,
522 после того как соединение закрыто.
525 Добавлена возможность определения адреса через multicast оповещение в
526 локальной сети, так называемый MCD (MultiCast Discovery).
531 @subsection Релиз 6.5.0
535 Исправлено падение в @command{nncp-daemon} когда SP рукопожатие не было успешно.
538 Исправлено возможное игнорирование плохого кода возврата автоматического tosser.
541 Исправлена гонка при закрытии файловых дескрипторов во время завершения
542 работы online протокола, которая могла привести к ошибке записи
543 принятого фрагмента пакета.
546 Убирать показ прогресса передачи пакетов когда вызов уже завершён в
547 @command{nncp-daemon}, @command{nncp-call} и @command{nncp-caller}.
552 @subsection Релиз 6.4.0
556 Исправлена возможная гонка в online протоколе, приводящая к падению
562 @subsection Релиз 6.3.0
566 Исправлено возможное падение программы во время показа прогресса online
572 @subsection Релиз 6.2.1
576 В трёх местах сообщений журналов по ошибке остались лишние @code{%s}.
581 @subsection Релиз 6.2.0
585 Возвращена работоспособность @option{-autotoss*} опций @command{nncp-caller}.
588 Очередной рефакторинг и упрощение системы журналирования.
589 Не должно быть видимых изменений для конечного пользователя.
594 @subsection Релиз 6.1.0
598 Оптимизация: большинство команд теперь не держат открытыми файловые
599 дескрипторы. Прежде вы легко могли выйти за пределы максимально
600 допустимого количества открытых файлов, если у вас было много пакетов в
604 Оптимизация: не закрывать файловый дескриптор файла который мы качаем.
605 Прежде каждый его кусочек приводил к дорогим open/close вызовам.
608 Скачиваемые в режиме online файлы теперь сохраняются с @file{.nock}
609 суффиксом (non-checksummed), ожидая пока либо @command{nncp-check}, либо
610 online демоны не выполнят проверку целостности.
613 Оптимизация: для файлов, скачивание которых не было продолжено, сразу же
614 вычисляет контрольная сумма, пропуская промежуточный @file{.nock} шаг.
617 Возможность хранения заголовков зашифрованных пакетов в @file{.hdr}
618 файлах, рядом с самими пакетами. Это может существенно повысить скорость
619 получения списка пакетов на файловых системах с большим размером блока.
624 @subsection Релиз 6.0.0
628 Журнал использует человеко-читаемый и легко обрабатываемый машиной
629 @url{https://www.gnu.org/software/recutils/, recfile} формат для своих
630 записей, вместо структурированных строчек RFC 3339. Старый формат
631 журналов не поддерживается @command{nncp-log}.
634 Работоспособность @option{-autotoss*} опции с @option{-inetd} режимом
635 @command{nncp-daemon}.
638 @option{when-tx-exists} опция вызова в конфигурационном файле позволяет
639 делать вызов только если имеются исходящие сообщения. Совмещённая с cron
640 выражением содержащим секунды, это можно использовать как возможность
641 вызова только при появлении исходящих пакетов.
644 @command{nncp-cronexpr} команда позволяет проверить корректность и
645 ожидаемый результат от указанного cron выражения.
650 @subsection Релиз 5.6.0
654 @option{-autotoss*} опции запускают tosser не после завершения вызова, а
655 во время него ежесекундно.
658 В @option{calls} секции конфигурации появились опции
659 @option{autotoss}, @option{autotoss-doseen},
660 @option{autotoss-nofile}, @option{autotoss-nofreq},
661 @option{autotoss-noexec}, @option{autotoss-notrns}.
662 Вы можете настраивать опции автоматического tosser для каждого вызова.
665 Использовать vendoring вместо переопределения @env{$GOPATH} во время
666 установки tarball, так как текущая минимальная версия Go это 1.12,
667 поддерживающая модули.
672 @subsection Релиз 5.5.1
676 Уважать @env{$BINDIR}, @env{$INFODIR} и @env{$DOCDIR} переменные окружения
677 в @file{config} во время установки.
682 @subsection Релиз 5.5.0
686 Исправления ошибок в @command{nncp-call(er)}/@command{nncp-daemon},
687 @command{nncp-bundle}, @command{nncp-stat} командах.
690 У команды @command{nncp-rm} появились @option{-dryrun} и @option{-older} опции.
693 У команды @command{nncp-exec} появились @option{-use-tmp} и
694 @option{-nocompress} опции. Несжатые пакеты не совместимы с предыдущими
698 У команд @command{nncp-call}, @command{nncp-caller} и @command{nncp-daemon}
699 появились @option{-autotoss*} опции для запуска tosser после завершения звонка.
702 Обновлены зависимые библиотеки. Минимальная требуемая версия Go 1.12.
707 @subsection Релиз 5.4.1
711 Исправлена ошибка с учётом @code{SENDMAIL} переменной при сборке.
716 @subsection Релиз 5.4.0
720 Обновлены зависимые библиотеки.
723 Система сборки переведена с Makefile-ов на @url{http://cr.yp.to/redo.html, redo}.
724 Это не должно повлиять на мейнтейнеров пакетов, так как минимальная
725 реализация @command{redo} включена в tarball.
730 @subsection Релиз 5.3.3
734 Больше различных проверок в коде на ошибки.
737 Обновлены зависимые библиотеки.
742 @subsection Релиз 5.3.2
746 Исправлена некорректная логика @option{onlinedeadline} timeout-а, при
747 котором соединение могло не учитывать факты прихода пакетов и обрывать
753 @subsection Релиз 5.3.1
757 Исправлена работоспособность @option{onlinedeadline} с адресами вызова
758 использующими внешние команды (@verb{#"|somecmd"#}).
761 @command{nncp-stat} имеет опцию @option{-pkt} показывающую информацию по
762 каждому пакету в spool.
767 @subsection Релиз 5.3.0
771 Сообщения прогресса содержат префикс, поясняющий выполняемое действие.
774 Исправлено не происходящее дополнение (padding) handshake сообщений.
777 Завершать все порождаемые в SP протоколе горутины, меньше утечек памяти.
780 SP протокол порождает меньше вызовов записей (соответственно, и TCP
784 Проверять @option{onlinedeadline} и @option{maxonlinetime} ежесекундно,
785 независимо от чтения из сокета (раз в 10 секунд в худшем случае).
788 Раз в минуту, если нет более никакого другого трафика, посылаются PING
789 пакеты в SP-соединении. Это позволит быстрее понимать что соединение
790 более не работоспособно.
793 @command{nncp-toss} использует lock-file для предотвращения
794 одновременной обработки зашифрованных пакетов.
799 @subsection Релиз 5.2.1
803 Исправлена обработка ошибки SP протокола, иногда вызывающая панику программы.
808 @subsection Релиз 5.2.0
812 Большинство команд по умолчанию показывают однострочный прогресс
813 выполнения операции. Появились @option{-progress}, @option{-noprogress}
814 опции командной строки, @option{noprogress} опция конфигурационного
818 Исправлен некорректный код возврата @command{nncp-check} команды,
819 который возвращал ошибку когда всё хорошо.
822 Проверка свободного места для пакетов, во время выполнения
823 @command{nncp-bundle -rx}.
828 @subsection Релиз 5.1.2
832 Исправлена @strong{критичная} уязвимость: аутентификация online нод
833 могла приводить к некорректной идентификации удалённой стороны, позволяя
834 скачивать чужие зашифрованные пакеты.
837 Исправлена ошибка: в новосозданных конфигурационных файлах, приватный
838 публичный ключ Noise были поменяны местами, что приводило к
839 невозможности online аутентификации нод.
842 Явная синхронизация (@code{fsync}) директорий для гарантированного
843 переименования файлов.
848 @subsection Релиз 5.1.1
852 Исправлена работоспособность @command{nncp-file} с @option{-chunked 0} опцией.
857 @subsection Релиз 5.1.0
861 @command{nncp-file} может отправлять директории, автоматически на лету
865 Во время создания исходящих сообщений проверяется наличие свободного
866 места на файловой системе.
869 @option{freq}, @option{freqminsize}, @option{freqchunked} опции
870 конфигурационного файла заменены на структуру
871 @option{freq: @{path: @dots{}, minsize: @dots{}, chunked: @dots{}@}}.
874 Добавлена @option{freq.maxsize} опция конфигурационного файл,
875 запрещающая ответ на файловый запрос больше заданного размера.
878 Возможность оповещения об успешно выполненных командах (exec) через
879 @option{notify.exec} опцию конфигурационного файла.
884 @subsection Релиз 5.0.0
888 @strong{Несовместимое} изменение формата конфигурационного файла:
889 YAML заменён на Hjson, из-за его гораздо большей простоты, без
890 заметной потери функционала и удобства.
893 @strong{Несовместимое} изменение формата простых пакетов. Работа со
894 старыми версиями не поддерживается. @code{zlib} сжатие заменено на
895 @code{Zstandard}, так как оно значительно быстрее и эффективнее, не
896 смотря на то, что версия библиотеки ещё не проверена временем.
899 Возможность соединяться с удалёнными нодами не только по TCP, но и через
900 pipe вызов сторонней команды.
903 @command{nncp-cfgnew} генерирует конфигурационный файл с множеством
904 комментариев. Можно использовать @option{-nocomments} опцию для старого
908 Дубликаты имён файлов имеют суффикс @file{.CTR}, вместо @file{CTR},
909 чтобы избежать возможных коллизий с @file{.nncp.chunkCTR}.
912 Возможность переопределить umask процесса через опцию конфигурационного
916 По умолчанию файлы и директории создаются с 666/777 правами доступа,
917 позволяя управлять ими @command{umask}-ом.
920 Обновлены зависимости.
923 Полное использование go модулей для управления зависимостями
924 (используется @code{go.cypherpunks.ru/nncp/v5} namespace).
927 Отмена автоматического использования более новых версий GNU GPL
928 (лицензия проекта GNU GPLv3-только).
933 @subsection Релиз 4.1
935 @item Восстановлена работоспособность на GNU/Linux системах и Go версии 1.10.
939 @subsection Релиз 4.0
943 @strong{Несовместимое} изменение формата зашифрованных и eblob пакетов:
944 используется AEAD режим шифрования с 128 КиБ блоками, так как раньше
945 @command{nncp-toss} не проверял MAC зашифрованного пакета прежде чем
946 отсылать дешифрованные данные внешней команде. Старые версии не
950 Проверка доступного места перед копированием во время работы
951 @command{nncp-xfer}, @command{nncp-daemon}, @command{nncp-call(er)}.
954 @command{nncp-call} имеет возможность только показывать список пакетов
955 на удалённой машине, без их передачи.
958 @command{nncp-call} имеет возможность передавать только чётко указанные пакеты.
961 Восстановлена работоспособность @option{xxrate} настройки в
962 @option{calls} секции конфигурационного файла.
965 Зависимые библиотеки обновлены.
968 Небольшие исправления ошибок.
971 Начало использования @code{go.mod} подсистемы.
976 @subsection Релиз 3.4
978 @item @command{nncp-daemon} может быть запущен как @command{inetd}-служба.
982 @subsection Релиз 3.3
986 @command{nncp-daemon}, @command{nncp-call}, @command{nncp-caller}
987 проверяют существование @file{.seen} файла и расценивают его как то, что
988 файл уже был скачан. Возможно передача данных была осуществлена
989 сторонним способом и удалённая сторона должна быть оповещена об этом.
992 Если более высокоприоритетный пакет попадает в спул, то
993 @command{nncp-daemon} добавит его в очередь отправки первым, прерывая
994 низкоприоритетные передачи.
997 К средствам связанным с online-соединениями (@command{nncp-daemon},
998 @command{nncp-call}, @command{nncp-caller}) добавлен простой
999 ограничитель скорости.
1002 Возможность задания приоритета символьными обозначениями:
1003 @verb{|NORMAL|}, @verb{|BULK+10|}, @verb{|PRIORITY-5|}, итд.
1006 Изменены значения приоритетов по-умолчанию:
1007 для @command{nncp-exec} с 64 на 96,
1008 для @command{nncp-freq} с 64 на 160,
1009 для @command{nncp-file} с 196 на 224.
1014 @subsection Релиз 3.2
1017 @strong{Несовместимое} изменение формата @emph{bundle} архивов и
1018 работоспособность @command{nncp-bundle} команды с Go 1.10+. Bundle
1019 должен быть корректным tar архивом, но Go 1.9 делал его недействительным
1020 из-за длинных путей внутри. NNCP нечаянно был зависим от этой баги.
1021 Явное добавление @file{NNCP/} директории в архив восстанавливает
1022 работоспособность с корректными tar архивами.
1026 @subsection Релиз 3.1
1029 Возможность отключать пересылку через промежуточные ноды используя
1030 @verb{|-via -|} опцию командной строки.
1034 @subsection Релиз 3.0
1038 @strong{Несовместимое} изменение формата простых пакетов. Работа со
1039 старыми версиями не поддерживается.
1042 Добавлена возможность удалённого исполнения команд, путём
1043 конфигурирования @option{exec} опции конфигурационного файла и
1044 использования команды @command{nncp-exec}:
1047 Команда @command{nncp-mail} заменена более гибкой и широкой
1048 @command{nncp-exec}. Вместо вызова @verb{|nncp-mail NODE RECIPIENT|}
1049 нужно использовать @verb{|nncp-exec NODE sendmail RECIPIENT|}.
1051 @option{sendmail} опция конфигурационного файла заменена на более гибкую
1052 @option{exec}. @code{sendmail: [@dots{}]} нужно заменить на
1053 @code{exec: sendmail: [@dots{}]}.
1057 Возможность переопределить @option{via} опцию конфигурации для целевого
1058 узла через @option{-via} опцию командной строки для следующих команд:
1059 @command{nncp-file}, @command{nncp-freq}, @command{nncp-exec}.
1062 Chunked файлы, меньшего размера чем указанный chunk, отправляются просто
1063 в виде одного файла.
1066 Exec команды вызываются с дополнительными переменными окружения
1067 @env{$NNCP_NICE} и @env{$NNCP_SELF}.
1070 Отправляемые файлы в ответ на запрос имеют приоритет указанный в запросе.
1071 Указать их желаемый приоритет во время вызова @command{nncp-freq} можно
1072 аргументом @option{-replynice}.
1075 Команде @command{nncp-toss} можно сказать не обрабатывать определённые
1076 типы пакетов, за счёт опций @option{-nofile}, @option{-nofreq},
1077 @option{-noexec}, @option{-notrns}.
1080 По-умолчанию @command{nncp-file} команда для
1081 @option{-minsize}/@option{-chunked} опций использует
1082 @option{FreqMinSize}/@option{FreqChunked} из конфигурационного файла.
1083 Это можно отключить указав нулевое значение.
1088 @subsection Релиз 2.0
1092 @strong{Несовместимое} изменение формата зашифрованных и eblob пакетов.
1093 Работа со старыми версиями не поддерживается.
1096 Алгоритм шифрования Twofish заменён на ChaCha20. Он намного быстрее.
1097 Одним криптографическим примитивом меньше.
1100 HKDF-BLAKE2b-256 KDF алгоритм заменён на BLAKE2Xb XOF. Ещё одним
1101 криптографическим примитивом меньше (предполагая, что BLAKE2X
1102 практически идентичен BLAKE2).
1107 @subsection Релиз 1.0
1111 @strong{Несовместимое} изменение формата зашифрованных пакетов. Работа
1112 со старыми версиями не поддерживается.
1115 @command{nncp-bundle} команда может создавать потоки зашифрованных
1116 пакетов или потреблять их. Это полезно когда речь идёт о
1117 @code{stdin}/@code{stdout} методах передачи (например запись на CD-ROM
1118 без создания промежуточного подготовленного ISO образа или работа с
1119 ленточными накопителями).
1122 @command{nncp-toss} команда может создавать @file{.seen} файлы,
1123 предотвращая приём дублированных пакетов.
1126 В команде @command{nncp-call} разрешается иметь только одного
1127 обработчика контрольной суммы в фоне. Это полезно когда тысячи маленьких
1128 входящих пакетов могут создать много горутин.
1131 Возможность переопределить путь до spool директории и файла журнала
1132 через аргумент командной строки или переменную окружения.
1135 @command{nncp-rm} команда может удалять все исходящие/входящие,
1136 @file{.seen}, @file{.part}, @file{.lock} и временные файлы.
1141 @subsection Релиз 0.12
1143 @item Команда sendmail вызывается с @env{$NNCP_SENDER} переменной окружения.
1147 @subsection Релиз 0.11
1149 @item Вывод команды @command{nncp-stat} отсортирован по имени ноды.
1153 @subsection Релиз 0.10
1156 @file{DST} аргумент @command{nncp-freq} команды теперь опционален.
1157 По-умолчанию будет подставлен последний элемент @file{SRC} пути.
1161 @subsection Релиз 0.9
1164 Исправлена обработка @option{-rx}/@option{-tx} опций @command{nncp-call}
1165 команды. Они игнорировались.
1169 @subsection Релиз 0.8
1172 Небольшое исправление ошибки в команде @command{nncp-file}, где опция
1173 @option{-minsize} для передачи без разбиения на части была в байтах, а
1178 @subsection Релиз 0.7
1182 Возможность предоставлять данные для @command{nncp-file} через
1183 стандартный ввод, используя временный зашифрованный файл для этого.
1186 Появилась возможность передачи файлов разбитых на части, с сопутствующей
1187 @command{nncp-reass} командой и @option{freqchunked} опцией
1188 конфигурационного файла. Полезно для передачи больших файлов через
1189 маленькие устройства хранения.
1192 @option{freqminsize} опция конфигурационного файла, аналогичная
1196 Опция @option{-force} команды @command{nncp-xfer} переименована в
1197 @option{-mkdir} для ясности.
1200 Опция @option{-minsize} задаётся в KiB, а не байтах, для удобства.
1203 Команда @command{nncp-newcfg} переименована в @command{nncp-cfgnew},
1204 а @command{nncp-mincfg} в @command{nncp-cfgmin}, для того чтобы они
1205 имели общий префикс и были сгруппированы для удобства.
1208 Появилась команда @command{nncp-cfgenc}, позволяющая
1209 шифровать/дешифровать конфигурационный файл, чтобы безопасно его хранить
1210 без использования OpenPGP или других подобных инструментов.
1213 Обновлены зависимые криптографические библиотеки.
1218 @subsection Релиз 0.6
1220 @item Появилась небольшая команда @command{nncp-rm}.
1221 @item Обновлены зависимые криптографические библиотеки.
1225 @subsection Релиз 0.5
1228 Тривиальное небольшое исправление в значениях приоритетов по-умолчанию в
1229 @command{nncp-file} и @command{nncp-freq} командах.
1233 @subsection Релиз 0.4
1237 Небольшое исправление в @command{nncp-call}, @command{nncp-caller},
1238 @command{nncp-daemon}: иногда они могли падать с segmentation fault
1239 ошибкой (данные не терялись).
1242 @command{nncp-newnode} переименована в @command{nncp-newcfg} --
1243 это короче и удобнее для использования.
1246 Появилась команда @command{nncp-mincfg}: вспомогательная утилита
1247 позволяющая создать минималистичный урезанный конфигурационный файл без
1248 приватных ключей, что полезно во время использования @command{nncp-xfer}.
1253 @subsection Релиз 0.3
1255 @item Исправлена совместимость с Go 1.6.
1259 @subsection Релиз 0.2
1263 @strong{Несовместимое} изменение формата пакета (магическое число тоже
1264 изменено): поле размера пакета шифруется и не посылается в открытом виде.
1267 @option{-minsize} опция даёт возможность автоматически дополнять
1268 исходящие пакеты до указанного минимального размера.
1271 @command{nncp-daemon} и @command{nncp-call}/@command{nncp-caller} всегда
1272 в фоне проверяют появление исходящих @emph{tx} пакетов пока подключены.
1273 Удалённая сторона сразу же оповещается об этом.
1276 @option{-onlinedeadline} опция даёт возможность выставления timeout-а на
1277 неактивность в online соединении, когда оно должно быть отключено. Она
1278 может быть использована для сохранения соединения на долгое время.
1281 @option{-maxonlinetime} опция даёт возможность указания максимального
1282 возможного времени жизни соединения.
1285 Появилась @command{nncp-caller} команда: клиент TCP-демона работающий по
1289 @command{nncp-pkt} команда может разжимать данные.