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