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