#!/bin/bash


function display_help() {
        echo "${0} Usage :"
        echo -e "\t-u --user\tSpecify the username"
        echo -e "\t-p --password\tSpecify the password"
        echo -e "\t-h or --help\tThis help"
        echo ""
        echo "Examples :"
	echo -e "\tSend \"My message\" to your mobile phone :"
        echo -e "\t\t${0} -u myuser -p mypassword My message"
	echo -e "\tSend content from STDIN to your mobile phone :"
        echo -e "\t\t${0} -u myuser -p mypassword -"
}

GET_OPT=`getopt -o hu:p: --long help,user:,password: -n "${0} parameters" -- "${@}"`
if [ ! "${?}" == "0" ] ; then
        display_help
        exit 1
fi
eval set -- "$GET_OPT"
while true ; do
        case ${1} in
                -u|--user)
                        NOM="${2}"
                        shift 2
                        ;;
                -p|--password)
                        PASS="${2}"
                        shift 2
                        ;;
                -h|--help)
                        display_help
			shift
                        exit 0
                        ;;
		--)
		       MESSAGE="`echo ${@} | sed 's|^-- ||g'`"
                       shift
                       break
                       ;;
		*)
			display_help >&2
			exit 1
			;;
        esac
done

if [ -z "${NOM}" -o -z "${PASS}" ] ; then
        echo "You need to specify Username and Password" >&2
        display_help >&2
        exit 1
fi

if [ "${MESSAGE}" == "-" ] ; then
	if [[ ! -t 0 ]]; then
		while read line ; do
			MESSAGE="${MESSAGE}%0D${line}"
			MESSAGE=`echo ${MESSAGE} | sed 's|^-%0D||g'`
		done < <(cat -)
	else
		echo "STDIN is empty" >&2
		exit 1
	fi
fi

if [ -z "${MESSAGE}" ] ; then
	echo "You need to specify the message to send" >&2
	display_help >&2
	exit 1
fi

if ! which which > /dev/null 2>&1 ; then
	echo "which is not installed"
	exit 1
elif which curl > /dev/null 2>&1 ; then
	echo using curl
	BIN="curl -i"
elif which wget > /dev/null 2<&1 ; then
	echo using wget
	BIN="wget --save-headers -qO -"
elif true ; then
	echo "None of curl or wget installed" >&2
	exit 1
fi

envoi=$(${BIN} "https://smsapi.free-mobile.fr/sendmsg?user=${NOM}&pass=${PASS}&msg=${MESSAGE}" 2>&1)
retour_HTTP=$(echo "${envoi}" | awk '/HTTP/ {print $2}')
case $retour_HTTP  in
	200)
		echo "Le SMS a été envoyé sur votre mobile."
		exit 0
		;;
	400)
		echo "Un des paramètres obligatoires est manquant.";;
	402)
		echo "Trop de SMS ont été envoyés en trop peu de temps.";;
	403)
		echo "Le service n'est pas activé sur l'espace abonné, ou login / clé incorrect.";;
	500)
		echo "Erreur côté serveur. Veuillez réessayer ultérieurement.";;
esac
exit 1