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