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