Software /
code /
prosody-modules
Annotate
mod_rest/example/rest.sh @ 6120:bd3ff802d883
mod_anti_spam: Fix another traceback for origin sessions without an IP
This is likely to be the case for stanzas originating from local hosts, for
example (so not true s2s). It should be safe to bypass the IP check for those.
author | Matthew Wild <mwild1@gmail.com> |
---|---|
date | Sat, 28 Dec 2024 21:02:08 +0000 |
parent | 5964:a9c75430cb26 |
rev | line source |
---|---|
5281
4ed65a6c2a6a
mod_rest: Add an example bash script for using mod_rest
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
1 #!/bin/bash -eu |
4ed65a6c2a6a
mod_rest: Add an example bash script for using mod_rest
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
2 |
4ed65a6c2a6a
mod_rest: Add an example bash script for using mod_rest
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
3 # Copyright (c) Kim Alvefur |
4ed65a6c2a6a
mod_rest: Add an example bash script for using mod_rest
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
4 # This file is MIT/X11 licensed. |
4ed65a6c2a6a
mod_rest: Add an example bash script for using mod_rest
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
5 |
5329
107d60c70c1a
mod_rest/rest.sh: List dependencies in comment
Kim Alvefur <zash@zash.se>
parents:
5281
diff
changeset
|
6 # Dependencies: |
107d60c70c1a
mod_rest/rest.sh: List dependencies in comment
Kim Alvefur <zash@zash.se>
parents:
5281
diff
changeset
|
7 # - https://httpie.io/ |
5654
b3484a112300
mod_rest/rest.sh: Update to use httpie-oauth2 plugin
Kim Alvefur <zash@zash.se>
parents:
5432
diff
changeset
|
8 # - https://hg.sr.ht/~zash/httpie-oauth2 |
5329
107d60c70c1a
mod_rest/rest.sh: List dependencies in comment
Kim Alvefur <zash@zash.se>
parents:
5281
diff
changeset
|
9 |
5655
acd2f397ce6b
mod_rest/rest.sh: Silence shellcheck SC1091
Kim Alvefur <zash@zash.se>
parents:
5654
diff
changeset
|
10 # shellcheck disable=SC1091 |
acd2f397ce6b
mod_rest/rest.sh: Silence shellcheck SC1091
Kim Alvefur <zash@zash.se>
parents:
5654
diff
changeset
|
11 |
5964
a9c75430cb26
mod_rest: use bash getopts to handle cli flags in example script
Kim Alvefur <zash@zash.se>
parents:
5689
diff
changeset
|
12 SELF="${0##*/}" |
a9c75430cb26
mod_rest: use bash getopts to handle cli flags in example script
Kim Alvefur <zash@zash.se>
parents:
5689
diff
changeset
|
13 function usage() { |
a9c75430cb26
mod_rest: use bash getopts to handle cli flags in example script
Kim Alvefur <zash@zash.se>
parents:
5689
diff
changeset
|
14 echo "${SELF} [-h HOST] [-rw] [/path] kind=(message|presence|iq) ...." |
a9c75430cb26
mod_rest: use bash getopts to handle cli flags in example script
Kim Alvefur <zash@zash.se>
parents:
5689
diff
changeset
|
15 # Last arguments are handed to HTTPie, so refer to its docs for further details |
a9c75430cb26
mod_rest: use bash getopts to handle cli flags in example script
Kim Alvefur <zash@zash.se>
parents:
5689
diff
changeset
|
16 } |
a9c75430cb26
mod_rest: use bash getopts to handle cli flags in example script
Kim Alvefur <zash@zash.se>
parents:
5689
diff
changeset
|
17 |
5281
4ed65a6c2a6a
mod_rest: Add an example bash script for using mod_rest
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
18 # Settings |
4ed65a6c2a6a
mod_rest: Add an example bash script for using mod_rest
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
19 HOST="" |
4ed65a6c2a6a
mod_rest: Add an example bash script for using mod_rest
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
20 DOMAIN="" |
4ed65a6c2a6a
mod_rest: Add an example bash script for using mod_rest
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
21 |
5689
e5ad3f1f48bd
mod_rest/rest.sh: Restore default read-only behavior and the -rw flag
Kim Alvefur <zash@zash.se>
parents:
5655
diff
changeset
|
22 SESSION="session-read-only" |
e5ad3f1f48bd
mod_rest/rest.sh: Restore default read-only behavior and the -rw flag
Kim Alvefur <zash@zash.se>
parents:
5655
diff
changeset
|
23 |
5281
4ed65a6c2a6a
mod_rest: Add an example bash script for using mod_rest
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
24 if [ -f "${XDG_CONFIG_HOME:-$HOME/.config}/restrc" ]; then |
4ed65a6c2a6a
mod_rest: Add an example bash script for using mod_rest
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
25 # Config file can contain the above settings |
4ed65a6c2a6a
mod_rest: Add an example bash script for using mod_rest
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
26 source "${XDG_CONFIG_HOME:-$HOME/.config}/restrc" |
5654
b3484a112300
mod_rest/rest.sh: Update to use httpie-oauth2 plugin
Kim Alvefur <zash@zash.se>
parents:
5432
diff
changeset
|
27 |
b3484a112300
mod_rest/rest.sh: Update to use httpie-oauth2 plugin
Kim Alvefur <zash@zash.se>
parents:
5432
diff
changeset
|
28 if [ -z "${SCOPE:-}" ]; then |
b3484a112300
mod_rest/rest.sh: Update to use httpie-oauth2 plugin
Kim Alvefur <zash@zash.se>
parents:
5432
diff
changeset
|
29 SCOPE="openid xmpp" |
b3484a112300
mod_rest/rest.sh: Update to use httpie-oauth2 plugin
Kim Alvefur <zash@zash.se>
parents:
5432
diff
changeset
|
30 fi |
5281
4ed65a6c2a6a
mod_rest: Add an example bash script for using mod_rest
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
31 fi |
5432
1c52efb6fd42
mod_rest/rest.sh: Trim trailing whitespace
Kim Alvefur <zash@zash.se>
parents:
5431
diff
changeset
|
32 |
5281
4ed65a6c2a6a
mod_rest: Add an example bash script for using mod_rest
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
33 if [[ $# == 0 ]]; then |
5964
a9c75430cb26
mod_rest: use bash getopts to handle cli flags in example script
Kim Alvefur <zash@zash.se>
parents:
5689
diff
changeset
|
34 usage |
a9c75430cb26
mod_rest: use bash getopts to handle cli flags in example script
Kim Alvefur <zash@zash.se>
parents:
5689
diff
changeset
|
35 exit 1 |
5281
4ed65a6c2a6a
mod_rest: Add an example bash script for using mod_rest
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
36 fi |
4ed65a6c2a6a
mod_rest: Add an example bash script for using mod_rest
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
37 |
5964
a9c75430cb26
mod_rest: use bash getopts to handle cli flags in example script
Kim Alvefur <zash@zash.se>
parents:
5689
diff
changeset
|
38 while getopts 'r:h:' flag; do |
a9c75430cb26
mod_rest: use bash getopts to handle cli flags in example script
Kim Alvefur <zash@zash.se>
parents:
5689
diff
changeset
|
39 case "$flag" in |
a9c75430cb26
mod_rest: use bash getopts to handle cli flags in example script
Kim Alvefur <zash@zash.se>
parents:
5689
diff
changeset
|
40 r) |
a9c75430cb26
mod_rest: use bash getopts to handle cli flags in example script
Kim Alvefur <zash@zash.se>
parents:
5689
diff
changeset
|
41 case "$OPTARG" in |
a9c75430cb26
mod_rest: use bash getopts to handle cli flags in example script
Kim Alvefur <zash@zash.se>
parents:
5689
diff
changeset
|
42 o) |
a9c75430cb26
mod_rest: use bash getopts to handle cli flags in example script
Kim Alvefur <zash@zash.se>
parents:
5689
diff
changeset
|
43 # Default |
a9c75430cb26
mod_rest: use bash getopts to handle cli flags in example script
Kim Alvefur <zash@zash.se>
parents:
5689
diff
changeset
|
44 SESSION="session-read-only" |
a9c75430cb26
mod_rest: use bash getopts to handle cli flags in example script
Kim Alvefur <zash@zash.se>
parents:
5689
diff
changeset
|
45 ;; |
a9c75430cb26
mod_rest: use bash getopts to handle cli flags in example script
Kim Alvefur <zash@zash.se>
parents:
5689
diff
changeset
|
46 w) |
a9c75430cb26
mod_rest: use bash getopts to handle cli flags in example script
Kim Alvefur <zash@zash.se>
parents:
5689
diff
changeset
|
47 # To e.g. save Accept headers to the session |
a9c75430cb26
mod_rest: use bash getopts to handle cli flags in example script
Kim Alvefur <zash@zash.se>
parents:
5689
diff
changeset
|
48 SESSION="session" |
a9c75430cb26
mod_rest: use bash getopts to handle cli flags in example script
Kim Alvefur <zash@zash.se>
parents:
5689
diff
changeset
|
49 ;; |
a9c75430cb26
mod_rest: use bash getopts to handle cli flags in example script
Kim Alvefur <zash@zash.se>
parents:
5689
diff
changeset
|
50 *) |
a9c75430cb26
mod_rest: use bash getopts to handle cli flags in example script
Kim Alvefur <zash@zash.se>
parents:
5689
diff
changeset
|
51 echo "E: -ro OR -rw" >&2 |
a9c75430cb26
mod_rest: use bash getopts to handle cli flags in example script
Kim Alvefur <zash@zash.se>
parents:
5689
diff
changeset
|
52 exit 1 |
a9c75430cb26
mod_rest: use bash getopts to handle cli flags in example script
Kim Alvefur <zash@zash.se>
parents:
5689
diff
changeset
|
53 ;; |
a9c75430cb26
mod_rest: use bash getopts to handle cli flags in example script
Kim Alvefur <zash@zash.se>
parents:
5689
diff
changeset
|
54 esac |
a9c75430cb26
mod_rest: use bash getopts to handle cli flags in example script
Kim Alvefur <zash@zash.se>
parents:
5689
diff
changeset
|
55 ;; |
a9c75430cb26
mod_rest: use bash getopts to handle cli flags in example script
Kim Alvefur <zash@zash.se>
parents:
5689
diff
changeset
|
56 h) |
a9c75430cb26
mod_rest: use bash getopts to handle cli flags in example script
Kim Alvefur <zash@zash.se>
parents:
5689
diff
changeset
|
57 HOST="$OPTARG" |
a9c75430cb26
mod_rest: use bash getopts to handle cli flags in example script
Kim Alvefur <zash@zash.se>
parents:
5689
diff
changeset
|
58 ;; |
a9c75430cb26
mod_rest: use bash getopts to handle cli flags in example script
Kim Alvefur <zash@zash.se>
parents:
5689
diff
changeset
|
59 *) |
a9c75430cb26
mod_rest: use bash getopts to handle cli flags in example script
Kim Alvefur <zash@zash.se>
parents:
5689
diff
changeset
|
60 echo "E: Unknown flag '$flag'" >&2 |
a9c75430cb26
mod_rest: use bash getopts to handle cli flags in example script
Kim Alvefur <zash@zash.se>
parents:
5689
diff
changeset
|
61 usage >&2 |
a9c75430cb26
mod_rest: use bash getopts to handle cli flags in example script
Kim Alvefur <zash@zash.se>
parents:
5689
diff
changeset
|
62 exit 1 |
a9c75430cb26
mod_rest: use bash getopts to handle cli flags in example script
Kim Alvefur <zash@zash.se>
parents:
5689
diff
changeset
|
63 esac |
a9c75430cb26
mod_rest: use bash getopts to handle cli flags in example script
Kim Alvefur <zash@zash.se>
parents:
5689
diff
changeset
|
64 done |
a9c75430cb26
mod_rest: use bash getopts to handle cli flags in example script
Kim Alvefur <zash@zash.se>
parents:
5689
diff
changeset
|
65 shift $((OPTIND-1)) |
a9c75430cb26
mod_rest: use bash getopts to handle cli flags in example script
Kim Alvefur <zash@zash.se>
parents:
5689
diff
changeset
|
66 |
a9c75430cb26
mod_rest: use bash getopts to handle cli flags in example script
Kim Alvefur <zash@zash.se>
parents:
5689
diff
changeset
|
67 if [ -z "${HOST:-}" ]; then |
5281
4ed65a6c2a6a
mod_rest: Add an example bash script for using mod_rest
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
68 HOST="$(hostname)" |
4ed65a6c2a6a
mod_rest: Add an example bash script for using mod_rest
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
69 fi |
4ed65a6c2a6a
mod_rest: Add an example bash script for using mod_rest
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
70 |
4ed65a6c2a6a
mod_rest: Add an example bash script for using mod_rest
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
71 if [[ "$HOST" != *.* ]]; then |
4ed65a6c2a6a
mod_rest: Add an example bash script for using mod_rest
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
72 # Assumes subdomain of your DOMAIN |
4ed65a6c2a6a
mod_rest: Add an example bash script for using mod_rest
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
73 if [ -z "${DOMAIN:-}" ]; then |
4ed65a6c2a6a
mod_rest: Add an example bash script for using mod_rest
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
74 DOMAIN="$(hostname -d)" |
4ed65a6c2a6a
mod_rest: Add an example bash script for using mod_rest
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
75 fi |
4ed65a6c2a6a
mod_rest: Add an example bash script for using mod_rest
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
76 if [[ "$HOST" == *:* ]]; then |
4ed65a6c2a6a
mod_rest: Add an example bash script for using mod_rest
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
77 HOST="${HOST%:*}.$DOMAIN:${HOST#*:}" |
4ed65a6c2a6a
mod_rest: Add an example bash script for using mod_rest
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
78 else |
4ed65a6c2a6a
mod_rest: Add an example bash script for using mod_rest
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
79 HOST="$HOST.$DOMAIN" |
4ed65a6c2a6a
mod_rest: Add an example bash script for using mod_rest
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
80 fi |
4ed65a6c2a6a
mod_rest: Add an example bash script for using mod_rest
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
81 fi |
4ed65a6c2a6a
mod_rest: Add an example bash script for using mod_rest
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
82 |
4ed65a6c2a6a
mod_rest: Add an example bash script for using mod_rest
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
83 |
4ed65a6c2a6a
mod_rest: Add an example bash script for using mod_rest
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
84 # For e.g /disco/example.com and such GET queries |
4ed65a6c2a6a
mod_rest: Add an example bash script for using mod_rest
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
85 GET_PATH="" |
4ed65a6c2a6a
mod_rest: Add an example bash script for using mod_rest
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
86 if [[ "$1" == /* ]]; then |
4ed65a6c2a6a
mod_rest: Add an example bash script for using mod_rest
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
87 GET_PATH="$1" |
4ed65a6c2a6a
mod_rest: Add an example bash script for using mod_rest
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
88 shift 1 |
4ed65a6c2a6a
mod_rest: Add an example bash script for using mod_rest
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
89 fi |
4ed65a6c2a6a
mod_rest: Add an example bash script for using mod_rest
Kim Alvefur <zash@zash.se>
parents:
diff
changeset
|
90 |
5689
e5ad3f1f48bd
mod_rest/rest.sh: Restore default read-only behavior and the -rw flag
Kim Alvefur <zash@zash.se>
parents:
5655
diff
changeset
|
91 https --check-status -p b --"$SESSION" rest -A oauth2 -a "$HOST" --oauth2-scope "$SCOPE" "$HOST/rest$GET_PATH" "$@" |