Programming

Script d’envoi de texto via la messagerie SFR

Ayant envie de m’amuser un peu avec curl, j’ai décidé de réaliser un script d’envoi de texto via la messagerie SFR, après avoir remarqué l’existence d’un bouton Ecrire un Texto / MMS. Je n’ai pas cherché en détail la tarification, mais dans mon cas j’ai droit à 10 textos gratuits vers les numéros SFR par jour.

Le script est assez simple au final, mais il permet de réviser pas mal d’options différentes de curl : mode silencieux (-s) affichage des entêtes HTTP reçues du serveur (-i), requête POST avec urlencoding (–data-urlencode), requête POST multipart/form-data (-F), et envoi de cookie (–cookie).

Il permet également de revoir la manipulation de chaînes de caractères en bash, ainsi qu’une utilisation assez basique d’awk.

Voici sans plus attendre le script :

#!/bin/sh
 
# Script d'envoi de texto via la messagerie SFR
# Copyright (C) 2011 Raphaël HUCK <raphael:huck|gmail:com>
 
# Fichier de configuration /etc/s3.conf
# -------------------------------------
# USERNAME=xxxxxx
# PASSWORD=xxxxxx
# -------------------------------------
 
CONFFILE="/etc/s3.conf"
 
URLCAS="https://www.sfr.fr/cas/login?domain=mire-xmscomposer&service=http%3A%2F%2Fwww.sfr.fr%2Fxmscomposer%2Fj_spring_cas_security_check"
URLCOMPOSE="http://www.sfr.fr/xmscomposer/index.html?todo=compose"
URLSEND="http://www.sfr.fr/xmscomposer/mc/envoyer-texto-mms/confirm.html"
 
CURL=$(which curl)
AWK=$(which awk)
 
if [ ! -f "$CONFFILE" ]; then
	echo "Fichier de configuration $CONFFILE non trouve"
	exit 1
fi
 
USERNAME=$($AWK -F'=' '/USERNAME/ {print $2}' $CONFFILE)
PASSWORD=$($AWK -F'=' '/PASSWORD/ {print $2}' $CONFFILE)
 
if [ $# -lt 2 ]; then
	echo "Usage: $0 destinataire message"
	exit 1
fi
 
RECIPIENT="$1"
MESSAGE="$2"
 
if [ ${#RECIPIENT} -ne 10 ]; then
	echo "Le numero du destinataire n'est pas valide"
	exit 1
fi
 
LENGTH=${#MESSAGE}
NUMBER=$(($LENGTH / 140 + 1))
 
echo "------------------------------------------------------------------------"
echo "Destinataire : $RECIPIENT"
echo "Message      : $MESSAGE"
echo "------------------------------------------------------------------------"
echo "Longueur du message : $LENGTH"
echo "Nombre de textos    : $NUMBER"
 
TICKET=$($CURL -s "$URLCAS" | $AWK -F'"' '/loginTicket/ {ORS = ""; print $6}')
INFOS=$($CURL -s -i --data-urlencode loginTicket="$TICKET" --data-urlencode username="$USERNAME" --data-urlencode password="$PASSWORD" "$URLCAS" | $AWK '/(Location|CASTGC)/')
 
LOCATION=$(echo "$INFOS" | $AWK '/Location/ {print $2}')
COOKIE=$(echo "$INFOS" | $AWK '/CASTGC/ {sub(/;/, ""); print $2}')
 
COOKIE=$($CURL -s -i --cookie "$COOKIE" "$LOCATION" | $AWK '/JSESSIONID/ {sub(/;/, ""); print $2}')
$CURL -s -o /dev/null --cookie "$COOKIE" "$URLCOMPOSE"
 
INFOS=$($CURL -s --cookie "$COOKIE" -F "msisdns=$RECIPIENT" -F "textMessage=$MESSAGE" $URLSEND | $AWK '/Texto gratuit/')
 
SENT=${INFOS#*<strong>}
SENT=${SENT%%</strong>*}
 
REMAINING=${INFOS##*<strong>}
REMAINING=${REMAINING%</strong>*}
 
echo ""
echo "Textos envoyes      : $SENT"
echo "Textos restants     : $REMAINING"

speak up

Add your comment below, or trackback from your own site.

Subscribe to these comments.

Be nice. Keep it clean. Stay on topic. No spam.

You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="" highlight="">

*Required Fields