5 PROGNAME
=$
(basename $0)
7 # configuration variables
8 CONFIG
=$MYDIR/convert2sms.rc
9 DOMAINS
=$
(hostname
-d |
awk '{ print "@" $0 }')
10 [ -f "$CONFIG" ] && source $CONFIG
11 [ -z "$GATEWAY" -o -z "$PASSWORD" ] \
12 && { echo "No valid configuration"; exit 1; }
17 TEMPFILE
=$HOME/tmp
/smsto.$$
20 function urlencode
() {
23 #[ "$DRYRUN" ] && { echo $string; return; }
25 for ((i
= 0 ; i
< ${#string} ; i
++ )); do
28 [-_.~a-zA-Z0-9
]) echo -n $c;;
29 *) printf '%%%02x' "'$c"
36 [ "$DRYRUN" ] && echo -e "\033[1;34m$*\033[0;0m" \
37 || logger
-i -t SMSTO
"$*"
42 echo "usage: $PROGNAME [-h] [-p ..........]"
44 echo " -h: help message"
45 echo " -p: phone number"
49 # get phone number from argument
50 while [ $# -ne 0 ]; do
59 [ "$PHONE" ] || usage
1
62 trap "/bin/rm -f $TEMPFILE" 0 1 2 3 15
64 # get mail from standard input
65 while read -t 1 line
; do
66 echo "$line" >> $TEMPFILE
68 [ -f "$TEMPFILE" ] ||
{ echo "No input email"; exit 1; }
70 # analyse message to get sender and subject
71 FROM
=$
(awk '$1 == "From:" { sub(/[^ ]*: */, ""); print }' $TEMPFILE)
72 SUBJECT
=$
(awk '$1 == "Subject:" { sub(/[^ ]*: */, ""); print }' $TEMPFILE)
73 MESSAGE
=$
(awk '/^$/,0 { if (/^--/) exit; if (!/^$/) print }' $TEMPFILE)
77 [ "$DOMAINS" ] || ERR
=0
80 [[ $FROM =~
$d ]] && { ERR
=0; break; }
82 [ $ERR -ne 0 ] && { log
"Reject from '$FROM'"; exit 1; }
84 # check the right pattern of the number
85 [[ "$PHONE" =~ ^
0[0-9]*$
]] \
86 ||
{ log
"Incorrect phone number '$PHONE' from '$FROM'"; exit 1; }
87 [[ "$PHONE" =~ ^
00 ]] \
88 && { log
"International phone number '$PHONE' from '$FROM'"; exit 1; }
89 [ ${#PHONE} -eq 10 ] \
90 ||
{ log
"Non standard phone number '$PHONE' from '$FROM'"; exit 1; }
93 log
"Accept from '$FROM' to $PHONE"
96 EMAIL
=${FROM/#*<}; EMAIL
=${EMAIL/%>*}
97 FROM
=${FROM/%<*}; FROM
=${FROM/% }
98 [ "$FROM" ] || FROM
=EMAIL
99 [ "$SUBJECT" ] && SUBJECT
=" "$SUBJECT":"
100 [ "$MESSAGE" ] && MESSAGE
=$
'\n'$MESSAGE
102 MESSAGE
=$
(urlencode
"[$FROM]$SUBJECT$MESSAGE")
105 [ "$DRYRUN" ] && echo "SMS: $MESSAGE" \
106 || wget
--quiet --output-document=/dev
/null \
107 "http://$GATEWAY:9090/sendsms?phone=$PHONE&text=$MESSAGE&password=$PASSWORD"