#!/bin/sh set -e exit1() { echo >&2 "Error: $1" echo >&2 "Exiting..." exit 1 } simpleword() { # echo "$1" | tr '[A-Z]' '[a-z]' | egrep '^[a-z][a-z0-9-]+$' || exit 1 echo "$1" | tr '[A-Z]' '[a-z]' | egrep '^[a-zæøåÆØÅ!@/][a-zæøåÆØÅ0-9-]+$' || exit 1 } uriunescape() { if [ 0 = "$urldecode" ]; then echo "$@" else echo "$@" | perl -e 'use URI::Escape; print lc(uri_unescape());' fi } #from=`uriunescape "$1" | sed -e 's/\+/ /g'`; shift from=`uriunescape "$1"`; shift #to=`uriunescape "$1" | sed -e 's/\+/ /g'`; shift to=`uriunescape "$1"`; shift #set -- `uriunescape "$@" | sed -e 's/\+/ /g'` set -- `uriunescape "$@"` app_raw="$1" app=`simpleword "$1"`; shift export debug SMS_PHONE="$from" urldecode=0 export SMS_PHONE urldecode case "$SMS_REALM" in test) provider="dummy" mdpath="/home/hearth/public_webdata/hearth/content/sms" export mdpath ;; hello) provider="local" # provider="coolsms" # provider="clickatell" mdpath="/home/hearth/public_webdata/hearth/content/sms" export mdpath ;; cyber) provider="local" mdpath="/home/cyberhus/public_webdata/mdsms/content/sms" export mdpath ;; *) exit1 "unknown realm \"$SMS_REALM\"!" ;; esac case "$provider" in dummy) dummy=1 ADMIN_OK=1 export ADMIN_OK dummy ;; local) export SMS_SMSC ;; coolsms) unset SMS_SMSC SMS_URL="https://sms.coolsmsc.dk:8081/" SMS_USER="drjones1" SMS_PW="rahYSeGY" SMS_CP="cp1252" SMS_MSGTAG="message" export SMS_URL SMS_USER SMS_PW SMS_CP SMS_MSGTAG ;; clickatell) # unset SMS_SMSC # SMS_URL="https://api.clickatell.com/http/sendmsg" # SMS_USER="jonas" # SMS_PW="inaritab6" # SMS_CP="cp1252" # SMS_USERTAG="user" # SMS_API="3231280" # SMS_CONCAT="3" # export SMS_URL SMS_USER SMS_PW SMS_CP SMS_USERTAG SMS_API SMS_CONCAT SMS_SMSC="X" SMS_DLR_MASK="7" SMS_DLR_URL="http://helloearth.jones.dk/test.cgi?type=dlr&msgid=XXX&smsid=%I&from=%p&to=%P&time=%t&unixtime=%T&dlr=%d&dlrmsg=%A" export SMS_SMSC SMS_DLR_MASK SMS_DLR_URL ;; *) exit1 "unknown provider \"$provider\"!" ;; esac # by now sms connection should work, so let sender get errors too exit1() { echo >&2 "Error: $1" /usr/local/sbin/localsendsms "$to" "Error: $1" echo >&2 "Exiting..." exit 1 } case "$app" in @*) [ -n "$REDIRECT_OK" ] || exit1 "Redirection not permitted here!" to="$(echo "$app" | perl -pe 's/^@//;' -e 's/^([^+])/+45\1/')" # TODO: silence errors - or better: bounce those back to original sender /usr/local/sbin/localmarkdown2sms "$to" "$@" ;; # !*) # [ -n "$GROUP_OK" ] || exit1 "Redirection to group not permitted here!" # group="$(echo "$app" | perl -pe 's/^!//;')" # for to in $(echo "$group" | perl ...); do # /usr/local/sbin/localmarkdown2sms "$to" "$@" # done # ;; /*) [ -n "$ADMIN_OK" ] || exit1 "Administrative commands not permitted here!" cmd="$(echo "$app" | perl -pe 's/^\///;')" response="$(/usr/local/sbin/localsmsadmin "$cmd" "$@")" || exit1 "$response" /usr/local/sbin/localsendsms "$to" "$response" ;; yb) s="$(links -dump "http://www.yubnub.org/parser/parse?command=$@")" /usr/local/sbin/localsendsms "$to" "$s" ;; *) /usr/local/sbin/localmarkdown2sms "$to" "$app_raw" "$@" ;; esac