--- /dev/null
+#!/bin/bash
+###############################################################################
+#
+# SENDSMS -- Script to send sms by 'gnokii'
+# Author : Gabriele Zappi - Rimini <gzappi@inwind.it>
+# History:
+# feb 17, 2001 Script created (v1.0)
+###############################################################################
+# $Id$
+###############################################################################
+###############################################################################
+# PROGNAME=`basename $0`
+
+# var settings.
+
+PROGNAME=${0##*/}
+VERSION="1.02"
+GNOKII=gnokii
+PID=$$
+SMSDIR=~/tmp/sms
+TMP=~/tmp/SMStmp.$PID
+BACKTITLE="SENDSMS V$VERSION"
+AUTHOR="Gabriele Zappi - Rimini <gzappi@inwind.it>"
+
+help() {
+echo "$PROGNAME: $BACKTITLE - A gnokii interface for sending SMS."
+echo "Written by $AUTHOR"
+
+echo -e "\
+\n\
+Usage: $PROGNAME [OPTION]...\n\
+\n\
+Examples:\n\
+ $PROGNAME # simply run $PROGNAME in standard mode\n\
+ $PROGNAME --simulate # Simulates. doesn't really send sms (for debug)\n\
+ echo \"Hello Beauty ;-)\" | $PROGNAME --smsset\n\
+ # Preset \"Hello Beauty ;-)\" as SMS message.\n\
+ $PROGNAME --smsset < mymessage.txt\n\
+ # Preset contents of file mymessage.txt \n\
+ as SMS message.\n\
+ $PROGNAME --version # Display version, author and quits.\n\
+\n\
+NOTE:\n\
+If you require to pickup number from phone's memory (really from SIM card),\n\
+for the first time, it anyway reads phonebook from your cellular phone. \n\
+(It may take a while... please, be patient ;-) \n\
+\n\
+Available options:\n\
+ --debug, -D May bother with more debugging messages ;-)\n\
+ For debugging purpose.\n\
+ --simul[ate], -S Simulation mode. Doesn't really send SMS by phone. \n\
+ Only simulates. For debugging purpose.\n\
+ --forcememread, -F Forces $PROGNAME to read phonebook from SIM card,\n\
+ and to parse the generated file in order to update\n\
+ the numbers' list (useful only if required to pickup\n\
+ number from the phone's memory). see NOTE.\n\
+ --skipgnokiicheck, -K Skip the test of the presence of binary 'gnokii'.\n\
+ (It must be somewhere in your \$PATH). It allows you\n\
+ to try this script program, even if you don't have\n\
+ 'gnokii' already. ;)\n\
+ --smsset, --setsms Allows you to preset a SMS message from STDIN. (pipe\n\
+ or input redirection).\n\
+ This message will be proposed on the 'SMS message'\n\
+ field during the program input cycle.\n\
+ --help, -h, /h display this help and exit\n\
+ --version, -V output version information and exit"
+echo
+exit 0
+}
+
+acex()
+{
+ rm -rf $TMP >/dev/null 2>&1
+ clear
+ exit $1
+}
+
+parse_stdin() {
+ # Switch initialization
+ SW_DEBUG=no
+ SW_SIMUL=no
+ SW_FORCEMREAD=no
+ SW_SKIPGNOKITST=no
+ SW_PRESETSMS=no
+ PRESETSMS=""
+
+ while [ -n "$1" ]
+ do
+ case "$1" in
+ --help|-h|/h)
+ help
+ ;;
+ --version|-V)
+ echo
+ echo "$BACKTITLE - A gnokii interface for sending SMS."
+ echo "Written by $AUTHOR"
+ echo
+ exit 0
+ ;;
+ --simul*|-S)
+ SW_SIMUL=yes
+ ;;
+ --debug*|-D)
+ SW_DEBUG=yes
+ SW_SIMUL=yes
+ ;;
+ --forcememread|-F)
+ SW_FORCEMREAD=yes
+ ;;
+ --skipgnokiicheck|-K)
+ SW_SKIPGNOKITST=yes
+ ;;
+ --smsset|--msgset|--setsms)
+ SW_PRESETSMS=yes
+ # will read from stdin
+ echo "reading sms from stdin .."
+ PRESETSMS=`cat`
+ ;;
+ *)
+ echo "$PROGNAME: Invalid parameter: "
+ help
+ ;;
+ esac
+ shift
+ done
+}
+
+sure_to_quit() {
+ dialog --backtitle "$BACKTITLE" \
+ --yesno "Really sure to quit? " 6 50
+ if [ $? -eq 0 ]; then
+ acex 0
+ fi
+}
+
+SMS_phoneread() {
+dialog --backtitle "$BACKTITLE" --infobox "Reading phonebook by phone's SIM\n Please wait" 4 40
+$GNOKII --getmemory SM 1 130 > $SMSDIR/.SMlist.temp
+}
+
+SMS_choicefrommem() {
+ # read from phonebook.
+ if [ "$SW_FORCEMREAD" = "yes" ] ; then
+ readsim=1
+ elif [ -s $SMSDIR/.SMlist.sim ]; then
+ dialog --backtitle "INSERT NUMBER(s).." \
+ --yesno "A SIM phonebook file is already present. \
+ Do you want to read phone memory anyway?" 8 60
+ if [ $? -eq 0 ] ; then
+ readsim=1
+ else
+ readsim=0
+ fi
+ else
+ readsim=1
+ fi
+
+ ERROR=0
+ if [ $readsim -eq 1 ] ; then
+ SMS_phoneread
+ if [ $? -ne 0 ] ; then
+ dialog --backtitle "INSERT NUMBER(s).." \
+ --msgbox "ERROR during reading memory from your phone... \
+ Insert manually destination number." 8 60
+ ERROR=1
+ else
+ mv -f $SMSDIR/.SMlist.temp $SMSDIR/.SMlist.sim
+ fi
+ fi
+
+ if [ $ERROR -eq 0 ]; then
+ # Parsing sim file...
+ if [ ! -s $SMSDIR/.SMlist.chklst -o ! -s $SMSDIR/.SMlist.choice \
+ -o $readsim -eq 1 ] ; then
+ > $SMSDIR/.SMlist.menu
+ > $SMSDIR/.SMlist.chklst
+ > $SMSDIR/.SMlist.choice
+ totrows=`cat $SMSDIR/.SMlist.sim | wc -l`
+ rownow=0
+ (while read riga
+ do
+ rownow=`expr $rownow + 1`
+ perc=`expr $rownow \* 100 / $totrows`
+ pos=`echo $riga | cut -f4 -d";"`
+ name=`echo $riga | cut -f1 -d";"`
+ num=`echo $riga | cut -f2 -d";"`
+ if [ -n "$pos" -a -n "$num" ] ; then
+ echo -e "$pos \"$name - $num\"" >> $SMSDIR/.SMlist.menu
+ echo -e "$pos \"$name - $num\" off" >> $SMSDIR/.SMlist.chklst
+ echo "$pos;$num" >> $SMSDIR/.SMlist.choice
+ fi
+ echo $perc
+ done < $SMSDIR/.SMlist.sim) | dialog \
+ --gauge "Parsing phonebook file..." 12 70 0
+ fi
+
+ chkok=0
+ option=0
+ while [ $chkok -eq 0 ]
+ do
+ eval dialog --backtitle \"SENDSM CKECKLIST\" \
+ --checklist \"Check your MEMORY number\(s\).\
+ \\nPress ESC key \for options..... \" \
+ 16 60 9 \
+ `cat $SMSDIR/.SMlist.chklst` 2> $TMP/rspTEMP02
+ option=$?
+ if [ $option -eq 255 ] ; then
+ dialog --backtitle "SENDSM CKECKLIST" --menu \
+ "Options sub-menus for Phonebook choise list:" \
+ 10 50 4 \
+ "1" "Sort by Memory Pos" \
+ "2" "Sort by Names" \
+ "9" "Quit $PROGNAME" 2> $TMP/rspTEMP04
+ if [ $? -eq 0 ]; then
+ sorttype=`cat $TMP/rspTEMP04`
+ case $sorttype in
+ 1) sort -n $SMSDIR/.SMlist.chklst > $TMP/.SMlist.tmp
+ mv -f $TMP/.SMlist.tmp $SMSDIR/.SMlist.chklst
+ ;;
+ 2) sort +1 $SMSDIR/.SMlist.chklst > $TMP/.SMlist.tmp
+ mv -f $TMP/.SMlist.tmp $SMSDIR/.SMlist.chklst
+ ;;
+ 9) sure_to_quit
+ ;;
+ esac
+ fi
+ else
+ chkok=1
+ fi
+ done
+
+ if [ $? -eq 0 ] ; then
+ for val in `cat $TMP/rspTEMP02`
+ do
+ tok1=`eval echo $val`
+ tok2=`grep "^$tok1;" $SMSDIR/.SMlist.choice`
+ tok3=`echo $tok2 | cut -f2 -d";"`
+ if [ -z "$NUMBERS" ] ; then
+ NUMBERS="$tok3"
+ else
+ NUMBERS="$NUMBERS $tok3"
+ fi
+ done
+ fi
+ fi
+}
+
+###########################################################################
+###########################################################################
+# MAIN PROCEDURE #
+###########################################################################
+###########################################################################
+
+parse_stdin $*
+
+# This is the 'help' test...
+# if [ "$1" = "--help" -o "$1" = "/h" ] ; then
+# help
+# fi
+
+if ! type -all "dialog" >/dev/null 2>&1 ; then
+echo
+echo "${PROGNAME}: error:"
+echo "Can't find 'dialog', i can't run without 'dialog' on your system."
+echo "You can get a compiled elf version of 'dialog' from here."
+echo "http://www.tux.org/pub/people/kent-robotti/index.html"
+echo "ftp://ftp.tux.org/pub/people/kent-robotti 'dialog-0.9a-15.elf.tar.gz'"
+echo
+exit 1
+fi
+
+if [ $SW_SKIPGNOKITST = no ] ; then
+ if ! type -all "$GNOKII" >/dev/null 2>&1 ; then
+ echo
+ echo "${PROGNAME}: error:"
+ echo "Can't find 'gnokii'. This script needs 'gnokii' in order to work."
+ echo "You can get a version of 'gnokii' from following links:"
+ echo "GNOKII: http://multivac.fatburen.org/gnokii/ , http://www.gnokii.org/"
+ echo
+ echo " Pavel Janik (who is to thank for a vast part of the 6110 development) "
+ echo "also keeps an ftp archive of some recent things."
+ echo " "
+ echo "Source code and pre-compiled binaries for gnokii are available from "
+ echo "a number of sites"
+ echo
+ echo "ftp.gnokii.org located in California, USA"
+ echo "linuxcare.com.au located in Canberra, Australia"
+ echo "multivac.fatburen.org located in Stockholm, Sweden "
+ echo
+ echo "Pre release versions are kept here, maintained by Pawel Kot"
+ echo "urtica.linuxnews.pl located in Warsaw, Poland"
+ echo
+ echo "MYGNOKII (can handle other newer Nokia models...)"
+ echo "--------"
+ echo "Marcin Wiacek -> mailto:marcin-wiacek@topnet.pl"
+ echo "http://marcin-wiacek.topnet.pl (http://www.fkn.pl/marcinw) -> netmonitor,"
+ echo "firmware, mygnokii (GSM & Nokia)"
+ echo "http://grumble.zereau.com/gnokii/ &"
+ echo "http://www.mds.mdh.se/~cel95eig/mygnokii/ -> mygnokii mirrors"
+ echo
+ exit 1
+ fi
+fi
+
+if [ ! -d ~/tmp ]; then
+mkdir ~/tmp
+chmod 755 ~/tmp
+fi
+
+if [ ! -d $SMSDIR ]; then
+mkdir -p $SMSDIR
+chmod 755 $SMSDIR
+fi
+
+if [ -d $TMP ]; then
+ rm -rf $TMP
+fi
+mkdir -p $TMP
+chmod 700 $TMP
+
+
+echo "$BACKTITLE" > $TMP/txtTEMP01
+echo >> $TMP/txtTEMP01
+echo "Written by Gabriele Zappi <gzappi@inwind.it> " >> $TMP/txtTEMP01
+echo >> $TMP/txtTEMP01
+echo "This script is a front-end to type SMS messages directly" >> $TMP/txtTEMP01
+echo "from your computer and send them using gnokii through" >> $TMP/txtTEMP01
+echo "your cellular phone connected to your computer." >> $TMP/txtTEMP01
+echo >> $TMP/txtTEMP01
+echo "Press [Enter] to continue with SENDSMS." >> $TMP/txtTEMP01
+
+dialog --backtitle "$BACKTITLE" --textbox "$TMP/txtTEMP01" 14 70
+TURN=0
+
+while true
+do
+ echo "Please, enter in the box below, your SMS message." > $TMP/txtTEMP$$
+ echo "Remember that it cannot be longer than 160 chars." >> $TMP/txtTEMP$$
+ echo " " >> $TMP/txtTEMP$$
+ echo "Press [ESC] or [CANCEL] to quit the program. " >> $TMP/txtTEMP$$
+
+ len=999
+ if [ $TURN -eq 0 ]; then
+ if [ "$SW_PRESETSMS" = "yes" ]; then
+ echo "$PRESETSMS" > $TMP/rspTEMP01
+ else
+ > $TMP/rspTEMP01
+ fi
+ fi
+ while test "$len" -le 0 -o "$len" -gt 160
+ do
+ dialog --backtitle "INSERT SMS ....." \
+ --inputbox "`cat $TMP/txtTEMP$$`" 10 70 "`cat $TMP/rspTEMP01`" \
+ 2> $TMP/rspTEMP01
+ if [ $? -ne 0 ] ; then
+ sure_to_quit
+ fi
+ len=`cat $TMP/rspTEMP01 | wc -c `
+
+ if [ $len -le 0 -o $len -gt 160 ] ; then
+ echo "Invalid SMS: It must be < 160 chars and > 0 long.." > $TMP/txtTEMP02
+ dialog --textbox "$TMP/txtTEMP02" 6 70
+ fi
+ done
+
+ NUMBERS=""
+ okcycle=0
+ while [ "$NUMBERS" = "" -o "$okcycle" -eq 0 ]
+ do
+ dialog --backtitle "INSERT NUMBER(s).." \
+ --yesno "would you like to pick up number(s) \
+ from your phone memory" 8 60
+
+
+ if [ $? -eq 0 ] ; then # Yes, gimme num from phonebook.
+ SMS_choicefrommem
+ fi
+
+ # Manual telephone number completion or insertion.
+ echo "Please, insert/modify in the box below, the NUMBER(S)" > $TMP/txtTEMP$$
+ echo "where you want to send the message to. " >> $TMP/txtTEMP$$
+ echo "(Multiple numbers must be separated by a space.) " >> $TMP/txtTEMP$$
+ echo "Press [ESC] or [CANCEL] to quit the program. " >> $TMP/txtTEMP$$
+ echo " " >> $TMP/txtTEMP$$
+ echo "OUTGOING MESSAGE: " >> $TMP/txtTEMP$$
+ echo -n " "
+ cat $TMP/rspTEMP01 | cut -c1-60 >> $TMP/txtTEMP$$
+ cat $TMP/rspTEMP01 | cut -c61-120 >> $TMP/txtTEMP$$
+ cat $TMP/rspTEMP01 | cut -c121-160 >> $TMP/txtTEMP$$
+
+ okcycle=1
+ dialog --backtitle "INSERT NUMBER(s).." \
+ --inputbox "`cat $TMP/txtTEMP$$`" \
+ 16 70 "$NUMBERS" 2> $TMP/rspTEMP03
+
+ if [ $? -ne 0 ] ; then
+ sure_to_quit
+ okcycle=0
+ else
+ NUMBERS=`cat $TMP/rspTEMP03`
+ if [ "$NUMBERS" = "" ] ; then
+ dialog --backtitle "INSERT NUMBER(s).." \
+ --infobox "Number cannot be empty.\n Try again.." 4 28
+ sleep 2
+ okcycle=0
+ fi
+ fi
+ done
+
+ # Last confirmation before sending messages....
+
+ okcycle=0
+ while [ $okcycle -eq 0 ]
+ do
+ echo "Ok. If you confirm the operation, the the SMS" > $TMP/txtTEMP$$
+ echo "is going to be sent to the selected number(s)." >> $TMP/txtTEMP$$
+ echo >> $TMP/txtTEMP$$
+ echo "Press [ESC] to quit the program. " >> $TMP/txtTEMP$$
+ echo "Press [CANCEL] to return to SMS input. " >> $TMP/txtTEMP$$
+ dialog --backtitle "$BACKTITLE" \
+ --yesno "`cat $TMP/txtTEMP$$`" 9 60
+ case $? in
+ 0)
+ okcycle=1;;
+ 1)
+ TURN=`expr $TURN + 1`
+ continue 2;;
+ 255)
+ sure_to_quit ;;
+ esac
+ done
+ TURN=`expr $TURN + 1`
+
+ for num in $NUMBERS
+ do
+ # echo "Sending sms to number $num ... "
+ dialog --backtitle "$BACKTITLE" --infobox "Sending sms to number $num ...\n Please wait" 4 45
+ if [ "$SW_SIMUL" = "yes" ] ; then
+ sleep 2
+ else
+ $GNOKII --sendsms $num < $TMP/rspTEMP01 > /dev/null 2>&1
+ fi
+ if [ $? -eq 0 ] ; then
+ dialog --backtitle "$BACKTITLE" \
+ --infobox "Message correctly sent to number $num !" 3 55
+ else
+ dialog --backtitle "$BACKTITLE" \
+ --infobox "Sent Failed to num $num! Sorry!" 3 55
+ fi
+ sleep 2
+ done
+
+done
+
+
+acex 0
+# zap - fin qui
+