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