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