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