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