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