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