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