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