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