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