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