5 @subsection Релиз 7.6.0
9 Журналирование может производиться в назначенный открытый файловый
10 дескриптор (@env{$NNCPLOG=FD:5} например).
11 Что дружелюбно к использованию под @command{daemontools}.
14 Добавлены дополнительные проверки наличия публичных ключей в
15 конфигурационном файле, предотвращающие падения некоторых команд.
20 @subsection Релиз 7.5.1
24 NNCP собирается на NetBSD.
29 @subsection Релиз 7.5.0
33 @command{nncp-daemon} соблюдает UCSPI-TCP интерфейс, благодаря чему в
34 журнале будет присутствовать адрес удалённой системы (при запуске под
35 совместимой утилитой). Желательно применять @option{-ucspi} опцию вместо
39 @command{nncp-call} может быть UCSPI-TCP клиентом, используя
40 @option{-ucspi} опцию.
43 Не выходить если не получается слушать на каком-либо MCD сетевом
44 интерфейсе -- только предупреждать об ошибке.
49 @subsection Релиз 7.4.0
53 Исправлена работоспособность MCD при одновременном использовании
54 @command{nncp-daemon} и @command{nncp-caller}.
59 @subsection Релиз 7.3.2
63 @command{hjson-cli} утилита теперь собирается в vendor-режиме.
68 @subsection Релиз 7.3.1
72 Исправлена проблема с возможно остающимся открытым файловым
73 дескриптором в online командах.
76 Существенно снижено потребление памяти MTH хэширования.
81 @subsection Релиз 7.3.0
85 Поправлены проблемы работоспособности на 32-бит системах с большими файлами.
88 Возможность использовать конфигурацию в виде директории с набором
89 файлов. Появилась команда @command{nncp-cfgdir}.
94 @subsection Релиз 7.2.1
98 Небольшие оптимизации в online командах.
103 @subsection Релиз 7.2.0
107 Появилась @command{nncp-trns} команда для ручного создания транзитных пакетов.
110 Если у целевой ноды транзитного пакета задан @option{via} маршрут, то
111 использовать его, а не игнорировать.
114 Не отправлять multicast пакет оригинатору сообщения, очевидно точно
115 видящего свой собственный пакет.
118 Намного меньшее потребление памяти во время MTH хэширования когда
119 смещение равно нулю: когда пакет не является докачиванием, а например
120 проверяется @command{nncp-check} командой.
125 @subsection Релиз 7.1.1
129 Исправлено падение при fsync директорий после создания @file{.seen} файлов.
134 @subsection Релиз 7.1.0
138 Появилась возможность мультивещательной (multicast) рассылки пакетов.
139 Реализовано всего лишь дополнительным типом простых пакетов и изменением
140 @command{nncp-toss}, @command{nncp-file} и @command{nncp-exec} команд.
143 Исправлена работоспособность @command{nncp-file} и @command{nncp-exec}
144 команд использующих временный файл (stdin и @option{-use-tmp}).
147 Исправлен пропадающий плохой код возврата в @command{nncp-exec} команде.
150 Исправлено некорректное генерирование @file{.hdr} при использовании
154 У @command{nncp-rm} команды появилась @option{-all} опция, применяемая
158 У @command{nncp-check} команды появилась @option{-cycle} опция, вводящая
159 проверку в бесконечный цикл.
162 У @command{nncp-rm} команды можно указывать alias-ы имён нод.
165 @command{nncp-pkt} может парсить @file{.hdr} файлы.
170 @subsection Релиз 7.0.0
174 Минимальная требуемая версия Go 1.13.
177 Хэширование с BLAKE3 на базе деревьев Меркле (Merkle Tree Hashing, MTH)
178 используется вместо BLAKE2b. Из-за этого, обратно @strong{несовместимое}
179 изменение формата шифрованных файлов (всего что находится в spool
180 области) и формата @file{.meta} файла при chunked передаче.
182 Текущая реализация далека от оптимальной: в ней нет распараллеливания
183 вычислений и имеет повышенное потребление памяти: около 512 KiB на
184 каждый 1 GiB данных файла. Будущая оптимизация производительности и
185 потребления памяти не должна привести к изменению формата пакетов. Но
186 это всё равно в несколько раз быстрее BLAKE2b.
189 Из-за использования MTH, докачиваемые в online режиме файлы потребуют
190 чтения с диска только предшествующей части, а не полностью всего файла,
194 Добавлена @command{nncp-hash} утилита для вычисления MTH хэша файла.
197 В шифрованных пакетах BLAKE2 KDF и XOF функции заменены на BLAKE3. Ещё
198 уменьшая количество примитивов. А также заголовок шифрованного файла
199 теперь является ассоциированными данными при шифровании.
202 MultiCast Discovery использует
203 @verb{|ff02::4e4e:4350|} адрес вместо @verb{|ff02::1|}.
206 @command{nncp-cfgenc} ошибочно трижды спрашивал парольную фразу при шифровании.
209 @command{nncp-stat} выводит сводку о частично скачанных пакетах.
212 Обновлены зависимые библиотеки.
217 @subsection Релиз 6.6.0
221 @command{nncp-daemon}, @command{nncp-call} и @command{nncp-caller}
222 ожидают завершения всех процессов фоновой проверки контрольных сумм,
223 после того как соединение закрыто.
226 Добавлена возможность определения адреса через multicast оповещение в
227 локальной сети, так называемый MCD (MultiCast Discovery).
232 @subsection Релиз 6.5.0
236 Исправлено падение в @command{nncp-daemon} когда SP рукопожатие не было успешно.
239 Исправлено возможное игнорирование плохого кода возврата автоматического tosser.
242 Исправлена гонка при закрытии файловых дескрипторов во время завершения
243 работы online протокола, которая могла привести к ошибке записи
244 принятого фрагмента пакета.
247 Убирать показ прогресса передачи пакетов когда вызов уже завершён в
248 @command{nncp-daemon}, @command{nncp-call} и @command{nncp-caller}.
253 @subsection Релиз 6.4.0
257 Исправлена возможная гонка в online протоколе, приводящая к падению
263 @subsection Релиз 6.3.0
267 Исправлено возможное падение программы во время показа прогресса online
273 @subsection Релиз 6.2.1
277 В трёх местах сообщений журналов по ошибке остались лишние @code{%s}.
282 @subsection Релиз 6.2.0
286 Возвращена работоспособность @option{-autotoss*} опций @command{nncp-caller}.
289 Очередной рефакторинг и упрощение системы журналирования.
290 Не должно быть видимых изменений для конечного пользователя.
295 @subsection Релиз 6.1.0
299 Оптимизация: большинство команд теперь не держат открытыми файловые
300 дескрипторы. Прежде вы легко могли выйти за пределы максимально
301 допустимого количества открытых файлов, если у вас было много пакетов в
305 Оптимизация: не закрывать файловый дескриптор файла который мы качаем.
306 Прежде каждый его кусочек приводил к дорогим open/close вызовам.
309 Скачиваемые в режиме online файлы теперь сохраняются с @file{.nock}
310 суффиксом (non-checksummed), ожидая пока либо @command{nncp-check}, либо
311 online демоны не выполнят проверку целостности.
314 Оптимизация: для файлов, скачивание которых не было продолжено, сразу же
315 вычисляет контрольная сумма, пропуская промежуточный @file{.nock} шаг.
318 Возможность хранения заголовков зашифрованных пакетов в @file{.hdr}
319 файлах, рядом с самими пакетами. Это может существенно повысить скорость
320 получения списка пакетов на файловых системах с большим размером блока.
325 @subsection Релиз 6.0.0
329 Журнал использует человеко-читаемый и легко обрабатываемый машиной
330 @url{https://www.gnu.org/software/recutils/, recfile} формат для своих
331 записей, вместо структурированных строчек RFC 3339. Старый формат
332 журналов не поддерживается @command{nncp-log}.
335 Работоспособность @option{-autotoss*} опции с @option{-inetd} режимом
336 @command{nncp-daemon}.
339 @option{when-tx-exists} опция вызова в конфигурационном файле позволяет
340 делать вызов только если имеются исходящие сообщения. Совмещённая с cron
341 выражением содержащим секунды, это можно использовать как возможность
342 вызова только при появлении исходящих пакетов.
345 @command{nncp-cronexpr} команда позволяет проверить корректность и
346 ожидаемый результат от указанного cron выражения.
351 @subsection Релиз 5.6.0
355 @option{-autotoss*} опции запускают tosser не после завершения вызова, а
356 во время него ежесекундно.
359 В @option{calls} секции конфигурации появились опции
360 @option{autotoss}, @option{autotoss-doseen},
361 @option{autotoss-nofile}, @option{autotoss-nofreq},
362 @option{autotoss-noexec}, @option{autotoss-notrns}.
363 Вы можете настраивать опции автоматического tosser для каждого вызова.
366 Использовать vendoring вместо переопределения @env{$GOPATH} во время
367 установки tarball, так как текущая минимальная версия Go это 1.12,
368 поддерживающая модули.
373 @subsection Релиз 5.5.1
377 Уважать @env{$BINDIR}, @env{$INFODIR} и @env{$DOCDIR} переменные окружения
378 в @file{config} во время установки.
383 @subsection Релиз 5.5.0
387 Исправления ошибок в @command{nncp-call(er)}/@command{nncp-daemon},
388 @command{nncp-bundle}, @command{nncp-stat} командах.
391 У команды @command{nncp-rm} появились @option{-dryrun} и @option{-older} опции.
394 У команды @command{nncp-exec} появились @option{-use-tmp} и
395 @option{-nocompress} опции. Несжатые пакеты не совместимы с предыдущими
399 У команд @command{nncp-call}, @command{nncp-caller} и @command{nncp-daemon}
400 появились @option{-autotoss*} опции для запуска tosser после завершения звонка.
403 Обновлены зависимые библиотеки. Минимальная требуемая версия Go 1.12.
408 @subsection Релиз 5.4.1
412 Исправлена ошибка с учётом @code{SENDMAIL} переменной при сборке.
417 @subsection Релиз 5.4.0
421 Обновлены зависимые библиотеки.
424 Система сборки переведена с Makefile-ов на @url{http://cr.yp.to/redo.html, redo}.
425 Это не должно повлиять на мейнтейнеров пакетов, так как минимальная
426 реализация @command{redo} включена в tarball.
431 @subsection Релиз 5.3.3
435 Больше различных проверок в коде на ошибки.
438 Обновлены зависимые библиотеки.
443 @subsection Релиз 5.3.2
447 Исправлена некорректная логика @option{onlinedeadline} timeout-а, при
448 котором соединение могло не учитывать факты прихода пакетов и обрывать
454 @subsection Релиз 5.3.1
458 Исправлена работоспособность @option{onlinedeadline} с адресами вызова
459 использующими внешние команды (@verb{#"|somecmd"#}).
462 @command{nncp-stat} имеет опцию @option{-pkt} показывающую информацию по
463 каждому пакету в spool.
468 @subsection Релиз 5.3.0
472 Сообщения прогресса содержат префикс, поясняющий выполняемое действие.
475 Исправлено не происходящее дополнение (padding) handshake сообщений.
478 Завершать все порождаемые в SP протоколе горутины, меньше утечек памяти.
481 SP протокол порождает меньше вызовов записей (соответственно, и TCP
485 Проверять @option{onlinedeadline} и @option{maxonlinetime} ежесекундно,
486 независимо от чтения из сокета (раз в 10 секунд в худшем случае).
489 Раз в минуту, если нет более никакого другого трафика, посылаются PING
490 пакеты в SP-соединении. Это позволит быстрее понимать что соединение
491 более не работоспособно.
494 @command{nncp-toss} использует lock-file для предотвращения
495 одновременной обработки зашифрованных пакетов.
500 @subsection Релиз 5.2.1
504 Исправлена обработка ошибки SP протокола, иногда вызывающая панику программы.
509 @subsection Релиз 5.2.0
513 Большинство команд по умолчанию показывают однострочный прогресс
514 выполнения операции. Появились @option{-progress}, @option{-noprogress}
515 опции командной строки, @option{noprogress} опция конфигурационного
519 Исправлен некорректный код возврата @command{nncp-check} команды,
520 который возвращал ошибку когда всё хорошо.
523 Проверка свободного места для пакетов, во время выполнения
524 @command{nncp-bundle -rx}.
529 @subsection Релиз 5.1.2
533 Исправлена @strong{критичная} уязвимость: аутентификация online нод
534 могла приводить к некорректной идентификации удалённой стороны, позволяя
535 скачивать чужие зашифрованные пакеты.
538 Исправлена ошибка: в новосозданных конфигурационных файлах, приватный
539 публичный ключ Noise были поменяны местами, что приводило к
540 невозможности online аутентификации нод.
543 Явная синхронизация (fsync) директорий для гарантированного
544 переименования файлов.
549 @subsection Релиз 5.1.1
553 Исправлена работоспособность @command{nncp-file} с @option{-chunked 0} опцией.
558 @subsection Релиз 5.1.0
562 @command{nncp-file} может отправлять директории, автоматически на лету
566 Во время создания исходящих сообщений проверяется наличие свободного
567 места на файловой системе.
570 @option{freq}, @option{freqminsize}, @option{freqchunked} опции
571 конфигурационного файла заменены на структуру
572 @option{freq: @{path: @dots{}, minsize: @dots{}, chunked: @dots{}@}}.
575 Добавлена @option{freq.maxsize} опция конфигурационного файл,
576 запрещающая ответ на файловый запрос больше заданного размера.
579 Возможность оповещения об успешно выполненных командах (exec) через
580 @option{notify.exec} опцию конфигурационного файла.
585 @subsection Релиз 5.0.0
589 @strong{Несовместимое} изменение формата конфигурационного файла:
590 YAML заменён на Hjson, из-за его гораздо большей простоты, без
591 заметной потери функционала и удобства.
594 @strong{Несовместимое} изменение формата простых пакетов. Работа со
595 старыми версиями не поддерживается. @code{zlib} сжатие заменено на
596 @code{Zstandard}, так как оно значительно быстрее и эффективнее, не
597 смотря на то, что версия библиотеки ещё не проверена временем.
600 Возможность соединяться с удалёнными нодами не только по TCP, но и через
601 pipe вызов сторонней команды.
604 @command{nncp-cfgnew} генерирует конфигурационный файл с множеством
605 комментариев. Можно использовать @option{-nocomments} опцию для старого
609 Дубликаты имён файлов имеют суффикс @file{.CTR}, вместо @file{CTR},
610 чтобы избежать возможных коллизий с @file{.nncp.chunkCTR}.
613 Возможность переопределить umask процесса через опцию конфигурационного
617 По умолчанию файлы и директории создаются с 666/777 правами доступа,
618 позволяя управлять ими @command{umask}-ом.
621 Обновлены зависимости.
624 Полное использование go модулей для управления зависимостями
625 (используется @code{go.cypherpunks.ru/nncp/v5} namespace).
628 Отмена автоматического использования более новых версий GNU GPL
629 (лицензия проекта GNU GPLv3-только).
634 @subsection Релиз 4.1
636 @item Восстановлена работоспособность на GNU/Linux системах и Go версии 1.10.
640 @subsection Релиз 4.0
644 @strong{Несовместимое} изменение формата зашифрованных и eblob пакетов:
645 используется AEAD режим шифрования с 128 КиБ блоками, так как раньше
646 @command{nncp-toss} не проверял MAC зашифрованного пакета прежде чем
647 отсылать дешифрованные данные внешней команде. Старые версии не
651 Проверка доступного места перед копированием во время работы
652 @command{nncp-xfer}, @command{nncp-daemon}, @command{nncp-call(er)}.
655 @command{nncp-call} имеет возможность только показывать список пакетов
656 на удалённой машине, без их передачи.
659 @command{nncp-call} имеет возможность передавать только чётко указанные пакеты.
662 Восстановлена работоспособность @option{xxrate} настройки в
663 @option{calls} секции конфигурационного файла.
666 Зависимые библиотеки обновлены.
669 Небольшие исправления ошибок.
672 Начало использования @code{go.mod} подсистемы.
677 @subsection Релиз 3.4
679 @item @command{nncp-daemon} может быть запущен как @command{inetd}-служба.
683 @subsection Релиз 3.3
687 @command{nncp-daemon}, @command{nncp-call}, @command{nncp-caller}
688 проверяют существование @file{.seen} файла и расценивают его как то, что
689 файл уже был скачан. Возможно передача данных была осуществлена
690 сторонним способом и удалённая сторона должна быть оповещена об этом.
693 Если более высокоприоритетный пакет попадает в спул, то
694 @command{nncp-daemon} добавит его в очередь отправки первым, прерывая
695 низкоприоритетные передачи.
698 К средствам связанным с online-соединениями (@command{nncp-daemon},
699 @command{nncp-call}, @command{nncp-caller}) добавлен простой
700 ограничитель скорости.
703 Возможность задания приоритета символьными обозначениями:
704 @verb{|NORMAL|}, @verb{|BULK+10|}, @verb{|PRIORITY-5|}, итд.
707 Изменены значения приоритетов по-умолчанию:
708 для @command{nncp-exec} с 64 на 96,
709 для @command{nncp-freq} с 64 на 160,
710 для @command{nncp-file} с 196 на 224.
715 @subsection Релиз 3.2
718 @strong{Несовместимое} изменение формата @emph{bundle} архивов и
719 работоспособность @command{nncp-bundle} команды с Go 1.10+. Bundle
720 должен быть корректным tar архивом, но Go 1.9 делал его недействительным
721 из-за длинных путей внутри. NNCP нечаянно был зависим от этой баги.
722 Явное добавление @file{NNCP/} директории в архив восстанавливает
723 работоспособность с корректными tar архивами.
727 @subsection Релиз 3.1
730 Возможность отключать пересылку через промежуточные ноды используя
731 @verb{|-via -|} опцию командной строки.
735 @subsection Релиз 3.0
739 @strong{Несовместимое} изменение формата простых пакетов. Работа со
740 старыми версиями не поддерживается.
743 Добавлена возможность удалённого исполнения команд, путём
744 конфигурирования @option{exec} опции конфигурационного файла и
745 использования команды @command{nncp-exec}:
748 Команда @command{nncp-mail} заменена более гибкой и широкой
749 @command{nncp-exec}. Вместо вызова @verb{|nncp-mail NODE RECIPIENT|}
750 нужно использовать @verb{|nncp-exec NODE sendmail RECIPIENT|}.
752 @option{sendmail} опция конфигурационного файла заменена на более гибкую
753 @option{exec}. @verb{|sendmail: [...]|} нужно заменить на @verb{|exec:
758 Возможность переопределить @option{via} опцию конфигурации для целевого
759 узла через @option{-via} опцию командной строки для следующих команд:
760 @command{nncp-file}, @command{nncp-freq}, @command{nncp-exec}.
763 Chunked файлы, меньшего размера чем указанный chunk, отправляются просто
767 Exec команды вызываются с дополнительными переменными окружения
768 @env{$NNCP_NICE} и @env{$NNCP_SELF}.
771 Отправляемые файлы в ответ на запрос имеют приоритет указанный в запросе.
772 Указать их желаемый приоритет во время вызова @command{nncp-freq} можно
773 аргументом @option{-replynice}.
776 Команде @command{nncp-toss} можно сказать не обрабатывать определённые
777 типы пакетов, за счёт опций @option{-nofile}, @option{-nofreq},
778 @option{-noexec}, @option{-notrns}.
781 По-умолчанию @command{nncp-file} команда для
782 @option{-minsize}/@option{-chunked} опций использует
783 @option{FreqMinSize}/@option{FreqChunked} из конфигурационного файла.
784 Это можно отключить указав нулевое значение.
789 @subsection Релиз 2.0
793 @strong{Несовместимое} изменение формата зашифрованных и eblob пакетов.
794 Работа со старыми версиями не поддерживается.
797 Алгоритм шифрования Twofish заменён на ChaCha20. Он намного быстрее.
798 Одним криптографическим примитивом меньше.
801 HKDF-BLAKE2b-256 KDF алгоритм заменён на BLAKE2Xb XOF. Ещё одним
802 криптографическим примитивом меньше (предполагая, что BLAKE2X
803 практически идентичен BLAKE2).
808 @subsection Релиз 1.0
812 @strong{Несовместимое} изменение формата зашифрованных пакетов. Работа
813 со старыми версиями не поддерживается.
816 @command{nncp-bundle} команда может создавать потоки зашифрованных
817 пакетов или потреблять их. Это полезно когда речь идёт о
818 @code{stdin}/@code{stdout} методах передачи (например запись на CD-ROM
819 без создания промежуточного подготовленного ISO образа или работа с
820 ленточными накопителями).
823 @command{nncp-toss} команда может создавать @file{.seen} файлы,
824 предотвращая приём дублированных пакетов.
827 В команде @command{nncp-call} разрешается иметь только одного
828 обработчика контрольной суммы в фоне. Это полезно когда тысячи маленьких
829 входящих пакетов могут создать много горутин.
832 Возможность переопределить путь до spool директории и файла журнала
833 через аргумент командной строки или переменную окружения.
836 @command{nncp-rm} команда может удалять все исходящие/входящие,
837 @file{.seen}, @file{.part}, @file{.lock} и временные файлы.
842 @subsection Релиз 0.12
844 @item Команда sendmail вызывается с @env{$NNCP_SENDER} переменной окружения.
848 @subsection Релиз 0.11
850 @item Вывод команды @command{nncp-stat} отсортирован по имени ноды.
854 @subsection Релиз 0.10
857 @file{DST} аргумент @command{nncp-freq} команды теперь опционален.
858 По-умолчанию будет подставлен последний элемент @file{SRC} пути.
862 @subsection Релиз 0.9
865 Исправлена обработка @option{-rx}/@option{-tx} опций @command{nncp-call}
866 команды. Они игнорировались.
870 @subsection Релиз 0.8
873 Небольшое исправление ошибки в команде @command{nncp-file}, где опция
874 @option{-minsize} для передачи без разбиения на части была в байтах, а
879 @subsection Релиз 0.7
883 Возможность предоставлять данные для @command{nncp-file} через
884 стандартный ввод, используя временный зашифрованный файл для этого.
887 Появилась возможность передачи файлов разбитых на части, с сопутствующей
888 @command{nncp-reass} командой и @option{freqchunked} опцией
889 конфигурационного файла. Полезно для передачи больших файлов через
890 маленькие устройства хранения.
893 @option{freqminsize} опция конфигурационного файла, аналогичная
897 Опция @option{-force} команды @command{nncp-xfer} переименована в
898 @option{-mkdir} для ясности.
901 Опция @option{-minsize} задаётся в KiB, а не байтах, для удобства.
904 Команда @command{nncp-newcfg} переименована в @command{nncp-cfgnew},
905 а @command{nncp-mincfg} в @command{nncp-cfgmin}, для того чтобы они
906 имели общий префикс и были сгруппированы для удобства.
909 Появилась команда @command{nncp-cfgenc}, позволяющая
910 шифровать/дешифровать конфигурационный файл, чтобы безопасно его хранить
911 без использования OpenPGP или других подобных инструментов.
914 Обновлены зависимые криптографические библиотеки.
919 @subsection Релиз 0.6
921 @item Появилась небольшая команда @command{nncp-rm}.
922 @item Обновлены зависимые криптографические библиотеки.
926 @subsection Релиз 0.5
929 Тривиальное небольшое исправление в значениях приоритетов по-умолчанию в
930 @command{nncp-file} и @command{nncp-freq} командах.
934 @subsection Релиз 0.4
938 Небольшое исправление в @command{nncp-call}, @command{nncp-caller},
939 @command{nncp-daemon}: иногда они могли падать с segmentation fault
940 ошибкой (данные не терялись).
943 @command{nncp-newnode} переименована в @command{nncp-newcfg} --
944 это короче и удобнее для использования.
947 Появилась команда @command{nncp-mincfg}: вспомогательная утилита
948 позволяющая создать минималистичный урезанный конфигурационный файл без
949 приватных ключей, что полезно во время использования @command{nncp-xfer}.
954 @subsection Релиз 0.3
956 @item Исправлена совместимость с Go 1.6.
960 @subsection Релиз 0.2
964 @strong{Несовместимое} изменение формата пакета (магическое число тоже
965 изменено): поле размера пакета шифруется и не посылается в открытом виде.
968 @option{-minsize} опция даёт возможность автоматически дополнять
969 исходящие пакеты до указанного минимального размера.
972 @command{nncp-daemon} и @command{nncp-call}/@command{nncp-caller} всегда
973 в фоне проверяют появление исходящих @emph{tx} пакетов пока подключены.
974 Удалённая сторона сразу же оповещается об этом.
977 @option{-onlinedeadline} опция даёт возможность выставления timeout-а на
978 неактивность в online соединении, когда оно должно быть отключено. Она
979 может быть использована для сохранения соединения на долгое время.
982 @option{-maxonlinetime} опция даёт возможность указания максимального
983 возможного времени жизни соединения.
986 Появилась @command{nncp-caller} команда: клиент TCP-демона работающий по
990 @command{nncp-pkt} команда может разжимать данные.