5 @subsection Релиз 8.8.2
9 Обновлена библиотека для работы с Yggdrasil, а также несколько других.
14 @subsection Релиз 8.8.1
18 Исправлено падение @command{nncp-daemon} при неопознанном подключении и
19 включённом @option{-autotoss}.
22 Обновлены зависимые библиотеки.
27 @subsection Релиз 8.8.0
31 Исправлена невозможность сборки под Go 1.19.
34 Минимальная требуемая версия Go 1.17.
37 Обновлены зависимые библиотеки.
42 @subsection Релиз 8.7.2
46 Более интуитивное, понятное и немного более гибкое поведение @command{nncp-rm}.
49 @command{nncp-rm} также удаляет соответствующий @file{hdr/} файл для
50 каждого удалённого пакета.
55 @subsection Релиз 8.7.1
59 @command{nncp-xfer} теперь корректно проверяет наличие @file{seen/}
60 файлов для входящих пакетов.
65 @subsection Релиз 8.7.0
69 @command{nncp-ack} не подтверждает ACK-пакеты, предотвращая бесконечную
73 В прошлом, @command{nncp-ack} не удаляла соответствующие @file{hdr/} файлы.
76 @command{nncp-rm} теперь берёт список пакетов из @code{stdin}, при
77 использовании @option{-pkt} опции.
80 @command{nncp-ack} теперь генерирует список ACK пакетов, которые были
81 созданы, что может использоваться в качестве ввода для @command{nncp-rm}
82 команды, чтобы удалить исходящие ACK пакеты.
87 @subsection Релиз 8.6.0
91 @command{nncp-xfer} проверяет сходится ли контрольная сумма
92 скопированного локально пакета и исходного.
95 @command{nncp-call} имеет плохой код возврата если в очередях на приём и
96 отправку остаются незаконченные задания.
99 Появилась @command{nncp-ack} команда, которая отправляет явное
100 подтверждение доставки пакета (ACK пакет). Это подтверждение удаляет
101 упомянутый пакет из исходящего spool-а.
104 Появилась возможность отключения @code{fsync} операции
105 @env{$NNCPNOSYNC=1} переменной окружения.
108 Добавлены разнообразные индексы в документации, что должно помочь при
114 @subsection Релиз 8.5.0
118 Исправлена работоспособность @command{nncp-bundle}.
121 По ошибке @option{-mcd-wait} опция у @command{nncp-call} была включена
125 Возможность переопределять внутренний timeout по умолчанию для протокола
126 синхронизации через @env{$NNCPDEADLINE} переменную окружения. Может быть
127 полезно для каналов с очень большими задержками.
130 NNCP собирается на OpenBSD.
135 @subsection Релиз 8.4.0
139 Имена интерфейсов относящихся к multicast (@code{mcd-listen} и
140 @code{mcd-send} опции конфигурации) теперь являются регулярными
141 выражениями. По умолчанию @command{nncp-cfgnew} не комментирует
142 их теперь и прописывает @code{.*} имя интерфейса.
145 У @command{nncp-call} команды появился @option{-mcd-wait} аргумент,
146 позволяющий дожидаться multicast сообщения об адресе ноды.
149 @command{nncp-file} команда пропускает всё что не является регулярным
150 файлом или директорией во время создания pax-архива.
155 @subsection Релиз 8.3.0
159 Исправлена возможность сборки на 32-бит системах.
164 @subsection Релиз 8.2.0
168 Yggdrasil использует IPv6+TCP сетевой стэк написанный полностью на Go,
169 вместо голого μTP транспортного протокола, делая возможным работу в
170 качестве обычного TCP сервера внутри overlay сети.
173 Конфигурационные строки Yggdrasil вида @code{prv;bind1,bind2;pub@dots{}}
174 заменены на URL-подобные (@code{yggdrasils://PRV?bind=BIND1&bind=BIND2&pub=PUB}).
177 Возможно передавать параметры Yggdrasil конфигурации связанные с multicast.
180 @command{nncp-daemon} может слушать одновременно и на TCP и на
181 Yggdrasil-управляемом сокетах.
184 Слушание на endpoint сокете для пиринга в @command{nncp-daemon}
185 опционально -- вы можете быть доступны и через связь с peer-ами.
190 @subsection Релиз 8.1.0
194 @command{nncp-cfgdir} команда не требует обязательного наличия
195 @code{self} секции конфигурационного файла.
198 Появилась возможность работы в качестве клиента overlay сети Yggdrasil,
199 используя online протокол поверх неё.
204 @subsection Релиз 8.0.2
208 Исправлена возможность отправки мультивещательных пакетов.
213 @subsection Релиз 8.0.1
217 Исправлено некорректное вычисление @code{freq.chunked} значения, при
218 отсутствии которого всё равно форсированно включалась chunked передача.
221 Исправлено некорректное вычисление значения полного размера файла в
227 @subsection Релиз 8.0.0
231 @strong{Несовместимое} изменение формата зашифрованных пакетов: размеры
232 полезной нагрузки и дополнения посылаются прямо внутри зашифрованного
233 потока. Это даёт возможность потоково создавать шифрованные пакеты, без
234 знания размеров заранее, без создания временного файла или буферизации в
238 Производится корректная проверка дополнения зашифрованного пакета. Это
239 не критичная проблема, но прежде ни размер, ни значение дополнения не
240 были аутентифицированы, позволяя циклично откусывать по байту с конца и
241 узнавать размер полезной нагрузки, наблюдая за реакцией по обработке
242 такого зашифрованного пакета.
245 @command{nncp-exec} больше не имеет @option{-use-tmp} опции, из-за
246 совместимого с потоковой работой формата зашифрованных пакетов.
249 У @command{nncp-file} и @command{nncp-exec} команд появилась опция
250 @option{-maxsize}, ограничивающая максимальный результирующий размер
251 зашифрованного пакета (возвращая ошибку если он превышен). Может быть
252 полезно, так как размер полезной нагрузки может быть неизвестен заранее.
257 @subsection Релиз 7.7.0
261 Экспериментальная поддержка @code{kqueue} и @code{inotify} оповещений об
262 изменениях в spool директориях, для сокращения накладных расходов на их
266 @file{.seen} и @file{.hdr} файлы находятся в @file{seen/} и @file{hdr/}
267 поддиректориях теперь, дабы ускорить сканирование spool областей.
268 Необходима миграция текущих файлов:
271 $ find $NNCPSPOOL -type f -name "*.hdr" -exec rm @{@} +
273 $ find $NNCPSPOOL -type d -name rx | while read rx ; do
276 find . -type f -name "*.seen" | while read fn ; do
277 mv $fn seen/$@{fn%.seen@}
281 $ find $NNCPSPOOL -type d -name area | while read area ; do
282 find $area -type f -name "*.seen" | while read fn ; do
291 @subsection Релиз 7.6.0
295 Журналирование может производиться в назначенный открытый файловый
296 дескриптор (@env{$NNCPLOG=FD:5} например).
297 Что дружелюбно к использованию под @command{daemontools}.
300 Добавлены дополнительные проверки наличия публичных ключей в
301 конфигурационном файле, предотвращающие падения некоторых команд.
306 @subsection Релиз 7.5.1
310 NNCP собирается на NetBSD.
315 @subsection Релиз 7.5.0
319 @command{nncp-daemon} соблюдает UCSPI-TCP интерфейс, благодаря чему в
320 журнале будет присутствовать адрес удалённой системы (при запуске под
321 совместимой утилитой). Желательно применять @option{-ucspi} опцию вместо
325 @command{nncp-call} может быть UCSPI-TCP клиентом, используя
326 @option{-ucspi} опцию.
329 Не выходить если не получается слушать на каком-либо MCD сетевом
330 интерфейсе -- только предупреждать об ошибке.
335 @subsection Релиз 7.4.0
339 Исправлена работоспособность MCD при одновременном использовании
340 @command{nncp-daemon} и @command{nncp-caller}.
345 @subsection Релиз 7.3.2
349 @command{hjson-cli} утилита теперь собирается в vendor-режиме.
354 @subsection Релиз 7.3.1
358 Исправлена проблема с возможно остающимся открытым файловым
359 дескриптором в online командах.
362 Существенно снижено потребление памяти MTH хэширования.
367 @subsection Релиз 7.3.0
371 Поправлены проблемы работоспособности на 32-бит системах с большими файлами.
374 Возможность использовать конфигурацию в виде директории с набором
375 файлов. Появилась команда @command{nncp-cfgdir}.
380 @subsection Релиз 7.2.1
384 Небольшие оптимизации в online командах.
389 @subsection Релиз 7.2.0
393 Появилась @command{nncp-trns} команда для ручного создания транзитных пакетов.
396 Если у целевой ноды транзитного пакета задан @option{via} маршрут, то
397 использовать его, а не игнорировать.
400 Не отправлять multicast пакет оригинатору сообщения, очевидно точно
401 видящего свой собственный пакет.
404 Намного меньшее потребление памяти во время MTH хэширования когда
405 смещение равно нулю: когда пакет не является докачиванием, а например
406 проверяется @command{nncp-check} командой.
411 @subsection Релиз 7.1.1
415 Исправлено падение при @code{fsync} директорий после создания @file{.seen} файлов.
420 @subsection Релиз 7.1.0
424 Появилась возможность мультивещательной (multicast) рассылки пакетов.
425 Реализовано всего лишь дополнительным типом простых пакетов и изменением
426 @command{nncp-toss}, @command{nncp-file} и @command{nncp-exec} команд.
429 Исправлена работоспособность @command{nncp-file} и @command{nncp-exec}
430 команд использующих временный файл (@code{stdin} и @option{-use-tmp}).
433 Исправлен пропадающий плохой код возврата в @command{nncp-exec} команде.
436 Исправлено некорректное генерирование @file{.hdr} при использовании
440 У @command{nncp-rm} команды появилась @option{-all} опция, применяемая
444 У @command{nncp-check} команды появилась @option{-cycle} опция, вводящая
445 проверку в бесконечный цикл.
448 У @command{nncp-rm} команды можно указывать alias-ы имён нод.
451 @command{nncp-pkt} может парсить @file{.hdr} файлы.
456 @subsection Релиз 7.0.0
460 Минимальная требуемая версия Go 1.13.
463 Хэширование с BLAKE3 на базе деревьев Меркле (Merkle Tree Hashing, MTH)
464 используется вместо BLAKE2b. Из-за этого, обратно @strong{несовместимое}
465 изменение формата шифрованных файлов (всего что находится в spool
466 области) и формата @file{.meta} файла при chunked передаче.
468 Текущая реализация далека от оптимальной: в ней нет распараллеливания
469 вычислений и имеет повышенное потребление памяти: около 512 KiB на
470 каждый 1 GiB данных файла. Будущая оптимизация производительности и
471 потребления памяти не должна привести к изменению формата пакетов. Но
472 это всё равно в несколько раз быстрее BLAKE2b.
475 Из-за использования MTH, докачиваемые в online режиме файлы потребуют
476 чтения с диска только предшествующей части, а не полностью всего файла,
480 Добавлена @command{nncp-hash} утилита для вычисления MTH хэша файла.
483 В шифрованных пакетах BLAKE2 KDF и XOF функции заменены на BLAKE3. Ещё
484 уменьшая количество примитивов. А также заголовок шифрованного файла
485 теперь является ассоциированными данными при шифровании.
488 MultiCast Discovery использует
489 @verb{|ff02::4e4e:4350|} адрес вместо @verb{|ff02::1|}.
492 @command{nncp-cfgenc} ошибочно трижды спрашивал парольную фразу при шифровании.
495 @command{nncp-stat} выводит сводку о частично скачанных пакетах.
498 Обновлены зависимые библиотеки.
503 @subsection Релиз 6.6.0
507 @command{nncp-daemon}, @command{nncp-call} и @command{nncp-caller}
508 ожидают завершения всех процессов фоновой проверки контрольных сумм,
509 после того как соединение закрыто.
512 Добавлена возможность определения адреса через multicast оповещение в
513 локальной сети, так называемый MCD (MultiCast Discovery).
518 @subsection Релиз 6.5.0
522 Исправлено падение в @command{nncp-daemon} когда SP рукопожатие не было успешно.
525 Исправлено возможное игнорирование плохого кода возврата автоматического tosser.
528 Исправлена гонка при закрытии файловых дескрипторов во время завершения
529 работы online протокола, которая могла привести к ошибке записи
530 принятого фрагмента пакета.
533 Убирать показ прогресса передачи пакетов когда вызов уже завершён в
534 @command{nncp-daemon}, @command{nncp-call} и @command{nncp-caller}.
539 @subsection Релиз 6.4.0
543 Исправлена возможная гонка в online протоколе, приводящая к падению
549 @subsection Релиз 6.3.0
553 Исправлено возможное падение программы во время показа прогресса online
559 @subsection Релиз 6.2.1
563 В трёх местах сообщений журналов по ошибке остались лишние @code{%s}.
568 @subsection Релиз 6.2.0
572 Возвращена работоспособность @option{-autotoss*} опций @command{nncp-caller}.
575 Очередной рефакторинг и упрощение системы журналирования.
576 Не должно быть видимых изменений для конечного пользователя.
581 @subsection Релиз 6.1.0
585 Оптимизация: большинство команд теперь не держат открытыми файловые
586 дескрипторы. Прежде вы легко могли выйти за пределы максимально
587 допустимого количества открытых файлов, если у вас было много пакетов в
591 Оптимизация: не закрывать файловый дескриптор файла который мы качаем.
592 Прежде каждый его кусочек приводил к дорогим open/close вызовам.
595 Скачиваемые в режиме online файлы теперь сохраняются с @file{.nock}
596 суффиксом (non-checksummed), ожидая пока либо @command{nncp-check}, либо
597 online демоны не выполнят проверку целостности.
600 Оптимизация: для файлов, скачивание которых не было продолжено, сразу же
601 вычисляет контрольная сумма, пропуская промежуточный @file{.nock} шаг.
604 Возможность хранения заголовков зашифрованных пакетов в @file{.hdr}
605 файлах, рядом с самими пакетами. Это может существенно повысить скорость
606 получения списка пакетов на файловых системах с большим размером блока.
611 @subsection Релиз 6.0.0
615 Журнал использует человеко-читаемый и легко обрабатываемый машиной
616 @url{https://www.gnu.org/software/recutils/, recfile} формат для своих
617 записей, вместо структурированных строчек RFC 3339. Старый формат
618 журналов не поддерживается @command{nncp-log}.
621 Работоспособность @option{-autotoss*} опции с @option{-inetd} режимом
622 @command{nncp-daemon}.
625 @option{when-tx-exists} опция вызова в конфигурационном файле позволяет
626 делать вызов только если имеются исходящие сообщения. Совмещённая с cron
627 выражением содержащим секунды, это можно использовать как возможность
628 вызова только при появлении исходящих пакетов.
631 @command{nncp-cronexpr} команда позволяет проверить корректность и
632 ожидаемый результат от указанного cron выражения.
637 @subsection Релиз 5.6.0
641 @option{-autotoss*} опции запускают tosser не после завершения вызова, а
642 во время него ежесекундно.
645 В @option{calls} секции конфигурации появились опции
646 @option{autotoss}, @option{autotoss-doseen},
647 @option{autotoss-nofile}, @option{autotoss-nofreq},
648 @option{autotoss-noexec}, @option{autotoss-notrns}.
649 Вы можете настраивать опции автоматического tosser для каждого вызова.
652 Использовать vendoring вместо переопределения @env{$GOPATH} во время
653 установки tarball, так как текущая минимальная версия Go это 1.12,
654 поддерживающая модули.
659 @subsection Релиз 5.5.1
663 Уважать @env{$BINDIR}, @env{$INFODIR} и @env{$DOCDIR} переменные окружения
664 в @file{config} во время установки.
669 @subsection Релиз 5.5.0
673 Исправления ошибок в @command{nncp-call(er)}/@command{nncp-daemon},
674 @command{nncp-bundle}, @command{nncp-stat} командах.
677 У команды @command{nncp-rm} появились @option{-dryrun} и @option{-older} опции.
680 У команды @command{nncp-exec} появились @option{-use-tmp} и
681 @option{-nocompress} опции. Несжатые пакеты не совместимы с предыдущими
685 У команд @command{nncp-call}, @command{nncp-caller} и @command{nncp-daemon}
686 появились @option{-autotoss*} опции для запуска tosser после завершения звонка.
689 Обновлены зависимые библиотеки. Минимальная требуемая версия Go 1.12.
694 @subsection Релиз 5.4.1
698 Исправлена ошибка с учётом @code{SENDMAIL} переменной при сборке.
703 @subsection Релиз 5.4.0
707 Обновлены зависимые библиотеки.
710 Система сборки переведена с Makefile-ов на @url{http://cr.yp.to/redo.html, redo}.
711 Это не должно повлиять на мейнтейнеров пакетов, так как минимальная
712 реализация @command{redo} включена в tarball.
717 @subsection Релиз 5.3.3
721 Больше различных проверок в коде на ошибки.
724 Обновлены зависимые библиотеки.
729 @subsection Релиз 5.3.2
733 Исправлена некорректная логика @option{onlinedeadline} timeout-а, при
734 котором соединение могло не учитывать факты прихода пакетов и обрывать
740 @subsection Релиз 5.3.1
744 Исправлена работоспособность @option{onlinedeadline} с адресами вызова
745 использующими внешние команды (@verb{#"|somecmd"#}).
748 @command{nncp-stat} имеет опцию @option{-pkt} показывающую информацию по
749 каждому пакету в spool.
754 @subsection Релиз 5.3.0
758 Сообщения прогресса содержат префикс, поясняющий выполняемое действие.
761 Исправлено не происходящее дополнение (padding) handshake сообщений.
764 Завершать все порождаемые в SP протоколе горутины, меньше утечек памяти.
767 SP протокол порождает меньше вызовов записей (соответственно, и TCP
771 Проверять @option{onlinedeadline} и @option{maxonlinetime} ежесекундно,
772 независимо от чтения из сокета (раз в 10 секунд в худшем случае).
775 Раз в минуту, если нет более никакого другого трафика, посылаются PING
776 пакеты в SP-соединении. Это позволит быстрее понимать что соединение
777 более не работоспособно.
780 @command{nncp-toss} использует lock-file для предотвращения
781 одновременной обработки зашифрованных пакетов.
786 @subsection Релиз 5.2.1
790 Исправлена обработка ошибки SP протокола, иногда вызывающая панику программы.
795 @subsection Релиз 5.2.0
799 Большинство команд по умолчанию показывают однострочный прогресс
800 выполнения операции. Появились @option{-progress}, @option{-noprogress}
801 опции командной строки, @option{noprogress} опция конфигурационного
805 Исправлен некорректный код возврата @command{nncp-check} команды,
806 который возвращал ошибку когда всё хорошо.
809 Проверка свободного места для пакетов, во время выполнения
810 @command{nncp-bundle -rx}.
815 @subsection Релиз 5.1.2
819 Исправлена @strong{критичная} уязвимость: аутентификация online нод
820 могла приводить к некорректной идентификации удалённой стороны, позволяя
821 скачивать чужие зашифрованные пакеты.
824 Исправлена ошибка: в новосозданных конфигурационных файлах, приватный
825 публичный ключ Noise были поменяны местами, что приводило к
826 невозможности online аутентификации нод.
829 Явная синхронизация (@code{fsync}) директорий для гарантированного
830 переименования файлов.
835 @subsection Релиз 5.1.1
839 Исправлена работоспособность @command{nncp-file} с @option{-chunked 0} опцией.
844 @subsection Релиз 5.1.0
848 @command{nncp-file} может отправлять директории, автоматически на лету
852 Во время создания исходящих сообщений проверяется наличие свободного
853 места на файловой системе.
856 @option{freq}, @option{freqminsize}, @option{freqchunked} опции
857 конфигурационного файла заменены на структуру
858 @option{freq: @{path: @dots{}, minsize: @dots{}, chunked: @dots{}@}}.
861 Добавлена @option{freq.maxsize} опция конфигурационного файл,
862 запрещающая ответ на файловый запрос больше заданного размера.
865 Возможность оповещения об успешно выполненных командах (exec) через
866 @option{notify.exec} опцию конфигурационного файла.
871 @subsection Релиз 5.0.0
875 @strong{Несовместимое} изменение формата конфигурационного файла:
876 YAML заменён на Hjson, из-за его гораздо большей простоты, без
877 заметной потери функционала и удобства.
880 @strong{Несовместимое} изменение формата простых пакетов. Работа со
881 старыми версиями не поддерживается. @code{zlib} сжатие заменено на
882 @code{Zstandard}, так как оно значительно быстрее и эффективнее, не
883 смотря на то, что версия библиотеки ещё не проверена временем.
886 Возможность соединяться с удалёнными нодами не только по TCP, но и через
887 pipe вызов сторонней команды.
890 @command{nncp-cfgnew} генерирует конфигурационный файл с множеством
891 комментариев. Можно использовать @option{-nocomments} опцию для старого
895 Дубликаты имён файлов имеют суффикс @file{.CTR}, вместо @file{CTR},
896 чтобы избежать возможных коллизий с @file{.nncp.chunkCTR}.
899 Возможность переопределить umask процесса через опцию конфигурационного
903 По умолчанию файлы и директории создаются с 666/777 правами доступа,
904 позволяя управлять ими @command{umask}-ом.
907 Обновлены зависимости.
910 Полное использование go модулей для управления зависимостями
911 (используется @code{go.cypherpunks.ru/nncp/v5} namespace).
914 Отмена автоматического использования более новых версий GNU GPL
915 (лицензия проекта GNU GPLv3-только).
920 @subsection Релиз 4.1
922 @item Восстановлена работоспособность на GNU/Linux системах и Go версии 1.10.
926 @subsection Релиз 4.0
930 @strong{Несовместимое} изменение формата зашифрованных и eblob пакетов:
931 используется AEAD режим шифрования с 128 КиБ блоками, так как раньше
932 @command{nncp-toss} не проверял MAC зашифрованного пакета прежде чем
933 отсылать дешифрованные данные внешней команде. Старые версии не
937 Проверка доступного места перед копированием во время работы
938 @command{nncp-xfer}, @command{nncp-daemon}, @command{nncp-call(er)}.
941 @command{nncp-call} имеет возможность только показывать список пакетов
942 на удалённой машине, без их передачи.
945 @command{nncp-call} имеет возможность передавать только чётко указанные пакеты.
948 Восстановлена работоспособность @option{xxrate} настройки в
949 @option{calls} секции конфигурационного файла.
952 Зависимые библиотеки обновлены.
955 Небольшие исправления ошибок.
958 Начало использования @code{go.mod} подсистемы.
963 @subsection Релиз 3.4
965 @item @command{nncp-daemon} может быть запущен как @command{inetd}-служба.
969 @subsection Релиз 3.3
973 @command{nncp-daemon}, @command{nncp-call}, @command{nncp-caller}
974 проверяют существование @file{.seen} файла и расценивают его как то, что
975 файл уже был скачан. Возможно передача данных была осуществлена
976 сторонним способом и удалённая сторона должна быть оповещена об этом.
979 Если более высокоприоритетный пакет попадает в спул, то
980 @command{nncp-daemon} добавит его в очередь отправки первым, прерывая
981 низкоприоритетные передачи.
984 К средствам связанным с online-соединениями (@command{nncp-daemon},
985 @command{nncp-call}, @command{nncp-caller}) добавлен простой
986 ограничитель скорости.
989 Возможность задания приоритета символьными обозначениями:
990 @verb{|NORMAL|}, @verb{|BULK+10|}, @verb{|PRIORITY-5|}, итд.
993 Изменены значения приоритетов по-умолчанию:
994 для @command{nncp-exec} с 64 на 96,
995 для @command{nncp-freq} с 64 на 160,
996 для @command{nncp-file} с 196 на 224.
1001 @subsection Релиз 3.2
1004 @strong{Несовместимое} изменение формата @emph{bundle} архивов и
1005 работоспособность @command{nncp-bundle} команды с Go 1.10+. Bundle
1006 должен быть корректным tar архивом, но Go 1.9 делал его недействительным
1007 из-за длинных путей внутри. NNCP нечаянно был зависим от этой баги.
1008 Явное добавление @file{NNCP/} директории в архив восстанавливает
1009 работоспособность с корректными tar архивами.
1013 @subsection Релиз 3.1
1016 Возможность отключать пересылку через промежуточные ноды используя
1017 @verb{|-via -|} опцию командной строки.
1021 @subsection Релиз 3.0
1025 @strong{Несовместимое} изменение формата простых пакетов. Работа со
1026 старыми версиями не поддерживается.
1029 Добавлена возможность удалённого исполнения команд, путём
1030 конфигурирования @option{exec} опции конфигурационного файла и
1031 использования команды @command{nncp-exec}:
1034 Команда @command{nncp-mail} заменена более гибкой и широкой
1035 @command{nncp-exec}. Вместо вызова @verb{|nncp-mail NODE RECIPIENT|}
1036 нужно использовать @verb{|nncp-exec NODE sendmail RECIPIENT|}.
1038 @option{sendmail} опция конфигурационного файла заменена на более гибкую
1039 @option{exec}. @code{sendmail: [@dots{}]} нужно заменить на
1040 @code{exec: sendmail: [@dots{}]}.
1044 Возможность переопределить @option{via} опцию конфигурации для целевого
1045 узла через @option{-via} опцию командной строки для следующих команд:
1046 @command{nncp-file}, @command{nncp-freq}, @command{nncp-exec}.
1049 Chunked файлы, меньшего размера чем указанный chunk, отправляются просто
1050 в виде одного файла.
1053 Exec команды вызываются с дополнительными переменными окружения
1054 @env{$NNCP_NICE} и @env{$NNCP_SELF}.
1057 Отправляемые файлы в ответ на запрос имеют приоритет указанный в запросе.
1058 Указать их желаемый приоритет во время вызова @command{nncp-freq} можно
1059 аргументом @option{-replynice}.
1062 Команде @command{nncp-toss} можно сказать не обрабатывать определённые
1063 типы пакетов, за счёт опций @option{-nofile}, @option{-nofreq},
1064 @option{-noexec}, @option{-notrns}.
1067 По-умолчанию @command{nncp-file} команда для
1068 @option{-minsize}/@option{-chunked} опций использует
1069 @option{FreqMinSize}/@option{FreqChunked} из конфигурационного файла.
1070 Это можно отключить указав нулевое значение.
1075 @subsection Релиз 2.0
1079 @strong{Несовместимое} изменение формата зашифрованных и eblob пакетов.
1080 Работа со старыми версиями не поддерживается.
1083 Алгоритм шифрования Twofish заменён на ChaCha20. Он намного быстрее.
1084 Одним криптографическим примитивом меньше.
1087 HKDF-BLAKE2b-256 KDF алгоритм заменён на BLAKE2Xb XOF. Ещё одним
1088 криптографическим примитивом меньше (предполагая, что BLAKE2X
1089 практически идентичен BLAKE2).
1094 @subsection Релиз 1.0
1098 @strong{Несовместимое} изменение формата зашифрованных пакетов. Работа
1099 со старыми версиями не поддерживается.
1102 @command{nncp-bundle} команда может создавать потоки зашифрованных
1103 пакетов или потреблять их. Это полезно когда речь идёт о
1104 @code{stdin}/@code{stdout} методах передачи (например запись на CD-ROM
1105 без создания промежуточного подготовленного ISO образа или работа с
1106 ленточными накопителями).
1109 @command{nncp-toss} команда может создавать @file{.seen} файлы,
1110 предотвращая приём дублированных пакетов.
1113 В команде @command{nncp-call} разрешается иметь только одного
1114 обработчика контрольной суммы в фоне. Это полезно когда тысячи маленьких
1115 входящих пакетов могут создать много горутин.
1118 Возможность переопределить путь до spool директории и файла журнала
1119 через аргумент командной строки или переменную окружения.
1122 @command{nncp-rm} команда может удалять все исходящие/входящие,
1123 @file{.seen}, @file{.part}, @file{.lock} и временные файлы.
1128 @subsection Релиз 0.12
1130 @item Команда sendmail вызывается с @env{$NNCP_SENDER} переменной окружения.
1134 @subsection Релиз 0.11
1136 @item Вывод команды @command{nncp-stat} отсортирован по имени ноды.
1140 @subsection Релиз 0.10
1143 @file{DST} аргумент @command{nncp-freq} команды теперь опционален.
1144 По-умолчанию будет подставлен последний элемент @file{SRC} пути.
1148 @subsection Релиз 0.9
1151 Исправлена обработка @option{-rx}/@option{-tx} опций @command{nncp-call}
1152 команды. Они игнорировались.
1156 @subsection Релиз 0.8
1159 Небольшое исправление ошибки в команде @command{nncp-file}, где опция
1160 @option{-minsize} для передачи без разбиения на части была в байтах, а
1165 @subsection Релиз 0.7
1169 Возможность предоставлять данные для @command{nncp-file} через
1170 стандартный ввод, используя временный зашифрованный файл для этого.
1173 Появилась возможность передачи файлов разбитых на части, с сопутствующей
1174 @command{nncp-reass} командой и @option{freqchunked} опцией
1175 конфигурационного файла. Полезно для передачи больших файлов через
1176 маленькие устройства хранения.
1179 @option{freqminsize} опция конфигурационного файла, аналогичная
1183 Опция @option{-force} команды @command{nncp-xfer} переименована в
1184 @option{-mkdir} для ясности.
1187 Опция @option{-minsize} задаётся в KiB, а не байтах, для удобства.
1190 Команда @command{nncp-newcfg} переименована в @command{nncp-cfgnew},
1191 а @command{nncp-mincfg} в @command{nncp-cfgmin}, для того чтобы они
1192 имели общий префикс и были сгруппированы для удобства.
1195 Появилась команда @command{nncp-cfgenc}, позволяющая
1196 шифровать/дешифровать конфигурационный файл, чтобы безопасно его хранить
1197 без использования OpenPGP или других подобных инструментов.
1200 Обновлены зависимые криптографические библиотеки.
1205 @subsection Релиз 0.6
1207 @item Появилась небольшая команда @command{nncp-rm}.
1208 @item Обновлены зависимые криптографические библиотеки.
1212 @subsection Релиз 0.5
1215 Тривиальное небольшое исправление в значениях приоритетов по-умолчанию в
1216 @command{nncp-file} и @command{nncp-freq} командах.
1220 @subsection Релиз 0.4
1224 Небольшое исправление в @command{nncp-call}, @command{nncp-caller},
1225 @command{nncp-daemon}: иногда они могли падать с segmentation fault
1226 ошибкой (данные не терялись).
1229 @command{nncp-newnode} переименована в @command{nncp-newcfg} --
1230 это короче и удобнее для использования.
1233 Появилась команда @command{nncp-mincfg}: вспомогательная утилита
1234 позволяющая создать минималистичный урезанный конфигурационный файл без
1235 приватных ключей, что полезно во время использования @command{nncp-xfer}.
1240 @subsection Релиз 0.3
1242 @item Исправлена совместимость с Go 1.6.
1246 @subsection Релиз 0.2
1250 @strong{Несовместимое} изменение формата пакета (магическое число тоже
1251 изменено): поле размера пакета шифруется и не посылается в открытом виде.
1254 @option{-minsize} опция даёт возможность автоматически дополнять
1255 исходящие пакеты до указанного минимального размера.
1258 @command{nncp-daemon} и @command{nncp-call}/@command{nncp-caller} всегда
1259 в фоне проверяют появление исходящих @emph{tx} пакетов пока подключены.
1260 Удалённая сторона сразу же оповещается об этом.
1263 @option{-onlinedeadline} опция даёт возможность выставления timeout-а на
1264 неактивность в online соединении, когда оно должно быть отключено. Она
1265 может быть использована для сохранения соединения на долгое время.
1268 @option{-maxonlinetime} опция даёт возможность указания максимального
1269 возможного времени жизни соединения.
1272 Появилась @command{nncp-caller} команда: клиент TCP-демона работающий по
1276 @command{nncp-pkt} команда может разжимать данные.