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