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