From 203dfe36da7adf2b3089e4fa4017a67409cbad70 Mon Sep 17 00:00:00 2001 From: Sergey Matveev Date: Sun, 27 Feb 2022 20:22:28 +0300 Subject: [PATCH] Add various documentation indices --- doc/about.texi | 13 ++++++++++ doc/admin.texi | 11 ++++++++ doc/building.texi | 46 +++++++++++++++++++++++++++++++-- doc/bundles.texi | 5 ++++ doc/call.texi | 12 +++++++++ doc/cfg/areas.texi | 2 ++ doc/cfg/dir.texi | 2 ++ doc/cfg/general.texi | 18 +++++++++++++ doc/cfg/index.texi | 6 +++++ doc/cfg/neigh.texi | 14 +++++++++- doc/cfg/notify.texi | 3 +++ doc/cfg/self.texi | 7 +++++ doc/chunked.texi | 4 +++ doc/cmd/index.texi | 4 +++ doc/cmd/nncp-bundle.texi | 1 + doc/cmd/nncp-call.texi | 1 + doc/cmd/nncp-caller.texi | 1 + doc/cmd/nncp-cfgdir.texi | 1 + doc/cmd/nncp-cfgenc.texi | 1 + doc/cmd/nncp-cfgmin.texi | 3 +++ doc/cmd/nncp-cfgnew.texi | 1 + doc/cmd/nncp-check.texi | 1 + doc/cmd/nncp-cronexpr.texi | 1 + doc/cmd/nncp-daemon.texi | 1 + doc/cmd/nncp-exec.texi | 4 +++ doc/cmd/nncp-file.texi | 1 + doc/cmd/nncp-freq.texi | 1 + doc/cmd/nncp-hash.texi | 1 + doc/cmd/nncp-log.texi | 1 + doc/cmd/nncp-pkt.texi | 1 + doc/cmd/nncp-reass.texi | 1 + doc/cmd/nncp-rm.texi | 1 + doc/cmd/nncp-stat.texi | 1 + doc/cmd/nncp-toss.texi | 1 + doc/cmd/nncp-trns.texi | 1 + doc/cmd/nncp-xfer.texi | 1 + doc/comparison.texi | 16 ++++++++++++ doc/contacts.texi | 4 +++ doc/cronexpr.texi | 1 + doc/download.texi | 4 +++ doc/eblob.texi | 5 ++++ doc/index.texi | 7 +++++ doc/indices.texi | 14 ++++++++++ doc/install.texi | 25 +++++++++++++++++- doc/integration/bittorrent.texi | 3 +++ doc/integration/download.texi | 3 +++ doc/integration/exim.texi | 4 +++ doc/integration/feeds.texi | 4 +++ doc/integration/freqindex.texi | 1 + doc/integration/git.texi | 2 ++ doc/integration/index.texi | 1 + doc/integration/multimedia.texi | 4 +++ doc/integration/postfix.texi | 8 ++++++ doc/integration/ppp.texi | 3 +++ doc/integration/warc.texi | 3 +++ doc/integrity.texi | 6 +++++ doc/log.texi | 4 +++ doc/mcd.texi | 2 ++ doc/mirrors.texi | 5 ++++ doc/mth.texi | 4 +++ doc/multicast.texi | 2 ++ doc/news.texi | 1 + doc/niceness.texi | 6 +++++ doc/pkt/area.texi | 1 + doc/pkt/encrypted.texi | 3 +++ doc/pkt/index.texi | 2 ++ doc/pkt/plain.texi | 1 + doc/sources.texi | 3 +++ doc/sp.texi | 12 +++++++++ doc/spool.texi | 9 +++++++ doc/thanks.texi | 1 + doc/usecases/airgap.texi | 1 + doc/usecases/index.texi | 1 + doc/usecases/nolink.texi | 2 ++ doc/usecases/pop.texi | 2 ++ doc/usecases/qos.texi | 3 +++ doc/usecases/satellite.texi | 1 + doc/usecases/spy.texi | 1 + doc/usecases/unreliable.texi | 1 + doc/yggdrasil.texi | 9 +++++-- 80 files changed, 363 insertions(+), 6 deletions(-) create mode 100644 doc/indices.texi diff --git a/doc/about.texi b/doc/about.texi index f752931..09f245c 100644 --- a/doc/about.texi +++ b/doc/about.texi @@ -1,8 +1,18 @@ +@cindex about @strong{NNCP} (Node to Node copy) is a collection of utilities simplifying secure store-and-forward files, mail and command exchanging. See also this page @ref{Об утилитах, on russian}. +@cindex F2F +@cindex friend-to-friend +@cindex E2E +@cindex end-to-end +@cindex darknet +@cindex DTN +@cindex delay tolerant +@cindex dead drop +@cindex onion encryption This utilities are intended to help build up small size (dozens of nodes) ad-hoc @url{https://en.wikipedia.org/wiki/Friend-to-friend, friend-to-friend} (F2F) statically routed @@ -28,6 +38,9 @@ transmission exists. Look for possible @ref{Use cases, use cases}! +@cindex GPL +@cindex free software +@cindex licence NNCP is @url{https://www.gnu.org/philosophy/pragmatic.html, copylefted} @url{https://www.gnu.org/philosophy/free-sw.html, free software} licenced under @url{https://www.gnu.org/licenses/gpl-3.0.html, GNU GPLv3}. diff --git a/doc/admin.texi b/doc/admin.texi index 11c26ec..e17c136 100644 --- a/doc/admin.texi +++ b/doc/admin.texi @@ -1,4 +1,5 @@ @node Administration +@cindex administration @unnumbered Administration NNCP uses following files/directories you should be aware of: @@ -29,6 +30,9 @@ NNCP uses following files/directories you should be aware of: All of that cleaning tasks can be done with @ref{nncp-rm} utility. + @cindex shared spool + @cindex setgid + @pindex umask @anchor{Shared spool} If you want to share single spool directory with multiple grouped Unix users, then you can @command{setgid} it and assure that umask @@ -47,6 +51,7 @@ $ echo 'umask: "007"' >> /usr/local/etc/nncp.hjson @ref{Log} file, for example @file{/var/spool/nncp/log}. It should be rotated. Choose you own preferable way to do it. + @pindex newsyslog Example @url{https://www.newsyslog.org/manual.html, newsyslog}'s entry: @example /var/spool/nncp/log 644 7 100 * BCYN @@ -62,6 +67,9 @@ $ echo 'umask: "007"' >> /usr/local/etc/nncp.hjson */1 * * * * nncp-reass -all -noprogress @end example +@pindex daemontools +@pindex supervise +@pindex multilog @item Possibly long running @ref{nncp-daemon}, @ref{nncp-caller}, @ref{nncp-toss}, @ref{nncp-check} daemons. As all software, they can @@ -90,6 +98,7 @@ EOF # mv /var/service/.nncp-toss /var/service/nncp-toss @end example +@pindex inetd @item @ref{nncp-daemon} can also be run as @url{https://en.wikipedia.org/wiki/Inetd, inetd} service on UUCP's port: @@ -98,6 +107,8 @@ EOF uucp stream tcp6 nowait nncpuser /usr/local/bin/nncp-daemon nncp-daemon -quiet -ucspi @end example +@cindex UCSPI +@pindex tcpserver @item Or it can be also run as a @command{daemontools} daemon under @url{http://cr.yp.to/ucspi-tcp.html, UCSPI-TCP}. In the example diff --git a/doc/building.texi b/doc/building.texi index 03eda87..b788da6 100644 --- a/doc/building.texi +++ b/doc/building.texi @@ -1,4 +1,5 @@ @node Build-instructions +@cindex building @section Build instructions Make sure that Go is installed. For example to install it from packages: @@ -19,12 +20,19 @@ $ cd nncp-@value{VERSION} $ redo all @end example +@pindex info After that you should get various @command{bin/nncp-*} binaries and @command{bin/hjson-cli} command (only for your convenience, not necessary installation). For example, documentation for @command{nncp-bundle} command can be get with @command{info doc/nncp.info -n nncp-bundle}. +@pindex redo +@pindex apenwarr/redo +@pindex apenwarr/do +@pindex redo-c +@pindex baredo +@pindex goredo It uses @url{http://cr.yp.to/redo.html, redo} build system for that examples. You can use one of its various implementations, or at least minimalistic POSIX shell @command{contrib/do} (just replace @@ -35,13 +43,46 @@ in tarball. Following ones are tested to work with: from that project), @url{https://github.com/leahneukirchen/redo-c, redo-c}, @url{https://github.com/gotroyb127/baredo, baredo}. -There is @command{install} target respecting @env{$DESTDIR}. It will -install binaries and info-documentation: +@vindex PREFIX +@vindex DESTDIR +@vindex GO +@vindex MAKEINFO +@vindex PLANTUML +@vindex PREFIX +@vindex SENDMAIL +@vindex CFGPATH +@vindex SPOOLPATH +@vindex LOGPATH +@vindex BINDIR +@vindex INFODIR +@vindex DOCDIR +@file{config} file contains some environment variables that are +respected during installation: +@env{$PREFIX}, +@env{$DESTDIR}, +@env{$GO}, +@env{$MAKEINFO}, +@env{$PLANTUML}, +@env{$PREFIX}, +@env{$SENDMAIL}, +@env{$CFGPATH}, +@env{$SPOOLPATH}, +@env{$LOGPATH}, +@env{$BINDIR}, +@env{$INFODIR}, +@env{$DOCDIR}. + +There is @command{install} target for binaries and info-documentation +installation: @example # PREFIX=/usr/local redo install @end example +@vindex nofsnotify +@cindex kqueue +@cindex epoll +@vindex GO_CFLAGS NNCP depends on @code{github.com/fsnotify/fsnotify} library, that is solely relies on OS-specific mechanisms. There is possibility that you have either broken or unsupported ones. You can still build NNCP with @@ -52,4 +93,5 @@ usage at all: $ GO_CFLAGS="-tags nofsnotify" redo ... @end example +@vindex noyggdrasil You can also disable Yggdrasil support with @code{-tags noyggdrasil}. diff --git a/doc/bundles.texi b/doc/bundles.texi index 7bbc85a..6e3e92e 100644 --- a/doc/bundles.texi +++ b/doc/bundles.texi @@ -1,4 +1,7 @@ @node Bundles +@cindex bundles +@cindex tapes +@cindex streaming media @unnumbered Bundles Usual @ref{nncp-xfer} command requires filesystem it can operate on. @@ -48,6 +51,8 @@ can contain mix of various recipients. @end itemize +@pindex pax +@pindex tar Technically bundle is valid POSIX.1-2001 @url{https://pubs.opengroup.org/onlinepubs/9699919799/utilities/pax.html#tag_20_92_13_01, pax archive} with directory/files hierarchy identical to that is used in diff --git a/doc/call.texi b/doc/call.texi index d1e5d99..388f041 100644 --- a/doc/call.texi +++ b/doc/call.texi @@ -1,4 +1,6 @@ @node Call +@cindex call +@vindex calls @unnumbered Call configuration Call is a rule when and how node can be called by @ref{nncp-caller}. @@ -51,17 +53,23 @@ It contains the following fields (only @emph{cron} is required): @table @emph +@vindex cron @item cron @include cronexpr.texi +@vindex nice @item nice Optional. Use that @ref{Niceness, niceness} during the call (255 is used otherwise). +@vindex xx +@vindex rx +@vindex tx @item xx Optional. Either @verb{|rx|} or @verb{|tx|}. Tells only to either to receive or to transmit data during that call. +@vindex addr @item addr Optional. Call only that address, instead of trying all from @ref{CfgAddrs, @emph{addrs}} configuration option. It can be either key @@ -79,11 +87,13 @@ configuration option when calling. Optional. Override @ref{CfgMaxOnlineTime, @emph{maxonlinetime}} configuration option when calling. +@vindex autotoss @item autotoss, -doseen, -nofile, -nofreq, -noexec, -notrns Optionally enable auto tossing: run tosser on node's spool every second during the call. You can control either are @file{seen/} files must be created, or skip any kind of packet processing. +@vindex when-tx-exists @item when-tx-exists Call only if packets for sending exists. The check of outbound packets existence is performed @strong{every} time we are going to make a call, @@ -91,6 +101,7 @@ but @emph{when-tx-exists} does not influence @emph{cron}. When @emph{cron} configuration decides that it is time to make a call, with @emph{when-tx-exists} option it checks packets existence first. +@vindex nock @anchor{CfgNoCK} @item nock NoCK (no-checksumming) tells not to do checksumming of received files, @@ -101,6 +112,7 @@ received one, but just sequential writing of the file. Pay attention that you have to make a call to remote node after checksumming is done, to send notification about successful packet reception. +@vindex mcd-ignore @anchor{CfgMCDIgnore} @item mcd-ignore Ignore @ref{MCD} announcements: do not add MCD addresses for possible diff --git a/doc/cfg/areas.texi b/doc/cfg/areas.texi index bc21008..95a9f98 100644 --- a/doc/cfg/areas.texi +++ b/doc/cfg/areas.texi @@ -1,4 +1,5 @@ @node CfgAreas +@vindex areas @section Configuration areas options @ref{Multicast} areas configuration only used with multicast packets. @@ -36,6 +37,7 @@ Each key is human readable multicast group/area/echo name. The only required field is the @code{id}. You can not process multicast packets that has unknown area identification. +@vindex subs @code{subs} contains a list of recipients you must relay incoming multicast packet on. diff --git a/doc/cfg/dir.texi b/doc/cfg/dir.texi index 8297925..5796086 100644 --- a/doc/cfg/dir.texi +++ b/doc/cfg/dir.texi @@ -1,4 +1,5 @@ @node Configuration directory +@cindex configuration directory @section Configuration directory Optionally you can convert configuration file to the directory layout @@ -97,6 +98,7 @@ instead of @file{.hjson} file. It will be transparently converted to internal JSON representation. However it can not be encrypted with the @ref{nncp-cfgenc}. +@cindex private keys That layout should be much more machine friendly and scriptable. Each string parameters is stored as a single line plain text file. String arrays are newline-separated plain text files. Dictionaries are diff --git a/doc/cfg/general.texi b/doc/cfg/general.texi index 2575779..a2aed51 100644 --- a/doc/cfg/general.texi +++ b/doc/cfg/general.texi @@ -1,4 +1,5 @@ @node CfgGeneral +@cindex general configuration options @section Configuration general options Those options are in the root of configuration dictionary. @@ -26,8 +27,13 @@ yggdrasil-aliases: { @end verbatim @table @code + +@vindex spool @item spool Absolute path to the @ref{Spool, spool} directory. + +@vindex log +@vindex FD log file descriptor @item log Either: @itemize @@ -35,31 +41,43 @@ Either: @item @code{FD:XXX}, where @code{XXX} is a decimal file descriptor to write records too @end itemize + +@vindex umask @item umask Will force all invoked commands to override their umask to specified octal mask. Useful for using with @ref{Shared spool, shared spool directories}. + +@vindex noprogress @item noprogress When enabled, disables progress showing for many commands by default. You can always force its showing with @option{-progress} command line option anyway. + +@vindex nohdr @anchor{CfgNoHdr} @item nohdr @strong{nohdr} option disables @ref{HdrFile, @file{hdr/}} files usage. + @end table And optional @ref{MCD, MultiCast Discovery} options: @table @code + +@vindex mcd-listen @anchor{CfgMCDListen} @item mcd-listen Specifies list of network interfaces regular expression @ref{nncp-caller} will listen for incoming @ref{MCD} announcements. + +@vindex mcd-send @anchor{CfgMCDSend} @item mcd-send Specifies list of network interfaces regular expressions, and intervals in seconds, where @ref{nncp-daemon} will send @ref{MCD} announcements. @end table +@cindex yggdrasil aliases @anchor{CfgYggdrasilAliases} Optional @ref{Yggdrasil}-related aliases are used for convenience and keeping private keys away being used directly in command line. Each diff --git a/doc/cfg/index.texi b/doc/cfg/index.texi index f9844ea..1b40823 100644 --- a/doc/cfg/index.texi +++ b/doc/cfg/index.texi @@ -1,6 +1,8 @@ @node Configuration +@cindex configuration file @unnumbered Configuration file +@cindex Hjson NNCP uses single file configuration file in @url{https://hjson.org/, Hjson} format (see also section about @ref{Configuration directory, directory layout}) . Initially it is created with @ref{nncp-cfgnew} @@ -30,6 +32,10 @@ neigh: { } @end verbatim +@cindex JSON +@pindex hjson-cli +@pindex gojq +@pindex gjo Do not forget that Hjson can be safely converted to JSON and vice versa (loosing formatting and comments of course). By default @command{hjson-cli} utility from @code{github.com/hjson/hjson-go} is diff --git a/doc/cfg/neigh.texi b/doc/cfg/neigh.texi index a141b77..332c1c7 100644 --- a/doc/cfg/neigh.texi +++ b/doc/cfg/neigh.texi @@ -1,6 +1,8 @@ @node CfgNeigh +@cindex neighbour configuration options @section Configuration neighbour options +@vindex neigh @strong{neigh} section contains all known neighbours information. It always has @strong{self} neighbour that is copy of our node's public data (public keys). It is useful for copy-paste sharing with your @@ -65,8 +67,10 @@ node has the following fields: If present, then node can be online called using @ref{Sync, synchronization protocol}. Contains authentication public key. +@vindex exec +@pindex sendmail @anchor{CfgExec} - @item exec +@item exec Dictionary consisting of handles and corresponding command line arguments. In example above there are @command{sendmail} handles, @command{warcer}, @command{wgeter} and @command{flag} one. Remote @@ -87,11 +91,13 @@ NNCP_NICE=64 \ feeding @verb{|hello world\n|} to that started @command{sendmail} process. +@vindex incoming @anchor{CfgIncoming} @item incoming Full path to directory where all file uploads will be saved. May be omitted to forbid file uploading on that node. +@vindex freq @anchor{CfgFreq} @item freq @table @code @@ -108,6 +114,7 @@ NNCP_NICE=64 \ transmission. @end table +@vindex via @anchor{CfgVia} @item via An array of node identifiers that will be used as a relay to that @@ -116,6 +123,7 @@ NNCP_NICE=64 \ nodes. May be omitted if direct connection exists and no relaying is required. +@vindex addrs @anchor{CfgAddrs} @item addrs Dictionary containing known network addresses of the node. Each key @@ -134,6 +142,8 @@ NNCP_NICE=64 \ May be omitted if either no direct connection exists, or @ref{nncp-call} is used with forced address specifying. +@vindex rxrate +@vindex txrate @anchor{CfgXxRate} @item rxrate/txrate If greater than zero, then at most *rate packets per second will be @@ -141,6 +151,7 @@ NNCP_NICE=64 \ bandwidth traffic shaper: each packet has at most 64 KiB payload size. If omitted -- no rate limits. +@vindex onlinedeadline @anchor{CfgOnlineDeadline} @item onlinedeadline Online connection deadline of nodes inactivity in seconds. It is the @@ -151,6 +162,7 @@ NNCP_NICE=64 \ delays), wait for appearing packets ready to send and notifying remote side about their appearance. +@vindex maxonlinetime @anchor{CfgMaxOnlineTime} @item maxonlinetime If greater than zero, then it is maximal time of single connection. diff --git a/doc/cfg/notify.texi b/doc/cfg/notify.texi index 8badc94..f4f011d 100644 --- a/doc/cfg/notify.texi +++ b/doc/cfg/notify.texi @@ -1,4 +1,7 @@ @node CfgNotify +@cindex email notification +@cindex notification configuration options +@cindex logging handles @section Configuration notification options That section controls what notifications are enabled and how must be diff --git a/doc/cfg/self.texi b/doc/cfg/self.texi index 0528b5a..98eb21f 100644 --- a/doc/cfg/self.texi +++ b/doc/cfg/self.texi @@ -1,10 +1,17 @@ @node CfgSelf +@cindex self-node configuration keypairs @section Configuration self-node keypairs @strong{self} section contains our node's private keypairs. +@vindex ExchPrv +@vindex ExchPub +@vindex SignPrv +@vindex SignPub @strong{exch*} and @strong{sign*} are used during @ref{Encrypted, encrypted} packet creation. +@vindex NoisePrv +@vindex NoisePub @strong{noise*} are used during @ref{Sync, synchronization protocol} working in @ref{nncp-call}, @ref{nncp-caller}, @ref{nncp-daemon}. diff --git a/doc/chunked.texi b/doc/chunked.texi index 67f4259..b73eb92 100644 --- a/doc/chunked.texi +++ b/doc/chunked.texi @@ -1,4 +1,5 @@ @node Chunked +@cindex chunked @unnumbered Chunked files There is ability to transfer huge files with dividing them into smaller @@ -13,6 +14,8 @@ on the destination node. Splitting is done with @ref{nncp-file, nncp-file -chunked} command and reassembling with @ref{nncp-reass} command. +@vindex .nncp.meta +@vindex .nncp.chunk Chunked @file{FILE} produces @file{FILE.nncp.meta}, @file{FILE.nncp.chunk0}, @file{FILE.nncp.chunk1}, @dots{} files. All @file{.nncp.chunkXXX} can be concatenated together to produce original @@ -44,6 +47,7 @@ size and their hash checksums. This is @ref{MTH} checksum of each chunk @end multitable +@cindex ZFS recordsize @anchor{ChunkedZFS} It is strongly advisable to reassemble incoming chunked files on @url{https://en.wikipedia.org/wiki/ZFS, ZFS} dataset with deduplication diff --git a/doc/cmd/index.texi b/doc/cmd/index.texi index 5727db8..b042b5c 100644 --- a/doc/cmd/index.texi +++ b/doc/cmd/index.texi @@ -1,9 +1,11 @@ @node Commands +@cindex commands @unnumbered Commands Nearly all commands have the following common options: @table @option +@vindex NNCPCFG @item -cfg Path to configuration file. May be overridden by @env{$NNCPCFG} environment variable. If file file is an encrypted @ref{EBlob, @@ -24,9 +26,11 @@ Nearly all commands have the following common options: Override @ref{CfgVia, via} configuration option for destination node. Specified nodes must be separated with comma: @verb{|NODE1,NODE2|}. With @verb{|-via -|} you can disable relaying at all. +@vindex NNCPSPOOL @item -spool Override path to spool directory. May be specified by @env{$NNCPSPOOL} environment variable. +@vindex NNCPLOG @item -log Override path to logfile. May be specified by @env{$NNCPLOG} environment variable. diff --git a/doc/cmd/nncp-bundle.texi b/doc/cmd/nncp-bundle.texi index 9db031f..26b8563 100644 --- a/doc/cmd/nncp-bundle.texi +++ b/doc/cmd/nncp-bundle.texi @@ -1,4 +1,5 @@ @node nncp-bundle +@pindex nncp-bundle @section nncp-bundle @example diff --git a/doc/cmd/nncp-call.texi b/doc/cmd/nncp-call.texi index 6c58b5c..28f12f6 100644 --- a/doc/cmd/nncp-call.texi +++ b/doc/cmd/nncp-call.texi @@ -1,4 +1,5 @@ @node nncp-call +@pindex nncp-call @section nncp-call @example diff --git a/doc/cmd/nncp-caller.texi b/doc/cmd/nncp-caller.texi index a4d0dc5..537f153 100644 --- a/doc/cmd/nncp-caller.texi +++ b/doc/cmd/nncp-caller.texi @@ -1,4 +1,5 @@ @node nncp-caller +@pindex nncp-caller @section nncp-caller @example diff --git a/doc/cmd/nncp-cfgdir.texi b/doc/cmd/nncp-cfgdir.texi index c4f96e4..853dd10 100644 --- a/doc/cmd/nncp-cfgdir.texi +++ b/doc/cmd/nncp-cfgdir.texi @@ -1,4 +1,5 @@ @node nncp-cfgdir +@pindex nncp-cfgdir @section nncp-cfgdir @example diff --git a/doc/cmd/nncp-cfgenc.texi b/doc/cmd/nncp-cfgenc.texi index 80fab22..02070c3 100644 --- a/doc/cmd/nncp-cfgenc.texi +++ b/doc/cmd/nncp-cfgenc.texi @@ -1,4 +1,5 @@ @node nncp-cfgenc +@pindex nncp-cfgenc @section nncp-cfgenc @example diff --git a/doc/cmd/nncp-cfgmin.texi b/doc/cmd/nncp-cfgmin.texi index d0125ac..0eadaa4 100644 --- a/doc/cmd/nncp-cfgmin.texi +++ b/doc/cmd/nncp-cfgmin.texi @@ -1,4 +1,7 @@ @node nncp-cfgmin +@cindex stripped configuration +@cindex minimized configuration +@pindex nncp-cfgmin @section nncp-cfgmin @example diff --git a/doc/cmd/nncp-cfgnew.texi b/doc/cmd/nncp-cfgnew.texi index 0f7ab37..ccd47c6 100644 --- a/doc/cmd/nncp-cfgnew.texi +++ b/doc/cmd/nncp-cfgnew.texi @@ -1,4 +1,5 @@ @node nncp-cfgnew +@pindex nncp-cfgnew @section nncp-cfgnew @example diff --git a/doc/cmd/nncp-check.texi b/doc/cmd/nncp-check.texi index 4a257af..57bb379 100644 --- a/doc/cmd/nncp-check.texi +++ b/doc/cmd/nncp-check.texi @@ -1,4 +1,5 @@ @node nncp-check +@pindex nncp-check @section nncp-check @example diff --git a/doc/cmd/nncp-cronexpr.texi b/doc/cmd/nncp-cronexpr.texi index f06202a..50821d0 100644 --- a/doc/cmd/nncp-cronexpr.texi +++ b/doc/cmd/nncp-cronexpr.texi @@ -1,4 +1,5 @@ @node nncp-cronexpr +@pindex nncp-cronexpr @section nncp-cronexpr @example diff --git a/doc/cmd/nncp-daemon.texi b/doc/cmd/nncp-daemon.texi index 15e1233..b898e7c 100644 --- a/doc/cmd/nncp-daemon.texi +++ b/doc/cmd/nncp-daemon.texi @@ -1,4 +1,5 @@ @node nncp-daemon +@pindex nncp-daemon @section nncp-daemon @example diff --git a/doc/cmd/nncp-exec.texi b/doc/cmd/nncp-exec.texi index eec6a7e..8b9c753 100644 --- a/doc/cmd/nncp-exec.texi +++ b/doc/cmd/nncp-exec.texi @@ -1,4 +1,5 @@ @node nncp-exec +@pindex nncp-exec @section nncp-exec @example @@ -22,6 +23,9 @@ exec: { } @end verbatim +@vindex NNCP_SELF +@vindex NNCP_SENDER +@vindex NNCP_NICE then executing @verb{|echo My message | nncp-exec -replynice 123 REMOTE sendmail root@localhost|} will lead to execution of: diff --git a/doc/cmd/nncp-file.texi b/doc/cmd/nncp-file.texi index 802e817..078a6ba 100644 --- a/doc/cmd/nncp-file.texi +++ b/doc/cmd/nncp-file.texi @@ -1,4 +1,5 @@ @node nncp-file +@pindex nncp-file @section nncp-file @example diff --git a/doc/cmd/nncp-freq.texi b/doc/cmd/nncp-freq.texi index aa35f99..049339c 100644 --- a/doc/cmd/nncp-freq.texi +++ b/doc/cmd/nncp-freq.texi @@ -1,4 +1,5 @@ @node nncp-freq +@pindex nncp-freq @section nncp-freq @example diff --git a/doc/cmd/nncp-hash.texi b/doc/cmd/nncp-hash.texi index babd150..afed745 100644 --- a/doc/cmd/nncp-hash.texi +++ b/doc/cmd/nncp-hash.texi @@ -1,4 +1,5 @@ @node nncp-hash +@pindex nncp-hash @section nncp-hash @example diff --git a/doc/cmd/nncp-log.texi b/doc/cmd/nncp-log.texi index 6ac6a7a..5cbc281 100644 --- a/doc/cmd/nncp-log.texi +++ b/doc/cmd/nncp-log.texi @@ -1,4 +1,5 @@ @node nncp-log +@pindex nncp-log @section nncp-log @example diff --git a/doc/cmd/nncp-pkt.texi b/doc/cmd/nncp-pkt.texi index b3391b4..1e4f6f3 100644 --- a/doc/cmd/nncp-pkt.texi +++ b/doc/cmd/nncp-pkt.texi @@ -1,4 +1,5 @@ @node nncp-pkt +@pindex nncp-pkt @section nncp-pkt @example diff --git a/doc/cmd/nncp-reass.texi b/doc/cmd/nncp-reass.texi index 7cae84b..6251113 100644 --- a/doc/cmd/nncp-reass.texi +++ b/doc/cmd/nncp-reass.texi @@ -1,4 +1,5 @@ @node nncp-reass +@pindex nncp-reass @section nncp-reass @example diff --git a/doc/cmd/nncp-rm.texi b/doc/cmd/nncp-rm.texi index f36178a..d02a5f3 100644 --- a/doc/cmd/nncp-rm.texi +++ b/doc/cmd/nncp-rm.texi @@ -1,4 +1,5 @@ @node nncp-rm +@pindex nncp-rm @section nncp-rm @example diff --git a/doc/cmd/nncp-stat.texi b/doc/cmd/nncp-stat.texi index 5759a01..ae552fd 100644 --- a/doc/cmd/nncp-stat.texi +++ b/doc/cmd/nncp-stat.texi @@ -1,4 +1,5 @@ @node nncp-stat +@pindex nncp-stat @section nncp-stat @example diff --git a/doc/cmd/nncp-toss.texi b/doc/cmd/nncp-toss.texi index da4b3be..513c322 100644 --- a/doc/cmd/nncp-toss.texi +++ b/doc/cmd/nncp-toss.texi @@ -1,4 +1,5 @@ @node nncp-toss +@pindex nncp-toss @section nncp-toss @example diff --git a/doc/cmd/nncp-trns.texi b/doc/cmd/nncp-trns.texi index c9b77cc..d1be039 100644 --- a/doc/cmd/nncp-trns.texi +++ b/doc/cmd/nncp-trns.texi @@ -1,4 +1,5 @@ @node nncp-trns +@pindex nncp-trns @section nncp-trns @example diff --git a/doc/cmd/nncp-xfer.texi b/doc/cmd/nncp-xfer.texi index 70edaf8..ac937bb 100644 --- a/doc/cmd/nncp-xfer.texi +++ b/doc/cmd/nncp-xfer.texi @@ -1,4 +1,5 @@ @node nncp-xfer +@pindex nncp-xfer @section nncp-xfer @example diff --git a/doc/comparison.texi b/doc/comparison.texi index 4b7fd90..d3d6fb1 100644 --- a/doc/comparison.texi +++ b/doc/comparison.texi @@ -1,4 +1,9 @@ @node Comparison +@cindex comparison +@cindex SMTP +@cindex FTN +@cindex FidoNet +@cindex UUCP @unnumbered Comparison with existing solutions Here is comparison with @url{https://en.wikipedia.org/wiki/UUCP, UUCP} @@ -87,6 +92,7 @@ FidoNet} Technology Networks) and @url{https://en.wikipedia.org/wiki/SMTP, SMTP} UUCP and NNCP does not known nothing about routing. You have to explicitly tell how to send (what hops to use) packets to each node. +@cindex PSTN @item PSTN support UUCP and FidoNet always have been working with modems out-of-box. Only many years later they gained support for working over TCP/IP @@ -94,11 +100,15 @@ FidoNet} Technology Networks) and @url{https://en.wikipedia.org/wiki/SMTP, SMTP} TCP daemon, but nothing prohibits using of another 8-bit aware online transport. +@cindex anonymity +@cindex Sybil attack @item Anonymous peers NNCP and FTN are friend-to-friend networks exclusively. This is very secure and mitigates many possible man-in-the-middle (MitM) and @url{https://en.wikipedia.org/wiki/Sybil_attack, Sybil} attacks. +@cindex sneakernet +@cindex floppynet @item Sneakernet friendliness No one, except NNCP, supports data exchanging via removable storages likes flash drives, CD-ROMs, tapes and hard drives out-of-box. It @@ -108,6 +118,7 @@ FidoNet} Technology Networks) and @url{https://en.wikipedia.org/wiki/SMTP, SMTP} @end table +@cindex UUCP commands Also there is @url{https://changelog.complete.org/archives/10165-asynchronous-email-exim-over-nncp-or-uucp, copy of} comparable commands of UUCP and NNCP, just for the interest: @@ -115,6 +126,11 @@ comparable commands of UUCP and NNCP, just for the interest: @multitable @columnfractions 0.5 0.25 0.25 @headitem Purpose @tab UUCP @tab NNCP +@pindex uucico +@pindex uupoll +@pindex uux +@pindex uucp +@pindex uuxqt @item Connect to remote system @tab @command{uucico -s}, @command{uupoll} @tab @command{nncp-call}, @command{nncp-caller} diff --git a/doc/contacts.texi b/doc/contacts.texi index 63473b8..01803d0 100644 --- a/doc/contacts.texi +++ b/doc/contacts.texi @@ -1,4 +1,8 @@ @node Contacts +@cindex contacts +@cindex maillist +@cindex IRC +@cindex Matrix @unnumbered Contacts Please send questions regarding the use of NNCP, bug reports and patches to diff --git a/doc/cronexpr.texi b/doc/cronexpr.texi index 8a808b3..58ce7c8 100644 --- a/doc/cronexpr.texi +++ b/doc/cronexpr.texi @@ -1,3 +1,4 @@ +@cindex cron @anchor{CronExpr} This is copy-pasted documentation from @code{github.com/gorhill/cronexpr} library used there. diff --git a/doc/download.texi b/doc/download.texi index b3545d9..f6c259e 100644 --- a/doc/download.texi +++ b/doc/download.texi @@ -1,4 +1,8 @@ @node Tarballs +@cindex tarball +@cindex dependency +@cindex licencing +@cindex download @section Prepared tarballs You can obtain releases source code prepared tarballs from the links below. diff --git a/doc/eblob.texi b/doc/eblob.texi index 3a5c08d..a7e9b8f 100644 --- a/doc/eblob.texi +++ b/doc/eblob.texi @@ -1,4 +1,6 @@ @node EBlob +@cindex eblob +@cindex encrypted configuration @unnumbered EBlob format EBlob is an encrypted blob (binary large object, in the terms of @@ -20,6 +22,9 @@ is @strong{not} the password. Password is a short string of high entropy low-entropy characters. Low-entropy text is much more easier to remember, and its length provides pretty enough entropy as a result. +@cindex password +@cindex balloon +@cindex Argon2 Password strengthening function is applied to that passphrase to mitigate brute-force and dictionary attacks on it. Here, @url{https://crypto.stanford.edu/balloon/, Balloon} memory-hard password diff --git a/doc/index.texi b/doc/index.texi index 829017d..37a7ab9 100644 --- a/doc/index.texi +++ b/doc/index.texi @@ -17,12 +17,17 @@ A copy of the license is included in the section entitled "Copying conditions". @end copying @node Top +@c dummy cindex, to pass through the current info's bug, which can skip +@c the first index entry during searching +@cindex 0 @top NNCP +@cindex Pedro @verbatiminclude pedro.txt @include about.texi +@cindex articles There are also articles about its usage outside this website: @itemize @@ -61,6 +66,7 @@ There are also articles about its usage outside this website: * EBlob format: EBlob * Mirrors:: * Thanks:: +* Indices:: * Contacts and feedback: Contacts * Copying conditions: Copying @end menu @@ -90,6 +96,7 @@ There are also articles about its usage outside this website: @include eblob.texi @include mirrors.texi @include thanks.texi +@include indices.texi @include contacts.texi @node Copying diff --git a/doc/indices.texi b/doc/indices.texi new file mode 100644 index 0000000..542d4ef --- /dev/null +++ b/doc/indices.texi @@ -0,0 +1,14 @@ +@node Indices +@unnumbered Indices + +@node Concepts Index +@section Concepts Index +@printindex cp + +@node Programs Index +@section Programs Index +@printindex pg + +@node Variables Index +@section Variables Index +@printindex vr diff --git a/doc/install.texi b/doc/install.texi index 3f89399..e948d81 100644 --- a/doc/install.texi +++ b/doc/install.texi @@ -1,22 +1,45 @@ @node Installation +@cindex installation +@cindex packages +@cindex distributions @unnumbered Installation Possibly NNCP package already exists for your distribution: @itemize + +@cindex Arch Linux +@cindex AUR @item Arch Linux @url{https://aur.archlinux.org/packages/nncp, AUR} + +@cindex Debian @item @url{https://tracker.debian.org/pkg/nncp, Debian packages} + +@cindex DragonFly @item @url{https://github.com/DragonFlyBSD/DPorts/tree/master/net/nncp, DragonFly BSD ports} + +@cindex FreeBSD @item @url{https://www.freshports.org/net/nncp/, FreeBSD ports} + +@cindex Guix @item GNU @url{https://git.savannah.gnu.org/cgit/guix.git/tree/gnu/packages/uucp.scm, Guix} + +@cindex NetBSD @item @url{https://pkgsrc.se/wip/nncp, NetBSD package} + +@cindex NixOS @item @url{https://github.com/NixOS/nixpkgs/tree/master/pkgs/tools/misc/nncp, NixOS packages} + +@cindex Void Linux @item @url{https://github.com/void-linux/void-packages/blob/master/srcpkgs/nncp/template, Void Linux} @end itemize +@cindex POSIX NNCP should run on any POSIX-compatible operating system. -NNCP is written on @url{https://do.dev.org/, Go} programming language +@pindex go +@pindex texinfo +NNCP is written on @url{https://go.dev/, Go} programming language and you have to install Go compiler 1.13+ version. @url{http://cr.yp.to/redo.html, redo} build system is recommended for convenience. @url{https://www.gnu.org/software/texinfo/, Texinfo} is diff --git a/doc/integration/bittorrent.texi b/doc/integration/bittorrent.texi index 841391e..f3136c8 100644 --- a/doc/integration/bittorrent.texi +++ b/doc/integration/bittorrent.texi @@ -1,4 +1,5 @@ @node BitTorrent +@cindex BitTorrent integration @section BitTorrent and huge files If dealing with @ref{Git}, @ref{Feeds, web feeds} and @ref{Multimedia, @@ -6,6 +7,7 @@ multimedia} goes relatively fast, then BitTorrent and huge files consumes much time. You can not wait for downloads finish, but want to queue them after. +@pindex aria2 @url{http://aria2.github.io/, aria2} multi-protocol download utility could be used for solving that issue conveniently. It supports HTTP, HTTPS, FTP, SFTP and BitTorrent protocols, together with @@ -15,6 +17,7 @@ URIs, Web-seeding, selective downloads, LPD. @command{aria2} can accelerate HTTP*/*FTP downloads by segmented multiple parallel connections. +@pindex aria2-downloaded.sh You can queue you files after they are completely downloaded. @file{aria2-downloaded.sh} contents: diff --git a/doc/integration/download.texi b/doc/integration/download.texi index c4ca2ac..df88be2 100644 --- a/doc/integration/download.texi +++ b/doc/integration/download.texi @@ -1,4 +1,7 @@ @node DownloadService +@cindex download service +@pindex warcer.sh +@pindex wgeter.sh @section Downloading service Previous sections tell about manual downloading and sending results to diff --git a/doc/integration/exim.texi b/doc/integration/exim.texi index 26472ea..d1195c4 100644 --- a/doc/integration/exim.texi +++ b/doc/integration/exim.texi @@ -1,4 +1,5 @@ @node Exim +@cindex Exim integration @section Integration with Exim This section is unaltered copy-paste of @@ -17,6 +18,8 @@ eventual delivery (over the Internet, LAN, whatever). This is fairly simple in Exim. +@pindex bsmtp +@pindex rmail We actually have two choices for how to do this: @command{bsmtp} or @command{rmail} mode. bsmtp (batch SMTP) is the more modern way, and is essentially a derivative of SMTP that explicitly can be queued @@ -96,6 +99,7 @@ exec: @{ The @option{-bS} option is what tells Exim to receive BSMTP on @code{stdin}. +@vindex MAIN_TRUSTED_USERS Now, you need to tell Exim that nncp is a trusted user (able to set From headers arbitrarily). Assuming you are running NNCP as the @code{nncp} user, then add @code{MAIN_TRUSTED_USERS = nncp} to a file such as diff --git a/doc/integration/feeds.texi b/doc/integration/feeds.texi index 2b127e6..97fd3f4 100644 --- a/doc/integration/feeds.texi +++ b/doc/integration/feeds.texi @@ -1,6 +1,10 @@ @node Feeds +@cindex Web feeds integration +@cindex RSS feeds integration +@cindex Atom feeds integration @section Integration with Web feeds +@pindex r2e RSS and Atom feeds could be collected using @url{https://github.com/wking/rss2email, rss2email} program. It converts all incoming feed entries to email messages. Read about how to integrate diff --git a/doc/integration/freqindex.texi b/doc/integration/freqindex.texi index cec8463..68f5e27 100644 --- a/doc/integration/freqindex.texi +++ b/doc/integration/freqindex.texi @@ -1,4 +1,5 @@ @node FreqIndex +@cindex index files @section Index files for freqing In many cases you do not know exact files list on remote machine you diff --git a/doc/integration/git.texi b/doc/integration/git.texi index a159cf8..66ae5b4 100644 --- a/doc/integration/git.texi +++ b/doc/integration/git.texi @@ -1,4 +1,6 @@ @node Git +@cindex git integration +@pindex git-bundle @section Integration with Git @url{https://git-scm.com/, Git} version control system already has all diff --git a/doc/integration/index.texi b/doc/integration/index.texi index 315868b..885bacf 100644 --- a/doc/integration/index.texi +++ b/doc/integration/index.texi @@ -1,4 +1,5 @@ @node Integration +@cindex integration with existing software @unnumbered Integration with existing software Here is some examples of how you can solve popular tasks with NNCP, diff --git a/doc/integration/multimedia.texi b/doc/integration/multimedia.texi index 79cc42d..20ed06c 100644 --- a/doc/integration/multimedia.texi +++ b/doc/integration/multimedia.texi @@ -1,4 +1,8 @@ @node Multimedia +@cindex multimedia integration +@cindex pindex youtube-dl +@cindex pindex yt-dlp +@cindex cindex YouTube @section Integration with multimedia streaming Many video and audio streams could be downloaded using diff --git a/doc/integration/postfix.texi b/doc/integration/postfix.texi index f02dca0..259bdf7 100644 --- a/doc/integration/postfix.texi +++ b/doc/integration/postfix.texi @@ -1,4 +1,6 @@ @node Postfix +@cindex Postfix integration +@pindex postfix @section Integration with Postfix This section is taken from @url{http://www.postfix.org/UUCP_README.html, @@ -31,6 +33,9 @@ node and after replacing @var{$recipient} by the recipients. The command without assistance from the shell, so there are no problems with shell meta characters in command-line parameters. +@pindex sendmail.sh +@vindex Return-Path +@pindex reformail Pay attention to @code{flags}, containing @code{R}, telling Postfix to include @code{Return-Path:} header. Otherwise that envelope sender information may be lost. Possibly you will also need somehow to @@ -42,6 +47,9 @@ extract with: @verbatiminclude sendmail.sh +@vindex From_ +@cindex mbox +@pindex maildrop Also pay attention that @command{maildrop} does not like @code{From_} mbox-style header, so you possibly want: diff --git a/doc/integration/ppp.texi b/doc/integration/ppp.texi index e274cd1..a4ad3cf 100644 --- a/doc/integration/ppp.texi +++ b/doc/integration/ppp.texi @@ -1,4 +1,7 @@ @node PPP +@cindex PPP +@cindex serial link +@cindex serial connection @section Serial connection It is not trivial to run online @command{nncp-daemon}, diff --git a/doc/integration/warc.texi b/doc/integration/warc.texi index 361967c..4c58729 100644 --- a/doc/integration/warc.texi +++ b/doc/integration/warc.texi @@ -1,4 +1,6 @@ @node WARCs +@cindex WARC +@pindex wget @section Integration with Web pages Simple HTML web page can be downloaded very easily for sending and @@ -62,6 +64,7 @@ $ wget [--page-requisites] [--recursive] \ [@dots{}] http://www.example.com/ @end example +@pindex tofuproxy That command will create @file{www.example.com-XXX.warc} web archive. It could produce specialized segmented @url{https://en.wikipedia.org/wiki/Gzip, gzip} and diff --git a/doc/integrity.texi b/doc/integrity.texi index 171cdc1..7ece02c 100644 --- a/doc/integrity.texi +++ b/doc/integrity.texi @@ -1,4 +1,10 @@ @node Integrity +@cindex integrity check +@cindex authenticity check +@cindex OpenPGP +@cindex gpg +@cindex GnuPG +@cindex WKD @section Tarballs integrity check You @strong{have to} check downloaded archives integrity and verify diff --git a/doc/log.texi b/doc/log.texi index 74a8c6d..f9c0205 100644 --- a/doc/log.texi +++ b/doc/log.texi @@ -1,4 +1,8 @@ @node Log +@cindex log format +@cindex logging +@cindex recfile +@pindex recutils @unnumbered Log format Log is a plaintext file consisting of diff --git a/doc/mcd.texi b/doc/mcd.texi index 958e0fe..282261e 100644 --- a/doc/mcd.texi +++ b/doc/mcd.texi @@ -1,4 +1,6 @@ @node MCD +@cindex MCD +@cindex multicast discovery @unnumbered MultiCast Discovery MCD is an addition to online @ref{Sync, synchronization protocol}, that diff --git a/doc/mirrors.texi b/doc/mirrors.texi index d6ccac6..315543a 100644 --- a/doc/mirrors.texi +++ b/doc/mirrors.texi @@ -1,4 +1,5 @@ @node Mirrors +@cindex mirror @unnumbered Mirrors Main NNCP website is hosted on two geographically distant servers @@ -7,6 +8,9 @@ connectivity is provided by Hurricane Electric tunnel broker. Only one of those servers supports TLS and another just proxies the traffic to it. So TLS-capable version has less availability. +@cindex DANE +@cindex DNSCurve +@cindex ca.cypherpunks.ru It can be authenticated with @url{http://www.ca.cypherpunks.ru/, ca.cypherpunks.ru} certificate, through the @url{https://datatracker.ietf.org/doc/html/rfc6698, DANE} record, that @@ -23,6 +27,7 @@ accessible address: @url{http://y.www.nncpgo.org/}. @table @asis +@cindex quux.org @item @url{https://nncp.mirrors.quux.org/} Its creation @url{http://lists.cypherpunks.ru/archive/nncp-devel/2108/0310.html, announcement}. diff --git a/doc/mth.texi b/doc/mth.texi index 72a38d9..5e8b75c 100644 --- a/doc/mth.texi +++ b/doc/mth.texi @@ -1,4 +1,8 @@ @node MTH +@cindex MTH +@cindex hashing +@cindex merkle tree +@cindex BLAKE3 @unnumbered Merkle Tree Hashing NNCP uses @url{https://github.com/BLAKE3-team/BLAKE3, BLAKE3} hash diff --git a/doc/multicast.texi b/doc/multicast.texi index fbb31ad..7de8be7 100644 --- a/doc/multicast.texi +++ b/doc/multicast.texi @@ -1,4 +1,5 @@ @node Multicast +@cindex multicast area @unnumbered Multicast areas NNCP has ability to multicast packets: send single packet to multiple @@ -23,6 +24,7 @@ that encrypted packet to the others) can should it to the subscribers further @end itemize +@vindex MsgHash Area's message identity (@code{MsgHash}) is the hash of the encrypted packet header. Because the area packet, containing the encrypted packet, is relayed as-is without any modifications, that area message's hash diff --git a/doc/news.texi b/doc/news.texi index 09b21bc..861ba7f 100644 --- a/doc/news.texi +++ b/doc/news.texi @@ -1,4 +1,5 @@ @node News +@cindex news @unnumbered News See also this page @ref{Новости, on russian}. diff --git a/doc/niceness.texi b/doc/niceness.texi index 4686c09..8786d32 100644 --- a/doc/niceness.texi +++ b/doc/niceness.texi @@ -1,4 +1,6 @@ @node Niceness +@cindex niceness +@cindex priority @unnumbered Niceness Each transmitted packet has niceness level, as Unix has @command{nice} @@ -18,12 +20,16 @@ There are 1-255 niceness levels. They could be specified either as integer, or using aliases with delta modifiers: @table @emph +@vindex FLASH @item FLASH (F) Urgent priority. +@vindex PRIORITY @item PRIORITY (P) High priority. Command execution/mail use that priority by default. +@vindex NORMAL @item NORMAL (N) Normal priority. File requests use that priority by default. +@vindex BULK @item BULK (B) Bundles shipped on a "least effort" basis. File transmission use that priority by default. diff --git a/doc/pkt/area.texi b/doc/pkt/area.texi index 172c09c..1073ca6 100644 --- a/doc/pkt/area.texi +++ b/doc/pkt/area.texi @@ -1,4 +1,5 @@ @node Encrypted area +@cindex encrypted area packet @section Encrypted area packet @ref{Multicast} area messages contains the encrypted packet, that is diff --git a/doc/pkt/encrypted.texi b/doc/pkt/encrypted.texi index 7b8ed21..ead9478 100644 --- a/doc/pkt/encrypted.texi +++ b/doc/pkt/encrypted.texi @@ -1,4 +1,7 @@ @node Encrypted +@cindex encrypted packet +@cindex AEAD +@cindex ChaCha20-Poly1305 @section Encrypted packet Encrypted packets are the only files found in spools, in exchangeable diff --git a/doc/pkt/index.texi b/doc/pkt/index.texi index f19d1ca..8dba7bc 100644 --- a/doc/pkt/index.texi +++ b/doc/pkt/index.texi @@ -1,4 +1,6 @@ @node Packet +@cindex packet format +@cindex XDR @unnumbered Packet format All packets are diff --git a/doc/pkt/plain.texi b/doc/pkt/plain.texi index 46d66ea..7af4360 100644 --- a/doc/pkt/plain.texi +++ b/doc/pkt/plain.texi @@ -1,4 +1,5 @@ @node Plain +@cindex plain packet @section Plain packet Plain packet contains either the whole file, or file request (freq), or diff --git a/doc/sources.texi b/doc/sources.texi index a7e2bcd..474d27c 100644 --- a/doc/sources.texi +++ b/doc/sources.texi @@ -1,4 +1,7 @@ @node Sources +@cindex sources +@cindex source code +@cindex git @section Development source code Development source code contains the latest version of the code. It may diff --git a/doc/sp.texi b/doc/sp.texi index e7f4895..36f5cc7 100644 --- a/doc/sp.texi +++ b/doc/sp.texi @@ -1,10 +1,14 @@ @node Sync +@cindex sync protocol +@cindex online protocol +@cindex synchronization @unnumbered Synchronization protocol So-called synchronization protocol (SP) is used in current TCP daemon's implementation. It is used for synchronizing @ref{Spool, spool} directory contents between two nodes. +@cindex XMODEM It is aimed to be very simple and effective. It uses reliable transport like TCP connections. It must be effective both on single-duplex and full-duplex links: for example satellites have very high throughput but @@ -12,11 +16,13 @@ high-delay links, so acknowledging of each received packet, like @url{https://en.wikipedia.org/wiki/XMODEM, XMODEM} does, causes unacceptable performance degradation. +@vindex NNCPDEADLINE Internally it uses various timeouts and deadlines. One of them used extensively is 10 seconds default deadline timeout. You can override it with @env{$NNCPDEADLINE} environment variable, that could be useful with very high delay links. +@cindex Noise-IK SP works on top of @url{http://noiseprotocol.org/noise.html#interactive-patterns, @code{Noise_IK_25519_ChaChaPoly_BLAKE2b}} protocol. Each Noise packet @@ -54,6 +60,7 @@ just an unsigned integer telling what body structure follows. @table @emph +@cindex HALT payload @item HALT Stop file transmission, empty sending queue on the remote side. Actually @emph{HALT} packet does not have any body, only the header @@ -66,6 +73,7 @@ just an unsigned integer telling what body structure follows. +------+ @end verbatim +@cindex PING payload @item PING Dummy packet only used for determining workability of the connection. @@ -75,6 +83,7 @@ just an unsigned integer telling what body structure follows. +------+ @end verbatim +@cindex INFO payload @item INFO Information about the file we have for transmission. @@ -97,6 +106,7 @@ just an unsigned integer telling what body structure follows. Unique file identifier, its checksum @end multitable +@cindex FREQ payload @item FREQ File transmission request. Ask remote side to queue the file for transmission. @@ -117,6 +127,7 @@ just an unsigned integer telling what body structure follows. Offset from which remote side must transmit the file @end multitable +@cindex FILE payload @item FILE Chunk of file. @@ -139,6 +150,7 @@ just an unsigned integer telling what body structure follows. Chunk of file itself @end multitable +@cindex DONE payload @item DONE Signal remote side that we have successfully downloaded the file. diff --git a/doc/spool.texi b/doc/spool.texi index 61ec8c3..76c1f59 100644 --- a/doc/spool.texi +++ b/doc/spool.texi @@ -1,4 +1,5 @@ @node Spool +@cindex spool directory @unnumbered Spool directory Spool directory holds @ref{Encrypted, encrypted packets} received from @@ -18,6 +19,7 @@ spool/tmp @table @file +@cindex tmp directory @item tmp directory contains various temporary files that under normal circumstances are renamed to necessary files inside other directories. @@ -27,10 +29,13 @@ filesystem for working renaming. @item 2WHBV3TPZHDOZGUJEH563ZEK7M33J4UESRFO4PDKWD5KZNPROABQ is an example Base32-encoded neighbour identifier. +@cindex rx directory +@cindex tx directory @item rx, tx directories are for incoming and outgoing encrypted packets. @file{rx} contains currently unfinished, non-checked, unprocessed, etc packets. +@cindex lock files @item toss.lock, rx.lock, tx.lock Lock files. Only single process can work with @file{rx}/@file{tx} directories at once. @@ -40,16 +45,19 @@ is an example @ref{Encrypted, encrypted packet}. Its filename is Base32 encoded @ref{MTH} hash of the whole contents. It can be integrity checked anytime. +@cindex part files @item LYT64MWSNDK34CVYOO7TA6ZCJ3NWI2OUDBBMX2A4QWF34FIRY4DQ.part is an example @strong{partly} received file. It can appear only when online transfer is used. Its filename is sent by remote side and until file is fully downloaded -- it plays no role. +@cindex nock files @item LYT64MWSNDK34CVYOO7TA6ZCJ3NWI2OUDBBMX2A4QWF34FIRY4DQ.nock non-checksummed (NoCK) @strong{fully} received file. Its checksum is verified against its filename either by @ref{nncp-check}, or by working online daemons. If it is correct, then its extension is trimmed. +@cindex seen files @item seen/LYT64MWSNDK34CVYOO7TA6ZCJ3NWI2OUDBBMX2A4QWF34FIRY4DQ @ref{nncp-toss} utility can be invoked with @option{-seen} option, leading to creation of @file{seen/} files, telling that the file with @@ -59,6 +67,7 @@ available and there is possibility of duplicates reception. You have to manually remove them, when you do not need them (probably because they are expired). +@cindex hdr files @anchor{HdrFile} @item hdr/LYT64MWSNDK34CVYOO7TA6ZCJ3NWI2OUDBBMX2A4QWF34FIRY4DQ If no @ref{CfgNoHdr, nohdr} option is enabled in configuration file, diff --git a/doc/thanks.texi b/doc/thanks.texi index 12592bc..b682d92 100644 --- a/doc/thanks.texi +++ b/doc/thanks.texi @@ -1,4 +1,5 @@ @node Thanks +@cindex thanks @unnumbered Thanks There are people deserving to be thanked for helping this project: diff --git a/doc/usecases/airgap.texi b/doc/usecases/airgap.texi index dd50bb4..2251d4f 100644 --- a/doc/usecases/airgap.texi +++ b/doc/usecases/airgap.texi @@ -1,4 +1,5 @@ @node UsecaseAirgap +@cindex air-gap @section Highly secure isolated air-gap computers If you worry much about security, then air-gapped computer could be the diff --git a/doc/usecases/index.texi b/doc/usecases/index.texi index 938908f..9f99cfc 100644 --- a/doc/usecases/index.texi +++ b/doc/usecases/index.texi @@ -1,4 +1,5 @@ @node Use cases +@cindex use cases @unnumbered Use cases See also this page @ref{Сценарии, on russian}. diff --git a/doc/usecases/nolink.texi b/doc/usecases/nolink.texi index 7886e81..4fe740f 100644 --- a/doc/usecases/nolink.texi +++ b/doc/usecases/nolink.texi @@ -1,4 +1,6 @@ @node UsecaseNoLink +@cindex extreme environments +@cindex lack of link @section Extreme terrestrial environments, no link This is some kind of too slow link. Offline delivery methods is the only diff --git a/doc/usecases/pop.texi b/doc/usecases/pop.texi index 5edc3e8..bc3345c 100644 --- a/doc/usecases/pop.texi +++ b/doc/usecases/pop.texi @@ -1,4 +1,6 @@ @node UsecasePOP +@cindex POP3 replacement +@cindex IMAP4 replacement @section Lightweight fast POP3/IMAP4 replacement @ref{nncp-daemon} can be connected with @ref{nncp-caller} for a long diff --git a/doc/usecases/qos.texi b/doc/usecases/qos.texi index 8089888..4013e35 100644 --- a/doc/usecases/qos.texi +++ b/doc/usecases/qos.texi @@ -1,4 +1,7 @@ @node UsecaseQoS +@cindex expensive link +@cindex slow link +@cindex bad QoS @section Slow/expensive link for high-volume data, bad QoS Assume that you can give your relatively cheap 2 TiB removable hard diff --git a/doc/usecases/satellite.texi b/doc/usecases/satellite.texi index d152a3b..2a587af 100644 --- a/doc/usecases/satellite.texi +++ b/doc/usecases/satellite.texi @@ -1,4 +1,5 @@ @node UsecaseSatelliteLinks +@cindex satellite link @section Satellite links Satellite links have @strong{very} high delays together with high diff --git a/doc/usecases/spy.texi b/doc/usecases/spy.texi index b1e1de8..1cd9a4c 100644 --- a/doc/usecases/spy.texi +++ b/doc/usecases/spy.texi @@ -1,4 +1,5 @@ @node UsecaseSpy +@cindex reconnaissance, spying, intelligence, covert operations @section Reconnaissance, spying, intelligence, covert agents Those guys know how Internet is a dangerous place incompatible with diff --git a/doc/usecases/unreliable.texi b/doc/usecases/unreliable.texi index 93a40d9..2ed3856 100644 --- a/doc/usecases/unreliable.texi +++ b/doc/usecases/unreliable.texi @@ -1,4 +1,5 @@ @node UsecaseUnreliable +@cindex unreliable link @section Unreliable/expensive communication link Assume that you have got slow modem/radio/cellular link that frequently diff --git a/doc/yggdrasil.texi b/doc/yggdrasil.texi index 18fa270..294efed 100644 --- a/doc/yggdrasil.texi +++ b/doc/yggdrasil.texi @@ -1,4 +1,5 @@ @node Yggdrasil +@cindex yggdrasil @unnumbered Yggdrasil support NNCP is able to act as a node of @@ -26,13 +27,13 @@ Only minor modifications were done to current NNCP's tools: @itemize -@item @ref{nncp-daemon} has @option{-yggdrasil yggdrasils://} option, +@cindex yggdrasils schema making it also as a Yggdrasil listener network node. It can automatically connect to other peers and participate in routing. It does not have to answer NNCP's online protocol requests at all and just can be some intermediate routing point in the whole mesh network. -@item @ref{nncp-call}/@ref{nncp-caller} commands understand +@cindex yggdrasilc schema @code{yggdrasilc://} addresses, pointing to the desired Yggdrasil's public key (that also acts as the destination host's address). Yggdrasil background goroutine is automatically started, connecting to the @@ -68,20 +69,24 @@ You have to specify: @itemize +@vindex PrivateKey @item Your private key (generated above). Yggdrasil's @code{PrivateKey} analogue. @item Optional non-default port you will listen on Yggdrasil's IPv6 address. +@vindex Listen @item Optional list of bind addresses, used for peering between the nodes. Yggdrasil's @code{Listen} analogue. +@vindex Peers @item Optional list of peer addresses you should connect to. Yggdrasil's @code{Peers} analogue. +@vindex AllowedPublicKeys @item Optional list of allowed peer public keys, allowed for incoming peering connections from. Yggdrasil's @code{AllowedPublicKeys} analogue. -- 2.44.0