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