5 @subsection Релиз 8.7.2
9 Более интуитивное, понятное и немного более гибкое поведение @command{nncp-rm}.
12 @command{nncp-rm} также удаляет соответствующий @file{hdr/} файл для
13 каждого удалённого пакета.
18 @subsection Релиз 8.7.1
22 @command{nncp-xfer} теперь корректно проверяет наличие @file{seen/}
23 файлов для входящих пакетов.
28 @subsection Релиз 8.7.0
32 @command{nncp-ack} не подтверждает ACK-пакеты, предотвращая бесконечную
36 В прошлом, @command{nncp-ack} не удаляла соответствующие @file{hdr/} файлы.
39 @command{nncp-rm} теперь берёт список пакетов из @code{stdin}, при
40 использовании @option{-pkt} опции.
43 @command{nncp-ack} теперь генерирует список ACK пакетов, которые были
44 созданы, что может использоваться в качестве ввода для @command{nncp-rm}
45 команды, чтобы удалить исходящие ACK пакеты.
50 @subsection Релиз 8.6.0
54 @command{nncp-xfer} проверяет сходится ли контрольная сумма
55 скопированного локально пакета и исходного.
58 @command{nncp-call} имеет плохой код возврата если в очередях на приём и
59 отправку остаются незаконченные задания.
62 Появилась @command{nncp-ack} команда, которая отправляет явное
63 подтверждение доставки пакета (ACK пакет). Это подтверждение удаляет
64 упомянутый пакет из исходящего spool-а.
67 Появилась возможность отключения @code{fsync} операции
68 @env{$NNCPNOSYNC=1} переменной окружения.
71 Добавлены разнообразные индексы в документации, что должно помочь при
77 @subsection Релиз 8.5.0
81 Исправлена работоспособность @command{nncp-bundle}.
84 По ошибке @option{-mcd-wait} опция у @command{nncp-call} была включена
88 Возможность переопределять внутренний timeout по умолчанию для протокола
89 синхронизации через @env{$NNCPDEADLINE} переменную окружения. Может быть
90 полезно для каналов с очень большими задержками.
93 NNCP собирается на OpenBSD.
98 @subsection Релиз 8.4.0
102 Имена интерфейсов относящихся к multicast (@code{mcd-listen} и
103 @code{mcd-send} опции конфигурации) теперь являются регулярными
104 выражениями. По умолчанию @command{nncp-cfgnew} не комментирует
105 их теперь и прописывает @code{.*} имя интерфейса.
108 У @command{nncp-call} команды появился @option{-mcd-wait} аргумент,
109 позволяющий дожидаться multicast сообщения об адресе ноды.
112 @command{nncp-file} команда пропускает всё что не является регулярным
113 файлом или директорией во время создания pax-архива.
118 @subsection Релиз 8.3.0
122 Исправлена возможность сборки на 32-бит системах.
127 @subsection Релиз 8.2.0
131 Yggdrasil использует IPv6+TCP сетевой стэк написанный полностью на Go,
132 вместо голого μTP транспортного протокола, делая возможным работу в
133 качестве обычного TCP сервера внутри overlay сети.
136 Конфигурационные строки Yggdrasil вида @code{prv;bind1,bind2;pub@dots{}}
137 заменены на URL-подобные (@code{yggdrasils://PRV?bind=BIND1&bind=BIND2&pub=PUB}).
140 Возможно передавать параметры Yggdrasil конфигурации связанные с multicast.
143 @command{nncp-daemon} может слушать одновременно и на TCP и на
144 Yggdrasil-управляемом сокетах.
147 Слушание на endpoint сокете для пиринга в @command{nncp-daemon}
148 опционально -- вы можете быть доступны и через связь с peer-ами.
153 @subsection Релиз 8.1.0
157 @command{nncp-cfgdir} команда не требует обязательного наличия
158 @code{self} секции конфигурационного файла.
161 Появилась возможность работы в качестве клиента overlay сети Yggdrasil,
162 используя online протокол поверх неё.
167 @subsection Релиз 8.0.2
171 Исправлена возможность отправки мультивещательных пакетов.
176 @subsection Релиз 8.0.1
180 Исправлено некорректное вычисление @code{freq.chunked} значения, при
181 отсутствии которого всё равно форсированно включалась chunked передача.
184 Исправлено некорректное вычисление значения полного размера файла в
190 @subsection Релиз 8.0.0
194 @strong{Несовместимое} изменение формата зашифрованных пакетов: размеры
195 полезной нагрузки и дополнения посылаются прямо внутри зашифрованного
196 потока. Это даёт возможность потоково создавать шифрованные пакеты, без
197 знания размеров заранее, без создания временного файла или буферизации в
201 Производится корректная проверка дополнения зашифрованного пакета. Это
202 не критичная проблема, но прежде ни размер, ни значение дополнения не
203 были аутентифицированы, позволяя циклично откусывать по байту с конца и
204 узнавать размер полезной нагрузки, наблюдая за реакцией по обработке
205 такого зашифрованного пакета.
208 @command{nncp-exec} больше не имеет @option{-use-tmp} опции, из-за
209 совместимого с потоковой работой формата зашифрованных пакетов.
212 У @command{nncp-file} и @command{nncp-exec} команд появилась опция
213 @option{-maxsize}, ограничивающая максимальный результирующий размер
214 зашифрованного пакета (возвращая ошибку если он превышен). Может быть
215 полезно, так как размер полезной нагрузки может быть неизвестен заранее.
220 @subsection Релиз 7.7.0
224 Экспериментальная поддержка @code{kqueue} и @code{inotify} оповещений об
225 изменениях в spool директориях, для сокращения накладных расходов на их
229 @file{.seen} и @file{.hdr} файлы находятся в @file{seen/} и @file{hdr/}
230 поддиректориях теперь, дабы ускорить сканирование spool областей.
231 Необходима миграция текущих файлов:
234 $ find $NNCPSPOOL -type f -name "*.hdr" -exec rm @{@} +
236 $ find $NNCPSPOOL -type d -name rx | while read rx ; do
239 find . -type f -name "*.seen" | while read fn ; do
240 mv $fn seen/$@{fn%.seen@}
244 $ find $NNCPSPOOL -type d -name area | while read area ; do
245 find $area -type f -name "*.seen" | while read fn ; do
254 @subsection Релиз 7.6.0
258 Журналирование может производиться в назначенный открытый файловый
259 дескриптор (@env{$NNCPLOG=FD:5} например).
260 Что дружелюбно к использованию под @command{daemontools}.
263 Добавлены дополнительные проверки наличия публичных ключей в
264 конфигурационном файле, предотвращающие падения некоторых команд.
269 @subsection Релиз 7.5.1
273 NNCP собирается на NetBSD.
278 @subsection Релиз 7.5.0
282 @command{nncp-daemon} соблюдает UCSPI-TCP интерфейс, благодаря чему в
283 журнале будет присутствовать адрес удалённой системы (при запуске под
284 совместимой утилитой). Желательно применять @option{-ucspi} опцию вместо
288 @command{nncp-call} может быть UCSPI-TCP клиентом, используя
289 @option{-ucspi} опцию.
292 Не выходить если не получается слушать на каком-либо MCD сетевом
293 интерфейсе -- только предупреждать об ошибке.
298 @subsection Релиз 7.4.0
302 Исправлена работоспособность MCD при одновременном использовании
303 @command{nncp-daemon} и @command{nncp-caller}.
308 @subsection Релиз 7.3.2
312 @command{hjson-cli} утилита теперь собирается в vendor-режиме.
317 @subsection Релиз 7.3.1
321 Исправлена проблема с возможно остающимся открытым файловым
322 дескриптором в online командах.
325 Существенно снижено потребление памяти MTH хэширования.
330 @subsection Релиз 7.3.0
334 Поправлены проблемы работоспособности на 32-бит системах с большими файлами.
337 Возможность использовать конфигурацию в виде директории с набором
338 файлов. Появилась команда @command{nncp-cfgdir}.
343 @subsection Релиз 7.2.1
347 Небольшие оптимизации в online командах.
352 @subsection Релиз 7.2.0
356 Появилась @command{nncp-trns} команда для ручного создания транзитных пакетов.
359 Если у целевой ноды транзитного пакета задан @option{via} маршрут, то
360 использовать его, а не игнорировать.
363 Не отправлять multicast пакет оригинатору сообщения, очевидно точно
364 видящего свой собственный пакет.
367 Намного меньшее потребление памяти во время MTH хэширования когда
368 смещение равно нулю: когда пакет не является докачиванием, а например
369 проверяется @command{nncp-check} командой.
374 @subsection Релиз 7.1.1
378 Исправлено падение при @code{fsync} директорий после создания @file{.seen} файлов.
383 @subsection Релиз 7.1.0
387 Появилась возможность мультивещательной (multicast) рассылки пакетов.
388 Реализовано всего лишь дополнительным типом простых пакетов и изменением
389 @command{nncp-toss}, @command{nncp-file} и @command{nncp-exec} команд.
392 Исправлена работоспособность @command{nncp-file} и @command{nncp-exec}
393 команд использующих временный файл (@code{stdin} и @option{-use-tmp}).
396 Исправлен пропадающий плохой код возврата в @command{nncp-exec} команде.
399 Исправлено некорректное генерирование @file{.hdr} при использовании
403 У @command{nncp-rm} команды появилась @option{-all} опция, применяемая
407 У @command{nncp-check} команды появилась @option{-cycle} опция, вводящая
408 проверку в бесконечный цикл.
411 У @command{nncp-rm} команды можно указывать alias-ы имён нод.
414 @command{nncp-pkt} может парсить @file{.hdr} файлы.
419 @subsection Релиз 7.0.0
423 Минимальная требуемая версия Go 1.13.
426 Хэширование с BLAKE3 на базе деревьев Меркле (Merkle Tree Hashing, MTH)
427 используется вместо BLAKE2b. Из-за этого, обратно @strong{несовместимое}
428 изменение формата шифрованных файлов (всего что находится в spool
429 области) и формата @file{.meta} файла при chunked передаче.
431 Текущая реализация далека от оптимальной: в ней нет распараллеливания
432 вычислений и имеет повышенное потребление памяти: около 512 KiB на
433 каждый 1 GiB данных файла. Будущая оптимизация производительности и
434 потребления памяти не должна привести к изменению формата пакетов. Но
435 это всё равно в несколько раз быстрее BLAKE2b.
438 Из-за использования MTH, докачиваемые в online режиме файлы потребуют
439 чтения с диска только предшествующей части, а не полностью всего файла,
443 Добавлена @command{nncp-hash} утилита для вычисления MTH хэша файла.
446 В шифрованных пакетах BLAKE2 KDF и XOF функции заменены на BLAKE3. Ещё
447 уменьшая количество примитивов. А также заголовок шифрованного файла
448 теперь является ассоциированными данными при шифровании.
451 MultiCast Discovery использует
452 @verb{|ff02::4e4e:4350|} адрес вместо @verb{|ff02::1|}.
455 @command{nncp-cfgenc} ошибочно трижды спрашивал парольную фразу при шифровании.
458 @command{nncp-stat} выводит сводку о частично скачанных пакетах.
461 Обновлены зависимые библиотеки.
466 @subsection Релиз 6.6.0
470 @command{nncp-daemon}, @command{nncp-call} и @command{nncp-caller}
471 ожидают завершения всех процессов фоновой проверки контрольных сумм,
472 после того как соединение закрыто.
475 Добавлена возможность определения адреса через multicast оповещение в
476 локальной сети, так называемый MCD (MultiCast Discovery).
481 @subsection Релиз 6.5.0
485 Исправлено падение в @command{nncp-daemon} когда SP рукопожатие не было успешно.
488 Исправлено возможное игнорирование плохого кода возврата автоматического tosser.
491 Исправлена гонка при закрытии файловых дескрипторов во время завершения
492 работы online протокола, которая могла привести к ошибке записи
493 принятого фрагмента пакета.
496 Убирать показ прогресса передачи пакетов когда вызов уже завершён в
497 @command{nncp-daemon}, @command{nncp-call} и @command{nncp-caller}.
502 @subsection Релиз 6.4.0
506 Исправлена возможная гонка в online протоколе, приводящая к падению
512 @subsection Релиз 6.3.0
516 Исправлено возможное падение программы во время показа прогресса online
522 @subsection Релиз 6.2.1
526 В трёх местах сообщений журналов по ошибке остались лишние @code{%s}.
531 @subsection Релиз 6.2.0
535 Возвращена работоспособность @option{-autotoss*} опций @command{nncp-caller}.
538 Очередной рефакторинг и упрощение системы журналирования.
539 Не должно быть видимых изменений для конечного пользователя.
544 @subsection Релиз 6.1.0
548 Оптимизация: большинство команд теперь не держат открытыми файловые
549 дескрипторы. Прежде вы легко могли выйти за пределы максимально
550 допустимого количества открытых файлов, если у вас было много пакетов в
554 Оптимизация: не закрывать файловый дескриптор файла который мы качаем.
555 Прежде каждый его кусочек приводил к дорогим open/close вызовам.
558 Скачиваемые в режиме online файлы теперь сохраняются с @file{.nock}
559 суффиксом (non-checksummed), ожидая пока либо @command{nncp-check}, либо
560 online демоны не выполнят проверку целостности.
563 Оптимизация: для файлов, скачивание которых не было продолжено, сразу же
564 вычисляет контрольная сумма, пропуская промежуточный @file{.nock} шаг.
567 Возможность хранения заголовков зашифрованных пакетов в @file{.hdr}
568 файлах, рядом с самими пакетами. Это может существенно повысить скорость
569 получения списка пакетов на файловых системах с большим размером блока.
574 @subsection Релиз 6.0.0
578 Журнал использует человеко-читаемый и легко обрабатываемый машиной
579 @url{https://www.gnu.org/software/recutils/, recfile} формат для своих
580 записей, вместо структурированных строчек RFC 3339. Старый формат
581 журналов не поддерживается @command{nncp-log}.
584 Работоспособность @option{-autotoss*} опции с @option{-inetd} режимом
585 @command{nncp-daemon}.
588 @option{when-tx-exists} опция вызова в конфигурационном файле позволяет
589 делать вызов только если имеются исходящие сообщения. Совмещённая с cron
590 выражением содержащим секунды, это можно использовать как возможность
591 вызова только при появлении исходящих пакетов.
594 @command{nncp-cronexpr} команда позволяет проверить корректность и
595 ожидаемый результат от указанного cron выражения.
600 @subsection Релиз 5.6.0
604 @option{-autotoss*} опции запускают tosser не после завершения вызова, а
605 во время него ежесекундно.
608 В @option{calls} секции конфигурации появились опции
609 @option{autotoss}, @option{autotoss-doseen},
610 @option{autotoss-nofile}, @option{autotoss-nofreq},
611 @option{autotoss-noexec}, @option{autotoss-notrns}.
612 Вы можете настраивать опции автоматического tosser для каждого вызова.
615 Использовать vendoring вместо переопределения @env{$GOPATH} во время
616 установки tarball, так как текущая минимальная версия Go это 1.12,
617 поддерживающая модули.
622 @subsection Релиз 5.5.1
626 Уважать @env{$BINDIR}, @env{$INFODIR} и @env{$DOCDIR} переменные окружения
627 в @file{config} во время установки.
632 @subsection Релиз 5.5.0
636 Исправления ошибок в @command{nncp-call(er)}/@command{nncp-daemon},
637 @command{nncp-bundle}, @command{nncp-stat} командах.
640 У команды @command{nncp-rm} появились @option{-dryrun} и @option{-older} опции.
643 У команды @command{nncp-exec} появились @option{-use-tmp} и
644 @option{-nocompress} опции. Несжатые пакеты не совместимы с предыдущими
648 У команд @command{nncp-call}, @command{nncp-caller} и @command{nncp-daemon}
649 появились @option{-autotoss*} опции для запуска tosser после завершения звонка.
652 Обновлены зависимые библиотеки. Минимальная требуемая версия Go 1.12.
657 @subsection Релиз 5.4.1
661 Исправлена ошибка с учётом @code{SENDMAIL} переменной при сборке.
666 @subsection Релиз 5.4.0
670 Обновлены зависимые библиотеки.
673 Система сборки переведена с Makefile-ов на @url{http://cr.yp.to/redo.html, redo}.
674 Это не должно повлиять на мейнтейнеров пакетов, так как минимальная
675 реализация @command{redo} включена в tarball.
680 @subsection Релиз 5.3.3
684 Больше различных проверок в коде на ошибки.
687 Обновлены зависимые библиотеки.
692 @subsection Релиз 5.3.2
696 Исправлена некорректная логика @option{onlinedeadline} timeout-а, при
697 котором соединение могло не учитывать факты прихода пакетов и обрывать
703 @subsection Релиз 5.3.1
707 Исправлена работоспособность @option{onlinedeadline} с адресами вызова
708 использующими внешние команды (@verb{#"|somecmd"#}).
711 @command{nncp-stat} имеет опцию @option{-pkt} показывающую информацию по
712 каждому пакету в spool.
717 @subsection Релиз 5.3.0
721 Сообщения прогресса содержат префикс, поясняющий выполняемое действие.
724 Исправлено не происходящее дополнение (padding) handshake сообщений.
727 Завершать все порождаемые в SP протоколе горутины, меньше утечек памяти.
730 SP протокол порождает меньше вызовов записей (соответственно, и TCP
734 Проверять @option{onlinedeadline} и @option{maxonlinetime} ежесекундно,
735 независимо от чтения из сокета (раз в 10 секунд в худшем случае).
738 Раз в минуту, если нет более никакого другого трафика, посылаются PING
739 пакеты в SP-соединении. Это позволит быстрее понимать что соединение
740 более не работоспособно.
743 @command{nncp-toss} использует lock-file для предотвращения
744 одновременной обработки зашифрованных пакетов.
749 @subsection Релиз 5.2.1
753 Исправлена обработка ошибки SP протокола, иногда вызывающая панику программы.
758 @subsection Релиз 5.2.0
762 Большинство команд по умолчанию показывают однострочный прогресс
763 выполнения операции. Появились @option{-progress}, @option{-noprogress}
764 опции командной строки, @option{noprogress} опция конфигурационного
768 Исправлен некорректный код возврата @command{nncp-check} команды,
769 который возвращал ошибку когда всё хорошо.
772 Проверка свободного места для пакетов, во время выполнения
773 @command{nncp-bundle -rx}.
778 @subsection Релиз 5.1.2
782 Исправлена @strong{критичная} уязвимость: аутентификация online нод
783 могла приводить к некорректной идентификации удалённой стороны, позволяя
784 скачивать чужие зашифрованные пакеты.
787 Исправлена ошибка: в новосозданных конфигурационных файлах, приватный
788 публичный ключ Noise были поменяны местами, что приводило к
789 невозможности online аутентификации нод.
792 Явная синхронизация (@code{fsync}) директорий для гарантированного
793 переименования файлов.
798 @subsection Релиз 5.1.1
802 Исправлена работоспособность @command{nncp-file} с @option{-chunked 0} опцией.
807 @subsection Релиз 5.1.0
811 @command{nncp-file} может отправлять директории, автоматически на лету
815 Во время создания исходящих сообщений проверяется наличие свободного
816 места на файловой системе.
819 @option{freq}, @option{freqminsize}, @option{freqchunked} опции
820 конфигурационного файла заменены на структуру
821 @option{freq: @{path: @dots{}, minsize: @dots{}, chunked: @dots{}@}}.
824 Добавлена @option{freq.maxsize} опция конфигурационного файл,
825 запрещающая ответ на файловый запрос больше заданного размера.
828 Возможность оповещения об успешно выполненных командах (exec) через
829 @option{notify.exec} опцию конфигурационного файла.
834 @subsection Релиз 5.0.0
838 @strong{Несовместимое} изменение формата конфигурационного файла:
839 YAML заменён на Hjson, из-за его гораздо большей простоты, без
840 заметной потери функционала и удобства.
843 @strong{Несовместимое} изменение формата простых пакетов. Работа со
844 старыми версиями не поддерживается. @code{zlib} сжатие заменено на
845 @code{Zstandard}, так как оно значительно быстрее и эффективнее, не
846 смотря на то, что версия библиотеки ещё не проверена временем.
849 Возможность соединяться с удалёнными нодами не только по TCP, но и через
850 pipe вызов сторонней команды.
853 @command{nncp-cfgnew} генерирует конфигурационный файл с множеством
854 комментариев. Можно использовать @option{-nocomments} опцию для старого
858 Дубликаты имён файлов имеют суффикс @file{.CTR}, вместо @file{CTR},
859 чтобы избежать возможных коллизий с @file{.nncp.chunkCTR}.
862 Возможность переопределить umask процесса через опцию конфигурационного
866 По умолчанию файлы и директории создаются с 666/777 правами доступа,
867 позволяя управлять ими @command{umask}-ом.
870 Обновлены зависимости.
873 Полное использование go модулей для управления зависимостями
874 (используется @code{go.cypherpunks.ru/nncp/v5} namespace).
877 Отмена автоматического использования более новых версий GNU GPL
878 (лицензия проекта GNU GPLv3-только).
883 @subsection Релиз 4.1
885 @item Восстановлена работоспособность на GNU/Linux системах и Go версии 1.10.
889 @subsection Релиз 4.0
893 @strong{Несовместимое} изменение формата зашифрованных и eblob пакетов:
894 используется AEAD режим шифрования с 128 КиБ блоками, так как раньше
895 @command{nncp-toss} не проверял MAC зашифрованного пакета прежде чем
896 отсылать дешифрованные данные внешней команде. Старые версии не
900 Проверка доступного места перед копированием во время работы
901 @command{nncp-xfer}, @command{nncp-daemon}, @command{nncp-call(er)}.
904 @command{nncp-call} имеет возможность только показывать список пакетов
905 на удалённой машине, без их передачи.
908 @command{nncp-call} имеет возможность передавать только чётко указанные пакеты.
911 Восстановлена работоспособность @option{xxrate} настройки в
912 @option{calls} секции конфигурационного файла.
915 Зависимые библиотеки обновлены.
918 Небольшие исправления ошибок.
921 Начало использования @code{go.mod} подсистемы.
926 @subsection Релиз 3.4
928 @item @command{nncp-daemon} может быть запущен как @command{inetd}-служба.
932 @subsection Релиз 3.3
936 @command{nncp-daemon}, @command{nncp-call}, @command{nncp-caller}
937 проверяют существование @file{.seen} файла и расценивают его как то, что
938 файл уже был скачан. Возможно передача данных была осуществлена
939 сторонним способом и удалённая сторона должна быть оповещена об этом.
942 Если более высокоприоритетный пакет попадает в спул, то
943 @command{nncp-daemon} добавит его в очередь отправки первым, прерывая
944 низкоприоритетные передачи.
947 К средствам связанным с online-соединениями (@command{nncp-daemon},
948 @command{nncp-call}, @command{nncp-caller}) добавлен простой
949 ограничитель скорости.
952 Возможность задания приоритета символьными обозначениями:
953 @verb{|NORMAL|}, @verb{|BULK+10|}, @verb{|PRIORITY-5|}, итд.
956 Изменены значения приоритетов по-умолчанию:
957 для @command{nncp-exec} с 64 на 96,
958 для @command{nncp-freq} с 64 на 160,
959 для @command{nncp-file} с 196 на 224.
964 @subsection Релиз 3.2
967 @strong{Несовместимое} изменение формата @emph{bundle} архивов и
968 работоспособность @command{nncp-bundle} команды с Go 1.10+. Bundle
969 должен быть корректным tar архивом, но Go 1.9 делал его недействительным
970 из-за длинных путей внутри. NNCP нечаянно был зависим от этой баги.
971 Явное добавление @file{NNCP/} директории в архив восстанавливает
972 работоспособность с корректными tar архивами.
976 @subsection Релиз 3.1
979 Возможность отключать пересылку через промежуточные ноды используя
980 @verb{|-via -|} опцию командной строки.
984 @subsection Релиз 3.0
988 @strong{Несовместимое} изменение формата простых пакетов. Работа со
989 старыми версиями не поддерживается.
992 Добавлена возможность удалённого исполнения команд, путём
993 конфигурирования @option{exec} опции конфигурационного файла и
994 использования команды @command{nncp-exec}:
997 Команда @command{nncp-mail} заменена более гибкой и широкой
998 @command{nncp-exec}. Вместо вызова @verb{|nncp-mail NODE RECIPIENT|}
999 нужно использовать @verb{|nncp-exec NODE sendmail RECIPIENT|}.
1001 @option{sendmail} опция конфигурационного файла заменена на более гибкую
1002 @option{exec}. @code{sendmail: [@dots{}]} нужно заменить на
1003 @code{exec: sendmail: [@dots{}]}.
1007 Возможность переопределить @option{via} опцию конфигурации для целевого
1008 узла через @option{-via} опцию командной строки для следующих команд:
1009 @command{nncp-file}, @command{nncp-freq}, @command{nncp-exec}.
1012 Chunked файлы, меньшего размера чем указанный chunk, отправляются просто
1013 в виде одного файла.
1016 Exec команды вызываются с дополнительными переменными окружения
1017 @env{$NNCP_NICE} и @env{$NNCP_SELF}.
1020 Отправляемые файлы в ответ на запрос имеют приоритет указанный в запросе.
1021 Указать их желаемый приоритет во время вызова @command{nncp-freq} можно
1022 аргументом @option{-replynice}.
1025 Команде @command{nncp-toss} можно сказать не обрабатывать определённые
1026 типы пакетов, за счёт опций @option{-nofile}, @option{-nofreq},
1027 @option{-noexec}, @option{-notrns}.
1030 По-умолчанию @command{nncp-file} команда для
1031 @option{-minsize}/@option{-chunked} опций использует
1032 @option{FreqMinSize}/@option{FreqChunked} из конфигурационного файла.
1033 Это можно отключить указав нулевое значение.
1038 @subsection Релиз 2.0
1042 @strong{Несовместимое} изменение формата зашифрованных и eblob пакетов.
1043 Работа со старыми версиями не поддерживается.
1046 Алгоритм шифрования Twofish заменён на ChaCha20. Он намного быстрее.
1047 Одним криптографическим примитивом меньше.
1050 HKDF-BLAKE2b-256 KDF алгоритм заменён на BLAKE2Xb XOF. Ещё одним
1051 криптографическим примитивом меньше (предполагая, что BLAKE2X
1052 практически идентичен BLAKE2).
1057 @subsection Релиз 1.0
1061 @strong{Несовместимое} изменение формата зашифрованных пакетов. Работа
1062 со старыми версиями не поддерживается.
1065 @command{nncp-bundle} команда может создавать потоки зашифрованных
1066 пакетов или потреблять их. Это полезно когда речь идёт о
1067 @code{stdin}/@code{stdout} методах передачи (например запись на CD-ROM
1068 без создания промежуточного подготовленного ISO образа или работа с
1069 ленточными накопителями).
1072 @command{nncp-toss} команда может создавать @file{.seen} файлы,
1073 предотвращая приём дублированных пакетов.
1076 В команде @command{nncp-call} разрешается иметь только одного
1077 обработчика контрольной суммы в фоне. Это полезно когда тысячи маленьких
1078 входящих пакетов могут создать много горутин.
1081 Возможность переопределить путь до spool директории и файла журнала
1082 через аргумент командной строки или переменную окружения.
1085 @command{nncp-rm} команда может удалять все исходящие/входящие,
1086 @file{.seen}, @file{.part}, @file{.lock} и временные файлы.
1091 @subsection Релиз 0.12
1093 @item Команда sendmail вызывается с @env{$NNCP_SENDER} переменной окружения.
1097 @subsection Релиз 0.11
1099 @item Вывод команды @command{nncp-stat} отсортирован по имени ноды.
1103 @subsection Релиз 0.10
1106 @file{DST} аргумент @command{nncp-freq} команды теперь опционален.
1107 По-умолчанию будет подставлен последний элемент @file{SRC} пути.
1111 @subsection Релиз 0.9
1114 Исправлена обработка @option{-rx}/@option{-tx} опций @command{nncp-call}
1115 команды. Они игнорировались.
1119 @subsection Релиз 0.8
1122 Небольшое исправление ошибки в команде @command{nncp-file}, где опция
1123 @option{-minsize} для передачи без разбиения на части была в байтах, а
1128 @subsection Релиз 0.7
1132 Возможность предоставлять данные для @command{nncp-file} через
1133 стандартный ввод, используя временный зашифрованный файл для этого.
1136 Появилась возможность передачи файлов разбитых на части, с сопутствующей
1137 @command{nncp-reass} командой и @option{freqchunked} опцией
1138 конфигурационного файла. Полезно для передачи больших файлов через
1139 маленькие устройства хранения.
1142 @option{freqminsize} опция конфигурационного файла, аналогичная
1146 Опция @option{-force} команды @command{nncp-xfer} переименована в
1147 @option{-mkdir} для ясности.
1150 Опция @option{-minsize} задаётся в KiB, а не байтах, для удобства.
1153 Команда @command{nncp-newcfg} переименована в @command{nncp-cfgnew},
1154 а @command{nncp-mincfg} в @command{nncp-cfgmin}, для того чтобы они
1155 имели общий префикс и были сгруппированы для удобства.
1158 Появилась команда @command{nncp-cfgenc}, позволяющая
1159 шифровать/дешифровать конфигурационный файл, чтобы безопасно его хранить
1160 без использования OpenPGP или других подобных инструментов.
1163 Обновлены зависимые криптографические библиотеки.
1168 @subsection Релиз 0.6
1170 @item Появилась небольшая команда @command{nncp-rm}.
1171 @item Обновлены зависимые криптографические библиотеки.
1175 @subsection Релиз 0.5
1178 Тривиальное небольшое исправление в значениях приоритетов по-умолчанию в
1179 @command{nncp-file} и @command{nncp-freq} командах.
1183 @subsection Релиз 0.4
1187 Небольшое исправление в @command{nncp-call}, @command{nncp-caller},
1188 @command{nncp-daemon}: иногда они могли падать с segmentation fault
1189 ошибкой (данные не терялись).
1192 @command{nncp-newnode} переименована в @command{nncp-newcfg} --
1193 это короче и удобнее для использования.
1196 Появилась команда @command{nncp-mincfg}: вспомогательная утилита
1197 позволяющая создать минималистичный урезанный конфигурационный файл без
1198 приватных ключей, что полезно во время использования @command{nncp-xfer}.
1203 @subsection Релиз 0.3
1205 @item Исправлена совместимость с Go 1.6.
1209 @subsection Релиз 0.2
1213 @strong{Несовместимое} изменение формата пакета (магическое число тоже
1214 изменено): поле размера пакета шифруется и не посылается в открытом виде.
1217 @option{-minsize} опция даёт возможность автоматически дополнять
1218 исходящие пакеты до указанного минимального размера.
1221 @command{nncp-daemon} и @command{nncp-call}/@command{nncp-caller} всегда
1222 в фоне проверяют появление исходящих @emph{tx} пакетов пока подключены.
1223 Удалённая сторона сразу же оповещается об этом.
1226 @option{-onlinedeadline} опция даёт возможность выставления timeout-а на
1227 неактивность в online соединении, когда оно должно быть отключено. Она
1228 может быть использована для сохранения соединения на долгое время.
1231 @option{-maxonlinetime} опция даёт возможность указания максимального
1232 возможного времени жизни соединения.
1235 Появилась @command{nncp-caller} команда: клиент TCP-демона работающий по
1239 @command{nncp-pkt} команда может разжимать данные.