README: reformat, cleanup

master
Michael Santos 1 year ago
parent f6c1fd34ca
commit 42d524be45

@ -21,6 +21,7 @@ for monitoring systems or for sending alerts.
# USAGE # USAGE
```
xmppipe [*options*] xmppipe [*options*]
XMPPIPE_USERNAME=me@example.com XMPPIPE_USERNAME=me@example.com
@ -30,6 +31,7 @@ for monitoring systems or for sending alerts.
xmpipe xmpipe
xmppipe muc xmppipe muc
xmppipe muc@example.com xmppipe muc@example.com
```
# REQUIREMENTS # REQUIREMENTS
@ -40,14 +42,18 @@ for monitoring systems or for sending alerts.
# BUILD # BUILD
```
$ make $ make
```
## Tests ## Tests
```
# Install bats: # Install bats:
# apt-get install bats # apt-get install bats
# git clone https://github.com/sstephenson/bats.git # or from git # git clone https://github.com/sstephenson/bats.git # or from git
make test make test
```
# PROCESS RESTRICTIONS # PROCESS RESTRICTIONS
@ -85,13 +91,17 @@ is used. By default:
Selecting which process restrictions are enforced is done at compile Selecting which process restrictions are enforced is done at compile
time. For example, to use the "rlimit" process restrictions: time. For example, to use the "rlimit" process restrictions:
```
RESTRICT_PROCESS=rlimit make RESTRICT_PROCESS=rlimit make
```
If the process restrictions are interfering with normal operation, please If the process restrictions are interfering with normal operation, please
open an issue. To disable all process restrictions, compile using the open an issue. To disable all process restrictions, compile using the
"null" sandbox: "null" sandbox:
```
RESTRICT_PROCESS=null make RESTRICT_PROCESS=null make
```
# OPTIONS # OPTIONS
@ -167,11 +177,11 @@ XMPPIPE_PASSWORD
Using bash: Using bash:
~~~ shell ```shell
decode() { decode() {
printf '%b' "${1//%/\\x}" printf '%b' "${1//%/\\x}"
} }
~~~ ```
# EXAMPLES # EXAMPLES
@ -179,7 +189,7 @@ decode() {
An interactive XMPP bot written in the shell: An interactive XMPP bot written in the shell:
~~~ shell ```shell
#!/bin/bash #!/bin/bash
set -o errexit set -o errexit
@ -231,40 +241,40 @@ bot() {
coproc bot coproc bot
xmppipe "$@" <&"${COPROC[0]}" >&"${COPROC[1]}" xmppipe "$@" <&"${COPROC[0]}" >&"${COPROC[1]}"
~~~ ```
## Sending Notifications/Alerts ## Sending Notifications/Alerts
Start `xmppipe` attached to a pipe: Start `xmppipe` attached to a pipe:
~~~ shell ```shell
mkfifo /tmp/xmpp mkfifo /tmp/xmpp
xmppipe -o groupchat <>/tmp/xmpp xmppipe -o groupchat <>/tmp/xmpp
~~~ ```
Any data written to the pipe will be sent to the groupchat: Any data written to the pipe will be sent to the groupchat:
~~~ shell ```shell
echo "test" >/tmp/xmpp echo "test" >/tmp/xmpp
df -h >/tmp/xmpp df -h >/tmp/xmpp
git diff >/tmp/xmpp git diff >/tmp/xmpp
~~~ ```
## SSH over XMPP ## SSH over XMPP
See [examples/ssh-over-xmpp](https://github.com/msantos/xmppipe/blob/master/examples/ssh-over-xmpp): See [examples/ssh-over-xmpp](https://github.com/msantos/xmppipe/blob/master/examples/ssh-over-xmpp):
~~~ shell ```shell
# Server: has access to the destination SSH server # Server: has access to the destination SSH server
# ssh-over-xmpp server <conference> <IP address> <port> # ssh-over-xmpp server <conference> <IP address> <port>
ssh-over-xmpp server sshxmpp 1.2.3.4 22 ssh-over-xmpp server sshxmpp 1.2.3.4 22
## Client: has access to the XMPP server ## Client: has access to the XMPP server
ssh -o ProxyCommand="ssh-over-xmpp client sshxmpp" 127.0.0.1 ssh -o ProxyCommand="ssh-over-xmpp client sshxmpp" 127.0.0.1
~~~ ```
## Stream Events from Riemann ## Stream Events from Riemann
@ -272,17 +282,17 @@ This example will stream events from a query to an XMPP MUC using
[Riemann's](https://github.com/riemann/riemann) SSE interface. The events [Riemann's](https://github.com/riemann/riemann) SSE interface. The events
are written to a named pipe to avoid buffering. are written to a named pipe to avoid buffering.
~~~ shell ```shell
coproc curl -s --get --data subscribe=true \ coproc curl -s --get --data subscribe=true \
--data-urlencode 'query=(service ~= "^example")' \ --data-urlencode 'query=(service ~= "^example")' \
http://example.com:80/index </dev/null http://example.com:80/index </dev/null
xmppipe --verbose --verbose \ xmppipe --verbose --verbose \
--discard --subject "riemann events" muc <&"${COPROC[0]}" --discard --subject "riemann events" muc <&"${COPROC[0]}"
~~~ ```
### Desktop Notifications ### Desktop Notifications
~~~ shell ```shell
#!/bin/bash #!/bin/bash
set -o errexit set -o errexit
@ -308,13 +318,13 @@ xmppipe "$@" | while IFS=: read stanza type from to body; do
*) continue ;; *) continue ;;
esac esac
done done
~~~ ```
### Mirror a terminal session using script(1) ### Mirror a terminal session using script(1)
* user * user
~~~ shell ```shell
#!/bin/bash #!/bin/bash
MUC=console MUC=console
@ -326,11 +336,11 @@ mkfifo "$FIFO"
stty cols 80 rows 24 stty cols 80 rows 24
xmppipe --resource user -x $MUC < "$FIFO" >/dev/null 2>"$TMPDIR/stderr" & xmppipe --resource user -x $MUC < "$FIFO" >/dev/null 2>"$TMPDIR/stderr" &
script -q -f "$FIFO" script -q -f "$FIFO"
~~~ ```
* viewers * viewers
~~~ shell ```shell
#!/bin/bash #!/bin/bash
decode() { decode() {
@ -342,7 +352,7 @@ xmppipe --resource viewer --base64 console |
while IFS=: read -r x s f t m; do while IFS=: read -r x s f t m; do
[ "$m" = "m" ] && decode "$m" [ "$m" = "m" ] && decode "$m"
done done
~~~ ```
## Image Upload ## Image Upload
@ -350,14 +360,14 @@ Upload an image using HTTP Upload (XEP-0363) then display it inline.
See [examples/image-upload](https://github.com/msantos/xmppipe/blob/master/examples/image-upload): See [examples/image-upload](https://github.com/msantos/xmppipe/blob/master/examples/image-upload):
~~~ ```
image-upload -o groupchat image-upload -o groupchat
~~~ ```
~~~ ```
# file must be in the same working directory as image-upload # file must be in the same working directory as image-upload
echo "upload::::example.png" >/tmp/image_upload/stdin echo "upload::::example.png" >/tmp/image_upload/stdin
~~~ ```
# FORMAT # FORMAT
@ -369,28 +379,36 @@ is set to csv (`--format=csv`).
## Presence ## Presence
```
p:<available|unavailable>:<to jid>:<from jid> p:<available|unavailable>:<to jid>:<from jid>
```
Input/Output: ### Input/Output
Both Both
Example: ### Example
```
p:available:test@muc.example.com/xmppipe:occupant@example.com/1234 p:available:test@muc.example.com/xmppipe:occupant@example.com/1234
```
## Message ## Message
```
m:<chat|groupchat|normal|headline>:<from jid>:<to jid>:<message body> m:<chat|groupchat|normal|headline>:<from jid>:<to jid>:<message body>
```
Input/Output: ### Input/Output
Both Both
Example: ### Example
```
m:groupchat:test@muc.example.com/mobile:user1@example.com/1234:Hello m:groupchat:test@muc.example.com/mobile:user1@example.com/1234:Hello
m:chat:user1@example.com/mobile:user2@example.com:Message%20goes%20here m:chat:user1@example.com/mobile:user2@example.com:Message%20goes%20here
```
## Inline Image ## Inline Image
@ -401,15 +419,19 @@ the image instead of a URL.
* type, from and to are optional * type, from and to are optional
* message body: the percent escaped URL * message body: the percent escaped URL
```
I:<chat|groupchat|normal|headline>:<from jid>:<to jid>:<url> I:<chat|groupchat|normal|headline>:<from jid>:<to jid>:<url>
```
Input/Output: ### Input/Output
Input only Input only
Example: ### Example
```
I::::https%3A%2F%2Fhttpstatusdogs.com%2Fimg%2F500.jpg I::::https%3A%2F%2Fhttpstatusdogs.com%2Fimg%2F500.jpg
```
## XEP-0363: HTTP Upload ## XEP-0363: HTTP Upload
@ -428,7 +450,9 @@ The input format is:
* size * size
* optional: MIME type * optional: MIME type
```
u:<chat|groupchat|normal|headline>:<from jid>:<to jid>:<filename>|<size (bytes)>[|<content-type>] u:<chat|groupchat|normal|headline>:<from jid>:<to jid>:<filename>|<size (bytes)>[|<content-type>]
```
The output format is: The output format is:
@ -437,10 +461,13 @@ The output format is:
* get URL * get URL
* put URL * put URL
```
U:<chat|groupchat|normal|headline>:<from jid>:<to jid>:<get URL>|<put URL> U:<chat|groupchat|normal|headline>:<from jid>:<to jid>:<get URL>|<put URL>
```
Example: ### Example
```
# $ stat --format="%s" example.png # $ stat --format="%s" example.png
# 16698 # 16698
u::::example.png%7C16698 u::::example.png%7C16698
@ -453,6 +480,7 @@ Example:
# to upload the file # to upload the file
curl https://example.com/upload/0b9da82fea20a78778cbeddeab0472286cc35ed1/xyEaWFVZv3sv5ay9AGH5qBU02gglZRyUeGbjQg3k/example.png --upload-file example.png curl https://example.com/upload/0b9da82fea20a78778cbeddeab0472286cc35ed1/xyEaWFVZv3sv5ay9AGH5qBU02gglZRyUeGbjQg3k/example.png --upload-file example.png
```
# COMPATIBILITY # COMPATIBILITY
@ -468,7 +496,7 @@ Also confirmed to work with:
# LICENSE # LICENSE
Copyright (c) 2015-2022, Michael Santos <michael.santos@gmail.com> Copyright (c) 2015-2023, Michael Santos michael.santos@gmail.com
Permission to use, copy, modify, and/or distribute this software for any Permission to use, copy, modify, and/or distribute this software for any
purpose with or without fee is hereby granted, provided that the above purpose with or without fee is hereby granted, provided that the above

Loading…
Cancel
Save