Modules d'exemple 



Fai.hsm

Ce module contient des fonctions de connexion aux fournisseurs d'accès internet (FAI). Il permet de choisir entre différentes méthodes comme la connexion directe à un FAI prédéterminé, la connexion d'après une liste de FAIs ordonnée et pré-établie (voir Fai.ini) ou en choisissant un FAI dans une boite de dialogue.
Pratiquement toutes les lignes de ce module sont commentées, ce qui facilite la compréhension mais pas la lecture.
Une version non commentée est disponible ici



#####################################################################
# Module : Fai.hsm
# Description : Fonctions de connexion aux FAIs
# Auteur : Olivier Zolli <ozolli@online.fr>
# Version : 03/02/01
#####################################################################

# Procédure d'initialisation du module
# Attention : La ligne qui suit n'est pas un commentaire !
#!initialize
  debug(255,"<<< module 'Fai.hsm' >>>")
Return(0)

#####################################################################
# TestCx : Teste si déja connecté à un FAI
# [Entrée] : Aucune
# [Sortie] : $CxHamster
#####################################################################

# Début de la fonction
sub TestCx

# Déclaration et initialisation des variables
VarSet($CxHamster,True)

# Si déja connecté
if(RasIsConnected)

  # change l'état de la balise $CxHamster
  $CxHamster=False

  # Avertit l'utilisateur
  print("Déja connecté à "+RasGetConnection)

# Fin de la condition Si déja connecté
endif

# Transmet l'état de la balise $CxHamster à la commande appelante
return($CxHamster)

# Fin de la fonction
endsub

#####################################################################
# CxFai : Tente de se connecter à un FAI
# [Entrée] : $FAI : Nom du FAI (connexion à distance valide)
#            $NbEssais : Nombre de tentatives de connexion
#            $Pause : Délai entre 2 tentatives en millisecondes
# [Sortie] : $Connect
#####################################################################

# Début de la fonction, chargement des paramètres transmis par le
# script appelant
sub Cxfai($Fai,$NbEssais,$Pause)

# Déclaration et initialisation des variables
var($Connect)
varset($try,0)

# Si pas connecté exécute les instructions qui suivent
if(!RasIsConnected)

  # Début de la boucle repeat ... until
  # Répète les instructions jusqu'à la connexion
  repeat
    print("connexion à "+$Fai)

    # Tentative de connexion à $Fai et retourne le code d'erreur
    # dans $Connect
    $Connect=hamrasdial($Fai)

    # Sortie de la boucle si connecté
    break($Connect=-1)

    # Incrémentration du compteur de tentatives
    inc($try)

    # Sortie de la boucle si nombre de tentatives atteint
    break($try>=$NbEssais)

    # Pause selon le temps prescrit
    sleep($Pause)

  # Fin de la boucle, retour au début (repeat) si pas connecté
  until(RasIsConnected)

  # Si code d'erreur est 623, ouverture d'une boite de dialogue
  # indiquant que le FAI n'est pas valide
  if($Connect=623)
    $Re=MsgBox($Fai+" : Ce FAI n'est pas valide",_
                "Hamster-Fr",0x10|0x0)

  # Fin de la condition Si code d'erreur est 623
  endif

# Fin de la condition Si pas connecté
endif

# Transmet le code d'erreur à la commande appelante
return($Connect)

# Fin de la fonction
endsub

#####################################################################
# CxMulti : Tente de se connecter à un FAI en suivant une
#           liste de priorités (dans Fai.ini)
# [Entrée] : Aucune
# [Sortie] : Aucune
#####################################################################

# Début de la fonction
sub CxMulti

# Déclaration et initialisation des variables
var($NomFai)
varset($I,0)

# Début de la boucle do ... loop
do

  # Incrémentation du compteur
  inc($I)

  # Lecture du fichier Fai.ini, section [FAI], ligne FAI<valeur du
  # compteur> et écriture du résultat dans $NomFai
  $NomFai=iniread(Hampath+"Fai.ini","FAI","FAI"+$I,0)

  # Sortie de la boucle s'il n'y a plus de ligne FAI
  break($NomFai=0)

  # Appel de la fonction CxFai avec transmission des paramètres
  Cxfai($NomFai,1,5000)

  # Sortie de la boucle si connecté
  break(RasIsConnected)

# Fin de la boucle, retour au début (do)
loop

# Fin de la fonction
endsub

#####################################################################
# CxListe : Tente de se connecter à un FAI choisi dans une
#           boite de dialogue
# [Entrée] : Aucune
# [Sortie] : Aucune
#####################################################################

# Début de la fonction
sub CxListe

# Déclaration et initialisation des variables
var($ListeFai,$Boite)

# Initialisation de la liste $ListeFai
$ListeFai = ListAlloc

# Chargement de la liste $ListeFai avec tous les FAIs configurés
# dans l'ordinateur et teste s'il en existe au moins un.
# Si c'est le cas, exécution des instructions qui suivent
if(ListRasEntries($ListeFai)>0)

  # Affichage d'une boite de dialogue avec la liste des FAIs
  # Chargement du choix de l'utilisateur dans $Boite
  $Boite=ListBox($ListeFai,"Choix du FAI","Hamster-Fr",-1)

  # Si le choix n'est pas nul
  if($Boite>=0)

    # Appel de la fonction CxFai avec transmission des paramètres
    # ListGet lit le nom du FAI dans la liste correspondant au choix
    # effectué par l'utilisateur et le transmet comme 1er paramètre
    cxfai(ListGet($ListeFai,$Boite),1,5000)

  # Fin de la condition Si le choix n'est pas nul
  endif

# Fin de la condition S'il existe au moins un FAI
endif

# Libération de la liste en mémoire
ListFree($ListeFai)

# Fin de la fonction
endsub


Fai.ini



Pourquoi un fichier ini ?

Si vous utilisez régulièrement différents scripts Hamster, comme ceux sur ce site, et que vous voulez changer un des paramètres de connexion ou de gestion de comptes locaux, vous devrez revoir chaque script un par un pour les modifier. Cette tâche peut devenir fastidueuse si vos scripts sont longs ou/et nombreux et présente des risques d'erreurs.
Le fichier Fai.ini permet de gérer de façon simple les informations nécessaires aux scripts ou modules de connexion, d'envoi et de réception du courrier et des groupes de discussion.
Il contient la liste des FAIs disponibles sur l'ordinateur, les couples FAI-SMTP (SMTP est le protocole d'envoi de courrier) et les paramètres POP (POP est le protocole de réception de courrier).

Pourquoi un couple FAI-SMTP ?

La majorité des FAIs ne permet pas l'envoi de courrier sur son serveur avec le compte SMTP d'un autre FAI.
La raison de cette restriction est d'éviter un abus bien connu : Le spam , qui consiste à envoyer du courrier non sollicité par les destinataires à des fins de propagande ou commerciales.
Ce couple permet donc de choisir de façon automatique le bon compte SMTP quelle que soit la connexion engagée.




#####################################################################
# Fichier : Fai.ini
# Description : Contient les infos concernant les FAIs
#               (Utilisé par Fai.hsm et Mail.hsm)
# Auteur : Olivier Zolli <ozolli@online.fr>
# Version : 03/02/01
#####################################################################

#####################################################################
# Section [FAI]
# Liste des FAIs disponibles sur le système
# Fai.hsm tentera de se connecter aux FAIs dans cet ordre
# Rajouter les FAIs comme suit : FAI4 = blabla, FAI5 = tatitata, etc
# Le libellé doit correspondre à une connexion à distance existante
# sur le système (Démarrer | Programmes | Accessoires |
# Communications| Accès réseau à distance)
#
# Syntaxe : FAI<No> = >Nom du FAI>
#####################################################################

[FAI]

FAI1 = LibertySurf
FAI2 = freesbee - Olivier
FAI3 = Free

#####################################################################
# Section [SMTP]
# Liste des serveurs SMTP disponibles pour l'utilisateur
# Mail.hsm choisira le bon serveur en fonction du FAI connecté
# Rajouter les serveurs SMTP comme pour la section [FAI]
# Le FAI doit correspondre à une connexion à distance existante au
# moment de la connexion (Oreka, par exemple, n'existe pas tant que
# l'on n'est pas connecté et est effacé après la déconnexion)
#
# Syntaxe : SMTP<No> = <Nom du FAI>, <Serveur SMTP> [, <Port>]
#
# Si <Port> est omis, le port par défaut (25) sera utilisé
#####################################################################

[SMTP]

SMTP1 = LibertySurf,mail.libertysurf.fr,smtp
SMTP2 = freesbee - Olivier,smtp.freesbee.fr,25
SMTP3 = Free,smtp.free.fr
SMTP4 = Oreka,mail.oreka.com,25

#####################################################################
# Section [POP]
# Liste des serveurs POP3 disponibles pour l'utilisateur
# Mail.hsm relèvera le courrier de tous ces serveurs
# Rajouter les serveurs POP3 comme pour la section [FAI]
#
# Syntaxe : POP<No> = <Serveur POP> [, <Port>, <Nom d'utilisateur>,
#           <Mot de passe>, <Compte local>, <Filtre>]
#
# Si <Port> est omis, le port par défaut (110) sera utilisé
# Si <Nom d'utilisateur> et <Mot de passe> sont omis, la section :
# Configuration | Mots de passe sera utilisée.
# Si <Compte local> est omis, le courrier sera stocké dans la boîte
# "admin" (sauf configuration contraire dans Mailfilt.hsc).
# Si <Filtre> est renseigné, cette section sera utilisée dans
# MailFilt.hst pour le courrier reçu.
#####################################################################

[POP]

POP1 = pop.libertysurf.fr,pop,ozolli,motpasse,olivier@olivier.jp3
POP2 = pop.freesbee.fr,,$2
POP3 = pop.free.fr,,$1,,olivier@olivier.jp3
POP4 = mail.oreka.com,110,$4,,olivier@olivier.jp3,[oreka]




 Sommaire 


© 2000-2001 Brina & Olivier Zolli

Dernière mise à jour le 22/02/2001