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