annotate mod_post_msg/sendxmpp-curl.sh @ 5958:5f8a306c8306

mod_http_oauth2: Require a stringprepped host part of URLs
author Kim Alvefur <zash@zash.se>
date Sat, 31 Aug 2024 13:30:55 +0200
parents 9764d27db681
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
4524
9764d27db681 mod_post_msg: Add sendxmpp-curl
Kim Alvefur <zash@zash.se>
parents:
diff changeset
1 #!/bin/bash
9764d27db681 mod_post_msg: Add sendxmpp-curl
Kim Alvefur <zash@zash.se>
parents:
diff changeset
2 # Does HTTP POST compatible with mod_post_msg for prosody
9764d27db681 mod_post_msg: Add sendxmpp-curl
Kim Alvefur <zash@zash.se>
parents:
diff changeset
3 # Aims to be compatible with sendxmpp syntax
9764d27db681 mod_post_msg: Add sendxmpp-curl
Kim Alvefur <zash@zash.se>
parents:
diff changeset
4
9764d27db681 mod_post_msg: Add sendxmpp-curl
Kim Alvefur <zash@zash.se>
parents:
diff changeset
5 # API:
9764d27db681 mod_post_msg: Add sendxmpp-curl
Kim Alvefur <zash@zash.se>
parents:
diff changeset
6 # http://host/msg/user => msg to user@host
9764d27db681 mod_post_msg: Add sendxmpp-curl
Kim Alvefur <zash@zash.se>
parents:
diff changeset
7 # or http://whatever/msg/user@host => same
9764d27db681 mod_post_msg: Add sendxmpp-curl
Kim Alvefur <zash@zash.se>
parents:
diff changeset
8 # HTTP Basic auth
9764d27db681 mod_post_msg: Add sendxmpp-curl
Kim Alvefur <zash@zash.se>
parents:
diff changeset
9
9764d27db681 mod_post_msg: Add sendxmpp-curl
Kim Alvefur <zash@zash.se>
parents:
diff changeset
10 # sendxmpp
9764d27db681 mod_post_msg: Add sendxmpp-curl
Kim Alvefur <zash@zash.se>
parents:
diff changeset
11 # $0 [options] <recipient>
9764d27db681 mod_post_msg: Add sendxmpp-curl
Kim Alvefur <zash@zash.se>
parents:
diff changeset
12
9764d27db681 mod_post_msg: Add sendxmpp-curl
Kim Alvefur <zash@zash.se>
parents:
diff changeset
13 test -f $HOME/.sendxmpprc &&
9764d27db681 mod_post_msg: Add sendxmpp-curl
Kim Alvefur <zash@zash.se>
parents:
diff changeset
14 read username password < $HOME/.sendxmpprc
9764d27db681 mod_post_msg: Add sendxmpp-curl
Kim Alvefur <zash@zash.se>
parents:
diff changeset
15
9764d27db681 mod_post_msg: Add sendxmpp-curl
Kim Alvefur <zash@zash.se>
parents:
diff changeset
16 TEMP="$(getopt -o f:u:p:j:o:r:tlcs:m:iwvhd -l file:,username:,password:,jserver:,component:,resource:,tls,headline,message-type:,chatroom,subject:,message:,interactive,raw,verbose,help,usage,debug -n "${0%%*/}" -- "$@" )"
9764d27db681 mod_post_msg: Add sendxmpp-curl
Kim Alvefur <zash@zash.se>
parents:
diff changeset
17
9764d27db681 mod_post_msg: Add sendxmpp-curl
Kim Alvefur <zash@zash.se>
parents:
diff changeset
18 if [ $? != 0 ] ; then echo "Terminating..." >&2 ; exit 1 ; fi
9764d27db681 mod_post_msg: Add sendxmpp-curl
Kim Alvefur <zash@zash.se>
parents:
diff changeset
19
9764d27db681 mod_post_msg: Add sendxmpp-curl
Kim Alvefur <zash@zash.se>
parents:
diff changeset
20 eval set -- "$TEMP"
9764d27db681 mod_post_msg: Add sendxmpp-curl
Kim Alvefur <zash@zash.se>
parents:
diff changeset
21
9764d27db681 mod_post_msg: Add sendxmpp-curl
Kim Alvefur <zash@zash.se>
parents:
diff changeset
22 while true; do
9764d27db681 mod_post_msg: Add sendxmpp-curl
Kim Alvefur <zash@zash.se>
parents:
diff changeset
23 case "$1" in
9764d27db681 mod_post_msg: Add sendxmpp-curl
Kim Alvefur <zash@zash.se>
parents:
diff changeset
24 -f|--file) read username password < "$2"; shift 2;;
9764d27db681 mod_post_msg: Add sendxmpp-curl
Kim Alvefur <zash@zash.se>
parents:
diff changeset
25 -u|--username) username="$2"; shift 2;;
9764d27db681 mod_post_msg: Add sendxmpp-curl
Kim Alvefur <zash@zash.se>
parents:
diff changeset
26 -p|--password) password="$2"; shift 2;;
9764d27db681 mod_post_msg: Add sendxmpp-curl
Kim Alvefur <zash@zash.se>
parents:
diff changeset
27 -j|--jserver) server="$2"; shift 2;;
9764d27db681 mod_post_msg: Add sendxmpp-curl
Kim Alvefur <zash@zash.se>
parents:
diff changeset
28 -m|--message) message="$2"; shift 2;;
9764d27db681 mod_post_msg: Add sendxmpp-curl
Kim Alvefur <zash@zash.se>
parents:
diff changeset
29 -v|--verbose) verbose="yes"; shift;;
9764d27db681 mod_post_msg: Add sendxmpp-curl
Kim Alvefur <zash@zash.se>
parents:
diff changeset
30 -i|--interactive) interactive="yes"; shift;; # multiple messages, one per line on stdin
9764d27db681 mod_post_msg: Add sendxmpp-curl
Kim Alvefur <zash@zash.se>
parents:
diff changeset
31 -r|--resource) resource="$OPTARG"; shift 2;; # not used
9764d27db681 mod_post_msg: Add sendxmpp-curl
Kim Alvefur <zash@zash.se>
parents:
diff changeset
32 -h|--help|--usage)
9764d27db681 mod_post_msg: Add sendxmpp-curl
Kim Alvefur <zash@zash.se>
parents:
diff changeset
33 echo "usage: ${0##*/} [options] <recipient>"
9764d27db681 mod_post_msg: Add sendxmpp-curl
Kim Alvefur <zash@zash.se>
parents:
diff changeset
34 echo "or refer to the the source code ;)"; exit;;
9764d27db681 mod_post_msg: Add sendxmpp-curl
Kim Alvefur <zash@zash.se>
parents:
diff changeset
35 --) shift ; break ;;
9764d27db681 mod_post_msg: Add sendxmpp-curl
Kim Alvefur <zash@zash.se>
parents:
diff changeset
36 *) echo "option $1 is not implemented" >&1; shift ;; # TODO stuff
9764d27db681 mod_post_msg: Add sendxmpp-curl
Kim Alvefur <zash@zash.se>
parents:
diff changeset
37 # FIXME the above will fail if the opt has a param
9764d27db681 mod_post_msg: Add sendxmpp-curl
Kim Alvefur <zash@zash.se>
parents:
diff changeset
38 esac
9764d27db681 mod_post_msg: Add sendxmpp-curl
Kim Alvefur <zash@zash.se>
parents:
diff changeset
39 done
9764d27db681 mod_post_msg: Add sendxmpp-curl
Kim Alvefur <zash@zash.se>
parents:
diff changeset
40
9764d27db681 mod_post_msg: Add sendxmpp-curl
Kim Alvefur <zash@zash.se>
parents:
diff changeset
41 if [ $# -gt 1 ]; then
9764d27db681 mod_post_msg: Add sendxmpp-curl
Kim Alvefur <zash@zash.se>
parents:
diff changeset
42 echo "multile recipients not implemented" >&1 # TODO stuff
9764d27db681 mod_post_msg: Add sendxmpp-curl
Kim Alvefur <zash@zash.se>
parents:
diff changeset
43 exit 1
9764d27db681 mod_post_msg: Add sendxmpp-curl
Kim Alvefur <zash@zash.se>
parents:
diff changeset
44 fi
9764d27db681 mod_post_msg: Add sendxmpp-curl
Kim Alvefur <zash@zash.se>
parents:
diff changeset
45
9764d27db681 mod_post_msg: Add sendxmpp-curl
Kim Alvefur <zash@zash.se>
parents:
diff changeset
46 # Can be user@host or just user, in wich case the http host is used
9764d27db681 mod_post_msg: Add sendxmpp-curl
Kim Alvefur <zash@zash.se>
parents:
diff changeset
47 recipient="$1"
9764d27db681 mod_post_msg: Add sendxmpp-curl
Kim Alvefur <zash@zash.se>
parents:
diff changeset
48 shift
9764d27db681 mod_post_msg: Add sendxmpp-curl
Kim Alvefur <zash@zash.se>
parents:
diff changeset
49
9764d27db681 mod_post_msg: Add sendxmpp-curl
Kim Alvefur <zash@zash.se>
parents:
diff changeset
50 if [ -z "$server" ]; then
9764d27db681 mod_post_msg: Add sendxmpp-curl
Kim Alvefur <zash@zash.se>
parents:
diff changeset
51 server="${username#*@}:5280"
9764d27db681 mod_post_msg: Add sendxmpp-curl
Kim Alvefur <zash@zash.se>
parents:
diff changeset
52 fi
9764d27db681 mod_post_msg: Add sendxmpp-curl
Kim Alvefur <zash@zash.se>
parents:
diff changeset
53
9764d27db681 mod_post_msg: Add sendxmpp-curl
Kim Alvefur <zash@zash.se>
parents:
diff changeset
54 if [ -z "$recipient" -o -z "$server" -o -z "$username" ]; then
9764d27db681 mod_post_msg: Add sendxmpp-curl
Kim Alvefur <zash@zash.se>
parents:
diff changeset
55 echo "required parameter missing or empty" >&1
9764d27db681 mod_post_msg: Add sendxmpp-curl
Kim Alvefur <zash@zash.se>
parents:
diff changeset
56 exit 1
9764d27db681 mod_post_msg: Add sendxmpp-curl
Kim Alvefur <zash@zash.se>
parents:
diff changeset
57 fi
9764d27db681 mod_post_msg: Add sendxmpp-curl
Kim Alvefur <zash@zash.se>
parents:
diff changeset
58
9764d27db681 mod_post_msg: Add sendxmpp-curl
Kim Alvefur <zash@zash.se>
parents:
diff changeset
59 do_send() {
9764d27db681 mod_post_msg: Add sendxmpp-curl
Kim Alvefur <zash@zash.se>
parents:
diff changeset
60 #echo \
9764d27db681 mod_post_msg: Add sendxmpp-curl
Kim Alvefur <zash@zash.se>
parents:
diff changeset
61 curl "http${secure:+s}://$server/msg/$recipient" \
9764d27db681 mod_post_msg: Add sendxmpp-curl
Kim Alvefur <zash@zash.se>
parents:
diff changeset
62 -s ${verbose:+-v} \
9764d27db681 mod_post_msg: Add sendxmpp-curl
Kim Alvefur <zash@zash.se>
parents:
diff changeset
63 -u "$username${password:+:$password}" \
9764d27db681 mod_post_msg: Add sendxmpp-curl
Kim Alvefur <zash@zash.se>
parents:
diff changeset
64 "$@"
9764d27db681 mod_post_msg: Add sendxmpp-curl
Kim Alvefur <zash@zash.se>
parents:
diff changeset
65 }
9764d27db681 mod_post_msg: Add sendxmpp-curl
Kim Alvefur <zash@zash.se>
parents:
diff changeset
66
9764d27db681 mod_post_msg: Add sendxmpp-curl
Kim Alvefur <zash@zash.se>
parents:
diff changeset
67 send_text() {
9764d27db681 mod_post_msg: Add sendxmpp-curl
Kim Alvefur <zash@zash.se>
parents:
diff changeset
68 do_send -H "Content-Type: text/plain" "$@"
9764d27db681 mod_post_msg: Add sendxmpp-curl
Kim Alvefur <zash@zash.se>
parents:
diff changeset
69 }
9764d27db681 mod_post_msg: Add sendxmpp-curl
Kim Alvefur <zash@zash.se>
parents:
diff changeset
70
9764d27db681 mod_post_msg: Add sendxmpp-curl
Kim Alvefur <zash@zash.se>
parents:
diff changeset
71 if [ -z "$interactive" ]; then
9764d27db681 mod_post_msg: Add sendxmpp-curl
Kim Alvefur <zash@zash.se>
parents:
diff changeset
72 send_text -d "${message:-@-}"
9764d27db681 mod_post_msg: Add sendxmpp-curl
Kim Alvefur <zash@zash.se>
parents:
diff changeset
73 else
9764d27db681 mod_post_msg: Add sendxmpp-curl
Kim Alvefur <zash@zash.se>
parents:
diff changeset
74 while read line; do
9764d27db681 mod_post_msg: Add sendxmpp-curl
Kim Alvefur <zash@zash.se>
parents:
diff changeset
75 send_text -d "$line"
9764d27db681 mod_post_msg: Add sendxmpp-curl
Kim Alvefur <zash@zash.se>
parents:
diff changeset
76 done
9764d27db681 mod_post_msg: Add sendxmpp-curl
Kim Alvefur <zash@zash.se>
parents:
diff changeset
77 fi
9764d27db681 mod_post_msg: Add sendxmpp-curl
Kim Alvefur <zash@zash.se>
parents:
diff changeset
78 # TODO single curl line