]> Cypherpunks.ru repositories - nncp.git/blob - doc/news.texi
AD for AEAD
[nncp.git] / doc / news.texi
1 @node News
2 @unnumbered News
3
4 See also this page @ref{Новости, on russian}.
5
6 @node Release 7.0.0
7 @section Release 7.0.0
8 @itemize
9
10 @item
11 Merkle Tree-based Hashing with BLAKE3 (MTH) is used instead of BLAKE2b.
12 Because of that, there are backward @strong{incompatible} changes of
13 encrypted files (everything laying in the spool directory) and
14 @file{.meta} files of chunked transfer.
15
16 Current implementation is far from being optimal: it lacks
17 parallelizable calculations and has higher memory consumption: nearly
18 512 KiB for each 1 GiB of file's data. Future performance and memory
19 size optimizations should not lead to packet's format change. But it is
20 still several times faster than BLAKE2b.
21
22 @item
23 Resumed online downloads, because of MTH, require reading only of the
24 preceding part of file, not the whole one as was before.
25
26 @item
27 @command{nncp-hash} utility appeared for calculating file's MTH hash.
28
29 @item
30 BLAKE2 KDF and XOF functions are replaced with BLAKE3 in encrypted
31 packets. Lowering number of used primitives. Also, its encrypted
32 packet's header is used as an associated data during encryption.
33
34 @item
35 MultiCast Discovery uses
36 @verb{|ff02::4e4e:4350|} address instead of @verb{|ff02::1|}.
37
38 @item
39 Updated dependencies.
40
41 @end itemize
42
43 @node Release 6.6.0
44 @section Release 6.6.0
45 @itemize
46
47 @item
48 @command{nncp-daemon}, @command{nncp-call} and @command{nncp-caller}
49 commands wait for all background checksummers completion after
50 connection is finished.
51
52 @item
53 Added possibility of address determining through multicast announcement
54 in local area network, so called MCD (MultiCast Discovery).
55
56 @end itemize
57
58 @node Release 6.5.0
59 @section Release 6.5.0
60 @itemize
61
62 @item
63 Fixed segfault in @command{nncp-daemon} when SP handshake did not succeed.
64
65 @item
66 Fixed possible bad return code ignoring in automatic tosser.
67
68 @item
69 Fixed race during file descriptors closing when online protocol call is
70 finished, that could lead to write error of received packet fragment.
71
72 @item
73 Kill all packet transmission progress bars in @command{nncp-daemon},
74 @command{nncp-call} and @command{nncp-caller} when call is finished.
75
76 @end itemize
77
78 @node Release 6.4.0
79 @section Release 6.4.0
80 @itemize
81
82 @item
83 Fixed possible race in online protocol, that lead to panic.
84
85 @end itemize
86
87 @node Release 6.3.0
88 @section Release 6.3.0
89 @itemize
90
91 @item
92 Fixed possible panic while showing progress during online protocol.
93
94 @end itemize
95
96 @node Release 6.2.1
97 @section Release 6.2.1
98 @itemize
99
100 @item
101 Three places in logs contained excess @code{%s}.
102
103 @end itemize
104
105 @node Release 6.2.0
106 @section Release 6.2.0
107 @itemize
108
109 @item
110 Returned @command{nncp-caller}'s @option{-autotoss*} options workability.
111
112 @item
113 Yet another logging refactoring and simplification.
114 Should be no visible differences to the end user.
115
116 @end itemize
117
118 @node Release 6.1.0
119 @section Release 6.1.0
120 @itemize
121
122 @item
123 Optimization: most commands do not keep opened file descriptors now.
124 Previously you can exceed maximal number of opened files if you have got
125 many packets in the spool directory.
126
127 @item
128 Optimization: do not close file descriptor of the file we download
129 online. Previously each chunk lead to expensive open/close calls.
130
131 @item
132 Online downloaded files are saved with @file{.nock} (non-checksummed)
133 suffix, waiting either for @command{nncp-check}, or online daemons to
134 perform integrity check.
135
136 @item
137 Optimization: files, that are not resumed, are checksummed immediately
138 during the online download, skipping @file{.nock}-intermediate step.
139
140 @item
141 Ability to store encrypted packet's header in @file{.hdr} file, close to
142 the packet itself. That can greatly increase performance of packets
143 listing on filesystems with big block's size.
144
145 @end itemize
146
147 @node Release 6.0.0
148 @section Release 6.0.0
149 @itemize
150
151 @item
152 Log uses human readable and easy machine parseable
153 @url{https://www.gnu.org/software/recutils/, recfile} format for the
154 records, instead of structured RFC 3339 lines. Old logs are not readable
155 by @command{nncp-log} anymore.
156
157 @item
158 @option{-autotoss*} option workability with @command{nncp-daemon}'s
159 @option{-inetd} mode.
160
161 @item
162 Call's @option{when-tx-exists} allows to make a call only when outbound
163 packets exists. Combined with seconds-aware cron expression that can be
164 used as some kind of auto dialler.
165
166 @item
167 @command{nncp-cronexpr} command allows you to check validity and
168 expectations of specified cron expression.
169
170 @end itemize
171
172 @node Release 5.6.0
173 @section Release 5.6.0
174 @itemize
175
176 @item
177 @option{-autotoss*} option runs tosser not after the call, but every
178 second while it is active.
179
180 @item
181 @option{autotoss}, @option{autotoss-doseen},
182 @option{autotoss-nofile}, @option{autotoss-nofreq},
183 @option{autotoss-noexec}, @option{autotoss-notrns} options available in
184 @option{calls} configuration section. You can configure per-call
185 automatic tosser options.
186
187 @item
188 Use vendoring, instead of @env{GOPATH} overriding during tarball
189 installation, because current minimal Go's version is 1.12 and it
190 supports modules.
191
192 @end itemize
193
194 @node Release 5.5.1
195 @section Release 5.5.1
196 @itemize
197
198 @item
199 Respect for @env{BINDIR}, @env{INFODIR} and @env{DOCDIR} environment
200 variables in @file{config} during installation.
201
202 @end itemize
203
204 @node Release 5.5.0
205 @section Release 5.5.0
206 @itemize
207
208 @item
209 Bugfixes in @command{nncp-call(er)}/@command{nncp-daemon},
210 @command{nncp-bundle} and @command{nncp-stat}.
211
212 @item
213 @command{nncp-rm} has @option{-dryrun} and @option{-older} options now.
214
215 @item
216 @command{nncp-exec} has @option{-use-tmp} and @option{-nocompress}
217 options now. Uncompressed packets are not compatible with previous NNCP
218 versions.
219
220 @item
221 @command{nncp-call}, @command{nncp-caller} and @command{nncp-daemon} commands
222 have @option{-autotoss*} options for running tosser after call is ended.
223
224 @item
225 Updated dependencies. Minimal required Go version is 1.12.
226
227 @end itemize
228
229 @node Release 5.4.1
230 @section Release 5.4.1
231 @itemize
232
233 @item
234 Fixed @code{SENDMAIL} variable usage during the build.
235
236 @end itemize
237
238 @node Release 5.4.0
239 @section Release 5.4.0
240 @itemize
241
242 @item
243 Updated dependencies.
244
245 @item
246 Build system is moved from Makefiles to @url{http://cr.yp.to/redo.html, redo}.
247 This should not influence package maintainers, because minimal @command{redo}
248 implementation is included in tarball.
249
250 @end itemize
251
252 @node Release 5.3.3
253 @section Release 5.3.3
254 @itemize
255
256 @item
257 More various error checks.
258
259 @item
260 Updated dependencies.
261
262 @end itemize
263
264 @node Release 5.3.2
265 @section Release 5.3.2
266 @itemize
267
268 @item
269 Fixed incorrect logic of @option{onlinedeadline} timeout, where
270 connection won't take into account incoming packets events and will
271 forcefully disconnect.
272
273 @end itemize
274
275 @node Release 5.3.1
276 @section Release 5.3.1
277 @itemize
278
279 @item
280 Fixed @option{onlinedeadline} workability with call addresses that use
281 external commands (@verb{#"|somecmd"#}).
282
283 @item
284 @command{nncp-stat} has @option{-pkt} option displaying information
285 about each packet in the spool.
286
287 @end itemize
288
289 @node Release 5.3.0
290 @section Release 5.3.0
291 @itemize
292
293 @item
294 Progress messages contain prefix, describing the running action.
295
296 @item
297 Fixed not occurring handshake messages padding.
298
299 @item
300 Finish all SP protocol related goroutines, less memory leak.
301
302 @item
303 SP protocol generates less socket write calls, thus generating less TCP
304 packets.
305
306 @item
307 Check @option{onlinedeadline} and @option{maxonlinetime} options every
308 second, independently from socket reads (up to 10 seconds).
309
310 @item
311 Once per minute, if no other traffic exists, PING packets are sent in
312 SP-connection. That allows faster determining of connection unworkability.
313
314 @item
315 @command{nncp-toss} uses lock-file to prevent simultaneous tossing.
316
317 @end itemize
318
319 @node Release 5.2.1
320 @section Release 5.2.1
321 @itemize
322
323 @item
324 Fixed SP protocol error handling, sometimes causing program panic.
325
326 @end itemize
327
328 @node Release 5.2.0
329 @section Release 5.2.0
330 @itemize
331
332 @item
333 Most commands by default show oneline operations progress.
334 @option{-progress}, @option{-noprogress} command line options,
335 @option{noprogress} configuration file option appeared.
336
337 @item
338 Fixed incorrect @command{nncp-check} command return code, that returned
339 bad code when everything is good.
340
341 @item
342 Free disk space check during @command{nncp-bundle -rx} call.
343
344 @end itemize
345
346 @node Release 5.1.2
347 @section Release 5.1.2
348 @itemize
349
350 @item
351 @strong{Critical} vulnerability: remote peers authentication could lead
352 to incorrect identification of remote side, allowing foreign encrypted
353 packets downloading.
354
355 @item
356 Bugfix: private and public Noise keys were swapped in newly created
357 configuration files, that lead to inability to authenticate online peers.
358
359 @item
360 Explicit directories fsync-ing for guaranteed files renaming.
361
362 @end itemize
363
364 @node Release 5.1.1
365 @section Release 5.1.1
366 @itemize
367
368 @item
369 Fixed workability of @command{nncp-file} with @option{-chunked 0} option.
370
371 @end itemize
372
373 @node Release 5.1.0
374 @section Release 5.1.0
375 @itemize
376
377 @item
378 @command{nncp-file} can send directories, automatically creating pax
379 archive on the fly.
380
381 @item
382 Free disk space is checked during outbound packets creation.
383
384 @item
385 @option{freq}, @option{freqminsize}, @option{freqchunked} configuration
386 file options replaced with the structure:
387 @option{freq: @{path: ..., minsize: ..., chunked: ...@}}.
388
389 @item
390 Added @option{freq.maxsize} configuration file option, forbidding of
391 freq sending larger than specified size.
392
393 @item
394 Ability to notify about successfully executed commands (exec) with
395 @option{notify.exec} configuration file option.
396
397 @end itemize
398
399 @node Release 5.0.0
400 @section Release 5.0.0
401 @itemize
402
403 @item
404 @strong{Incompatible} configuration file format change: YAML is
405 replaced with Hjson, due to its simplicity, without noticeable lack
406 of either functionality or convenience.
407
408 @item
409 @strong{Incompatible} plain packet format changes. Older versions are
410 not supported. @code{zlib} compression is replaced with
411 @code{Zstandard}, due to its speed and efficiency, despite library
412 version is not mature enough.
413
414 @item
415 Ability to call remote nodes via pipe call of external command, not only
416 through TCP.
417
418 @item
419 @command{nncp-cfgnew} generates configuration file with many
420 comments. @option{-nocomments} option can be used for an old
421 behaviour.
422
423 @item
424 Duplicate filenames have @file{.CTR} suffix, instead of @file{CTR}, to
425 avoid possible collisions with @file{.nncp.chunkCTR}.
426
427 @item
428 Ability to override process umask through configuration file option.
429
430 @item
431 Files and directories are created with 666/777 permissions by default,
432 allowing control with @command{umask}.
433
434 @item
435 Updated dependencies.
436
437 @item
438 Full usage of go modules for dependencies management
439 (@code{go.cypherpunks.ru/nncp/v5} namespace is used).
440
441 @item
442 Forbid any later GNU GPL version autousage
443 (project's licence now is GNU GPLv3-only).
444
445 @end itemize
446
447 @node Release 4.1
448 @section Release 4.1
449 @itemize
450 @item Workability on GNU/Linux systems and Go 1.10 is fixed.
451 @end itemize
452
453 @node Release 4.0
454 @section Release 4.0
455 @itemize
456
457 @item
458 @strong{Incompatible} encrypted and eblob packet format change: AEAD
459 encryption mode with 128 KiB blocks is used now, because previously
460 @command{nncp-toss} did not verify encrypted packet's MAC before feeding
461 decrypted data to external command. Older versions are not supported.
462
463 @item
464 Available free space checking before copying in @command{nncp-xfer},
465 @command{nncp-daemon}, @command{nncp-call(er)}.
466
467 @item
468 @command{nncp-call} has ability only to list packets on remote node,
469 without their transmission.
470
471 @item
472 @command{nncp-call} has ability to transfer only specified packets.
473
474 @item
475 Workability of @option{xxrate} preference in @option{calls}
476 configuration file section.
477
478 @item
479 Dependant libraries are updated.
480
481 @item
482 Minor bugfixes.
483
484 @item
485 Begin using of @code{go.mod} subsystem.
486
487 @end itemize
488
489 @node Release 3.4
490 @section Release 3.4
491 @itemize
492 @item @command{nncp-daemon} can be run as @command{inetd}-service.
493 @end itemize
494
495 @node Release 3.3
496 @section Release 3.3
497 @itemize
498
499 @item
500 @command{nncp-daemon}, @command{nncp-call}, @command{nncp-caller} check
501 if @file{.seen} exists and treat it like file was already downloaded.
502 Possibly it was transferred out-of-bound and remote side needs to be
503 notifier about that.
504
505 @item
506 If higher priority packet is spooled, then @command{nncp-daemon} will
507 queue its sending first, interrupting lower priority transmissions.
508
509 @item
510 Simple packet rate limiter added to online-related tools
511 (@command{nncp-daemon}, @command{nncp-call}, @command{nncp-caller}).
512
513 @item
514 Ability to specify niceness with symbolic notation:
515 @verb{|NORMAL|}, @verb{|BULK+10|}, @verb{|PRIORITY-5|}, etc.
516
517 @item
518 Changed default niceness levels:
519 for @command{nncp-exec} from 64 to 96,
520 for @command{nncp-freq} from 64 to 160,
521 for @command{nncp-file} from 196 to 224.
522
523 @end itemize
524
525 @node Release 3.2
526 @section Release 3.2
527 @itemize
528 @item
529 @strong{Incompatible} @emph{bundle} archive format changes and
530 @command{nncp-bundle} workability with Go 1.10+. Bundles must be
531 valid tar archives, but Go 1.9 made them invalid because of long paths
532 inside. NNCP accidentally was dependant on that bug. Explicit adding of
533 @file{NNCP/} directory in archive restores workability with valid tar
534 archives.
535 @end itemize
536
537 @node Release 3.1
538 @section Release 3.1
539 @itemize
540 @item
541 Ability to disable relaying at all using @verb{|-via -|} command line option.
542 @end itemize
543
544 @node Release 3.0
545 @section Release 3.0
546 @itemize
547
548 @item
549 @strong{Incompatible} plain packet format changes. Older versions are
550 not supported.
551
552 @item
553 Ability to queue remote command execution, by configuring @option{exec}
554 option in configuration file and using @command{nncp-exec} command:
555     @itemize
556     @item
557     @command{nncp-mail} command is replaced with more flexible
558     @command{nncp-exec}. Instead of @verb{|nncp-mail NODE RECIPIENT|}
559     you must use @verb{|nncp-exec NODE sendmail RECIPIENT|}.
560     @item
561     @option{sendmail} configuration file option is replaced with
562     @option{exec}. @verb{|sendmail: [...]|} must be replaced with
563     @verb{|exec: sendmail: [...]|}.
564     @end itemize
565
566 @item
567 Ability to override @option{via} configuration option for destination
568 node via @option{-via} command line option for following commands:
569 @command{nncp-file}, @command{nncp-freq}, @command{nncp-exec}.
570
571 @item
572 Chunked files, having size less than specified chunk size, will be sent
573 as an ordinary single file.
574
575 @item
576 Exec commands are invoked with additional @env{NNCP_NICE} and
577 @env{NNCP_SELF} environment variables.
578
579 @item
580 Files, that are sent as a reply to freq, have niceness level taken from
581 the freq packet. You can set desired niceness during @command{nncp-freq}
582 invocation using @option{-replynice} option.
583
584 @item
585 @command{nncp-toss} command can ignore specified packet types during
586 processing: @option{-nofile}, @option{-nofreq}, @option{-noexec},
587 @option{-notrns}.
588
589 @item
590 @command{nncp-file} command uses
591 @option{FreqMinSize}/@option{FreqChunked} configuration file options
592 for @option{-minsize}/@option{-chunked} by default. You can turn this
593 off by specifying zero value.
594
595 @end itemize
596
597 @node Release 2.0
598 @section Release 2.0
599 @itemize
600
601 @item
602 @strong{Incompatible} encrypted/eblob packet format changes. Older
603 versions are not supported.
604
605 @item
606 Twofish encryption algorithm is replaced with ChaCha20. It is much more
607 faster. One cryptographic primitive less.
608
609 @item
610 HKDF-BLAKE2b-256 KDF algorithm is replaced with BLAKE2Xb XOF. Yet
611 another cryptographic primitive less (assuming that BLAKE2X is nearly
612 identical to BLAKE2).
613
614 @end itemize
615
616 @node Release 1.0
617 @section Release 1.0
618 @itemize
619
620 @item
621 @strong{Incompatible} encrypted packet format changes. Older versions
622 are not supported.
623
624 @item
625 @command{nncp-bundle} command can either create stream of encrypted
626 packets, or digest it. It is useful when dealing with
627 @code{stdin}/@code{stdout} based transmission methods (like writing to
628 CD-ROM without intermediate prepared ISO image and working with tape
629 drives).
630
631 @item
632 @command{nncp-toss} is able to create @file{.seen} files preventing
633 duplicate packets receiving.
634
635 @item
636 Single background checksum verifier worker is allowed in
637 @command{nncp-call}. This is helpful when thousands of small inbound
638 packets could create many goroutines.
639
640 @item
641 Ability to override path to spool directory and logfile through either
642 command line argument, or environment variable.
643
644 @item
645 @command{nncp-rm} is able to delete outbound/inbound, @file{.seen},
646 @file{.part}, @file{.lock} and temporary files.
647
648 @end itemize
649
650 @node Release 0.12
651 @section Release 0.12
652 @itemize
653 @item Sendmail command is called with @env{NNCP_SENDER} environment variable.
654 @end itemize
655
656 @node Release 0.11
657 @section Release 0.11
658 @itemize
659 @item @command{nncp-stat}'s command output is sorted by node name.
660 @end itemize
661
662 @node Release 0.10
663 @section Release 0.10
664 @itemize
665 @item
666 @command{nncp-freq}'s @file{DST} argument is optional now. Last
667 @file{SRC} path's element will be used by default.
668 @end itemize
669
670 @node Release 0.9
671 @section Release 0.9
672 @itemize
673 @item
674 Fix @option{-rx}/@option{-tx} arguments processing in
675 @command{nncp-call} command. They were ignored.
676 @end itemize
677
678 @node Release 0.8
679 @section Release 0.8
680 @itemize
681 @item
682 Little bugfix in @command{nncp-file} command, where @option{-minsize}
683 option for unchunked transfer was not in KiBs, but in bytes.
684 @end itemize
685
686 @node Release 0.7
687 @section Release 0.7
688 @itemize
689
690 @item
691 Ability to feed @command{nncp-file} from @code{stdin}, that uses an
692 encrypted temporary file for that.
693
694 @item
695 Chunked files transmission appeared with corresponding
696 @command{nncp-reass} command and @option{freqchunked} configuration file
697 entry. Useful for transferring big files over small storage devices.
698
699 @item
700 @option{freqminsize} configuration file option, analogue to
701 @option{-minsize} one.
702
703 @item
704 @command{nncp-xfer}'s @option{-force} option is renamed to
705 @option{-mkdir} for clarity.
706
707 @item
708 @option{-minsize} option is specified in KiBs, not bytes, for
709 convenience.
710
711 @item
712 @command{nncp-newcfg} command is renamed to @command{nncp-cfgnew},
713 and @command{nncp-mincfg} to @command{nncp-cfgmin} -- now they have
714 common prefix and are grouped together for convenience.
715
716 @item
717 @command{nncp-cfgenc} command appeared, allowing configuration file
718 encryption/decryption, for keeping it safe without any either OpenPGP or
719 similar tools usage.
720
721 @item
722 Cryptographic libraries (dependencies) are updated.
723
724 @end itemize
725
726 @node Release 0.6
727 @section Release 0.6
728 @itemize
729 @item Small @command{nncp-rm} command appeared.
730 @item Cryptographic libraries (dependencies) are updated.
731 @end itemize
732
733 @node Release 0.5
734 @section Release 0.5
735 @itemize
736 @item
737 Trivial small fix in default niceness level of @command{nncp-file}
738 and @command{nncp-freq} commands.
739 @end itemize
740
741 @node Release 0.4
742 @section Release 0.4
743 @itemize
744
745 @item
746 Small fix in @command{nncp-call}, @command{nncp-caller},
747 @command{nncp-daemon}: they can segmentation fail sometimes (no data is
748 lost).
749
750 @item
751 @command{nncp-newnode} renamed to @command{nncp-newcfg} -- it is shorter
752 and more convenient to use.
753
754 @item
755 @command{nncp-mincfg} command appeared: helper allowing to create
756 minimalistic stripped down configuration file without private keys, that
757 is useful during @command{nncp-xfer} usage.
758
759 @end itemize
760
761 @node Release 0.3
762 @section Release 0.3
763 @itemize
764 @item Fixed compatibility with Go 1.6.
765 @end itemize
766
767 @node Release 0.2
768 @section Release 0.2
769 @itemize
770
771 @item
772 @strong{Incompatible} packet's format change (magic number is changed
773 too): size field is encrypted and is not send in plaintext anymore.
774
775 @item
776 @option{-minsize} option gives ability to automatically pad outgoing
777 packets to specified minimal size.
778
779 @item
780 @command{nncp-daemon} and @command{nncp-call}/@command{nncp-caller}
781 always check new @emph{tx} packets appearance in the background while
782 connected. Remote side is immediately notified.
783
784 @item
785 @option{-onlinedeadline} option gives ability to configure timeout of
786 inactivity of online connection, when it could be disconnected. It could
787 be used to keep connection alive for a long time.
788
789 @item
790 @option{-maxonlinetime} option gives ability to set maximal allowable
791 online connection aliveness time.
792
793 @item
794 @command{nncp-caller} command appeared: cron-ed TCP daemon caller.
795
796 @item
797 @command{nncp-pkt} command can decompress the data.
798
799 @end itemize