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