GO-SENDXMPP(1)

NAME
go-sendxmpp - A tool to send messages to an XMPP contact or MUC.

SYNOPSIS
go-sendxmpp [-cdilnt] [-a value] [--fast-off] [-f value] [--headline] [--help] [-h value] [-j value] [-m value] [--muc-password value] [--oob-file value] [--ox] [--ox-delete-nodes] [--ox-genprivkey-rsa] [--ox-genprivkey-x25519] [--ox-import-privkey value] [--ox-passphrase value] [-p value] [--allow-plain] [--raw] [--scram-mech-pinning value] [--ssdp-off] [-s value] [--timeout value] [--tls-version value] [-u value] [--version] [recipients…]

DESCRIPTION
A tool to send messages to an XMPP contact or MUC inspired by sendxmpp.
You can either pipe a programs output to go-sendxmpp, write in your terminal (put ^D in a new line to finish) or send the input from a file (-m or --message). The account data is expected at ~/.config/go-sendxmpp/config (preferred), ~/.config/go-sendxmpp/sendxmpprc (deprecated) ~/.sendxmpprc (for compatibility with the original perl sendxmpp) if no other configuration file location is specified with -f or --file.

OPTIONS

-a, --alias=[value]
    Set alias/nickname for chatrooms.

-c, --chatroom=[value]
    Send message to a chatroom.

-d, --debug
    Show debugging info.

--fast-off
    Disable XEP-0484: Fast Authentication Streamlining Tokens.

-f, --file=[value]
    Set configuration file. (Default: ~/.config/go-sendxmpp/config)

--headline
    Send message as type headline.

--help
    Show help.

-h, --http-upload=[value]
    Send a file via http-upload.

-i, --interactive
    Interactive mode (for use with e.g. tail -f).

-j, --jserver=[value]
    XMPP server address.

-l, --listen
    Listen for messages and print them to stdout. If JIDs are specified only messages from those contacts are shown. If no JIDs are specified all received messages will be shown.

-m, --message=[value]
    Set file including the message.

--muc-password=[value]
    Password for password protected MUCs.

-n, --no-tls-verify
    Skip verification of TLS certificates (not recommended).

--oob-file=[value]
    URL to send a file as out of band data.

--ox
    Use "OpenPGP for XMPP" encryption (experimental).
    Ox in go-sendxmpp only supports sending encrypted 1-1 messages. Sending to groupchats and sending encrypted files is not supported. There is no check whether the recipients key is trusted as there is no local keyring used. Go-sendxmpp just uses the most recent key that is provided via pubsub and checks that it is not expired. As a user facing client a notification would be shown that a new key is available and ask the user whether to use the new key or stick to the old one. As go-sendxmpp is usually used in scripts it just accepts the new key to prevent the user from missing a new notification due to changed keys.

--ox-delete-nodes
    Delete existing OpenPGP nodes on the server.

--ox-genprivkey-rsa
    Generate a private OpenPGP key (RSA 4096 bit) for the configured account (via config file or -u and -p) and publish the corresponding public key. Go-sendxmpp will save the key in $XDG_DATA_HOME/go-sendxmpp/oxprivkeys or $HOME/.local/share/go-sendxmpp/oxprivkeys. To protect the key a passphrase might be set using --ox-passphrase while generating the key.
    If there is an existing private key for "OpenPGP for XMPP" created by another client (e.g. profanity) it might be imported using --ox-import-privkey.

--ox-genprivkey-x25519
    Generate a private OpenPGP key (X25519) for the configured account (via config file or -u and -p) and publish the corresponding public key. Go-sendxmpp will save the key in $XDG_DATA_HOME/go-sendxmpp/oxprivkeys or $HOME/.local/share/go-sendxmpp/oxprivkeys. To protect the key a passphrase might be set using --ox-passphrase while generating the key.
    If there is an existing private key for "OpenPGP for XMPP" created by another client (e.g. profanity) it might be imported using --ox-import-privkey.

--ox-import-privkey=[value]
    Import an existing private OpenPGP key.

--ox-passphrase=[value]
    Passphrase for locking and unlocking the private OpenPGP key.

-p, --password=[value]
    Password for XMPP account.

--allow-plain
    Allow PLAIN authentication. Note that this setting has no effect if there was a successful connection using a SCRAM authentication mechanism before. In that case PLAIN is not allowed to prevent downgrades by a man-in-the-middle attack.

--raw
    Send raw XML. To send raw XML to a contact as normal chat message no contact must be specified. To send raw XML to a MUC you have to specify the MUC via -c and go-sendxmpp will join the MUC.

--scram-mech-pinning=[<value>]
    Enforce the use of a certain SCRAM authentication mechanism. Currently go-sendxmpp supports SCRAM-SHA-1, SCRAM-SHA-1-PLUS, SCRAM-SHA-256, SCRAM-SHA-256-PLUS, SCRAM-SHA-512 and SCRAM-SHA-512-PLUS. You should know what you are doing when using this setting and make sure the chosen mechanism is supported by the server. If not set, go-sendxmpp will use XEP-0474 to prevent downgrade attacks (needs server support).

--ssdp-off
    Disable XEP-0474: SASL SCRAM Downgrade Protection.

-s, --subject=[value]
    Set message subject.

--timeout=[value]
    Connection timeout in seconds. (Default: 10)

-t, --tls
    Use direct TLS.

--tls-version=[value]
    Minimal TLS version. 10 (TLSv1.0), 11 (TLSv1.1), 12 (TLSv1.2), 13 (TLSv1.3) (Default: 12)

-u, --username=[value]
    Username for XMPP account (JID).

--version
    Show version information.

ENVIRONMENT VARIABLES

  HTTP_PROXY
A SOCKS5 proxy can be used by setting the environment variable HTTP_PROXY. This feature is considered experimental and there is no guarantee that there won't be any connections not using the proxy although it didn't happen during testing.

    HTTP_PROXY="socks5://127.0.0.1:9050" go-sendxmpp --http-upload file.txt user@example.org

TIPS

  USAGE BY ROOT
In general it's a good advice to only perform commands as root when it is strictly necessary. To be able to send the output from commands, that need to be performed as root, with go-sendxmpp without invoking go-sendxmpp by root sudo can be used.

In this example there is a user sendxmpp with a go-sendxmpp config in its $HOME:

    # command-that-requires-root|sudo -H -u sendxmpp go-sendxmpp me@example.org

SHELL COMPLETIONS

  ZSH
There are no shell completions yet (contributions welcome) but for zsh it is possible to automatically create completions from --help which might work good enough.

Just place the following in your ~/.zshrc or ~/.zshrc.local:

    compdef _gnu_generic go-sendxmpp

  FISH
There are no shell completions yet, but FISH can generate them from the man page with following command:

    fish_update_completions

CHAT
Feel free to join https://join.jabber.network/#go-sendxmpp@chat.mdosch.de?join.

AUTHOR
Written by Martin Dosch.

REPORTING BUGS
Report bugs at https://salsa.debian.org/mdosch/go-sendxmpp/issues.

COPYRIGHT
Copyright (c) Martin Dosch License: BSD 2-clause License

SEE ALSO
go-sendxmpp(5), sendxmpp(1)