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