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