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