]> Cypherpunks.ru repositories - nncp.git/blob - doc/news.texi
Fixed nncp-daemon fail with --autotoss
[nncp.git] / doc / news.texi
1 @node News
2 @cindex news
3 @unnumbered News
4
5 See also this page @ref{Новости, on russian}.
6
7 @node Release 8_8_1
8 @section Release 8.8.1
9 @itemize
10
11 @item
12 Fixed @command{nncp-daemon} failing with unauthenticated connection and
13 enabled @option{-autotoss}.
14
15 @end itemize
16
17 @node Release 8_8_0
18 @section Release 8.8.0
19 @itemize
20
21 @item
22 Fixed buildability under Go 1.19.
23
24 @item
25 Minimal required Go version is 1.17.
26
27 @item
28 Updated dependencies.
29
30 @end itemize
31
32 @node Release 8_7_2
33 @section Release 8.7.2
34 @itemize
35
36 @item
37 More intuitive, clear and slightly more flexible behaviour of @command{nncp-rm}.
38
39 @item
40 @command{nncp-rm} also removes corresponding @file{hdr/} file for each
41 removed packet.
42
43 @end itemize
44
45 @node Release 8_7_1
46 @section Release 8.7.1
47 @itemize
48
49 @item
50 @command{nncp-xfer} now correctly checks for @file{seen/} files for
51 inbound packets.
52
53 @end itemize
54
55 @node Release 8_7_0
56 @section Release 8.7.0
57 @itemize
58
59 @item
60 @command{nncp-ack} does not acknowledge ACK-packets, preventing an
61 endless loop of ACKs.
62
63 @item
64 @command{nncp-ack} previously did not remove corresponding @file{hdr/} files.
65
66 @item
67 @command{nncp-rm} now takes list of packet from @code{stdin} when
68 @option{-pkt} option is used.
69
70 @item
71 @command{nncp-ack} now generates list of ACK packets it created, that
72 could be used as an input to @command{nncp-rm} to remove outbound ACK
73 packets.
74
75 @end itemize
76
77 @node Release 8_6_0
78 @section Release 8.6.0
79 @itemize
80
81 @item
82 @command{nncp-xfer} checks if locally copied packet's checksum differs
83 from the source's one.
84
85 @item
86 @command{nncp-call} has bad return code if its queues contain unfinished jobs.
87
88 @item
89 @command{nncp-ack} command appeared, that sends explicit packet receipt
90 acknowledgement (ACK packet). That acknowledgement deletes referenced
91 packet from the outbound spool.
92
93 @item
94 Ability to turn @code{fsync} operation off using @env{$NNCPNOSYNC=1}
95 environment variable.
96
97 @item
98 Added various indices in documentation, that should help searching in it.
99
100 @end itemize
101
102 @node Release 8_5_0
103 @section Release 8.5.0
104 @itemize
105
106 @item
107 Fixed @command{nncp-bundle} workability.
108
109 @item
110 Mistakenly @option{-mcd-wait} option was enabled by default in
111 @command{nncp-call}.
112
113 @item
114 Ability to override internal default timeout for online protocol through
115 @env{$NNCPDEADLINE} environment variable. Can be useful for very high
116 delay links.
117
118 @item
119 NNCP builds on OpenBSD.
120
121 @end itemize
122
123 @node Release 8_4_0
124 @section Release 8.4.0
125 @itemize
126
127 @item
128 Multicast related interface names (@code{mcd-listen} and @code{mcd-send}
129 configuration options) are now regular expressions. By default
130 @command{nncp-cfgnew} uncomments them now with @code{.*} interface name.
131
132 @item
133 @command{nncp-call} command has @option{-mcd-wait} option to wait for
134 multicast packet about node's address.
135
136 @item
137 @command{nncp-file} command skips everything that is neither regular
138 file nor directory during pax-archive creation.
139
140 @end itemize
141
142 @node Release 8_3_0
143 @section Release 8.3.0
144 @itemize
145
146 @item
147 Fixed building issues on 32-bit systems.
148
149 @end itemize
150
151 @node Release 8_2_0
152 @section Release 8.2.0
153 @itemize
154
155 @item
156 Yggdrasil uses pure-Go IPv6+TCP network stack, instead of naked μTP
157 transport protocol, making it able to work as an ordinary TCP server
158 inside overlay network.
159
160 @item
161 Yggdrasil's @code{prv;bind1,bind2;pub@dots{}}-like configuration strings are
162 replaced with URL-like ones (@code{yggdrasils://PRV?bind=BIND1&bind=BIND2&pub=PUB}).
163
164 @item
165 Ability to pass multicast-related parameters to Yggdrasil configuration.
166
167 @item
168 @command{nncp-daemon} is able to listen on both TCP and Yggdrasil-driven
169 sockets simultaneously.
170
171 @item
172 @command{nncp-daemon}'s listening on peering endpoint socket is optional
173 -- you can be reached through the peers.
174
175 @end itemize
176
177 @node Release 8_1_0
178 @section Release 8.1.0
179 @itemize
180
181 @item
182 @command{nncp-cfgdir} does not require @code{self} section existence in
183 configuration file.
184
185 @item
186 Ability to act as Yggdrasil network client, using online protocol on top of it.
187
188 @end itemize
189
190 @node Release 8_0_2
191 @section Release 8.0.2
192 @itemize
193
194 @item
195 Fixed sending ability to areas.
196
197 @end itemize
198
199 @node Release 8_0_1
200 @section Release 8.0.1
201 @itemize
202
203 @item
204 Fixed incorrect @code{freq.chunked} value calculation. If it was missed,
205 then chunked transfer mode was forcefully turned on anyway.
206
207 @item
208 Fixed incorrect full file's size calculation in @file{.nncp.meta}.
209
210 @end itemize
211
212 @node Release 8_0_0
213 @section Release 8.0.0
214 @itemize
215
216 @item
217 @strong{Incompatible} encrypted packet format change: payload and pad
218 sizes are sent in-bound in the encrypted stream. That gives ability to
219 streamingly create encrypted packets, without knowing sizes in advance,
220 without creating temporary file or buffer data in memory.
221
222 @item
223 Proper encrypted packet padding verification is done now. This is not
224 critical issue, but previously neither padding value, nor its size were
225 authenticated, giving ability to iteratively strip trailing bytes and
226 determine payload's size by observing the reaction of the encrypted
227 packet processing.
228
229 @item
230 @command{nncp-exec} loses its @option{-use-tmp} option, because of
231 streaming-compatible encrypted packets format.
232
233 @item
234 @command{nncp-file} and @command{nncp-exec} commands have
235 @option{-maxsize} option, limiting maximal resulting encrypted packet's
236 maximal size (returning error if it is exceeded). Could be useful,
237 because no payload size could be known in advance.
238
239 @end itemize
240
241 @node Release 7_7_0
242 @section Release 7.7.0
243 @itemize
244
245 @item
246 Experimental @code{kqueue} and @code{inotify} based notifications
247 support about spool directory changes, for reducing their often reading
248 overhead.
249
250 @item
251 @file{.seen} and @file{.hdr} files moved to @file{seen/} and @file{hdr/}
252 subdirectories, for faster scanning of spool directories.
253 Current files migration required:
254
255 @example
256 $ find $NNCPSPOOL -type f -name "*.hdr" -exec rm @{@} +
257
258 $ find $NNCPSPOOL -type d -name rx | while read rx ; do
259     cd $rx
260     mkdir -p seen
261     find . -type f -name "*.seen" | while read fn ; do
262         mv $fn seen/$@{fn%.seen@}
263     done
264 done
265
266 $ find $NNCPSPOOL -type d -name area | while read area ; do
267     find $area -type f -name "*.seen" | while read fn ; do
268         mv $fn $@{fn%.seen@}
269     done
270 done
271 @end example
272
273 @end itemize
274
275 @node Release 7_6_0
276 @section Release 7.6.0
277 @itemize
278
279 @item
280 Logging may be done to specified opened file descriptor
281 (@env{$NNCPLOG=FD:5} for example).
282 That is friendly to use under @command{daemontools}.
283
284 @item
285 Added additional checks of public keys existence in configuration file,
286 preventing some commands from failing.
287
288 @end itemize
289
290 @node Release 7_5_1
291 @section Release 7.5.1
292 @itemize
293
294 @item
295 NNCP builds on NetBSD.
296
297 @end itemize
298
299 @node Release 7_5_0
300 @section Release 7.5.0
301 @itemize
302
303 @item
304 @command{nncp-daemon} is compatible with UCSPI-TCP interface, so log
305 will contain remote side's address (when running under appropriate
306 utility). @option{-ucspi} option should be used instead of @option{-inetd}.
307
308 @item
309 @command{nncp-call} can be UCSPI-TCP client, using @option{-ucspi} option.
310
311 @item
312 Do not exit if some of MCD network interfaces can not be listened --
313 only warn about that.
314
315 @end itemize
316
317 @node Release 7_4_0
318 @section Release 7.4.0
319 @itemize
320
321 @item
322 Fixed simultaneous @command{nncp-daemon} and @command{nncp-caller} MCD work.
323
324 @end itemize
325
326 @node Release 7_3_2
327 @section Release 7.3.2
328 @itemize
329
330 @item
331 @command{hjson-cli} utility builds in vendor-mode now.
332
333 @end itemize
334
335 @node Release 7_3_1
336 @section Release 7.3.1
337 @itemize
338
339 @item
340 Fixed possibly left opened file descriptor in online commands.
341
342 @item
343 Severely decreased memory usage of MTH hashing.
344
345 @end itemize
346
347 @node Release 7_3_0
348 @section Release 7.3.0
349 @itemize
350
351 @item
352 Fixed some workability problems on 32-bit systems with big files.
353
354 @item
355 Ability to use directory with a bunch of files as a configuration.
356 @command{nncp-cfgdir} command appeared.
357
358 @end itemize
359
360 @node Release 7_2_1
361 @section Release 7.2.1
362 @itemize
363
364 @item
365 Small optimizations in online commands.
366
367 @end itemize
368
369 @node Release 7_2_0
370 @section Release 7.2.0
371 @itemize
372
373 @item
374 @command{nncp-trns} command appeared for manual transition packets creation.
375
376 @item
377 If destination node of transitional packet has non empty @option{via}
378 route, then do not ignore, but use it.
379
380 @item
381 Do not relay multicast packet to area message's originator, that
382 obviously has seen its own packet.
383
384 @item
385 Much less memory usage during MTH hashing when offset is zero: when
386 packet is not resumed, but for example checked with @command{nncp-check}
387 command.
388
389 @end itemize
390
391 @node Release 7_1_1
392 @section Release 7.1.1
393 @itemize
394
395 @item
396 Fixed failing directories @code{fsync} after @file{.seen} file creation.
397
398 @end itemize
399
400 @node Release 7_1_0
401 @section Release 7.1.0
402 @itemize
403
404 @item
405 Multicasting areas feature appeared. Implemented merely by an additional
406 plain packet type with @command{nncp-toss}, @command{nncp-file} and
407 @command{nncp-exec} commands modification.
408
409 @item
410 Fixed workability of @command{nncp-file} and @command{nncp-exec}
411 commands, that use temporary file (@code{stdin} and @option{-use-tmp}).
412
413 @item
414 Fixed disappearing bad return code in @command{nncp-exec} command.
415
416 @item
417 Fixed invalid @file{.hdr} generation when transitional packets are used.
418
419 @item
420 @option{-all} option appeared in @command{nncp-rm} command, applying to
421 all the nodes at once.
422
423 @item
424 @option{-cycle} option appeared in @command{nncp-check} command, looping
425 the check in infinite cycle.
426
427 @item
428 @command{nncp-rm} command can take node alias name.
429
430 @item
431 @command{nncp-pkt} can parse @file{.hdr} files.
432
433 @end itemize
434
435 @node Release 7_0_0
436 @section Release 7.0.0
437 @itemize
438
439 @item
440 Minimal required Go version is 1.13.
441
442 @item
443 Merkle Tree-based Hashing with BLAKE3 (MTH) is used instead of BLAKE2b.
444 Because of that, there are backward @strong{incompatible} changes of
445 encrypted files (everything laying in the spool directory) and
446 @file{.meta} files of chunked transfer.
447
448 Current implementation is far from being optimal: it lacks
449 parallelizable calculations and has higher memory consumption: nearly
450 512 KiB for each 1 GiB of file's data. Future performance and memory
451 size optimizations should not lead to packet's format change. But it is
452 still several times faster than BLAKE2b.
453
454 @item
455 Resumed online downloads, because of MTH, require reading only of the
456 preceding part of file, not the whole one as was before.
457
458 @item
459 @command{nncp-hash} utility appeared for calculating file's MTH hash.
460
461 @item
462 BLAKE2 KDF and XOF functions are replaced with BLAKE3 in encrypted
463 packets. Lowering number of used primitives. Also, its encrypted
464 packet's header is used as an associated data during encryption.
465
466 @item
467 MultiCast Discovery uses
468 @verb{|ff02::4e4e:4350|} address instead of @verb{|ff02::1|}.
469
470 @item
471 @command{nncp-cfgenc} mistakenly asked passphrase three times during encryption.
472
473 @item
474 @command{nncp-stat} reports about partly downloaded packets.
475
476 @item
477 Updated dependencies.
478
479 @end itemize
480
481 @node Release 6_6_0
482 @section Release 6.6.0
483 @itemize
484
485 @item
486 @command{nncp-daemon}, @command{nncp-call} and @command{nncp-caller}
487 commands wait for all background checksummers completion after
488 connection is finished.
489
490 @item
491 Added possibility of address determining through multicast announcement
492 in local area network, so called MCD (MultiCast Discovery).
493
494 @end itemize
495
496 @node Release 6_5_0
497 @section Release 6.5.0
498 @itemize
499
500 @item
501 Fixed segfault in @command{nncp-daemon} when SP handshake did not succeed.
502
503 @item
504 Fixed possible bad return code ignoring in automatic tosser.
505
506 @item
507 Fixed race during file descriptors closing when online protocol call is
508 finished, that could lead to write error of received packet fragment.
509
510 @item
511 Kill all packet transmission progress bars in @command{nncp-daemon},
512 @command{nncp-call} and @command{nncp-caller} when call is finished.
513
514 @end itemize
515
516 @node Release 6_4_0
517 @section Release 6.4.0
518 @itemize
519
520 @item
521 Fixed possible race in online protocol, that lead to panic.
522
523 @end itemize
524
525 @node Release 6_3_0
526 @section Release 6.3.0
527 @itemize
528
529 @item
530 Fixed possible panic while showing progress during online protocol.
531
532 @end itemize
533
534 @node Release 6_2_1
535 @section Release 6.2.1
536 @itemize
537
538 @item
539 Three places in logs contained excess @code{%s}.
540
541 @end itemize
542
543 @node Release 6_2_0
544 @section Release 6.2.0
545 @itemize
546
547 @item
548 Returned @command{nncp-caller}'s @option{-autotoss*} options workability.
549
550 @item
551 Yet another logging refactoring and simplification.
552 Should be no visible differences to the end user.
553
554 @end itemize
555
556 @node Release 6_1_0
557 @section Release 6.1.0
558 @itemize
559
560 @item
561 Optimization: most commands do not keep opened file descriptors now.
562 Previously you can exceed maximal number of opened files if you have got
563 many packets in the spool directory.
564
565 @item
566 Optimization: do not close file descriptor of the file we download
567 online. Previously each chunk lead to expensive open/close calls.
568
569 @item
570 Online downloaded files are saved with @file{.nock} (non-checksummed)
571 suffix, waiting either for @command{nncp-check}, or online daemons to
572 perform integrity check.
573
574 @item
575 Optimization: files, that are not resumed, are checksummed immediately
576 during the online download, skipping @file{.nock}-intermediate step.
577
578 @item
579 Ability to store encrypted packet's header in @file{.hdr} file, close to
580 the packet itself. That can greatly increase performance of packets
581 listing on filesystems with big block's size.
582
583 @end itemize
584
585 @node Release 6_0_0
586 @section Release 6.0.0
587 @itemize
588
589 @item
590 Log uses human readable and easy machine parseable
591 @url{https://www.gnu.org/software/recutils/, recfile} format for the
592 records, instead of structured RFC 3339 lines. Old logs are not readable
593 by @command{nncp-log} anymore.
594
595 @item
596 @option{-autotoss*} option workability with @command{nncp-daemon}'s
597 @option{-inetd} mode.
598
599 @item
600 Call's @option{when-tx-exists} allows to make a call only when outbound
601 packets exists. Combined with seconds-aware cron expression that can be
602 used as some kind of auto dialler.
603
604 @item
605 @command{nncp-cronexpr} command allows you to check validity and
606 expectations of specified cron expression.
607
608 @end itemize
609
610 @node Release 5_6_0
611 @section Release 5.6.0
612 @itemize
613
614 @item
615 @option{-autotoss*} option runs tosser not after the call, but every
616 second while it is active.
617
618 @item
619 @option{autotoss}, @option{autotoss-doseen},
620 @option{autotoss-nofile}, @option{autotoss-nofreq},
621 @option{autotoss-noexec}, @option{autotoss-notrns} options available in
622 @option{calls} configuration section. You can configure per-call
623 automatic tosser options.
624
625 @item
626 Use vendoring, instead of @env{$GOPATH} overriding during tarball
627 installation, because current minimal Go's version is 1.12 and it
628 supports modules.
629
630 @end itemize
631
632 @node Release 5_5_1
633 @section Release 5.5.1
634 @itemize
635
636 @item
637 Respect for @env{$BINDIR}, @env{$INFODIR} and @env{$DOCDIR} environment
638 variables in @file{config} during installation.
639
640 @end itemize
641
642 @node Release 5_5_0
643 @section Release 5.5.0
644 @itemize
645
646 @item
647 Bugfixes in @command{nncp-call(er)}/@command{nncp-daemon},
648 @command{nncp-bundle} and @command{nncp-stat}.
649
650 @item
651 @command{nncp-rm} has @option{-dryrun} and @option{-older} options now.
652
653 @item
654 @command{nncp-exec} has @option{-use-tmp} and @option{-nocompress}
655 options now. Uncompressed packets are not compatible with previous NNCP
656 versions.
657
658 @item
659 @command{nncp-call}, @command{nncp-caller} and @command{nncp-daemon} commands
660 have @option{-autotoss*} options for running tosser after call is ended.
661
662 @item
663 Updated dependencies. Minimal required Go version is 1.12.
664
665 @end itemize
666
667 @node Release 5_4_1
668 @section Release 5.4.1
669 @itemize
670
671 @item
672 Fixed @code{SENDMAIL} variable usage during the build.
673
674 @end itemize
675
676 @node Release 5_4_0
677 @section Release 5.4.0
678 @itemize
679
680 @item
681 Updated dependencies.
682
683 @item
684 Build system is moved from Makefiles to @url{http://cr.yp.to/redo.html, redo}.
685 This should not influence package maintainers, because minimal @command{redo}
686 implementation is included in tarball.
687
688 @end itemize
689
690 @node Release 5_3_3
691 @section Release 5.3.3
692 @itemize
693
694 @item
695 More various error checks.
696
697 @item
698 Updated dependencies.
699
700 @end itemize
701
702 @node Release 5_3_2
703 @section Release 5.3.2
704 @itemize
705
706 @item
707 Fixed incorrect logic of @option{onlinedeadline} timeout, where
708 connection won't take into account incoming packets events and will
709 forcefully disconnect.
710
711 @end itemize
712
713 @node Release 5_3_1
714 @section Release 5.3.1
715 @itemize
716
717 @item
718 Fixed @option{onlinedeadline} workability with call addresses that use
719 external commands (@verb{#"|somecmd"#}).
720
721 @item
722 @command{nncp-stat} has @option{-pkt} option displaying information
723 about each packet in the spool.
724
725 @end itemize
726
727 @node Release 5_3_0
728 @section Release 5.3.0
729 @itemize
730
731 @item
732 Progress messages contain prefix, describing the running action.
733
734 @item
735 Fixed not occurring handshake messages padding.
736
737 @item
738 Finish all SP protocol related goroutines, less memory leak.
739
740 @item
741 SP protocol generates less socket write calls, thus generating less TCP
742 packets.
743
744 @item
745 Check @option{onlinedeadline} and @option{maxonlinetime} options every
746 second, independently from socket reads (up to 10 seconds).
747
748 @item
749 Once per minute, if no other traffic exists, PING packets are sent in
750 SP-connection. That allows faster determining of connection unworkability.
751
752 @item
753 @command{nncp-toss} uses lock-file to prevent simultaneous tossing.
754
755 @end itemize
756
757 @node Release 5_2_1
758 @section Release 5.2.1
759 @itemize
760
761 @item
762 Fixed SP protocol error handling, sometimes causing program panic.
763
764 @end itemize
765
766 @node Release 5_2_0
767 @section Release 5.2.0
768 @itemize
769
770 @item
771 Most commands by default show oneline operations progress.
772 @option{-progress}, @option{-noprogress} command line options,
773 @option{noprogress} configuration file option appeared.
774
775 @item
776 Fixed incorrect @command{nncp-check} command return code, that returned
777 bad code when everything is good.
778
779 @item
780 Free disk space check during @command{nncp-bundle -rx} call.
781
782 @end itemize
783
784 @node Release 5_1_2
785 @section Release 5.1.2
786 @itemize
787
788 @item
789 @strong{Critical} vulnerability: remote peers authentication could lead
790 to incorrect identification of remote side, allowing foreign encrypted
791 packets downloading.
792
793 @item
794 Bugfix: private and public Noise keys were swapped in newly created
795 configuration files, that lead to inability to authenticate online peers.
796
797 @item
798 Explicit directories @code{fsync}-ing for guaranteed files renaming.
799
800 @end itemize
801
802 @node Release 5_1_1
803 @section Release 5.1.1
804 @itemize
805
806 @item
807 Fixed workability of @command{nncp-file} with @option{-chunked 0} option.
808
809 @end itemize
810
811 @node Release 5_1_0
812 @section Release 5.1.0
813 @itemize
814
815 @item
816 @command{nncp-file} can send directories, automatically creating pax
817 archive on the fly.
818
819 @item
820 Free disk space is checked during outbound packets creation.
821
822 @item
823 @option{freq}, @option{freqminsize}, @option{freqchunked} configuration
824 file options replaced with the structure:
825 @option{freq: @{path: @dots{}, minsize: @dots{}, chunked: @dots{}@}}.
826
827 @item
828 Added @option{freq.maxsize} configuration file option, forbidding of
829 freq sending larger than specified size.
830
831 @item
832 Ability to notify about successfully executed commands (exec) with
833 @option{notify.exec} configuration file option.
834
835 @end itemize
836
837 @node Release 5_0_0
838 @section Release 5.0.0
839 @itemize
840
841 @item
842 @strong{Incompatible} configuration file format change: YAML is
843 replaced with Hjson, due to its simplicity, without noticeable lack
844 of either functionality or convenience.
845
846 @item
847 @strong{Incompatible} plain packet format changes. Older versions are
848 not supported. @code{zlib} compression is replaced with
849 @code{Zstandard}, due to its speed and efficiency, despite library
850 version is not mature enough.
851
852 @item
853 Ability to call remote nodes via pipe call of external command, not only
854 through TCP.
855
856 @item
857 @command{nncp-cfgnew} generates configuration file with many
858 comments. @option{-nocomments} option can be used for an old
859 behaviour.
860
861 @item
862 Duplicate filenames have @file{.CTR} suffix, instead of @file{CTR}, to
863 avoid possible collisions with @file{.nncp.chunkCTR}.
864
865 @item
866 Ability to override process umask through configuration file option.
867
868 @item
869 Files and directories are created with 666/777 permissions by default,
870 allowing control with @command{umask}.
871
872 @item
873 Updated dependencies.
874
875 @item
876 Full usage of go modules for dependencies management
877 (@code{go.cypherpunks.ru/nncp/v5} namespace is used).
878
879 @item
880 Forbid any later GNU GPL version autousage
881 (project's licence now is GNU GPLv3-only).
882
883 @end itemize
884
885 @node Release 4_1
886 @section Release 4.1
887 @itemize
888 @item Workability on GNU/Linux systems and Go 1.10 is fixed.
889 @end itemize
890
891 @node Release 4_0
892 @section Release 4.0
893 @itemize
894
895 @item
896 @strong{Incompatible} encrypted and eblob packet format change: AEAD
897 encryption mode with 128 KiB blocks is used now, because previously
898 @command{nncp-toss} did not verify encrypted packet's MAC before feeding
899 decrypted data to external command. Older versions are not supported.
900
901 @item
902 Available free space checking before copying in @command{nncp-xfer},
903 @command{nncp-daemon}, @command{nncp-call(er)}.
904
905 @item
906 @command{nncp-call} has ability only to list packets on remote node,
907 without their transmission.
908
909 @item
910 @command{nncp-call} has ability to transfer only specified packets.
911
912 @item
913 Workability of @option{xxrate} preference in @option{calls}
914 configuration file section.
915
916 @item
917 Dependant libraries are updated.
918
919 @item
920 Minor bugfixes.
921
922 @item
923 Begin using of @code{go.mod} subsystem.
924
925 @end itemize
926
927 @node Release 3_4
928 @section Release 3.4
929 @itemize
930 @item @command{nncp-daemon} can be run as @command{inetd}-service.
931 @end itemize
932
933 @node Release 3_3
934 @section Release 3.3
935 @itemize
936
937 @item
938 @command{nncp-daemon}, @command{nncp-call}, @command{nncp-caller} check
939 if @file{.seen} exists and treat it like file was already downloaded.
940 Possibly it was transferred out-of-bound and remote side needs to be
941 notifier about that.
942
943 @item
944 If higher priority packet is spooled, then @command{nncp-daemon} will
945 queue its sending first, interrupting lower priority transmissions.
946
947 @item
948 Simple packet rate limiter added to online-related tools
949 (@command{nncp-daemon}, @command{nncp-call}, @command{nncp-caller}).
950
951 @item
952 Ability to specify niceness with symbolic notation:
953 @verb{|NORMAL|}, @verb{|BULK+10|}, @verb{|PRIORITY-5|}, etc.
954
955 @item
956 Changed default niceness levels:
957 for @command{nncp-exec} from 64 to 96,
958 for @command{nncp-freq} from 64 to 160,
959 for @command{nncp-file} from 196 to 224.
960
961 @end itemize
962
963 @node Release 3_2
964 @section Release 3.2
965 @itemize
966 @item
967 @strong{Incompatible} @emph{bundle} archive format changes and
968 @command{nncp-bundle} workability with Go 1.10+. Bundles must be
969 valid tar archives, but Go 1.9 made them invalid because of long paths
970 inside. NNCP accidentally was dependant on that bug. Explicit adding of
971 @file{NNCP/} directory in archive restores workability with valid tar
972 archives.
973 @end itemize
974
975 @node Release 3_1
976 @section Release 3.1
977 @itemize
978 @item
979 Ability to disable relaying at all using @verb{|-via -|} command line option.
980 @end itemize
981
982 @node Release 3_0
983 @section Release 3.0
984 @itemize
985
986 @item
987 @strong{Incompatible} plain packet format changes. Older versions are
988 not supported.
989
990 @item
991 Ability to queue remote command execution, by configuring @option{exec}
992 option in configuration file and using @command{nncp-exec} command:
993     @itemize
994     @item
995     @command{nncp-mail} command is replaced with more flexible
996     @command{nncp-exec}. Instead of @verb{|nncp-mail NODE RECIPIENT|}
997     you must use @verb{|nncp-exec NODE sendmail RECIPIENT|}.
998     @item
999     @option{sendmail} configuration file option is replaced with
1000     @option{exec}. @code{sendmail: [@dots{}]} must be replaced with
1001     @code{exec: sendmail: [@dots{}]}.
1002     @end itemize
1003
1004 @item
1005 Ability to override @option{via} configuration option for destination
1006 node via @option{-via} command line option for following commands:
1007 @command{nncp-file}, @command{nncp-freq}, @command{nncp-exec}.
1008
1009 @item
1010 Chunked files, having size less than specified chunk size, will be sent
1011 as an ordinary single file.
1012
1013 @item
1014 Exec commands are invoked with additional @env{$NNCP_NICE} and
1015 @env{$NNCP_SELF} environment variables.
1016
1017 @item
1018 Files, that are sent as a reply to freq, have niceness level taken from
1019 the freq packet. You can set desired niceness during @command{nncp-freq}
1020 invocation using @option{-replynice} option.
1021
1022 @item
1023 @command{nncp-toss} command can ignore specified packet types during
1024 processing: @option{-nofile}, @option{-nofreq}, @option{-noexec},
1025 @option{-notrns}.
1026
1027 @item
1028 @command{nncp-file} command uses
1029 @option{FreqMinSize}/@option{FreqChunked} configuration file options
1030 for @option{-minsize}/@option{-chunked} by default. You can turn this
1031 off by specifying zero value.
1032
1033 @end itemize
1034
1035 @node Release 2_0
1036 @section Release 2.0
1037 @itemize
1038
1039 @item
1040 @strong{Incompatible} encrypted/eblob packet format changes. Older
1041 versions are not supported.
1042
1043 @item
1044 Twofish encryption algorithm is replaced with ChaCha20. It is much more
1045 faster. One cryptographic primitive less.
1046
1047 @item
1048 HKDF-BLAKE2b-256 KDF algorithm is replaced with BLAKE2Xb XOF. Yet
1049 another cryptographic primitive less (assuming that BLAKE2X is nearly
1050 identical to BLAKE2).
1051
1052 @end itemize
1053
1054 @node Release 1_0
1055 @section Release 1.0
1056 @itemize
1057
1058 @item
1059 @strong{Incompatible} encrypted packet format changes. Older versions
1060 are not supported.
1061
1062 @item
1063 @command{nncp-bundle} command can either create stream of encrypted
1064 packets, or digest it. It is useful when dealing with
1065 @code{stdin}/@code{stdout} based transmission methods (like writing to
1066 CD-ROM without intermediate prepared ISO image and working with tape
1067 drives).
1068
1069 @item
1070 @command{nncp-toss} is able to create @file{.seen} files preventing
1071 duplicate packets receiving.
1072
1073 @item
1074 Single background checksum verifier worker is allowed in
1075 @command{nncp-call}. This is helpful when thousands of small inbound
1076 packets could create many goroutines.
1077
1078 @item
1079 Ability to override path to spool directory and logfile through either
1080 command line argument, or environment variable.
1081
1082 @item
1083 @command{nncp-rm} is able to delete outbound/inbound, @file{.seen},
1084 @file{.part}, @file{.lock} and temporary files.
1085
1086 @end itemize
1087
1088 @node Release 0_12
1089 @section Release 0.12
1090 @itemize
1091 @item Sendmail command is called with @env{$NNCP_SENDER} environment variable.
1092 @end itemize
1093
1094 @node Release 0_11
1095 @section Release 0.11
1096 @itemize
1097 @item @command{nncp-stat}'s command output is sorted by node name.
1098 @end itemize
1099
1100 @node Release 0_10
1101 @section Release 0.10
1102 @itemize
1103 @item
1104 @command{nncp-freq}'s @file{DST} argument is optional now. Last
1105 @file{SRC} path's element will be used by default.
1106 @end itemize
1107
1108 @node Release 0_9
1109 @section Release 0.9
1110 @itemize
1111 @item
1112 Fix @option{-rx}/@option{-tx} arguments processing in
1113 @command{nncp-call} command. They were ignored.
1114 @end itemize
1115
1116 @node Release 0_8
1117 @section Release 0.8
1118 @itemize
1119 @item
1120 Little bugfix in @command{nncp-file} command, where @option{-minsize}
1121 option for unchunked transfer was not in KiBs, but in bytes.
1122 @end itemize
1123
1124 @node Release 0_7
1125 @section Release 0.7
1126 @itemize
1127
1128 @item
1129 Ability to feed @command{nncp-file} from @code{stdin}, that uses an
1130 encrypted temporary file for that.
1131
1132 @item
1133 Chunked files transmission appeared with corresponding
1134 @command{nncp-reass} command and @option{freqchunked} configuration file
1135 entry. Useful for transferring big files over small storage devices.
1136
1137 @item
1138 @option{freqminsize} configuration file option, analogue to
1139 @option{-minsize} one.
1140
1141 @item
1142 @command{nncp-xfer}'s @option{-force} option is renamed to
1143 @option{-mkdir} for clarity.
1144
1145 @item
1146 @option{-minsize} option is specified in KiBs, not bytes, for
1147 convenience.
1148
1149 @item
1150 @command{nncp-newcfg} command is renamed to @command{nncp-cfgnew},
1151 and @command{nncp-mincfg} to @command{nncp-cfgmin} -- now they have
1152 common prefix and are grouped together for convenience.
1153
1154 @item
1155 @command{nncp-cfgenc} command appeared, allowing configuration file
1156 encryption/decryption, for keeping it safe without any either OpenPGP or
1157 similar tools usage.
1158
1159 @item
1160 Cryptographic libraries (dependencies) are updated.
1161
1162 @end itemize
1163
1164 @node Release 0_6
1165 @section Release 0.6
1166 @itemize
1167 @item Small @command{nncp-rm} command appeared.
1168 @item Cryptographic libraries (dependencies) are updated.
1169 @end itemize
1170
1171 @node Release 0_5
1172 @section Release 0.5
1173 @itemize
1174 @item
1175 Trivial small fix in default niceness level of @command{nncp-file}
1176 and @command{nncp-freq} commands.
1177 @end itemize
1178
1179 @node Release 0_4
1180 @section Release 0.4
1181 @itemize
1182
1183 @item
1184 Small fix in @command{nncp-call}, @command{nncp-caller},
1185 @command{nncp-daemon}: they can segmentation fail sometimes (no data is
1186 lost).
1187
1188 @item
1189 @command{nncp-newnode} renamed to @command{nncp-newcfg} -- it is shorter
1190 and more convenient to use.
1191
1192 @item
1193 @command{nncp-mincfg} command appeared: helper allowing to create
1194 minimalistic stripped down configuration file without private keys, that
1195 is useful during @command{nncp-xfer} usage.
1196
1197 @end itemize
1198
1199 @node Release 0_3
1200 @section Release 0.3
1201 @itemize
1202 @item Fixed compatibility with Go 1.6.
1203 @end itemize
1204
1205 @node Release 0_2
1206 @section Release 0.2
1207 @itemize
1208
1209 @item
1210 @strong{Incompatible} packet's format change (magic number is changed
1211 too): size field is encrypted and is not send in plaintext anymore.
1212
1213 @item
1214 @option{-minsize} option gives ability to automatically pad outgoing
1215 packets to specified minimal size.
1216
1217 @item
1218 @command{nncp-daemon} and @command{nncp-call}/@command{nncp-caller}
1219 always check new @emph{tx} packets appearance in the background while
1220 connected. Remote side is immediately notified.
1221
1222 @item
1223 @option{-onlinedeadline} option gives ability to configure timeout of
1224 inactivity of online connection, when it could be disconnected. It could
1225 be used to keep connection alive for a long time.
1226
1227 @item
1228 @option{-maxonlinetime} option gives ability to set maximal allowable
1229 online connection aliveness time.
1230
1231 @item
1232 @command{nncp-caller} command appeared: cron-ed TCP daemon caller.
1233
1234 @item
1235 @command{nncp-pkt} command can decompress the data.
1236
1237 @end itemize