4 See also this page @ref{Новости, on russian}.
11 Progress messages contain prefix, describing the running action.
14 Fixed not occurring handshake messages padding.
19 @section Release 5.2.1
23 Fixed SP protocol error handling, sometimes causing program panic.
28 @section Release 5.2.0
32 Most commands by default show oneline operations progress.
33 @option{-progress}, @option{-noprogress} command line options,
34 @option{noprogress} configuration file option appeared.
37 Fixed incorrect @command{nncp-check} command return code, that returned
38 bad code when everything is good.
41 Free disk space check during @command{nncp-bundle -rx} call.
46 @section Release 5.1.2
50 @strong{Critical} vulnerability: remote peers authentication could lead
51 to incorrect identification of remote side, allowing foreign encrypted
55 Bugfix: private and public Noise keys were swapped in newly created
56 configuration files, that lead to inability to authenticate online peers.
59 Explicit directories fsync-ing for guaranteed files renaming.
64 @section Release 5.1.1
68 Fixed workability of @command{nncp-file} with @option{-chunked 0} option.
73 @section Release 5.1.0
77 @command{nncp-file} can send directories, automatically creating pax
81 Free disk space is checked during outbound packets creation.
84 @option{freq}, @option{freqminsize}, @option{freqchunked} configuration
85 file options replaced with the structure:
86 @option{freq: @{path: ..., minsize: ..., chunked: ...@}}.
89 Added @option{freq.maxsize} configuration file option, forbidding of
90 freq sending larger than specified size.
93 Ability to notify about successfully executed commands (exec) with
94 @option{notify.exec} configuration file option.
99 @section Release 5.0.0
103 @strong{Incompatible} configuration file format change: YAML is
104 replaced with Hjson, due to its simplicity, without noticeable lack
105 of either functionality or convenience.
108 @strong{Incompatible} plain packet format changes. Older versions are
109 not supported. @code{zlib} compression is replaced with
110 @code{Zstandard}, due to its speed and efficiency, despite library
111 version is not mature enough.
114 Ability to call remote nodes via pipe call of external command, not only
118 @command{nncp-cfgnew} generates configuration file with many
119 comments. @option{-nocomments} option can be used for an old
123 Duplicate filenames have @file{.CTR} suffix, instead of @file{CTR}, to
124 avoid possible collisions with @file{.nncp.chunkCTR}.
127 Ability to override process umask through configuration file option.
130 Files and directories are created with 666/777 permissions by default,
131 allowing control with @command{umask}.
134 Updated dependencies.
137 Full usage of go modules for dependencies management
138 (@code{go.cypherpunks.ru/nncp/v5} namespace is used).
141 Forbid any later GNU GPL version autousage
142 (project's licence now is GNU GPLv3-only).
149 @item Workability on GNU/Linux systems and Go 1.10 is fixed.
157 @strong{Incompatible} encrypted and eblob packet format change: AEAD
158 encryption mode with 128 KiB blocks is used now, because previously
159 @command{nncp-toss} did not verify encrypted packet's MAC before feeding
160 decrypted data to external command. Older versions are not supported.
163 Available free space checking before copying in @command{nncp-xfer},
164 @command{nncp-daemon}, @command{nncp-call(er)}.
167 @command{nncp-call} has ability only to list packets on remote node,
168 without their transmission.
171 @command{nncp-call} has ability to transfer only specified packets.
174 Workability of @option{xxrate} preference in @option{calls}
175 configuration file section.
178 Dependant libraries are updated.
184 Begin using of @code{go.mod} subsystem.
191 @item @command{nncp-daemon} can be run as @command{inetd}-service.
199 @command{nncp-daemon}, @command{nncp-call}, @command{nncp-caller} check
200 if @file{.seen} exists and treat it like file was already downloaded.
201 Possibly it was transferred out-of-bound and remote side needs to be
205 If higher priority packet is spooled, then @command{nncp-daemon} will
206 queue its sending first, interrupting lower priority transmissions.
209 Simple packet rate limiter added to online-related tools
210 (@command{nncp-daemon}, @command{nncp-call}, @command{nncp-caller}).
213 Ability to specify niceness with symbolic notation:
214 @verb{|NORMAL|}, @verb{|BULK+10|}, @verb{|PRIORITY-5|}, etc.
217 Changed default niceness levels:
218 for @command{nncp-exec} from 64 to 96,
219 for @command{nncp-freq} from 64 to 160,
220 for @command{nncp-file} from 196 to 224.
228 @strong{Incompatible} @emph{bundle} archive format changes and
229 @command{nncp-bundle} workability with Go 1.10+. Bundles must be
230 valid tar archives, but Go 1.9 made them invalid because of long paths
231 inside. NNCP accidentally was dependant on that bug. Explicit adding of
232 @file{NNCP/} directory in archive restores workability with valid tar
240 Ability to disable relaying at all using @verb{|-via -|} command line option.
248 @strong{Incompatible} plain packet format changes. Older versions are
252 Ability to queue remote command execution, by configuring @option{exec}
253 option in configuration file and using @command{nncp-exec} command:
256 @command{nncp-mail} command is replaced with more flexible
257 @command{nncp-exec}. Instead of @verb{|nncp-mail NODE RECIPIENT|}
258 you must use @verb{|nncp-exec NODE sendmail RECIPIENT|}.
260 @option{sendmail} configuration file option is replaced with
261 @option{exec}. @verb{|sendmail: [...]|} must be replaced with
262 @verb{|exec: sendmail: [...]|}.
266 Ability to override @option{via} configuration option for destination
267 node via @option{-via} command line option for following commands:
268 @command{nncp-file}, @command{nncp-freq}, @command{nncp-exec}.
271 Chunked files, having size less than specified chunk size, will be sent
272 as an ordinary single file.
275 Exec commands are invoked with additional @env{NNCP_NICE} and
276 @env{NNCP_SELF} environment variables.
279 Files, that are sent as a reply to freq, have niceness level taken from
280 the freq packet. You can set desired niceness during @command{nncp-freq}
281 invocation using @option{-replynice} option.
284 @command{nncp-toss} command can ignore specified packet types during
285 processing: @option{-nofile}, @option{-nofreq}, @option{-noexec},
289 @command{nncp-file} command uses
290 @option{FreqMinSize}/@option{FreqChunked} configuration file options
291 for @option{-minsize}/@option{-chunked} by default. You can turn this
292 off by specifying zero value.
301 @strong{Incompatible} encrypted/eblob packet format changes. Older
302 versions are not supported.
305 Twofish encryption algorithm is replaced with ChaCha20. It is much more
306 faster. One cryptographic primitive less.
309 HKDF-BLAKE2b-256 KDF algorithm is replaced with BLAKE2Xb XOF. Yet
310 another cryptographic primitive less (assuming that BLAKE2X is nearly
311 identical to BLAKE2).
320 @strong{Incompatible} encrypted packet format changes. Older versions
324 @command{nncp-bundle} command can either create stream of encrypted
325 packets, or digest it. It is useful when dealing with stdin/stdout based
326 transmission methods (like writing to CD-ROM without intermediate
327 prepared ISO image and working with tape drives).
330 @command{nncp-toss} is able to create @file{.seen} files preventing
331 duplicate packets receiving.
334 Single background checksum verifier worker is allowed in
335 @command{nncp-call}. This is helpful when thousands of small inbound
336 packets could create many goroutines.
339 Ability to override path to spool directory and logfile through either
340 command line argument, or environment variable.
343 @command{nncp-rm} is able to delete outbound/inbound, @file{.seen},
344 @file{.part}, @file{.lock} and temporary files.
349 @section Release 0.12
351 @item Sendmail command is called with @env{NNCP_SENDER} environment variable.
355 @section Release 0.11
357 @item @command{nncp-stat}'s command output is sorted by node name.
361 @section Release 0.10
364 @command{nncp-freq}'s @file{DST} argument is optional now. Last
365 @file{SRC} path's element will be used by default.
372 Fix @option{-rx}/@option{-tx} arguments processing in
373 @command{nncp-call} command. They were ignored.
380 Little bugfix in @command{nncp-file} command, where @option{-minsize}
381 option for unchunked transfer was not in KiBs, but in bytes.
389 Ability to feed @command{nncp-file} from stdin, that uses an encrypted
390 temporary file for that.
393 Chunked files transmission appeared with corresponding
394 @command{nncp-reass} command and @option{freqchunked} configuration file
395 entry. Useful for transferring big files over small storage devices.
398 @option{freqminsize} configuration file option, analogue to
399 @option{-minsize} one.
402 @command{nncp-xfer}'s @option{-force} option is renamed to
403 @option{-mkdir} for clarity.
406 @option{-minsize} option is specified in KiBs, not bytes, for
410 @command{nncp-newcfg} command is renamed to @command{nncp-cfgnew},
411 and @command{nncp-mincfg} to @command{nncp-cfgmin} -- now they have
412 common prefix and are grouped together for convenience.
415 @command{nncp-cfgenc} command appeared, allowing configuration file
416 encryption/decryption, for keeping it safe without any either OpenPGP or
420 Cryptographic libraries (dependencies) are updated.
427 @item Small @command{nncp-rm} command appeared.
428 @item Cryptographic libraries (dependencies) are updated.
435 Trivial small fix in default niceness level of @command{nncp-file}
436 and @command{nncp-freq} commands.
444 Small fix in @command{nncp-call}, @command{nncp-caller},
445 @command{nncp-daemon}: they can segmentation fail sometimes (no data is
449 @command{nncp-newnode} renamed to @command{nncp-newcfg} -- it is shorter
450 and more convenient to use.
453 @command{nncp-mincfg} command appeared: helper allowing to create
454 minimalistic stripped down configuration file without private keys, that
455 is useful during @command{nncp-xfer} usage.
462 @item Fixed compatibility with Go 1.6.
470 @strong{Incompatible} packet's format change (magic number is changed
471 too): size field is encrypted and is not send in plaintext anymore.
474 @option{-minsize} option gives ability to automatically pad outgoing
475 packets to specified minimal size.
478 @command{nncp-daemon} and @command{nncp-call}/@command{nncp-caller}
479 always check new @emph{tx} packets appearance in the background while
480 connected. Remote side is immediately notified.
483 @option{-onlinedeadline} option gives ability to configure timeout of
484 inactivity of online connection, when it could be disconnected. It could
485 be used to keep connection alive for a long time.
488 @option{-maxonlinetime} option gives ability to set maximal allowable
489 online connection aliveness time.
492 @command{nncp-caller} command appeared: cron-ed TCP daemon caller.
495 @command{nncp-pkt} command can decompress the data.