1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330
|
<!DOCTYPE html>
<html>
<head>
<meta http-equiv='content-type' content='text/html;charset=utf-8'>
<meta name='generator' content='Ronn-NG/v0.10.1 (http://github.com/apjanke/ronn-ng/tree/0.10.1)'>
<title>go-sendxmpp(1) - A tool to send messages to an XMPP contact or MUC.</title>
<style type='text/css' media='all'>
/* style: man */
body#manpage {margin:0}
.mp {max-width:100ex;padding:0 9ex 1ex 4ex}
.mp p,.mp pre,.mp ul,.mp ol,.mp dl {margin:0 0 20px 0}
.mp h2 {margin:10px 0 0 0}
.mp > p,.mp > pre,.mp > ul,.mp > ol,.mp > dl {margin-left:8ex}
.mp h3 {margin:0 0 0 4ex}
.mp dt {margin:0;clear:left}
.mp dt.flush {float:left;width:8ex}
.mp dd {margin:0 0 0 9ex}
.mp h1,.mp h2,.mp h3,.mp h4 {clear:left}
.mp pre {margin-bottom:20px}
.mp pre+h2,.mp pre+h3 {margin-top:22px}
.mp h2+pre,.mp h3+pre {margin-top:5px}
.mp img {display:block;margin:auto}
.mp h1.man-title {display:none}
.mp,.mp code,.mp pre,.mp tt,.mp kbd,.mp samp,.mp h3,.mp h4 {font-family:monospace;font-size:14px;line-height:1.42857142857143}
.mp h2 {font-size:16px;line-height:1.25}
.mp h1 {font-size:20px;line-height:2}
.mp {text-align:justify;background:#fff}
.mp,.mp code,.mp pre,.mp pre code,.mp tt,.mp kbd,.mp samp {color:#131211}
.mp h1,.mp h2,.mp h3,.mp h4 {color:#030201}
.mp u {text-decoration:underline}
.mp code,.mp strong,.mp b {font-weight:bold;color:#131211}
.mp em,.mp var {font-style:italic;color:#232221;text-decoration:none}
.mp a,.mp a:link,.mp a:hover,.mp a code,.mp a pre,.mp a tt,.mp a kbd,.mp a samp {color:#0000ff}
.mp b.man-ref {font-weight:normal;color:#434241}
.mp pre {padding:0 4ex}
.mp pre code {font-weight:normal;color:#434241}
.mp h2+pre,h3+pre {padding-left:0}
ol.man-decor,ol.man-decor li {margin:3px 0 10px 0;padding:0;float:left;width:33%;list-style-type:none;text-transform:uppercase;color:#999;letter-spacing:1px}
ol.man-decor {width:100%}
ol.man-decor li.tl {text-align:left}
ol.man-decor li.tc {text-align:center;letter-spacing:4px}
ol.man-decor li.tr {text-align:right;float:right}
</style>
</head>
<!--
The following styles are deprecated and will be removed at some point:
div#man, div#man ol.man, div#man ol.head, div#man ol.man.
The .man-page, .man-decor, .man-head, .man-foot, .man-title, and
.man-navigation should be used instead.
-->
<body id='manpage'>
<div class='mp' id='man'>
<div class='man-navigation' style='display:none'>
<a href="#NAME">NAME</a>
<a href="#SYNOPSIS">SYNOPSIS</a>
<a href="#DESCRIPTION">DESCRIPTION</a>
<a href="#OPTIONS">OPTIONS</a>
<a href="#ENVIRONMENT-VARIABLES">ENVIRONMENT VARIABLES</a>
<a href="#TIPS">TIPS</a>
<a href="#SHELL-COMPLETIONS">SHELL COMPLETIONS</a>
<a href="#CHAT">CHAT</a>
<a href="#AUTHOR">AUTHOR</a>
<a href="#REPORTING-BUGS">REPORTING BUGS</a>
<a href="#COPYRIGHT">COPYRIGHT</a>
<a href="#SEE-ALSO">SEE ALSO</a>
</div>
<ol class='man-decor man-head man head'>
<li class='tl'>go-sendxmpp(1)</li>
<li class='tc'></li>
<li class='tr'>go-sendxmpp(1)</li>
</ol>
<h2 id="NAME">NAME</h2>
<p class="man-name">
<code>go-sendxmpp</code> - <span class="man-whatis">A tool to send messages to an XMPP contact or MUC.</span>
</p>
<h2 id="SYNOPSIS">SYNOPSIS</h2>
<p><code>go-sendxmpp [-cdilntv] [-a value] [--allow-plain] [--anonymous] [--fast-invalidate] [--fast-off] [-f value] [--headline] [--help] [-h value] [-j value] [--legacy-pgp] [-m value] [--muc-password value] [--no-sasl-upgrade] [--oob-file value] [--ox] [--ox-delete-nodes] [--ox-genprivkey-rsa] [--ox-genprivkey-x25519] [--ox-import-privkey value] [--ox-passphrase value] [-p value] [--raw] [-r value] [--retry-connect value] [--retry-connect-max value] [--scram-mech-pinning value] [--ssdp-off] [-s value] [--suppress-root-warning] [--timeout value] [--tls-version value] [-u value] [--version] [recipients…]</code></p>
<h2 id="DESCRIPTION">DESCRIPTION</h2>
<p>A tool to send messages to an XMPP contact or MUC inspired by <code>sendxmpp</code>. <br>
You can either pipe a programs output to <code>go-sendxmpp</code>, write in your terminal (put <code>^D</code> in a new line to
finish) or send the input from a file (<code>-m</code> or <code>--message</code>).
The account data is expected at <code>~/.config/go-sendxmpp/config</code> (preferred), <code>~/.config/go-sendxmpp/sendxmpprc</code>
(deprecated) <code>~/.sendxmpprc</code> (for compatibility with the original perl sendxmpp) if no other configuration
file location is specified with <code>-f</code> or <code>--file</code>.</p>
<h2 id="OPTIONS">OPTIONS</h2>
<dl>
<dt>
<code>-a</code>, <code>--alias</code>=[<var>value</var>]</dt>
<dd>Set alias/nickname for chatrooms.</dd>
<dt><code>--allow-plain</code></dt>
<dd>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.</dd>
<dt><code>--anonymous</code></dt>
<dd>Use anonymous authentication. Specify the the target server by using the flag <code>-u</code> or <code>--username</code>. Username is used to specify the server to be able to override the server by using <code>-j</code> or <code>--jserver</code> in cases where the service (e.g. anon.example.org) is served by another server (e.g. xmpp.example.org) but no SRV records are set up.</dd>
<dt>
<code>-c</code>, <code>--chatroom</code>=[<var>value</var>]</dt>
<dd>Send message to a chatroom.</dd>
<dt>
<code>-d</code>, <code>--debug</code>
</dt>
<dd>Show XMPP stanzas. These can include sensitive data.</dd>
<dt><code>--fast-invalidate</code></dt>
<dd>Invalidate XEP-0484: Fast Authentication Streamlining Tokens. The current FAST token will be invalidated and a new one will be requested. If used together with <code>--fast-off</code> the FAST token will be invalidated and the stored FAST token deleted.</dd>
<dt><code>--fast-off</code></dt>
<dd>Disable XEP-0484: Fast Authentication Streamlining Tokens. Deletes the stored FAST token when used together with <code>--fast-invalidate</code>.</dd>
<dt>
<code>-f</code>, <code>--file</code>=[<var>value</var>]</dt>
<dd>Set configuration file. (Default: ~/.config/go-sendxmpp/config)</dd>
<dt><code>--headline</code></dt>
<dd>Send message as type headline.</dd>
<dt><code>--help</code></dt>
<dd>Show help.</dd>
<dt>
<code>-h</code>, <code>--http-upload=</code>[<var>value</var>]</dt>
<dd>Send a file via http-upload. Can be invoked several times to upload multiple files.</dd>
<dt>
<code>-i</code>, <code>--interactive</code>
</dt>
<dd>Interactive mode (for use with e.g. <code>tail -f</code>).</dd>
<dt>
<code>-j</code>, <code>--jserver</code>=[<var>value</var>]</dt>
<dd>XMPP server address.</dd>
<dt><code>--legacy-pgp</code></dt>
<dd>"Legacy PGP" encryption using the Ox key infrastructure. This means the recipient must have an Ox key published and use the same key for legacy PGP.
The use of legacy PGP is actually discouraged and only provided as a workaround for conversations users.
If the existing key has no ID in the form of <code>xmpp:user@example.org</code>, it can be added by using the tool <em>sq</em>:
<pre><code> $ sq key userid add -u xmpp:user@example.org -Bo newkey.asc oldkey.asc`
</code></pre>
<p>This key (<code>newkey.asc</code> in the <em>sq</em> example) can than be imported by using <code>--ox-import-privkey</code>.
Please note that this will store the secret key at <code>~/.local/share/go-sendxmpp/user_at_example_org/oxprivkey</code>.
If you don't want to use that account with go-sendxmpp and only imported the key to upload the public key to pubsub you might consider
deleting the file.</p>
</dd>
<dt>
<code>-l</code>, <code>--listen</code>
</dt>
<dd>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.</dd>
<dt>
<code>-m</code>, <code>--message</code>=[<var>value</var>]</dt>
<dd>Set file including the message.</dd>
<dt>
<code>--muc-password</code>=[<var>value</var>]</dt>
<dd>Password for password protected MUCs.</dd>
<dt><code>--no-sasl-upgrade</code></dt>
<dd>Disable XEP-0480: SASL Upgrade Tasks.</dd>
<dt>
<code>-n</code>, <code>--no-tls-verify</code>
</dt>
<dd>Skip verification of TLS certificates (not recommended).</dd>
<dt>
<code>--oob-file</code>=[<var>value</var>]</dt>
<dd>URL to send a file as out of band data.</dd>
<dt><code>--ox</code></dt>
<dd>Use "OpenPGP for XMPP" encryption (experimental). <br>
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.</dd>
<dt><code>--ox-delete-nodes</code></dt>
<dd>Delete existing OpenPGP nodes on the server.</dd>
<dt><code>--ox-genprivkey-rsa</code></dt>
<dd>Generate a private OpenPGP key (RSA 4096 bit) for the configured account (via config file or <code>-u</code> and <code>-p</code>)
and publish the corresponding public key.
Go-sendxmpp will save the key in <code>$XDG_DATA_HOME/go-sendxmpp/oxprivkeys</code> or
<code>$HOME/.local/share/go-sendxmpp/oxprivkeys</code>. To protect the key a passphrase might be set
using <code>--ox-passphrase</code> while generating the key. <br>
If there is an existing private key for "OpenPGP for XMPP" created by another client (e.g. profanity)
it might be imported using <code>--ox-import-privkey</code>.</dd>
<dt><code>--ox-genprivkey-x25519</code></dt>
<dd>Generate a private OpenPGP key (X25519) for the configured account (via config file or <code>-u</code> and <code>-p</code>)
and publish the corresponding public key.
Go-sendxmpp will save the key in <code>$XDG_DATA_HOME/go-sendxmpp/oxprivkeys</code> or
<code>$HOME/.local/share/go-sendxmpp/oxprivkeys</code>. To protect the key a passphrase might be set
using <code>--ox-passphrase</code> while generating the key. <br>
If there is an existing private key for "OpenPGP for XMPP" created by another client (e.g. profanity)
it might be imported using <code>--ox-import-privkey</code>.</dd>
<dt>
<code>--ox-import-privkey</code>=[<var>value</var>]</dt>
<dd>Import an existing private OpenPGP key.</dd>
<dt>
<code>--ox-passphrase</code>=[<var>value</var>]</dt>
<dd>Passphrase for locking and unlocking the private OpenPGP key.</dd>
<dt>
<code>-p</code>, <code>--password</code>=[<var>value</var>]</dt>
<dd>Password for XMPP account.</dd>
<dt><code>--raw</code></dt>
<dd>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 <code>-c</code> and go-sendxmpp will join the MUC.</dd>
<dt>
<code>-r</code>, <code>--recipients</code>=[<var>value</var>]</dt>
<dd>Read recipients from file, one JID per line.</dd>
<dt>
<code>--retry-connect</code>=[<var>value</var>]</dt>
<dd>Specify a connection retry waiting time in seconds. This specifies the waiting time until go-sendxmpp
will try to reconnect if connecting fails. This setting only affects the initial connection, it does not
reconnect after losing the connection. It is also ignored if the connection fails due to an authentication
error as then it does not make sense to try again using the same credentials. Setting a time of 0 seconds
disables this functionality.
(Default: 0)</dd>
<dt>
<code>--retry-connect-max</code>=[<var>value</var>]</dt>
<dd>Number of maximum retries to perform for '--retry-connect'. A value of 0 means unlimited retries.
(Default: 0)</dd>
<dt><code>--scram-mech-pinning=[<value>]</code></dt>
<dd>Enforce the use of a certain SCRAM authentication mechanism. Currently go-sendxmpp supports
<strong>SCRAM-SHA-1</strong>, <strong>SCRAM-SHA-1-PLUS</strong>, <strong>SCRAM-SHA-256</strong>, <strong>SCRAM-SHA-256-PLUS</strong>, <strong>SCRAM-SHA-512</strong>
and <strong>SCRAM-SHA-512-PLUS</strong>. 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 and requires a SCRAM authentication mechanism).</dd>
<dt><code>--ssdp-off</code></dt>
<dd>Disable XEP-0474: SASL SCRAM Downgrade Protection.</dd>
<dt>
<code>-s</code>, <code>--subject</code>=[<var>value</var>]</dt>
<dd>Set message subject.</dd>
<dt><code>--suppress-root-warning</code></dt>
<dd>Suppress warning when run as root.</dd>
<dt>
<code>--timeout=</code>[<var>value</var>]</dt>
<dd>Connection timeout in seconds. (Default: 10)</dd>
<dt>
<code>-t</code>, <code>--tls</code>
</dt>
<dd>Use direct TLS.</dd>
<dt>
<code>--tls-version</code>=[<var>value</var>]</dt>
<dd>Minimal TLS version. 10 (TLSv1.0), 11 (TLSv1.1), 12 (TLSv1.2), 13 (TLSv1.3) (Default: 13)</dd>
<dt>
<code>-u</code>, <code>--username</code>=[<var>value</var>]</dt>
<dd>Username for XMPP account (JID).</dd>
<dt>
<code>-v</code>, <code>--verbose</code>
</dt>
<dd>Show debug information. These can include sensitive data.</dd>
<dt><code>--version</code></dt>
<dd>Show version information.</dd>
</dl>
<h2 id="ENVIRONMENT-VARIABLES">ENVIRONMENT VARIABLES</h2>
<h3 id="HTTP_PROXY">HTTP_PROXY</h3>
<p>A SOCKS5 proxy can be used by setting the environment variable <code>HTTP_PROXY</code>. 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.</p>
<pre><code>HTTP_PROXY="socks5://127.0.0.1:9050" go-sendxmpp --http-upload file.txt user@example.org
</code></pre>
<h2 id="TIPS">TIPS</h2>
<h3 id="USAGE-BY-ROOT">USAGE BY ROOT</h3>
<p>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.</p>
<p>In this example there is a user <strong>sendxmpp</strong> with a go-sendxmpp config in its <code>$HOME</code>:</p>
<pre><code># command-that-requires-root|sudo -H -u sendxmpp go-sendxmpp me@example.org
</code></pre>
<h2 id="SHELL-COMPLETIONS">SHELL COMPLETIONS</h2>
<h3 id="ZSH">ZSH</h3>
<p>There are no shell completions yet (contributions welcome) but for zsh it is
possible to automatically create completions from <code>--help</code> which might work
good enough.</p>
<p>Just place the following in your <code>~/.zshrc</code>:</p>
<pre><code>compdef _gnu_generic go-sendxmpp
</code></pre>
<h3 id="FISH">FISH</h3>
<p>There are no shell completions yet, but FISH can generate them from the man page with following command:</p>
<pre><code>fish_update_completions
</code></pre>
<h2 id="CHAT">CHAT</h2>
<p>Feel free to join <a href="https://join.jabber.network/#go-sendxmpp@chat.mdosch.de?join" data-bare-link="true">https://join.jabber.network/#go-sendxmpp@chat.mdosch.de?join</a>.</p>
<h2 id="AUTHOR">AUTHOR</h2>
<p>Written by Martin Dosch.</p>
<h2 id="REPORTING-BUGS">REPORTING BUGS</h2>
<p>Report bugs at <a href="https://salsa.debian.org/mdosch/go-sendxmpp/issues" data-bare-link="true">https://salsa.debian.org/mdosch/go-sendxmpp/issues</a>.</p>
<h2 id="COPYRIGHT">COPYRIGHT</h2>
<p>Copyright (c) Martin Dosch
License: BSD 2-clause License</p>
<h2 id="SEE-ALSO">SEE ALSO</h2>
<p><span class="man-ref">go-sendxmpp<span class="s">(5)</span></span>, <span class="man-ref">xmppc<span class="s">(1)</span></span>, <span class="man-ref">sendxmpp<span class="s">(1)</span></span></p>
<ol class='man-decor man-foot man foot'>
<li class='tl'></li>
<li class='tc'>August 2025</li>
<li class='tr'>go-sendxmpp(1)</li>
</ol>
</div>
</body>
</html>
|