4 See also this page @ref{Новости, on russian}.
11 Optimization: most commands do not keep opened file descriptors now.
12 Previously you can exceed maximal number of opened files if you have got
13 many packets in the spool directory.
18 @section Release 6.0.0
22 Log uses human readable and easy machine parseable
23 @url{https://www.gnu.org/software/recutils/, recfile} format for the
24 records, instead of structured RFC 3339 lines. Old logs are not readable
25 by @command{nncp-log} anymore.
28 @option{-autotoss*} option workability with @command{nncp-daemon}'s
32 Call's @option{when-tx-exists} allows to make a call only when outbound
33 packets exists. Combined with seconds-aware cron expression that can be
34 used as some kind of auto dialler.
37 @command{nncp-cronexpr} command allows you to check validity and
38 expectations of specified cron expression.
43 @section Release 5.6.0
47 @option{-autotoss*} option runs tosser not after the call, but every
48 second while it is active.
51 @option{autotoss}, @option{autotoss-doseen},
52 @option{autotoss-nofile}, @option{autotoss-nofreq},
53 @option{autotoss-noexec}, @option{autotoss-notrns} options available in
54 @option{calls} configuration section. You can configure per-call
55 automatic tosser options.
58 Use vendoring, instead of @env{GOPATH} overriding during tarball
59 installation, because current minimal Go's version is 1.12 and it
65 @section Release 5.5.1
69 Respect for @env{BINDIR}, @env{INFODIR} and @env{DOCDIR} environment
70 variables in @file{config} during installation.
75 @section Release 5.5.0
79 Bugfixes in @command{nncp-call(er)}/@command{nncp-daemon},
80 @command{nncp-bundle} and @command{nncp-stat}.
83 @command{nncp-rm} has @option{-dryrun} and @option{-older} options now.
86 @command{nncp-exec} has @option{-use-tmp} and @option{-nocompress}
87 options now. Uncompressed packets are not compatible with previous NNCP
91 @command{nncp-call}, @command{nncp-caller} and @command{nncp-daemon} commands
92 have @option{-autotoss*} options for running tosser after call is ended.
95 Updated dependencies. Minimal required Go version is 1.12.
100 @section Release 5.4.1
104 Fixed @code{SENDMAIL} variable usage during the build.
109 @section Release 5.4.0
113 Updated dependencies.
116 Build system is moved from Makefiles to @url{http://cr.yp.to/redo.html, redo}.
117 This should not influence package maintainers, because minimal @command{redo}
118 implementation is included in tarball.
123 @section Release 5.3.3
127 More various error checks.
130 Updated dependencies.
135 @section Release 5.3.2
139 Fixed incorrect logic of @option{onlinedeadline} timeout, where
140 connection won't take into account incoming packets events and will
141 forcefully disconnect.
146 @section Release 5.3.1
150 Fixed @option{onlinedeadline} workability with call addresses that use
151 external commands (@verb{#"|somecmd"#}).
154 @command{nncp-stat} has @option{-pkt} option displaying information
155 about each packet in the spool.
160 @section Release 5.3.0
164 Progress messages contain prefix, describing the running action.
167 Fixed not occurring handshake messages padding.
170 Finish all SP protocol related goroutines, less memory leak.
173 SP protocol generates less socket write calls, thus generating less TCP
177 Check @option{onlinedeadline} and @option{maxonlinetime} options every
178 second, independently from socket reads (up to 10 seconds).
181 Once per minute, if no other traffic exists, PING packets are sent in
182 SP-connection. That allows faster determining of connection unworkability.
185 @command{nncp-toss} uses lock-file to prevent simultaneous tossing.
190 @section Release 5.2.1
194 Fixed SP protocol error handling, sometimes causing program panic.
199 @section Release 5.2.0
203 Most commands by default show oneline operations progress.
204 @option{-progress}, @option{-noprogress} command line options,
205 @option{noprogress} configuration file option appeared.
208 Fixed incorrect @command{nncp-check} command return code, that returned
209 bad code when everything is good.
212 Free disk space check during @command{nncp-bundle -rx} call.
217 @section Release 5.1.2
221 @strong{Critical} vulnerability: remote peers authentication could lead
222 to incorrect identification of remote side, allowing foreign encrypted
226 Bugfix: private and public Noise keys were swapped in newly created
227 configuration files, that lead to inability to authenticate online peers.
230 Explicit directories fsync-ing for guaranteed files renaming.
235 @section Release 5.1.1
239 Fixed workability of @command{nncp-file} with @option{-chunked 0} option.
244 @section Release 5.1.0
248 @command{nncp-file} can send directories, automatically creating pax
252 Free disk space is checked during outbound packets creation.
255 @option{freq}, @option{freqminsize}, @option{freqchunked} configuration
256 file options replaced with the structure:
257 @option{freq: @{path: ..., minsize: ..., chunked: ...@}}.
260 Added @option{freq.maxsize} configuration file option, forbidding of
261 freq sending larger than specified size.
264 Ability to notify about successfully executed commands (exec) with
265 @option{notify.exec} configuration file option.
270 @section Release 5.0.0
274 @strong{Incompatible} configuration file format change: YAML is
275 replaced with Hjson, due to its simplicity, without noticeable lack
276 of either functionality or convenience.
279 @strong{Incompatible} plain packet format changes. Older versions are
280 not supported. @code{zlib} compression is replaced with
281 @code{Zstandard}, due to its speed and efficiency, despite library
282 version is not mature enough.
285 Ability to call remote nodes via pipe call of external command, not only
289 @command{nncp-cfgnew} generates configuration file with many
290 comments. @option{-nocomments} option can be used for an old
294 Duplicate filenames have @file{.CTR} suffix, instead of @file{CTR}, to
295 avoid possible collisions with @file{.nncp.chunkCTR}.
298 Ability to override process umask through configuration file option.
301 Files and directories are created with 666/777 permissions by default,
302 allowing control with @command{umask}.
305 Updated dependencies.
308 Full usage of go modules for dependencies management
309 (@code{go.cypherpunks.ru/nncp/v5} namespace is used).
312 Forbid any later GNU GPL version autousage
313 (project's licence now is GNU GPLv3-only).
320 @item Workability on GNU/Linux systems and Go 1.10 is fixed.
328 @strong{Incompatible} encrypted and eblob packet format change: AEAD
329 encryption mode with 128 KiB blocks is used now, because previously
330 @command{nncp-toss} did not verify encrypted packet's MAC before feeding
331 decrypted data to external command. Older versions are not supported.
334 Available free space checking before copying in @command{nncp-xfer},
335 @command{nncp-daemon}, @command{nncp-call(er)}.
338 @command{nncp-call} has ability only to list packets on remote node,
339 without their transmission.
342 @command{nncp-call} has ability to transfer only specified packets.
345 Workability of @option{xxrate} preference in @option{calls}
346 configuration file section.
349 Dependant libraries are updated.
355 Begin using of @code{go.mod} subsystem.
362 @item @command{nncp-daemon} can be run as @command{inetd}-service.
370 @command{nncp-daemon}, @command{nncp-call}, @command{nncp-caller} check
371 if @file{.seen} exists and treat it like file was already downloaded.
372 Possibly it was transferred out-of-bound and remote side needs to be
376 If higher priority packet is spooled, then @command{nncp-daemon} will
377 queue its sending first, interrupting lower priority transmissions.
380 Simple packet rate limiter added to online-related tools
381 (@command{nncp-daemon}, @command{nncp-call}, @command{nncp-caller}).
384 Ability to specify niceness with symbolic notation:
385 @verb{|NORMAL|}, @verb{|BULK+10|}, @verb{|PRIORITY-5|}, etc.
388 Changed default niceness levels:
389 for @command{nncp-exec} from 64 to 96,
390 for @command{nncp-freq} from 64 to 160,
391 for @command{nncp-file} from 196 to 224.
399 @strong{Incompatible} @emph{bundle} archive format changes and
400 @command{nncp-bundle} workability with Go 1.10+. Bundles must be
401 valid tar archives, but Go 1.9 made them invalid because of long paths
402 inside. NNCP accidentally was dependant on that bug. Explicit adding of
403 @file{NNCP/} directory in archive restores workability with valid tar
411 Ability to disable relaying at all using @verb{|-via -|} command line option.
419 @strong{Incompatible} plain packet format changes. Older versions are
423 Ability to queue remote command execution, by configuring @option{exec}
424 option in configuration file and using @command{nncp-exec} command:
427 @command{nncp-mail} command is replaced with more flexible
428 @command{nncp-exec}. Instead of @verb{|nncp-mail NODE RECIPIENT|}
429 you must use @verb{|nncp-exec NODE sendmail RECIPIENT|}.
431 @option{sendmail} configuration file option is replaced with
432 @option{exec}. @verb{|sendmail: [...]|} must be replaced with
433 @verb{|exec: sendmail: [...]|}.
437 Ability to override @option{via} configuration option for destination
438 node via @option{-via} command line option for following commands:
439 @command{nncp-file}, @command{nncp-freq}, @command{nncp-exec}.
442 Chunked files, having size less than specified chunk size, will be sent
443 as an ordinary single file.
446 Exec commands are invoked with additional @env{NNCP_NICE} and
447 @env{NNCP_SELF} environment variables.
450 Files, that are sent as a reply to freq, have niceness level taken from
451 the freq packet. You can set desired niceness during @command{nncp-freq}
452 invocation using @option{-replynice} option.
455 @command{nncp-toss} command can ignore specified packet types during
456 processing: @option{-nofile}, @option{-nofreq}, @option{-noexec},
460 @command{nncp-file} command uses
461 @option{FreqMinSize}/@option{FreqChunked} configuration file options
462 for @option{-minsize}/@option{-chunked} by default. You can turn this
463 off by specifying zero value.
472 @strong{Incompatible} encrypted/eblob packet format changes. Older
473 versions are not supported.
476 Twofish encryption algorithm is replaced with ChaCha20. It is much more
477 faster. One cryptographic primitive less.
480 HKDF-BLAKE2b-256 KDF algorithm is replaced with BLAKE2Xb XOF. Yet
481 another cryptographic primitive less (assuming that BLAKE2X is nearly
482 identical to BLAKE2).
491 @strong{Incompatible} encrypted packet format changes. Older versions
495 @command{nncp-bundle} command can either create stream of encrypted
496 packets, or digest it. It is useful when dealing with
497 @code{stdin}/@code{stdout} based transmission methods (like writing to
498 CD-ROM without intermediate prepared ISO image and working with tape
502 @command{nncp-toss} is able to create @file{.seen} files preventing
503 duplicate packets receiving.
506 Single background checksum verifier worker is allowed in
507 @command{nncp-call}. This is helpful when thousands of small inbound
508 packets could create many goroutines.
511 Ability to override path to spool directory and logfile through either
512 command line argument, or environment variable.
515 @command{nncp-rm} is able to delete outbound/inbound, @file{.seen},
516 @file{.part}, @file{.lock} and temporary files.
521 @section Release 0.12
523 @item Sendmail command is called with @env{NNCP_SENDER} environment variable.
527 @section Release 0.11
529 @item @command{nncp-stat}'s command output is sorted by node name.
533 @section Release 0.10
536 @command{nncp-freq}'s @file{DST} argument is optional now. Last
537 @file{SRC} path's element will be used by default.
544 Fix @option{-rx}/@option{-tx} arguments processing in
545 @command{nncp-call} command. They were ignored.
552 Little bugfix in @command{nncp-file} command, where @option{-minsize}
553 option for unchunked transfer was not in KiBs, but in bytes.
561 Ability to feed @command{nncp-file} from @code{stdin}, that uses an
562 encrypted temporary file for that.
565 Chunked files transmission appeared with corresponding
566 @command{nncp-reass} command and @option{freqchunked} configuration file
567 entry. Useful for transferring big files over small storage devices.
570 @option{freqminsize} configuration file option, analogue to
571 @option{-minsize} one.
574 @command{nncp-xfer}'s @option{-force} option is renamed to
575 @option{-mkdir} for clarity.
578 @option{-minsize} option is specified in KiBs, not bytes, for
582 @command{nncp-newcfg} command is renamed to @command{nncp-cfgnew},
583 and @command{nncp-mincfg} to @command{nncp-cfgmin} -- now they have
584 common prefix and are grouped together for convenience.
587 @command{nncp-cfgenc} command appeared, allowing configuration file
588 encryption/decryption, for keeping it safe without any either OpenPGP or
592 Cryptographic libraries (dependencies) are updated.
599 @item Small @command{nncp-rm} command appeared.
600 @item Cryptographic libraries (dependencies) are updated.
607 Trivial small fix in default niceness level of @command{nncp-file}
608 and @command{nncp-freq} commands.
616 Small fix in @command{nncp-call}, @command{nncp-caller},
617 @command{nncp-daemon}: they can segmentation fail sometimes (no data is
621 @command{nncp-newnode} renamed to @command{nncp-newcfg} -- it is shorter
622 and more convenient to use.
625 @command{nncp-mincfg} command appeared: helper allowing to create
626 minimalistic stripped down configuration file without private keys, that
627 is useful during @command{nncp-xfer} usage.
634 @item Fixed compatibility with Go 1.6.
642 @strong{Incompatible} packet's format change (magic number is changed
643 too): size field is encrypted and is not send in plaintext anymore.
646 @option{-minsize} option gives ability to automatically pad outgoing
647 packets to specified minimal size.
650 @command{nncp-daemon} and @command{nncp-call}/@command{nncp-caller}
651 always check new @emph{tx} packets appearance in the background while
652 connected. Remote side is immediately notified.
655 @option{-onlinedeadline} option gives ability to configure timeout of
656 inactivity of online connection, when it could be disconnected. It could
657 be used to keep connection alive for a long time.
660 @option{-maxonlinetime} option gives ability to set maximal allowable
661 online connection aliveness time.
664 @command{nncp-caller} command appeared: cron-ed TCP daemon caller.
667 @command{nncp-pkt} command can decompress the data.