#!/bin/bash
#======================================================================
# Copyright (c) 1997-1999 Daniele Giacomini daniele@pluto.linux.it
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# General Public License for more details.
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
#======================================================================
# ~/ppp-connetti
#
# Attiva la connessione al proprio ISP attraverso pppd e chat.
#
# Questo script  molto semplificato rispetto a quelli standard.
# Il problema sta nel fatto che molto dipende da come si
# comporta l'elaboratore dell'ISP.
# In questo esempio, in particolare, alla fine dello script di
# chat viene inviato un ritorno a carrello senza il quale la
# connessione non avviene.
#
# Si presume che la connessione avvenga utilizzando il dispositivo
# "ppp0".
#
# Perch possa essere utilizzato da un utente comune, occorre che
# quest'ultimo possa accedere alla porta seriale del modem e che il
# programma pppd sia SUID-root.
#
# Questo script non utilizza alcun argomento dalla riga di comando.
#======================================================================

#======================================================================
# Variabili.
#======================================================================

    #------------------------------------------------------------------
    # Indirizzo dell'ISP.
    # In teoria non  necessario indicare l'indirizzo IP
    # dell'elaboratore remoto. Tuttavia, se non dovesse funzionare,
    # c' sempre la possibilit di inserirlo qui.
    #------------------------------------------------------------------
    IP_ISP="0.0.0.0"
    #------------------------------------------------------------------
    # Indirizzo del proprio elaboratore.
    # L'indirizzo IP del proprio elaboratore non deve essere indicato,
    # a meno che non sia stato deciso diversamente con il proprio ISP.
    # Infatti, di solito viene assegnato l'indirizzo locale in
    # maniera dinamica.
    #------------------------------------------------------------------
    IP_LOCALE="0.0.0.0"
    #------------------------------------------------------------------
    # La porta di comunicazione utilizzata per il modem.
    # In questo caso  la seconda porta seriale.
    #------------------------------------------------------------------
    DISPOSITIVO="/dev/ttyS1"
    #------------------------------------------------------------------
    # Velocit massima di trasmissione.
    #------------------------------------------------------------------
    VELOCITA="57600"
    #------------------------------------------------------------------
    # Il numero di telefono dell'ISP.
    #------------------------------------------------------------------
    TELEFONO="0987654321"
    #------------------------------------------------------------------
    # Il nome utente utilizzato per accedere all'elaboratore dell'ISP.
    #------------------------------------------------------------------
    PPP_ACCOUNT="tizio"
    #------------------------------------------------------------------
    # La password per accedere.
    #------------------------------------------------------------------
    PPP_PASSWORD="tazza"

#======================================================================
# Inizio.
#======================================================================

    #------------------------------------------------------------------
    # Prima di iniziare si controlla che non sia gi attiva una
    # connessione con l'interfaccia di rete ppp0, ovvero quella di
    # una connessione PPP (precisamente la prima).
    #  da notare che ifconfig potrebbe non trovarsi nel percorso
    # di ricerca degli eseguibili della variabile PATH, per cui 
    # necessario indicare il percorso completo.
    #------------------------------------------------------------------
    if `/sbin/ifconfig | grep "ppp0" > /dev/null`
    then
	#--------------------------------------------------------------
	# Esiste gi una connessione con ppp0, quindi non si pu
	# procedere (si interrompe lo script).
	#--------------------------------------------------------------
	echo " gi attiva una connessione con ppp0"
	exit 1
    fi
    #------------------------------------------------------------------
    # Viene attivato pppd con l'aiuto di chat.
    # In particolare, chat esegue le seguenti operazioni:
    #  - imposta il tempo di attesa a 3 secondi;
    #  - interrompe in caso di messaggio ABORT
    #  - interrompe in caso di messaggio NO CARRIER;
    #  - senza attendere, richiede il prelievo della configurazione
    #    di fabbrica del modem;
    #  - dopo l'OK invia un comando AT nullo (serve per i modem lenti);
    #  - dopo l'OK invia il comando ATX3 in modo che venga ignorato il
    #    tono di chiamata;
    #  - dopo l'OK invia un comando AT nullo (serve per i modem lenti);
    #  - dopo l'OK invia la richiesta di composizione del numero
    #    telefonico;
    #  - cambia il tempo di attesa portandolo a 30 secondi;
    #  - attende CONNECT e quindi invia un ritorno a carrello;
    #  - attende la richiesta di login e invia il nome dell'utente;
    #  - attende la richiesta della password e invia la password;
    #  - senza attendere invia un ritorno a carrello.
    #------------------------------------------------------------------
    /usr/sbin/pppd \
connect "/usr/sbin/chat -v \
TIMEOUT      3 \
ABORT        BUSY \
ABORT        'NO CARRIER' \
''           \\dAT\&F \
OK           \\dAT \
OK           \\dATX3 \
OK           \\dAT \
OK           '\\dATDT $TELEFONO' \
TIMEOUT      30 \
CONNECT      '' \
ogin:--ogin: $PPP_ACCOUNT \
word:        $PPP_PASSWORD \
''           ''  " \
crtscts \
modem \
defaultroute \
$IP_LOCALE:$IP_ISP \
$DISPOSITIVO \
$VELOCITA

#======================================================================
# Fine.
#======================================================================
