X-Git-Url: http://www.git.cypherpunks.ru/?a=blobdiff_plain;f=doc%2Fcfg.texi;h=2004073c98245043e085194be51f211399b17d1f;hb=0139e8deda4112d2c3dcd52e0ad72162e54caa03;hp=e930e27a92f96878056bc7a87a8fec87c940c0a7;hpb=c6bc491ffaf8c730d3f815d489c7a50894cd3507;p=nncp.git diff --git a/doc/cfg.texi b/doc/cfg.texi index e930e27..2004073 100644 --- a/doc/cfg.texi +++ b/doc/cfg.texi @@ -1,63 +1,89 @@ @node Configuration @unnumbered Configuration file -Example YAML configuration file: +Example @url{https://hjson.org/, Hjson} configuration file: @verbatim -spool: /var/spool/nncp -log: /var/spool/nncp/log -notify: - file: - from: nncp@localhost - to: user+file@example.com - freq: - from: nncp@localhost - to: user+freq@example.com -self: - id: TIJQL...2NGIA - exchpub: CYVGQ...PSEWQ - exchprv: 65PUY...MPZ3Q - signpub: 2NMVC...CMH5Q - signprv: 555JD...RGD6Y - noiseprv: D62XU...NKYPA - noisepub: KIBKK...ESM7Q -neigh: - self: +{ + spool: /var/spool/nncp + log: /var/spool/nncp/log + notify: { + file: { + from: nncp@localhost + to: user+file@example.com + } + freq: { + from: nncp@localhost + to: user+freq@example.com + } + } + self: { id: TIJQL...2NGIA exchpub: CYVGQ...PSEWQ + exchprv: 65PUY...MPZ3Q signpub: 2NMVC...CMH5Q + signprv: 555JD...RGD6Y + noiseprv: D62XU...NKYPA noisepub: KIBKK...ESM7Q - sendmail: [/usr/sbin/sendmail] - alice: - id: XJZBK...65IJQ - exchpub: MJACJ...FAI6A - signpub: T4AFC...N2FRQ - noisepub: UBM5K...VI42A - sendmail: ["/bin/sh", "-c", "false"] - incoming: /home/alice/incoming - onlinedeadline: 3600 - addrs: - lan: "[fe80::1234%igb0]:5400" - internet: alice.com:3389 - bob: - id: 2IZNP...UYGYA - exchpub: WFLMZ...B7NHA - signpub: GTGXG...IE3OA - sendmail: [/usr/sbin/sendmail] - freq: /home/bob/pub - via: [alice] + } + neigh: { + self: { + id: TIJQL...2NGIA + exchpub: CYVGQ...PSEWQ + signpub: 2NMVC...CMH5Q + noisepub: KIBKK...ESM7Q + exec: {sendmail: ["/usr/sbin/sendmail"]} + } + alice: { + id: "XJZBK...65IJQ" + exchpub: MJACJ...FAI6A + signpub: T4AFC...N2FRQ + noisepub: UBM5K...VI42A + exec: {flag: ["/usr/bin/touch", "-t"]} + incoming: "/home/alice/incoming" + onlinedeadline: 1800 + maxonlinetime: 3600 + addrs: { + lan: "[fe80::1234%igb0]:5400" + internet: alice.com:3389 + } + calls: [ + { + cron: "*/2 * * * *" + }, + ] + } + bob: { + id: 2IZNP...UYGYA + exchpub: WFLMZ...B7NHA + signpub: GTGXG...IE3OA + exec: { + sendmail: ["/usr/sbin/sendmail"] + warcer: ["/path/to/warcer.sh"] + wgeter: ["/path/to/wgeter.sh"] + } + freq: "/home/bob/pub" + freqchunked: 1024 + freqminsize: 2048 + via: ["alice"] + rxrate: 10 + txrate: 20 + } + } +} @end verbatim @strong{spool} field contains an absolute path to @ref{Spool, spool} directory. @strong{log} field contains an absolute path to @ref{Log, log} file. +@anchor{CfgNotify} @strong{notify} section contains notification settings for successfully tossed file and freq packets. Corresponding @strong{from} and -@strong{to} fields will substituted in notification email message. -@emph{neigh/self/sendmail} will be used as a local mailer. You can omit -either of those two @emph{from}/@emph{to} sections to omit corresponding -notifications, or the whole section at once. +@strong{to} fields will be substituted in notification email message. +@emph{neigh/self/exec/sendmail} will be used as a local mailer. You can +omit either of those two @emph{from}/@emph{to} sections to omit +corresponding notifications, or the whole section at once. @strong{self} section contains our node's private keypairs. @strong{exch*} and @strong{sign*} are used during @ref{Encrypted, @@ -78,24 +104,52 @@ node has the following fields: If present, then node can be online called using @ref{Sync, synchronization protocol}. Contains authentication public key. -@item sendmail -An array containing path to executable and its command line arguments -that is called for mail sending. +@anchor{CfgExec} +@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 node +can queue some handle execution with providing additional command line +arguments and the body fed to command's stdin. +@verb{|sendmail: ["/usr/sbin/sendmail", "-t"]|} handle, when called by +@verb{|echo hello world | nncp-exec OURNODE sendmail ARG0 ARG1 ARG2|} +command, will execute: + +@verbatim +echo hello world | + NNCP_SELF=OURNODE \ + NNCP_SENDER=REMOTE \ + NNCP_NICE=64 \ + /usr/sbin/sendmail -t ARG0 ARG1 ARG2 +@end verbatim + +@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. +@anchor{CfgFreq} @item freq Full path to directory from where file requests will queue files for transmission. May be omitted to forbid freqing from that node. +@item freqchunked +If set, then enable @ref{Chunked, chunked} file transmission during +freqing. This is the desired chunk size in KiBs. + +@item freqminsize +If set, then apply @ref{OptMinSize, -minsize} option during file +transmission. + +@anchor{CfgVia} @item via An array of node identifiers that will be used as a relay to that node. For example @verb{|[foo,bar]|} means that packet can reach current node by transitioning through @emph{foo} and then @emph{bar} nodes. May be omitted if direct connection exists and no relaying is required. +@anchor{CfgAddrs} @item addrs Dictionary containing known network addresses of the node. Each key is human-readable name of the link/address. Values are @verb{|addr:port|} @@ -103,14 +157,31 @@ pairs pointing to @ref{nncp-daemon}'s listening instance. May be omitted if either no direct connection exists, or @ref{nncp-call} is used with forced address specifying. -@anchor{Onlinedeadline} +@anchor{CfgXxRate} +@item rxrate/txrate +If greater than zero, then at most *rate packets per second will be +sent/received after the handshake. It could be used as crude bandwidth +traffic shaper: each packet has at most 64 KiB payload size. Could be +omitted at all -- no rate limits. + +@anchor{CfgOnlineDeadline} @item onlinedeadline Online connection deadline of node inactivity in seconds. It is the time connection considered dead after not receiving/sending any packets and node must disconnect. By default it is set to 10 seconds -- that means -that disconnecting after 10 seconds when no packets received and -transmitted. This can be set to rather high values to keep connection -alive (to reduce handshake overhead and delays), wait for appearing -packets ready to send and notifying remote side about their appearance. +disconnecting after 10 seconds when no packets received and transmitted. +This can be set to rather high values to keep connection alive (to +reduce handshake overhead and delays), wait for appearing packets ready +to send and notifying remote side about their appearance. + +@anchor{CfgMaxOnlineTime} +@item maxonlinetime +If greater than zero, then it is maximal amount of time connect could be +alive. Forcefully disconnect if it is exceeded. + +@anchor{CfgCalls} +@item calls +List of @ref{Call, call configuration}s. Can be omitted if +@ref{nncp-caller} won't be used to call that node. @end table