man smssend.scripting (Commandes) - Le programme d'envoie de sms (vers GSM)
NOM
smssend - Le programme d'envoie de sms (vers GSM)
SYNOPSYS
Comment faire des scripts pour smssend.
DESCRIPTION
Les scripts pour Smssend sont assez facile à faire, mais pour cela vous devez suivre une marche précise. Tout d'abord, je vous conseille d'utiliser un outil du genre tcpdump ou ethereal, pour tracer les paquets qui sortent de votre machine. Donc utilisez votre navigateur habituel et connectez vous au site dont vous voulez faire un script et envoyez un sms (le tout en tracant les paquets). Avec ceci, vous aurez le nom des pages html à appeler, et les paramètres à passer (meme les paramètres des POST). Vous etes maintenant pret a écrire votre script (voir un exemple de script à la fin de cette man page) : Les lignes commençant par un # sont en commentaire. Sur la première ligne de votre script, indiquez le nom du site. Sur la deuxième ligne, indiquez le numéro de version (# Version x.xx). Ceci est important, car smssend se sert de cette ligne pour detecter automatiquement une nouvelle version du script. Sur la troisième ligne, indiquez votre nom, avec votre email. Sur les lignes suivantes, indiquez les messages d'erreur qui peuvent se produire avec leur numéro. Ensuite donnez les paramètres que prend le script en entrée, puis eventuellement les alias, et enfin les commandes.
PARAMETRES
Tout d'abord, il faut une ligne donnant le nombre de paramètres (NbParams x). Une ligne de paramète commencent par un % et se compose de la sorte : %Nom [Type] : Message d'aide
Voici les différents types
- Hidden
- Indique que ce paramètre est un mot de passe et doit etre caché.
- Convert
- Indique que ce paramètre doit etre convertit (les espaces remplaces par +, et les caractères non alphnum convertit en code ascii).
- Size=xx
- Indique la taille maximum de ce paramètre en nombre de caractères (pour les message, on a souvant une taille max).
ALIAS
Les alias sont très utiles, et servent par la suite lors des remplacement dynamiques (vous comprendrez par la suite). Une ligne l'alias commence par un $ et se compose de la sorte : $Paramètre alias Paramètre etant le nom d'un parametre existant (case non sensitive) et alias le nom a chercher lors des remplacement des tag <input>.
COMMANDES
Une commande par ligne. SmsSend definit des blocs de commandes (ou phases) qui correspondent à des envois GET ou POST. Chaque bloc doit ABSOLUMENT commencer par l'une des deux commandes GetURL ou PostURL, et se terminer par un GO, et ne contenir qu'une seule de ses commandes. Entre ces deux lignes, vous pouvez ajouter toutes les commandes optionnelles que vous voulez. Vous pouvez aussi (et devrez forcement) utilisez les commandes de substitution (voir chapitre suivant).
- GetURL <url> et PostURL <url>
- Une et une seule de ces commandes par bloc, suivi de l'url a contacter sans les paramètres eventuels et sans '?' (ceux après le '?') !!
- Params <paramètres>
- Indique les paramètres de l'URL a envoyer (ceux après le '?'), mais sans le '?'.
- Referer <referer>
- Indique le referer de cette page (certaines pages verifient que celui-ci est correct).
- PostData <données>
- Indique les données d'un formulaire à envoyer (marche de pair avec le PostURL).
- Sleep <durée>
- Indique au programme de faire une pause de durée secondes avant d'envoyer la requete.
- NoAdd <Nom>
- Indique au programme de ne pas ajouter le INPUT Nom lors du RTGetForm du meme bloc.
- SetCookie <Phase> <Domaine>-<Chemin>-<Nom>=<Valeur>
- Ajoute un cookie statique pour le Chemin (non NUL, mettez / pour le chemin complet) dans Domaine : Nom=Valeur. Le cookie sera actif à partir de Phase (la première étant 1).
- GO
- Indique la fin d'un bloc.
- Search <texte>
- Indique au programme de rechercher texte dans la réponse du site a la requète envoyée. Doit etre suivi d'un ErrorMsg ou PrintMsg. Un seul Search par bloc (pour plusieurs recherche, utilisez ensuite ElseSearch).
- ElseSearch <texte>
- Indique au programme qu'il y a plusieurs recherche à faire (Ne pas oublier de mettre un Search en premier). Doit etre suivi d'un ErrorMsg ou PrintMsg.
- Else
- Indique au programme l'action a faire si aucune des recherche n'a abouti. Doit etre suivi d'un ErrorMsg ou PrintMsg.
- ErrorMsg <num> <message>
- Indique au programme d'afficher message avant de se terminer avec un code d'erreur num si la recherche précédente a aboutit.
- PrintMsg <message>
- Indique qu programme d'afficher message avant de continuer si la recherche précédente a aboutit.
REMPLACEMENTS DYNAMIQUES
Voici maintenant ce qui est le plus puissant dans SmsSend : les remplacements dynamiques. Un remplacement dynamique est défini comme suit : %Nom[-param]*% Le nom pouvant etre soit le nom d'un des paramètres (pas d'alias dans le nom !), soit le nom d'une commande interne. Certaines commandes internes ont besoin de paramètres, ceux si etant séparés par des '-'. Si un '-' est précisé pour le nom de paramètre (%Param-x-y%), alors seule la sous chaine commançant à Param+x et de taille y caractères est copiée. Voici la liste de ces commandes :
- RTURL-<num>
- Remplace par l'url qui a été envoyée lors de la phase num (la première phase etant 1, et les redirection automatiques de skyutils comptent).
- RTParams-<num>
- Remplace par les données qui ont été envoyées lors de la phase num (la première phase etant 1, et les redirection automatiques de skyutils comptent).
- RTHost-<num>
- Remplace par le nom de l'hote qui a été utilisé lors de la phase num (la première phase etant 1, et les redirection automatiques de skyutils comptent).
- RTFollowLink-<num>-<nom>
- Remplace par l'URL du lien nom cherché dans le résultat de la phase num (la première phase etant 1, et les redirection automatiques de skyutils comptent).
- RTGetInput-<num>-<nom>
- Remplace par le champ VALUE du tag INPUT de NOM nom cherché dans le résultat de la phase num (la première phase etant 1, et les redirection automatiques de skyutils comptent).
- RTGetInput2-<num>-<idx>-<flags>
- Remplace par les champs (definis par flags) du tag INPUT d'indice idx (le premier etant 1) cherchés dans le résultat de la phase num (la première phase etant 1, et les redirection automatiques de skyutils comptent). Flags : {a:NAME=VALUE}{n:NAME}{v:VALUE}{t:TYPE}. Si flags est en majuscule, des " sont ajoutés entre les champs.
- RTGetInput3-<num>-<ind>-<idx>
- Remplace par les champs NOM et VALUE du tag INPUT d'indice idx (le premier etant 1) du formulaire ind (le premier etant 0) cherchés dans le résultat de la phase num (la première phase etant 1, et les redirection automatiques de skyutils comptent).
- RTFormAction-<num>-<ind>
- Remplace par la valeur du champ ACTION du formulaire ind (le premier etant 0) cherché dans le résultat de la phase num (la première phase etant 1, et les redirection automatiques de skyutils comptent).
- RTGetForm-<num>-<ind>
- Remplace par tous les INPUT (NAME=VALUE) du formulaire ind (le premier etant 0) cherché dans le résultat de la phase num (la première phase etant 1, et les redirection automatiques de skyutils comptent). Sauf pour tous les remplacements fait (dans la meme commande) si le champ NAME du tag INPUT est trouvé dans les remplacements faits (les alias sont ici tres utiles si le champ NAME a un nom barbare, et qu'on veux remplacer par le paramètre Login du script par exemple). De meme tous les champ correspondants aux NoAdd du meme bloc ne sont pas ajoutés.
- RTGetString-<num>-<textAvant>
- Remplace par la chaine trouvée juste après textAvant (après avoir retiré les espaces et les délimiteurs de chaine) cherché dans le résultat de la phase num.
- RTSubURL-<num>-<sub>
- Remplace par la sub ieme section (chaque section est séparée par un /, la premiere est après le nom du domaine) cherché dans l'url de la phase num.
- RTFollowFrame-<num>-<nom>
- Remplace par l'url du frameset de nom cherché dans le résultat de la phase num.
- RTRegex-<num>-<gpos>-<pos>-<regex>
- Cherche le resultat de la phase num en utilisant l'expression régulière regex et retourne le match pos parmis les gpos parcours (cad que la source est matchée par la regexpr gpos fois, debutant a la fin du dernier match). Pour la syntaxe des expressions regulières, voir le manuel de pcre.
EXEMPLE
Voici un exemple de script de smssend pour mieux comprendre :
## SkySMS provider file - www.kiwee.com ## # Version 1.03 # by Ze KiLleR <zekiller@skytech.org> # Error codes : # 1 -> Bad Login/Password # 2 -> Daily message quota exceeded # 3 -> ASP/SQL timeout # 4 -> Error sending message
NbParams 5 %Login : Your login from www.kiwee.com %Password Hidden : Your password %Pseudo : Kiwee Pseudo of recipient %Type : Type of sms : 0 (flash sms) or 2 (normal sms) %Message Size=125 Convert : Your message
# Logging on Kiwee GetURL http://www.kiwee.com/sms/ GO PostURL http://www.kiwee.com/Verifmembre.asp PostData LoginName=%Login%&Password=%Password% Search votre pseudo et/ou votre mot de passe ErrorMsg 1 Bad login and/or password GO GetURL http://www.kiwee.com/sms/ GO
# Sending message PostURL http://www.kiwee.com/sms/sendsms.asp Params previous=sms.asp Referer http://www.kiwee.com/sms/ PostData from=%Login%&topseudo=%Pseudo%&PhoneNumber=&class=%Type%&message=%Message%&arandom=2
Search confirmsms.html PrintMsg Message successfully sent ElseSearch atteint votre limite d'envoi ErrorMsg 2 Daily message quota exceeded ElseSearch Timeout expired ErrorMsg 3 ASP/SQL timeout Else ErrorMsg 4 Error sending message GO
VOIR AUSSI
COPYRIGHTS
Copyright (c) 2000'03 - Christophe "Ze KiLleR" Calmejane <zekiller@skytech.org>
Distribué sous la GNU General Public License v2 ; voir le fichier COPYING pour de plus amples informations.
AUTHORS
Christophe "Ze KiLleR" Calmejane <zekiller@-REMOVE-skytech.org>