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