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