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