• a question on the nncp workflow

    From Ethan Carter@21:1/5 to All on Fri Apr 11 21:50:35 2025
    I have not understood the workflow yet. This is going to be long
    because it's my education on the subject that's the problem and it takes
    many lines to expose my thought process.

    I have two machines---an OpenBSD and a FreeBSD. The OpenBSD is called
    home and the FreeBSD is called fbsd. The machine fbsd is 24/7 on the
    Internet, but home is behind (at least one) NAT router. Their relevant configuration is shown below---I don't show the entire file because
    there are private keys in that file.

    The two pages that I've been trying to get help from are

    https://nncp.mirrors.quux.org/Workflow.html

    and John Goerzen's NNCP concepts page at

    https://www.complete.org/nncp-concepts/

    which is the one I've been as a guide. At first I tried file
    transmissions, but I failed to see the arrival of files, even though I
    think I might have transferred a text file properly. I then decided to
    try command execution thinking it would be something easier to get
    right: so I choose the program /uname/ to execute on the fbsd machine.
    (I show the configuration of both machines at the end of this post.)

    My attempt is to issue a uname execution on node fbsd but requested from
    node home and I expect to see the answer on node home (somehow).

    Here's what I said (to my shell) at node home:

    b# nncp-exec -cfg /etc/nncp.hjson fbsd uname
    2025-04-11T23:49:36Z Tx uname 172 B/0 B 100% (0 B/sec)
    2025-04-11T23:49:36Z Tx uname 172 B/0 B 100% (0 B/sec)
    2025-04-11T23:49:59Z Tx uname 495 B/0 B 100% (14 B/sec)
    2025-04-11T23:49:59Z Exec is sent to fbsd@uname (291 B)
    b#

    The reason you see three Tx lines is because I didn't know the command
    was reading my stdin---so I pressed ENTER (IIRC) a few times and then I
    must have pressed ^D to give the program the EOF byte. The program
    finished.

    So I thought---okay, the request has been added to a queue at node home.
    Now I must transfer that request to fbsd. Then I used nncp-call, having (before) ran nncp-daemon with the -ucspi flag at node fbsd: the command
    line for nncp-daemon on node fbsd was

    tcpserver -DHR -l 0 ::0 uucp nncp-daemon -quiet -ucspi

    So, at node home, I said

    b# nncp-call -cfg /etc/nncp.hjson fbsd
    2025-04-11T23:52:10Z We have got for fbsd: 1 packets, 495 B 2025-04-11T23:52:11Z Connection to fbsd (somewhere.com:540) 2025-04-11T23:52:11Z Tx H2BB55FOK6ODPWVM..A6YIMSVWNXJUCO3Q 495 B/495 B 100% (0 B/sec)
    2025-04-11T23:52:11Z Packet H2BB55FOK6ODPWVMUC2BSSB4OQREF7ROI7P3A6YIMSVWNXJUCO3Q is sent
    2025-04-11T23:52:22Z Finished call with fbsd (0:0:11): 32 KiB received (32 KiB/sec), 33 KiB transferred (33 KiB/sec)

    Looks good. Now I'd think the request has been added to a queue at node
    fbsd. In other words, I believe the uname program has not been ran yet.

    I would now think that I must somehow process that queue on node fbsd.
    The section ``[c]ommands to process packets'' on John Goerzen's guide
    seems promising: it seems to say that I must run nncp-toss on the fbsd
    node. So I did and I got:

    # nncp-toss
    2025-04-12T00:25:29Z Got exec from home to uname (15 B)

    Makes perfect sense. Now I don't know how I at node home could get the
    output of the command. I suppose that a new packet has been added to
    the outgoing queue at node fbsd and should be transferred to node home.
    (A packet containing the uname output, I mean.) But how could I
    transfer something to node home from node fbsd? Node home has no
    Internet address. So I'm thinking that node home must request that
    transfer itself. What would be the command? It looks like nncp-freq is
    only for a file request, not for receiving the output from a command
    execution. So I'm stuck here.

    I tried running nncp-stat just to see what I could see on both machines,
    but that told me not much:

    (*) At node home

    b# nncp-stat -cfg /etc/nncp.hjson
    fbsd
    self

    (*) At node fbsd

    # nncp-stat
    home
    self

    (*) Trying to make sense of the queues at node fbsd

    I also looked at /var/spool/nncp at node fbsd to see if I could identify
    a possible packet lingering on a queue. My hope was that I could spot a
    hash of some sort that would identify the packet that I'm expecting to
    get at node home (with the output of uname), but I see no match between
    the file names below and the ``hashes'' I see above---I'm not sure
    they're really hashes.

    # find ./
    ./
    ./tmp
    ./T3ULRRNAFLMMG7354E4KPS37M26SYS5BHZN5U3QIFS4J3SIXXPFA ./T3ULRRNAFLMMG7354E4KPS37M26SYS5BHZN5U3QIFS4J3SIXXPFA/tx ./T3ULRRNAFLMMG7354E4KPS37M26SYS5BHZN5U3QIFS4J3SIXXPFA/tx/hdr ./T3ULRRNAFLMMG7354E4KPS37M26SYS5BHZN5U3QIFS4J3SIXXPFA/rx ./T3ULRRNAFLMMG7354E4KPS37M26SYS5BHZN5U3QIFS4J3SIXXPFA/rx/hdr ./T3ULRRNAFLMMG7354E4KPS37M26SYS5BHZN5U3QIFS4J3SIXXPFA/toss.lock ./T3ULRRNAFLMMG7354E4KPS37M26SYS5BHZN5U3QIFS4J3SIXXPFA/tx.lock ./T3ULRRNAFLMMG7354E4KPS37M26SYS5BHZN5U3QIFS4J3SIXXPFA/DDZ76CQEAKIQNRLBEFHCU5IRWNOLAZZR2AYV24DXUFTUECKERZYQ
    ./T3ULRRNAFLMMG7354E4KPS37M26SYS5BHZN5U3QIFS4J3SIXXPFA/DDZ76CQEAKIQNRLBEFHCU5IRWNOLAZZR2AYV24DXUFTUECKERZYQ/IUJSLBWMPXYCINOFHJ42LC54T7TRKJAUOAOX6FT73BCRXPRIVMHQ
    ./T3ULRRNAFLMMG7354E4KPS37M26SYS5BHZN5U3QIFS4J3SIXXPFA/rx.lock
    ./home
    ./log.lock
    ./log
    ./DDZ76CQEAKIQNRLBEFHCU5IRWNOLAZZR2AYV24DXUFTUECKERZYQ ./DDZ76CQEAKIQNRLBEFHCU5IRWNOLAZZR2AYV24DXUFTUECKERZYQ/rx ./DDZ76CQEAKIQNRLBEFHCU5IRWNOLAZZR2AYV24DXUFTUECKERZYQ/toss.lock ./DDZ76CQEAKIQNRLBEFHCU5IRWNOLAZZR2AYV24DXUFTUECKERZYQ/tx.lock ./DDZ76CQEAKIQNRLBEFHCU5IRWNOLAZZR2AYV24DXUFTUECKERZYQ/DDZ76CQEAKIQNRLBEFHCU5IRWNOLAZZR2AYV24DXUFTUECKERZYQ
    #

    --8<-------------------------------------------------------->8--- --8<-------------------------------------------------------->8---

    (*) Relevant configuration of fbsd

    neigh: {
    self: {
    # You should give public keys below to your neighbours
    id: DDZ76CQEAKIQNRLBEFHCU5IRWNOLAZZR2AYV24DXUFTUECKERZYQ
    exchpub: TF3QPHX2ZRK2FTLFIUJVXU6S32WVXJBHE6OWTD4WVFSXVWCC4FEQ
    signpub: HY2BWDIKZ6VOUT646MGJRWY7MCF3TKOLT5RROG66I3YA36UJ2UVQ
    noisepub: M3MO4SLJMXKDH2GPJ72KDQW2IY6JDVV3GVNJQTFHXJDD6MVLPYBA

    exec: {
    # Default self's sendmail command is used for email notifications sending
    sendmail: ["/usr/sbin/sendmail"]
    uname: ["/usr/bin/uname", "-a"]
    }
    }

    home: {
    id: T3ULRRNAFLMMG7354E4KPS37M26SYS5BHZN5U3QIFS4J3SIXXPFA
    exchpub: LHK42COUVEAJT6HTEO6JAITYLCR5TSYMZZTLI5PRKFFCOVR2SEZQ
    signpub: LLSNROV3VOR6MHHHLRV2BJ2DAV3MTETIN55TOCF4K7I2GFR3IRZQ
    noisepub: SB76WL2AS6KEL4D35SFFLTIVM3LFIW73AL5ZMEIXAH2NTKUQSJ2Q
    incoming: "/home/me/nncp"
    exec: {
    sendmail: ["/usr/sbin/sendmail"]
    uname: ["/usr/bin/uname", "-a"]
    }
    }
    }

    (*) Relevant configuration of home

    neigh: {
    self: {
    # You should give public keys below to your neighbours
    id: T3ULRRNAFLMMG7354E4KPS37M26SYS5BHZN5U3QIFS4J3SIXXPFA
    exchpub: LHK42COUVEAJT6HTEO6JAITYLCR5TSYMZZTLI5PRKFFCOVR2SEZQ
    signpub: LLSNROV3VOR6MHHHLRV2BJ2DAV3MTETIN55TOCF4K7I2GFR3IRZQ
    noisepub: SB76WL2AS6KEL4D35SFFLTIVM3LFIW73AL5ZMEIXAH2NTKUQSJ2Q

    exec: {
    # Default self's sendmail command is used for email notifications sending
    sendmail: ["/usr/sbin/sendmail"]
    uname: ["/usr/bin/uname", "-a"]
    }
    }

    fbsd: {
    id: DDZ76CQEAKIQNRLBEFHCU5IRWNOLAZZR2AYV24DXUFTUECKERZYQ
    exchpub: TF3QPHX2ZRK2FTLFIUJVXU6S32WVXJBHE6OWTD4WVFSXVWCC4FEQ
    signpub: HY2BWDIKZ6VOUT646MGJRWY7MCF3TKOLT5RROG66I3YA36UJ2UVQ
    noisepub: M3MO4SLJMXKDH2GPJ72KDQW2IY6JDVV3GVNJQTFHXJDD6MVLPYBA
    incoming: "/user/home/me/nncp"
    exec: {
    sendmail: ["/usr/sbin/sendmail"]
    uname: ["/usr/bin/uname", "-a"]
    }
    addrs: {
    internet: somewhere.com:540
    }
    }
    }

    By the way, I'm hiding my correct Internet address due to this post
    being sent to the USENET.

    (*) Thanks

    I appreciate any help! Thanks!

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From John Goerzen@21:1/5 to Ethan Carter on Fri Apr 18 15:39:55 2025
    Hi Ethan,

    My apologies for the slow reply; it's been a hectic week.

    Replies inline:

    On 2025-04-12, Ethan Carter <ec1828@somewhere.edu> wrote:
    I have not understood the workflow yet. This is going to be long
    because it's my education on the subject that's the problem and it takes
    many lines to expose my thought process.

    I have two machines---an OpenBSD and a FreeBSD. The OpenBSD is called
    home and the FreeBSD is called fbsd. The machine fbsd is 24/7 on the Internet, but home is behind (at least one) NAT router. Their relevant configuration is shown below---I don't show the entire file because
    there are private keys in that file.

    The two pages that I've been trying to get help from are

    https://nncp.mirrors.quux.org/Workflow.html

    and John Goerzen's NNCP concepts page at

    https://www.complete.org/nncp-concepts/

    which is the one I've been as a guide. At first I tried file
    transmissions, but I failed to see the arrival of files, even though I
    think I might have transferred a text file properly. I then decided to
    try command execution thinking it would be something easier to get
    right: so I choose the program /uname/ to execute on the fbsd machine.
    (I show the configuration of both machines at the end of this post.)

    My attempt is to issue a uname execution on node fbsd but requested from
    node home and I expect to see the answer on node home (somehow).

    This is maybe different than UUCP; nncp-toss doesn't do anything special with the output of a command requested by nncp-exec. It will continue to retry if it
    exits in error, but that's it. If you want to get the output sent back to you, you need to do something; for instance, send it to you via the regular mail system, or send it to you via nncp-file.

    [ snip ]

    2025-04-11T23:49:59Z Exec is sent to fbsd@uname (291 B)
    b#

    The reason you see three Tx lines is because I didn't know the command
    was reading my stdin---so I pressed ENTER (IIRC) a few times and then I
    must have pressed ^D to give the program the EOF byte. The program
    finished.

    Correct.

    So I thought---okay, the request has been added to a queue at node home.

    Yes. You can verify this with nncp-stat or by looking at your log file.

    [ snip ]

    Looks good. Now I'd think the request has been added to a queue at node fbsd. In other words, I believe the uname program has not been ran yet.

    Right.

    I would now think that I must somehow process that queue on node fbsd.
    The section ``[c]ommands to process packets'' on John Goerzen's guide
    seems promising: it seems to say that I must run nncp-toss on the fbsd
    node. So I did and I got:

    # nncp-toss
    2025-04-12T00:25:29Z Got exec from home to uname (15 B)

    Yes. It ran uname, piped your input to it, and exited.

    Makes perfect sense. Now I don't know how I at node home could get the output of the command. I suppose that a new packet has been added to

    Here's where you need to do a little more work to make that happen (see above).

    the outgoing queue at node fbsd and should be transferred to node home.
    (A packet containing the uname output, I mean.) But how could I
    transfer something to node home from node fbsd? Node home has no
    Internet address. So I'm thinking that node home must request that
    transfer itself. What would be the command? It looks like nncp-freq is
    only for a file request, not for receiving the output from a command execution. So I'm stuck here.

    The network connection set up via nncp-call(er) and nncp-daemon is bidirectional. So packets destined to node home will still flow to it whenever it calls node fbsd. This is similar to UUCP.

    This is also how the public quux gateway can work. quux has a static IP, most callers don't, but that's fine because packets will flow in both directions when
    quux is called.

    I tried running nncp-stat just to see what I could see on both machines,
    but that told me not much:

    (*) At node home

    b# nncp-stat -cfg /etc/nncp.hjson
    fbsd
    self

    This is correct; nothing for fbsd after you sent the packet.


    (*) At node fbsd

    # nncp-stat
    home
    self

    (*) Trying to make sense of the queues at node fbsd

    And also correct, after the packet was received and tossed, there's nothing left
    in the queue (due to the need for more specific action to return the output of uname).

    I also looked at /var/spool/nncp at node fbsd to see if I could identify
    a possible packet lingering on a queue. My hope was that I could spot a
    hash of some sort that would identify the packet that I'm expecting to
    get at node home (with the output of uname), but I see no match between
    the file names below and the ``hashes'' I see above---I'm not sure
    they're really hashes.

    Pretty much hashes, etc.

    By the way, I'm hiding my correct Internet address due to this post
    being sent to the USENET.

    Feel free to drop me an email also if you like. Even if it's to say "look for my post in comp.mail.uucp".

    Hope this helps!

    - John

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)