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