5 @subsection Релиз 8.8.0
9 Исправлена невозможность сборки под Go 1.19.
12 Минимальная требуемая версия Go 1.17.
15 Обновлены зависимые библиотеки.
20 @subsection Релиз 8.7.2
24 Более интуитивное, понятное и немного более гибкое поведение @command{nncp-rm}.
27 @command{nncp-rm} также удаляет соответствующий @file{hdr/} файл для
28 каждого удалённого пакета.
33 @subsection Релиз 8.7.1
37 @command{nncp-xfer} теперь корректно проверяет наличие @file{seen/}
38 файлов для входящих пакетов.
43 @subsection Релиз 8.7.0
47 @command{nncp-ack} не подтверждает ACK-пакеты, предотвращая бесконечную
51 В прошлом, @command{nncp-ack} не удаляла соответствующие @file{hdr/} файлы.
54 @command{nncp-rm} теперь берёт список пакетов из @code{stdin}, при
55 использовании @option{-pkt} опции.
58 @command{nncp-ack} теперь генерирует список ACK пакетов, которые были
59 созданы, что может использоваться в качестве ввода для @command{nncp-rm}
60 команды, чтобы удалить исходящие ACK пакеты.
65 @subsection Релиз 8.6.0
69 @command{nncp-xfer} проверяет сходится ли контрольная сумма
70 скопированного локально пакета и исходного.
73 @command{nncp-call} имеет плохой код возврата если в очередях на приём и
74 отправку остаются незаконченные задания.
77 Появилась @command{nncp-ack} команда, которая отправляет явное
78 подтверждение доставки пакета (ACK пакет). Это подтверждение удаляет
79 упомянутый пакет из исходящего spool-а.
82 Появилась возможность отключения @code{fsync} операции
83 @env{$NNCPNOSYNC=1} переменной окружения.
86 Добавлены разнообразные индексы в документации, что должно помочь при
92 @subsection Релиз 8.5.0
96 Исправлена работоспособность @command{nncp-bundle}.
99 По ошибке @option{-mcd-wait} опция у @command{nncp-call} была включена
103 Возможность переопределять внутренний timeout по умолчанию для протокола
104 синхронизации через @env{$NNCPDEADLINE} переменную окружения. Может быть
105 полезно для каналов с очень большими задержками.
108 NNCP собирается на OpenBSD.
113 @subsection Релиз 8.4.0
117 Имена интерфейсов относящихся к multicast (@code{mcd-listen} и
118 @code{mcd-send} опции конфигурации) теперь являются регулярными
119 выражениями. По умолчанию @command{nncp-cfgnew} не комментирует
120 их теперь и прописывает @code{.*} имя интерфейса.
123 У @command{nncp-call} команды появился @option{-mcd-wait} аргумент,
124 позволяющий дожидаться multicast сообщения об адресе ноды.
127 @command{nncp-file} команда пропускает всё что не является регулярным
128 файлом или директорией во время создания pax-архива.
133 @subsection Релиз 8.3.0
137 Исправлена возможность сборки на 32-бит системах.
142 @subsection Релиз 8.2.0
146 Yggdrasil использует IPv6+TCP сетевой стэк написанный полностью на Go,
147 вместо голого μTP транспортного протокола, делая возможным работу в
148 качестве обычного TCP сервера внутри overlay сети.
151 Конфигурационные строки Yggdrasil вида @code{prv;bind1,bind2;pub@dots{}}
152 заменены на URL-подобные (@code{yggdrasils://PRV?bind=BIND1&bind=BIND2&pub=PUB}).
155 Возможно передавать параметры Yggdrasil конфигурации связанные с multicast.
158 @command{nncp-daemon} может слушать одновременно и на TCP и на
159 Yggdrasil-управляемом сокетах.
162 Слушание на endpoint сокете для пиринга в @command{nncp-daemon}
163 опционально -- вы можете быть доступны и через связь с peer-ами.
168 @subsection Релиз 8.1.0
172 @command{nncp-cfgdir} команда не требует обязательного наличия
173 @code{self} секции конфигурационного файла.
176 Появилась возможность работы в качестве клиента overlay сети Yggdrasil,
177 используя online протокол поверх неё.
182 @subsection Релиз 8.0.2
186 Исправлена возможность отправки мультивещательных пакетов.
191 @subsection Релиз 8.0.1
195 Исправлено некорректное вычисление @code{freq.chunked} значения, при
196 отсутствии которого всё равно форсированно включалась chunked передача.
199 Исправлено некорректное вычисление значения полного размера файла в
205 @subsection Релиз 8.0.0
209 @strong{Несовместимое} изменение формата зашифрованных пакетов: размеры
210 полезной нагрузки и дополнения посылаются прямо внутри зашифрованного
211 потока. Это даёт возможность потоково создавать шифрованные пакеты, без
212 знания размеров заранее, без создания временного файла или буферизации в
216 Производится корректная проверка дополнения зашифрованного пакета. Это
217 не критичная проблема, но прежде ни размер, ни значение дополнения не
218 были аутентифицированы, позволяя циклично откусывать по байту с конца и
219 узнавать размер полезной нагрузки, наблюдая за реакцией по обработке
220 такого зашифрованного пакета.
223 @command{nncp-exec} больше не имеет @option{-use-tmp} опции, из-за
224 совместимого с потоковой работой формата зашифрованных пакетов.
227 У @command{nncp-file} и @command{nncp-exec} команд появилась опция
228 @option{-maxsize}, ограничивающая максимальный результирующий размер
229 зашифрованного пакета (возвращая ошибку если он превышен). Может быть
230 полезно, так как размер полезной нагрузки может быть неизвестен заранее.
235 @subsection Релиз 7.7.0
239 Экспериментальная поддержка @code{kqueue} и @code{inotify} оповещений об
240 изменениях в spool директориях, для сокращения накладных расходов на их
244 @file{.seen} и @file{.hdr} файлы находятся в @file{seen/} и @file{hdr/}
245 поддиректориях теперь, дабы ускорить сканирование spool областей.
246 Необходима миграция текущих файлов:
249 $ find $NNCPSPOOL -type f -name "*.hdr" -exec rm @{@} +
251 $ find $NNCPSPOOL -type d -name rx | while read rx ; do
254 find . -type f -name "*.seen" | while read fn ; do
255 mv $fn seen/$@{fn%.seen@}
259 $ find $NNCPSPOOL -type d -name area | while read area ; do
260 find $area -type f -name "*.seen" | while read fn ; do
269 @subsection Релиз 7.6.0
273 Журналирование может производиться в назначенный открытый файловый
274 дескриптор (@env{$NNCPLOG=FD:5} например).
275 Что дружелюбно к использованию под @command{daemontools}.
278 Добавлены дополнительные проверки наличия публичных ключей в
279 конфигурационном файле, предотвращающие падения некоторых команд.
284 @subsection Релиз 7.5.1
288 NNCP собирается на NetBSD.
293 @subsection Релиз 7.5.0
297 @command{nncp-daemon} соблюдает UCSPI-TCP интерфейс, благодаря чему в
298 журнале будет присутствовать адрес удалённой системы (при запуске под
299 совместимой утилитой). Желательно применять @option{-ucspi} опцию вместо
303 @command{nncp-call} может быть UCSPI-TCP клиентом, используя
304 @option{-ucspi} опцию.
307 Не выходить если не получается слушать на каком-либо MCD сетевом
308 интерфейсе -- только предупреждать об ошибке.
313 @subsection Релиз 7.4.0
317 Исправлена работоспособность MCD при одновременном использовании
318 @command{nncp-daemon} и @command{nncp-caller}.
323 @subsection Релиз 7.3.2
327 @command{hjson-cli} утилита теперь собирается в vendor-режиме.
332 @subsection Релиз 7.3.1
336 Исправлена проблема с возможно остающимся открытым файловым
337 дескриптором в online командах.
340 Существенно снижено потребление памяти MTH хэширования.
345 @subsection Релиз 7.3.0
349 Поправлены проблемы работоспособности на 32-бит системах с большими файлами.
352 Возможность использовать конфигурацию в виде директории с набором
353 файлов. Появилась команда @command{nncp-cfgdir}.
358 @subsection Релиз 7.2.1
362 Небольшие оптимизации в online командах.
367 @subsection Релиз 7.2.0
371 Появилась @command{nncp-trns} команда для ручного создания транзитных пакетов.
374 Если у целевой ноды транзитного пакета задан @option{via} маршрут, то
375 использовать его, а не игнорировать.
378 Не отправлять multicast пакет оригинатору сообщения, очевидно точно
379 видящего свой собственный пакет.
382 Намного меньшее потребление памяти во время MTH хэширования когда
383 смещение равно нулю: когда пакет не является докачиванием, а например
384 проверяется @command{nncp-check} командой.
389 @subsection Релиз 7.1.1
393 Исправлено падение при @code{fsync} директорий после создания @file{.seen} файлов.
398 @subsection Релиз 7.1.0
402 Появилась возможность мультивещательной (multicast) рассылки пакетов.
403 Реализовано всего лишь дополнительным типом простых пакетов и изменением
404 @command{nncp-toss}, @command{nncp-file} и @command{nncp-exec} команд.
407 Исправлена работоспособность @command{nncp-file} и @command{nncp-exec}
408 команд использующих временный файл (@code{stdin} и @option{-use-tmp}).
411 Исправлен пропадающий плохой код возврата в @command{nncp-exec} команде.
414 Исправлено некорректное генерирование @file{.hdr} при использовании
418 У @command{nncp-rm} команды появилась @option{-all} опция, применяемая
422 У @command{nncp-check} команды появилась @option{-cycle} опция, вводящая
423 проверку в бесконечный цикл.
426 У @command{nncp-rm} команды можно указывать alias-ы имён нод.
429 @command{nncp-pkt} может парсить @file{.hdr} файлы.
434 @subsection Релиз 7.0.0
438 Минимальная требуемая версия Go 1.13.
441 Хэширование с BLAKE3 на базе деревьев Меркле (Merkle Tree Hashing, MTH)
442 используется вместо BLAKE2b. Из-за этого, обратно @strong{несовместимое}
443 изменение формата шифрованных файлов (всего что находится в spool
444 области) и формата @file{.meta} файла при chunked передаче.
446 Текущая реализация далека от оптимальной: в ней нет распараллеливания
447 вычислений и имеет повышенное потребление памяти: около 512 KiB на
448 каждый 1 GiB данных файла. Будущая оптимизация производительности и
449 потребления памяти не должна привести к изменению формата пакетов. Но
450 это всё равно в несколько раз быстрее BLAKE2b.
453 Из-за использования MTH, докачиваемые в online режиме файлы потребуют
454 чтения с диска только предшествующей части, а не полностью всего файла,
458 Добавлена @command{nncp-hash} утилита для вычисления MTH хэша файла.
461 В шифрованных пакетах BLAKE2 KDF и XOF функции заменены на BLAKE3. Ещё
462 уменьшая количество примитивов. А также заголовок шифрованного файла
463 теперь является ассоциированными данными при шифровании.
466 MultiCast Discovery использует
467 @verb{|ff02::4e4e:4350|} адрес вместо @verb{|ff02::1|}.
470 @command{nncp-cfgenc} ошибочно трижды спрашивал парольную фразу при шифровании.
473 @command{nncp-stat} выводит сводку о частично скачанных пакетах.
476 Обновлены зависимые библиотеки.
481 @subsection Релиз 6.6.0
485 @command{nncp-daemon}, @command{nncp-call} и @command{nncp-caller}
486 ожидают завершения всех процессов фоновой проверки контрольных сумм,
487 после того как соединение закрыто.
490 Добавлена возможность определения адреса через multicast оповещение в
491 локальной сети, так называемый MCD (MultiCast Discovery).
496 @subsection Релиз 6.5.0
500 Исправлено падение в @command{nncp-daemon} когда SP рукопожатие не было успешно.
503 Исправлено возможное игнорирование плохого кода возврата автоматического tosser.
506 Исправлена гонка при закрытии файловых дескрипторов во время завершения
507 работы online протокола, которая могла привести к ошибке записи
508 принятого фрагмента пакета.
511 Убирать показ прогресса передачи пакетов когда вызов уже завершён в
512 @command{nncp-daemon}, @command{nncp-call} и @command{nncp-caller}.
517 @subsection Релиз 6.4.0
521 Исправлена возможная гонка в online протоколе, приводящая к падению
527 @subsection Релиз 6.3.0
531 Исправлено возможное падение программы во время показа прогресса online
537 @subsection Релиз 6.2.1
541 В трёх местах сообщений журналов по ошибке остались лишние @code{%s}.
546 @subsection Релиз 6.2.0
550 Возвращена работоспособность @option{-autotoss*} опций @command{nncp-caller}.
553 Очередной рефакторинг и упрощение системы журналирования.
554 Не должно быть видимых изменений для конечного пользователя.
559 @subsection Релиз 6.1.0
563 Оптимизация: большинство команд теперь не держат открытыми файловые
564 дескрипторы. Прежде вы легко могли выйти за пределы максимально
565 допустимого количества открытых файлов, если у вас было много пакетов в
569 Оптимизация: не закрывать файловый дескриптор файла который мы качаем.
570 Прежде каждый его кусочек приводил к дорогим open/close вызовам.
573 Скачиваемые в режиме online файлы теперь сохраняются с @file{.nock}
574 суффиксом (non-checksummed), ожидая пока либо @command{nncp-check}, либо
575 online демоны не выполнят проверку целостности.
578 Оптимизация: для файлов, скачивание которых не было продолжено, сразу же
579 вычисляет контрольная сумма, пропуская промежуточный @file{.nock} шаг.
582 Возможность хранения заголовков зашифрованных пакетов в @file{.hdr}
583 файлах, рядом с самими пакетами. Это может существенно повысить скорость
584 получения списка пакетов на файловых системах с большим размером блока.
589 @subsection Релиз 6.0.0
593 Журнал использует человеко-читаемый и легко обрабатываемый машиной
594 @url{https://www.gnu.org/software/recutils/, recfile} формат для своих
595 записей, вместо структурированных строчек RFC 3339. Старый формат
596 журналов не поддерживается @command{nncp-log}.
599 Работоспособность @option{-autotoss*} опции с @option{-inetd} режимом
600 @command{nncp-daemon}.
603 @option{when-tx-exists} опция вызова в конфигурационном файле позволяет
604 делать вызов только если имеются исходящие сообщения. Совмещённая с cron
605 выражением содержащим секунды, это можно использовать как возможность
606 вызова только при появлении исходящих пакетов.
609 @command{nncp-cronexpr} команда позволяет проверить корректность и
610 ожидаемый результат от указанного cron выражения.
615 @subsection Релиз 5.6.0
619 @option{-autotoss*} опции запускают tosser не после завершения вызова, а
620 во время него ежесекундно.
623 В @option{calls} секции конфигурации появились опции
624 @option{autotoss}, @option{autotoss-doseen},
625 @option{autotoss-nofile}, @option{autotoss-nofreq},
626 @option{autotoss-noexec}, @option{autotoss-notrns}.
627 Вы можете настраивать опции автоматического tosser для каждого вызова.
630 Использовать vendoring вместо переопределения @env{$GOPATH} во время
631 установки tarball, так как текущая минимальная версия Go это 1.12,
632 поддерживающая модули.
637 @subsection Релиз 5.5.1
641 Уважать @env{$BINDIR}, @env{$INFODIR} и @env{$DOCDIR} переменные окружения
642 в @file{config} во время установки.
647 @subsection Релиз 5.5.0
651 Исправления ошибок в @command{nncp-call(er)}/@command{nncp-daemon},
652 @command{nncp-bundle}, @command{nncp-stat} командах.
655 У команды @command{nncp-rm} появились @option{-dryrun} и @option{-older} опции.
658 У команды @command{nncp-exec} появились @option{-use-tmp} и
659 @option{-nocompress} опции. Несжатые пакеты не совместимы с предыдущими
663 У команд @command{nncp-call}, @command{nncp-caller} и @command{nncp-daemon}
664 появились @option{-autotoss*} опции для запуска tosser после завершения звонка.
667 Обновлены зависимые библиотеки. Минимальная требуемая версия Go 1.12.
672 @subsection Релиз 5.4.1
676 Исправлена ошибка с учётом @code{SENDMAIL} переменной при сборке.
681 @subsection Релиз 5.4.0
685 Обновлены зависимые библиотеки.
688 Система сборки переведена с Makefile-ов на @url{http://cr.yp.to/redo.html, redo}.
689 Это не должно повлиять на мейнтейнеров пакетов, так как минимальная
690 реализация @command{redo} включена в tarball.
695 @subsection Релиз 5.3.3
699 Больше различных проверок в коде на ошибки.
702 Обновлены зависимые библиотеки.
707 @subsection Релиз 5.3.2
711 Исправлена некорректная логика @option{onlinedeadline} timeout-а, при
712 котором соединение могло не учитывать факты прихода пакетов и обрывать
718 @subsection Релиз 5.3.1
722 Исправлена работоспособность @option{onlinedeadline} с адресами вызова
723 использующими внешние команды (@verb{#"|somecmd"#}).
726 @command{nncp-stat} имеет опцию @option{-pkt} показывающую информацию по
727 каждому пакету в spool.
732 @subsection Релиз 5.3.0
736 Сообщения прогресса содержат префикс, поясняющий выполняемое действие.
739 Исправлено не происходящее дополнение (padding) handshake сообщений.
742 Завершать все порождаемые в SP протоколе горутины, меньше утечек памяти.
745 SP протокол порождает меньше вызовов записей (соответственно, и TCP
749 Проверять @option{onlinedeadline} и @option{maxonlinetime} ежесекундно,
750 независимо от чтения из сокета (раз в 10 секунд в худшем случае).
753 Раз в минуту, если нет более никакого другого трафика, посылаются PING
754 пакеты в SP-соединении. Это позволит быстрее понимать что соединение
755 более не работоспособно.
758 @command{nncp-toss} использует lock-file для предотвращения
759 одновременной обработки зашифрованных пакетов.
764 @subsection Релиз 5.2.1
768 Исправлена обработка ошибки SP протокола, иногда вызывающая панику программы.
773 @subsection Релиз 5.2.0
777 Большинство команд по умолчанию показывают однострочный прогресс
778 выполнения операции. Появились @option{-progress}, @option{-noprogress}
779 опции командной строки, @option{noprogress} опция конфигурационного
783 Исправлен некорректный код возврата @command{nncp-check} команды,
784 который возвращал ошибку когда всё хорошо.
787 Проверка свободного места для пакетов, во время выполнения
788 @command{nncp-bundle -rx}.
793 @subsection Релиз 5.1.2
797 Исправлена @strong{критичная} уязвимость: аутентификация online нод
798 могла приводить к некорректной идентификации удалённой стороны, позволяя
799 скачивать чужие зашифрованные пакеты.
802 Исправлена ошибка: в новосозданных конфигурационных файлах, приватный
803 публичный ключ Noise были поменяны местами, что приводило к
804 невозможности online аутентификации нод.
807 Явная синхронизация (@code{fsync}) директорий для гарантированного
808 переименования файлов.
813 @subsection Релиз 5.1.1
817 Исправлена работоспособность @command{nncp-file} с @option{-chunked 0} опцией.
822 @subsection Релиз 5.1.0
826 @command{nncp-file} может отправлять директории, автоматически на лету
830 Во время создания исходящих сообщений проверяется наличие свободного
831 места на файловой системе.
834 @option{freq}, @option{freqminsize}, @option{freqchunked} опции
835 конфигурационного файла заменены на структуру
836 @option{freq: @{path: @dots{}, minsize: @dots{}, chunked: @dots{}@}}.
839 Добавлена @option{freq.maxsize} опция конфигурационного файл,
840 запрещающая ответ на файловый запрос больше заданного размера.
843 Возможность оповещения об успешно выполненных командах (exec) через
844 @option{notify.exec} опцию конфигурационного файла.
849 @subsection Релиз 5.0.0
853 @strong{Несовместимое} изменение формата конфигурационного файла:
854 YAML заменён на Hjson, из-за его гораздо большей простоты, без
855 заметной потери функционала и удобства.
858 @strong{Несовместимое} изменение формата простых пакетов. Работа со
859 старыми версиями не поддерживается. @code{zlib} сжатие заменено на
860 @code{Zstandard}, так как оно значительно быстрее и эффективнее, не
861 смотря на то, что версия библиотеки ещё не проверена временем.
864 Возможность соединяться с удалёнными нодами не только по TCP, но и через
865 pipe вызов сторонней команды.
868 @command{nncp-cfgnew} генерирует конфигурационный файл с множеством
869 комментариев. Можно использовать @option{-nocomments} опцию для старого
873 Дубликаты имён файлов имеют суффикс @file{.CTR}, вместо @file{CTR},
874 чтобы избежать возможных коллизий с @file{.nncp.chunkCTR}.
877 Возможность переопределить umask процесса через опцию конфигурационного
881 По умолчанию файлы и директории создаются с 666/777 правами доступа,
882 позволяя управлять ими @command{umask}-ом.
885 Обновлены зависимости.
888 Полное использование go модулей для управления зависимостями
889 (используется @code{go.cypherpunks.ru/nncp/v5} namespace).
892 Отмена автоматического использования более новых версий GNU GPL
893 (лицензия проекта GNU GPLv3-только).
898 @subsection Релиз 4.1
900 @item Восстановлена работоспособность на GNU/Linux системах и Go версии 1.10.
904 @subsection Релиз 4.0
908 @strong{Несовместимое} изменение формата зашифрованных и eblob пакетов:
909 используется AEAD режим шифрования с 128 КиБ блоками, так как раньше
910 @command{nncp-toss} не проверял MAC зашифрованного пакета прежде чем
911 отсылать дешифрованные данные внешней команде. Старые версии не
915 Проверка доступного места перед копированием во время работы
916 @command{nncp-xfer}, @command{nncp-daemon}, @command{nncp-call(er)}.
919 @command{nncp-call} имеет возможность только показывать список пакетов
920 на удалённой машине, без их передачи.
923 @command{nncp-call} имеет возможность передавать только чётко указанные пакеты.
926 Восстановлена работоспособность @option{xxrate} настройки в
927 @option{calls} секции конфигурационного файла.
930 Зависимые библиотеки обновлены.
933 Небольшие исправления ошибок.
936 Начало использования @code{go.mod} подсистемы.
941 @subsection Релиз 3.4
943 @item @command{nncp-daemon} может быть запущен как @command{inetd}-служба.
947 @subsection Релиз 3.3
951 @command{nncp-daemon}, @command{nncp-call}, @command{nncp-caller}
952 проверяют существование @file{.seen} файла и расценивают его как то, что
953 файл уже был скачан. Возможно передача данных была осуществлена
954 сторонним способом и удалённая сторона должна быть оповещена об этом.
957 Если более высокоприоритетный пакет попадает в спул, то
958 @command{nncp-daemon} добавит его в очередь отправки первым, прерывая
959 низкоприоритетные передачи.
962 К средствам связанным с online-соединениями (@command{nncp-daemon},
963 @command{nncp-call}, @command{nncp-caller}) добавлен простой
964 ограничитель скорости.
967 Возможность задания приоритета символьными обозначениями:
968 @verb{|NORMAL|}, @verb{|BULK+10|}, @verb{|PRIORITY-5|}, итд.
971 Изменены значения приоритетов по-умолчанию:
972 для @command{nncp-exec} с 64 на 96,
973 для @command{nncp-freq} с 64 на 160,
974 для @command{nncp-file} с 196 на 224.
979 @subsection Релиз 3.2
982 @strong{Несовместимое} изменение формата @emph{bundle} архивов и
983 работоспособность @command{nncp-bundle} команды с Go 1.10+. Bundle
984 должен быть корректным tar архивом, но Go 1.9 делал его недействительным
985 из-за длинных путей внутри. NNCP нечаянно был зависим от этой баги.
986 Явное добавление @file{NNCP/} директории в архив восстанавливает
987 работоспособность с корректными tar архивами.
991 @subsection Релиз 3.1
994 Возможность отключать пересылку через промежуточные ноды используя
995 @verb{|-via -|} опцию командной строки.
999 @subsection Релиз 3.0
1003 @strong{Несовместимое} изменение формата простых пакетов. Работа со
1004 старыми версиями не поддерживается.
1007 Добавлена возможность удалённого исполнения команд, путём
1008 конфигурирования @option{exec} опции конфигурационного файла и
1009 использования команды @command{nncp-exec}:
1012 Команда @command{nncp-mail} заменена более гибкой и широкой
1013 @command{nncp-exec}. Вместо вызова @verb{|nncp-mail NODE RECIPIENT|}
1014 нужно использовать @verb{|nncp-exec NODE sendmail RECIPIENT|}.
1016 @option{sendmail} опция конфигурационного файла заменена на более гибкую
1017 @option{exec}. @code{sendmail: [@dots{}]} нужно заменить на
1018 @code{exec: sendmail: [@dots{}]}.
1022 Возможность переопределить @option{via} опцию конфигурации для целевого
1023 узла через @option{-via} опцию командной строки для следующих команд:
1024 @command{nncp-file}, @command{nncp-freq}, @command{nncp-exec}.
1027 Chunked файлы, меньшего размера чем указанный chunk, отправляются просто
1028 в виде одного файла.
1031 Exec команды вызываются с дополнительными переменными окружения
1032 @env{$NNCP_NICE} и @env{$NNCP_SELF}.
1035 Отправляемые файлы в ответ на запрос имеют приоритет указанный в запросе.
1036 Указать их желаемый приоритет во время вызова @command{nncp-freq} можно
1037 аргументом @option{-replynice}.
1040 Команде @command{nncp-toss} можно сказать не обрабатывать определённые
1041 типы пакетов, за счёт опций @option{-nofile}, @option{-nofreq},
1042 @option{-noexec}, @option{-notrns}.
1045 По-умолчанию @command{nncp-file} команда для
1046 @option{-minsize}/@option{-chunked} опций использует
1047 @option{FreqMinSize}/@option{FreqChunked} из конфигурационного файла.
1048 Это можно отключить указав нулевое значение.
1053 @subsection Релиз 2.0
1057 @strong{Несовместимое} изменение формата зашифрованных и eblob пакетов.
1058 Работа со старыми версиями не поддерживается.
1061 Алгоритм шифрования Twofish заменён на ChaCha20. Он намного быстрее.
1062 Одним криптографическим примитивом меньше.
1065 HKDF-BLAKE2b-256 KDF алгоритм заменён на BLAKE2Xb XOF. Ещё одним
1066 криптографическим примитивом меньше (предполагая, что BLAKE2X
1067 практически идентичен BLAKE2).
1072 @subsection Релиз 1.0
1076 @strong{Несовместимое} изменение формата зашифрованных пакетов. Работа
1077 со старыми версиями не поддерживается.
1080 @command{nncp-bundle} команда может создавать потоки зашифрованных
1081 пакетов или потреблять их. Это полезно когда речь идёт о
1082 @code{stdin}/@code{stdout} методах передачи (например запись на CD-ROM
1083 без создания промежуточного подготовленного ISO образа или работа с
1084 ленточными накопителями).
1087 @command{nncp-toss} команда может создавать @file{.seen} файлы,
1088 предотвращая приём дублированных пакетов.
1091 В команде @command{nncp-call} разрешается иметь только одного
1092 обработчика контрольной суммы в фоне. Это полезно когда тысячи маленьких
1093 входящих пакетов могут создать много горутин.
1096 Возможность переопределить путь до spool директории и файла журнала
1097 через аргумент командной строки или переменную окружения.
1100 @command{nncp-rm} команда может удалять все исходящие/входящие,
1101 @file{.seen}, @file{.part}, @file{.lock} и временные файлы.
1106 @subsection Релиз 0.12
1108 @item Команда sendmail вызывается с @env{$NNCP_SENDER} переменной окружения.
1112 @subsection Релиз 0.11
1114 @item Вывод команды @command{nncp-stat} отсортирован по имени ноды.
1118 @subsection Релиз 0.10
1121 @file{DST} аргумент @command{nncp-freq} команды теперь опционален.
1122 По-умолчанию будет подставлен последний элемент @file{SRC} пути.
1126 @subsection Релиз 0.9
1129 Исправлена обработка @option{-rx}/@option{-tx} опций @command{nncp-call}
1130 команды. Они игнорировались.
1134 @subsection Релиз 0.8
1137 Небольшое исправление ошибки в команде @command{nncp-file}, где опция
1138 @option{-minsize} для передачи без разбиения на части была в байтах, а
1143 @subsection Релиз 0.7
1147 Возможность предоставлять данные для @command{nncp-file} через
1148 стандартный ввод, используя временный зашифрованный файл для этого.
1151 Появилась возможность передачи файлов разбитых на части, с сопутствующей
1152 @command{nncp-reass} командой и @option{freqchunked} опцией
1153 конфигурационного файла. Полезно для передачи больших файлов через
1154 маленькие устройства хранения.
1157 @option{freqminsize} опция конфигурационного файла, аналогичная
1161 Опция @option{-force} команды @command{nncp-xfer} переименована в
1162 @option{-mkdir} для ясности.
1165 Опция @option{-minsize} задаётся в KiB, а не байтах, для удобства.
1168 Команда @command{nncp-newcfg} переименована в @command{nncp-cfgnew},
1169 а @command{nncp-mincfg} в @command{nncp-cfgmin}, для того чтобы они
1170 имели общий префикс и были сгруппированы для удобства.
1173 Появилась команда @command{nncp-cfgenc}, позволяющая
1174 шифровать/дешифровать конфигурационный файл, чтобы безопасно его хранить
1175 без использования OpenPGP или других подобных инструментов.
1178 Обновлены зависимые криптографические библиотеки.
1183 @subsection Релиз 0.6
1185 @item Появилась небольшая команда @command{nncp-rm}.
1186 @item Обновлены зависимые криптографические библиотеки.
1190 @subsection Релиз 0.5
1193 Тривиальное небольшое исправление в значениях приоритетов по-умолчанию в
1194 @command{nncp-file} и @command{nncp-freq} командах.
1198 @subsection Релиз 0.4
1202 Небольшое исправление в @command{nncp-call}, @command{nncp-caller},
1203 @command{nncp-daemon}: иногда они могли падать с segmentation fault
1204 ошибкой (данные не терялись).
1207 @command{nncp-newnode} переименована в @command{nncp-newcfg} --
1208 это короче и удобнее для использования.
1211 Появилась команда @command{nncp-mincfg}: вспомогательная утилита
1212 позволяющая создать минималистичный урезанный конфигурационный файл без
1213 приватных ключей, что полезно во время использования @command{nncp-xfer}.
1218 @subsection Релиз 0.3
1220 @item Исправлена совместимость с Go 1.6.
1224 @subsection Релиз 0.2
1228 @strong{Несовместимое} изменение формата пакета (магическое число тоже
1229 изменено): поле размера пакета шифруется и не посылается в открытом виде.
1232 @option{-minsize} опция даёт возможность автоматически дополнять
1233 исходящие пакеты до указанного минимального размера.
1236 @command{nncp-daemon} и @command{nncp-call}/@command{nncp-caller} всегда
1237 в фоне проверяют появление исходящих @emph{tx} пакетов пока подключены.
1238 Удалённая сторона сразу же оповещается об этом.
1241 @option{-onlinedeadline} опция даёт возможность выставления timeout-а на
1242 неактивность в online соединении, когда оно должно быть отключено. Она
1243 может быть использована для сохранения соединения на долгое время.
1246 @option{-maxonlinetime} опция даёт возможность указания максимального
1247 возможного времени жизни соединения.
1250 Появилась @command{nncp-caller} команда: клиент TCP-демона работающий по
1254 @command{nncp-pkt} команда может разжимать данные.