#!/bin/bash
# simple filelocking and /tmp race avoid
# keep it all in users home dir.

if [ ! -d $HOME/tmp ]; then
 mkdir $HOME/tmp
fi
touch $HOME/tmp/`whoami`
ANSFILE=$HOME/tmp/`whoami`
READFILE=$HOME/tmp/.about.$$
BACKTITLE="Euro 3G - Aggiornamento della licenza d'uso (SpinKey)"

export PATH=/bin:/sbin:/usr/bin:/usr/sbin:$PATH

dialog --backtitle "$BACKTITLE" --title "Richiesta di conferma" --yesno "Questa procedura permettera di installare/aggiornare\nla licenza d'uso sulla chiave SpinKey \n\n Siete sicuri di voler procedere ?" 10 60
if [ $? -ne 0 ] ; then
        exit 1
fi

ACTDIR=`pwd`
cd /opt/euro-beta/
#./subsys/e3g_subsystem spinkeyd stop >/dev/null 2>&1 

#SPINKEY_NR=`cat /dev/spinkey | grep Key3G | cut -d' ' -f 5`

./subsys/e3g_subsystem spinkeyd start >/dev/null 2>&1 
SPINKEY_NR=`echo serial | nc -w1 localhost 9991 | tr -d "\r" | awk '/SERIAL/ {print $3}'`
cd $ACTDIR

if [ "$SPINKEY_NR." == "." ]; then
  dialog --backtitle "$BACKTITLE" --title "Errore critico" --msgbox "  Non e' stata rilevata nessuna chiave SpinKey.  \n      Premere O.K. per terminare la procedura                  \n\n" 10 60
  exit
fi

VALID=0
while [ $VALID -eq 0 ] ;
do
  dialog --backtitle "$BACKTITLE" --title "Aggiornamento SpinKey" --inputbox "E' stata rilevata la chiave SpinKey $SPINKEY_NR.\n\nPer aggiornare la licenza d'uso inserire sotto il codice ricevuto\nScrivete il codice nella forma completa compresi gli simboli '.' e '-'\n\n(Sulla tastiera di Explor@Gold inserire simbolo '-' con il tasto '�')\n\nper cancellare il codice inserito in precedenza premere CTRL-U\n" 16 76 "`cat /tmp/last_spinkey_upgr_key`"  2>$ANSFILE

  # now the routines
  ANS=`cat $ANSFILE`
  if [ "$ANS" == "" ]; then
    exit
  fi
  echo $ANS | tr -c "[0-9,a-f,A-F]" " " | awk '{ print $1"."$2"."$3"."$4"-"$5"."$6"."$7"."$8"-"$9; }' > /tmp/last_spinkey_upgr_key 

  if egrep '^[0-9a-fA-F\.\-]+$' /tmp/last_spinkey_upgr_key >/dev/null 2>&1 ; then
    VALID=1
  else
    dialog --backtitle "$BACKTITLE" --title "Caratteri non amessi" --msgbox "Sono amessi solo i seguenti caratteri:\n\n 0 1 2 3 4 5 6 7 8 9 a b c d e f . -\n\nRiprovare\n\n" 10 60    
  fi
done

if /opt/euro-beta/config_tools/upgrader wrkey $ANS >/dev/null 2>&1  ; then
  dialog --backtitle "$BACKTITLE" --title "Aggiornamento SpinKey" --msgbox "Aggiornamento terminato con successo\n\n" 0 0
  rm /tmp/last_spinkey_upgr_key
else
  if [ $? -eq 2 ] ; then
    UPGR_ERR="Codice rifiutato"
  else  
    UPGR_ERR="Errore durante la scrittura"
  fi    
  dialog --backtitle "$BACKTITLE" --title "Aggiornamento SpinKey" --msgbox "$UPGR_ERR. Riprovare\n\n" 0 0
fi

exit


