Mercurial > prosody-modules
annotate mod_rest/example/rest.sh @ 6171:fe8222112cf4
mod_conversejs: Serve base app at /
This makes things slightly less awkward for the browser to figure out which
URLs belong to a PWA. The app's "start URL" was previously without the '/' and
therefore was not considered within the scope of the PWA. Now the canonical
app URL will always have a '/'.
Prosody/mod_http should take care of redirecting existing links without the
trailing / to the new URL.
If you have an installation at https://prosody/conversejs then it is now at
https://prosody/conversejs/ (the first URL will now redirect to the second
URL if you use it).
The alternative would be to make the PWA scope include the parent, i.e.
the whole of https://prosody/ in this case. This might get messy if other
PWAs are provided by the same site or Prosody installation, however.
| author | Matthew Wild <mwild1@gmail.com> |
|---|---|
| date | Tue, 11 Feb 2025 13:18:38 +0000 |
| parents | a9c75430cb26 |
| children | 887ed0f6e275 |
| 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/ |
|
5636
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 |
|
5637
acd2f397ce6b
mod_rest/rest.sh: Silence shellcheck SC1091
Kim Alvefur <zash@zash.se>
parents:
5636
diff
changeset
|
10 # shellcheck disable=SC1091 |
|
acd2f397ce6b
mod_rest/rest.sh: Silence shellcheck SC1091
Kim Alvefur <zash@zash.se>
parents:
5636
diff
changeset
|
11 |
|
5936
a9c75430cb26
mod_rest: use bash getopts to handle cli flags in example script
Kim Alvefur <zash@zash.se>
parents:
5666
diff
changeset
|
12 SELF="${0##*/}" |
|
a9c75430cb26
mod_rest: use bash getopts to handle cli flags in example script
Kim Alvefur <zash@zash.se>
parents:
5666
diff
changeset
|
13 function usage() { |
|
a9c75430cb26
mod_rest: use bash getopts to handle cli flags in example script
Kim Alvefur <zash@zash.se>
parents:
5666
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:
5666
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:
5666
diff
changeset
|
16 } |
|
a9c75430cb26
mod_rest: use bash getopts to handle cli flags in example script
Kim Alvefur <zash@zash.se>
parents:
5666
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 |
|
5666
e5ad3f1f48bd
mod_rest/rest.sh: Restore default read-only behavior and the -rw flag
Kim Alvefur <zash@zash.se>
parents:
5637
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:
5637
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" |
|
5636
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 |
|
5936
a9c75430cb26
mod_rest: use bash getopts to handle cli flags in example script
Kim Alvefur <zash@zash.se>
parents:
5666
diff
changeset
|
34 usage |
|
a9c75430cb26
mod_rest: use bash getopts to handle cli flags in example script
Kim Alvefur <zash@zash.se>
parents:
5666
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 |
|
5936
a9c75430cb26
mod_rest: use bash getopts to handle cli flags in example script
Kim Alvefur <zash@zash.se>
parents:
5666
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:
5666
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:
5666
diff
changeset
|
40 r) |
|
a9c75430cb26
mod_rest: use bash getopts to handle cli flags in example script
Kim Alvefur <zash@zash.se>
parents:
5666
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:
5666
diff
changeset
|
42 o) |
|
a9c75430cb26
mod_rest: use bash getopts to handle cli flags in example script
Kim Alvefur <zash@zash.se>
parents:
5666
diff
changeset
|
43 # Default |
|
a9c75430cb26
mod_rest: use bash getopts to handle cli flags in example script
Kim Alvefur <zash@zash.se>
parents:
5666
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:
5666
diff
changeset
|
45 ;; |
|
a9c75430cb26
mod_rest: use bash getopts to handle cli flags in example script
Kim Alvefur <zash@zash.se>
parents:
5666
diff
changeset
|
46 w) |
|
a9c75430cb26
mod_rest: use bash getopts to handle cli flags in example script
Kim Alvefur <zash@zash.se>
parents:
5666
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:
5666
diff
changeset
|
48 SESSION="session" |
|
a9c75430cb26
mod_rest: use bash getopts to handle cli flags in example script
Kim Alvefur <zash@zash.se>
parents:
5666
diff
changeset
|
49 ;; |
|
a9c75430cb26
mod_rest: use bash getopts to handle cli flags in example script
Kim Alvefur <zash@zash.se>
parents:
5666
diff
changeset
|
50 *) |
|
a9c75430cb26
mod_rest: use bash getopts to handle cli flags in example script
Kim Alvefur <zash@zash.se>
parents:
5666
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:
5666
diff
changeset
|
52 exit 1 |
|
a9c75430cb26
mod_rest: use bash getopts to handle cli flags in example script
Kim Alvefur <zash@zash.se>
parents:
5666
diff
changeset
|
53 ;; |
|
a9c75430cb26
mod_rest: use bash getopts to handle cli flags in example script
Kim Alvefur <zash@zash.se>
parents:
5666
diff
changeset
|
54 esac |
|
a9c75430cb26
mod_rest: use bash getopts to handle cli flags in example script
Kim Alvefur <zash@zash.se>
parents:
5666
diff
changeset
|
55 ;; |
|
a9c75430cb26
mod_rest: use bash getopts to handle cli flags in example script
Kim Alvefur <zash@zash.se>
parents:
5666
diff
changeset
|
56 h) |
|
a9c75430cb26
mod_rest: use bash getopts to handle cli flags in example script
Kim Alvefur <zash@zash.se>
parents:
5666
diff
changeset
|
57 HOST="$OPTARG" |
|
a9c75430cb26
mod_rest: use bash getopts to handle cli flags in example script
Kim Alvefur <zash@zash.se>
parents:
5666
diff
changeset
|
58 ;; |
|
a9c75430cb26
mod_rest: use bash getopts to handle cli flags in example script
Kim Alvefur <zash@zash.se>
parents:
5666
diff
changeset
|
59 *) |
|
a9c75430cb26
mod_rest: use bash getopts to handle cli flags in example script
Kim Alvefur <zash@zash.se>
parents:
5666
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:
5666
diff
changeset
|
61 usage >&2 |
|
a9c75430cb26
mod_rest: use bash getopts to handle cli flags in example script
Kim Alvefur <zash@zash.se>
parents:
5666
diff
changeset
|
62 exit 1 |
|
a9c75430cb26
mod_rest: use bash getopts to handle cli flags in example script
Kim Alvefur <zash@zash.se>
parents:
5666
diff
changeset
|
63 esac |
|
a9c75430cb26
mod_rest: use bash getopts to handle cli flags in example script
Kim Alvefur <zash@zash.se>
parents:
5666
diff
changeset
|
64 done |
|
a9c75430cb26
mod_rest: use bash getopts to handle cli flags in example script
Kim Alvefur <zash@zash.se>
parents:
5666
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:
5666
diff
changeset
|
66 |
|
a9c75430cb26
mod_rest: use bash getopts to handle cli flags in example script
Kim Alvefur <zash@zash.se>
parents:
5666
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 |
|
5666
e5ad3f1f48bd
mod_rest/rest.sh: Restore default read-only behavior and the -rw flag
Kim Alvefur <zash@zash.se>
parents:
5637
diff
changeset
|
91 https --check-status -p b --"$SESSION" rest -A oauth2 -a "$HOST" --oauth2-scope "$SCOPE" "$HOST/rest$GET_PATH" "$@" |
