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