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