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