Outils pour utilisateurs

Outils du site


issue94:blocage_d_appels

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Prochaine révision
Révision précédente
issue94:blocage_d_appels [2015/02/28 15:54] – créée andre_domenechissue94:blocage_d_appels [2015/04/03 19:02] (Version actuelle) d52fr
Ligne 1: Ligne 1:
 +===== Article =====
 +TITRE : Blocage d'appels, une solution à deux modems
  
 +**
 I haven't heard from him, so I have to assume Greg is still feeling a bit under the weather this month. Feel free to email him some get well soon messages: greg.gregwa@gmail.com I haven't heard from him, so I have to assume Greg is still feeling a bit under the weather this month. Feel free to email him some get well soon messages: greg.gregwa@gmail.com
  
Ligne 14: Ligne 16:
  
 Weeks went by as I tried various Linux programs to monitor our landline, read the caller ID (CID), check it against a blacklist to blast the modem synch tones to the unwary, if hopeful, scavenger on the other end. Weeks went by as I tried various Linux programs to monitor our landline, read the caller ID (CID), check it against a blacklist to blast the modem synch tones to the unwary, if hopeful, scavenger on the other end.
 +**
  
 +Puisque je n'ai toujours pas eu de ses nouvelles, je suppose que Greg ne se sent pas encore dans son assiette ce mois-ci. N'hésitez pas à lui envoyer des messages de prompt rétablissement à : greg.gregwa@gmail.com
 +
 +Solution contre quoi ? Vous pouvez vous le demander. Eh bien, contre les appels téléphoniques non sollicités et ennuyeux, bien sûr. Les politiciens, les télévendeurs, les organismes de bienfaisance et un trop grand nombre d'autres personnes ont mon numéro de téléphone. Ils ne payent pas ma facture de téléphone, de sorte qu'il ne leur coûte à peu près rien pour que leurs composeurs automatiques fassent sonner mon téléphone pour demander de l'argent.
 +
 +Depuis plusieurs années, j'ai joué avec l'idée de répondre à ces appels avec un modem simulant un fax. Je pensais que la sonnerie alerterait leur logiciel qui, ainsi, supprimerait mon numéro de leurs énormes bases de données.
 +
 +Cette année (malheureusement après la vague d'appels pré-électoraux), j'ai réussi à terminer partiellement un tel jouet. Puisque les ordinateurs actuels n'ont plus de connecteur DB-25 en série, j'ai acheté en vitesse un modem USB sur eBay.
 +
 +Ayant cru à tort que tous les modems avaient à la fois une « ligne » et un connecteur RJ-11 d'extension, je suis retourné sur eBay pour acheter un autre modem. Cette fois-ci, ce que le vendeur chinois appelait un modèle « deux-ports » n'a coûté qu'un peu plus que celui que j'avais. Dès son arrivée, les expériences ont commencé.
 +
 +Les semaines passèrent pendant que j'essayais divers programmes Linux pour surveiller notre ligne fixe, lire l'identification de l'appelant (CID), vérifier dans une liste noire pour déclencher les sons de synchronisation du modem pour les rapaces sans méfiance, voire plein d'espoir, à l'autre bout.
 +
 +**
 I finally settled on picocom for the monitor function, minicom for setup, and modem-cmd to do the auto-answer and blast job. After many hours of writing bash scripts, testing and rewriting, I learned that: I finally settled on picocom for the monitor function, minicom for setup, and modem-cmd to do the auto-answer and blast job. After many hours of writing bash scripts, testing and rewriting, I learned that:
 1.  Picocom does not like running in the background. 1.  Picocom does not like running in the background.
Ligne 30: Ligne 46:
  
 So here's where the second modem comes in. (I have two now, you know.) The one-port modem connects to the extension port of the two-port modem. The two-port modem's “line” port connects to the phone line. Picocom monitors the two-port, while modem-cmd answers and hangs up the “extension” using the second modem. Of course, both modems are really on an “extension” but they neither know nor care. So here's where the second modem comes in. (I have two now, you know.) The one-port modem connects to the extension port of the two-port modem. The two-port modem's “line” port connects to the phone line. Picocom monitors the two-port, while modem-cmd answers and hangs up the “extension” using the second modem. Of course, both modems are really on an “extension” but they neither know nor care.
 +**
  
 +J'ai finalement choisi picocom pour la fonction de surveillance, minicom pour la configuration, et le modem-cmd pour faire les tâches de réponse automatique et émettre les sons. Après plusieurs heures d'écriture de scripts bash, de tests et de réécriture, j'ai appris que:
 +
 +1. picocom n'aime pas être en tâche de fond ;
 +2. picocom n'a pas de fonction de journalisation, nécessaire pour passer les événements par fichier ;
 +3. les commandes de réponse et de raccrochement du modem interfèrent avec la surveillance du modem ;
 +4. le langage Expect me semblait mystérieux ;
 +5. Même bash a des règles de comparaison complètement folles ;
 +6. Le code du modem USB intégré n'applique pas pleinement le jeu de commandes Hayes. (Mais c'est suffisant pour mes besoins.)
 +
 +Leçon une : picocom veut son propre tty pour démarrer. Consacrer un terminal à lui seul.
 +
 +Leçon deux : un correctif (diff) pour mettre en œuvre la journalisation est disponible pour picocom et il est facile à appliquer, même pour un bleu comme moi. Mon fichier journal picocom se nomme CID.log, mais ça peut être tout autre nom.
 +
 +Leçon trois : La nature de la capture du port d'E/S en série m'a obligé, soit à suspendre la surveillance, soit à utiliser une attache sur une seconde ligne. Je pensais que je pouvais basculer entre la surveillance et la réponse par un script, mais, lancé par un script, picocom ne voulait pas fonctionner pour moi .
 +
 +C'est donc là que le second modem entre en jeu. (J'en ai deux maintenant, vous savez.) Le modem à un port se connecte au port d'extension du modem à deux ports. Le port « ligne » du modem à deux ports se connecte à la ligne téléphonique. Picocom surveille le modem à deux ports, tandis que modem-cmd répond et raccroche l'« extension » en utilisant le second modem. Bien sûr, les deux modems sont vraiment en « extension », mais ils ne le savent pas et n'en ont rien à faire.
 +
 +**
 These modems appear in my (Debian) /dev directory as ttyACM0 (the two-port) and ttyACM1 (the one-port). The command lines I use for the modems are:  These modems appear in my (Debian) /dev directory as ttyACM0 (the two-port) and ttyACM1 (the one-port). The command lines I use for the modems are:
  
Ligne 47: Ligne 82:
 Reset the modem Reset the modem
 modemcmd=`/usr/bin/modem-cmd /dev/ttyACM1 ~~ATZ` modemcmd=`/usr/bin/modem-cmd /dev/ttyACM1 ~~ATZ`
 +**
  
 +Ces modems apparaissent dans mon répertoire (Debian) /dev comme ttyACM0 (le deux ports) et ttyACM1 (le monoport). Les lignes de commande que j'utilise pour les modems sont :
 +
 +La configuration
 +minicom -s -D /dev/ttyACMx
 +
 +La surveillance
 +picocom -ilr --logfile /root/phone/CID.log /dev/ttyACM0
 +
 +Décrocher le téléphone
 +modemcmd=`/usr/bin/modem-cmd /dev/ttyACM1 ~~ATA`
 +
 +Raccrocher.
 +modemcmd=`/usr/bin/modem-cmd /dev/ttyACM1 ~~ATH`
 +
 +Remise à zéro
 +modemcmd=`/usr/bin/modem-cmd /dev/ttyACM1 ~~ATZ`
 +
 +**
 These three modem commands are issued within a bash script after starting Picocom manually in a dedicated terminal window. The first, ATA, is used because the fax machine dream came to an end – it was too much trouble. Also, the modem was unwilling to dial without a dial tone. (Remember, it's answering a ringing phone.) These three modem commands are issued within a bash script after starting Picocom manually in a dedicated terminal window. The first, ATA, is used because the fax machine dream came to an end – it was too much trouble. Also, the modem was unwilling to dial without a dial tone. (Remember, it's answering a ringing phone.)
  
Ligne 64: Ligne 118:
 NAME = TOLL FREE NAME = TOLL FREE
 RING RING
 +**
  
 +Ces trois commandes de modem sont lancées dans un script bash après avoir démarré picocom manuellement dans une fenêtre de terminal dédié. La première, ATA, est utilisée parce que mon rêve de fax a pris fin - c'était trop de tracas. De plus, le modem ne voulait pas numéroter sans tonalité. (Rappelez-vous, il répond à un téléphone qui sonne).
 +
 +Voici un échantillon de la sortie de picocom, y compris le bloc CID (quatre valeurs) qui arrive juste avant la deuxième sonnerie. Ce premier appel est un candidat pour la liste noire.
 +
 +RING
 +DATE = 1117
 +TIME = 1848
 +NMBR = 8009421970
 +NAME = TOLL FREE   (Le CID dit qu'il n'est pas en liste noire ; laissons le sonner.)
 +RING
 +RING
 +DATE = 1118
 +TIME = 0931
 +NMBR = 8009421970
 +NAME = TOLL FREE
 +RING
 +
 +**
 Ringmon, the program which issues the one-port modem commands (see above) is kicked off by incron. Incron is watching the CID.log file for the updates picocom makes. Ringmon starts Caller with a parameter “1” (Caller 1). Caller checks blacklist.srt to see whether it needs to intercept the call or just let the humans answer it. If the CALLERID is found in blacklist.srt, it calls Blackball. Blackball uses modem-cmd to function the modem to dial out. This stops the ring by answering the phone, producing a modem error because there's no ring tone. But that doesn't cause a problem. The modem is told to hang up after a few seconds, then it's reset. Ringmon, the program which issues the one-port modem commands (see above) is kicked off by incron. Incron is watching the CID.log file for the updates picocom makes. Ringmon starts Caller with a parameter “1” (Caller 1). Caller checks blacklist.srt to see whether it needs to intercept the call or just let the humans answer it. If the CALLERID is found in blacklist.srt, it calls Blackball. Blackball uses modem-cmd to function the modem to dial out. This stops the ring by answering the phone, producing a modem error because there's no ring tone. But that doesn't cause a problem. The modem is told to hang up after a few seconds, then it's reset.
  
Ligne 70: Ligne 143:
  
 You may want to do something similar. The code is available here: https://www.dropbox.com/sh/yvbilaxpqoho57g/AACYRMwYhy9SM8NXpKVAQGHPa?dl=0. You may want to do something similar. The code is available here: https://www.dropbox.com/sh/yvbilaxpqoho57g/AACYRMwYhy9SM8NXpKVAQGHPa?dl=0.
 +**
 +
 +Ringmon, le programme qui passe les commandes au modem monoport (voir ci-dessus) est lancé par incron. Incron surveille le fichier CID.log pour les mises à jour que picocom écrit. Ringmon lance Caller avec un paramètre « 1 » (Caller 1). Caller vérifie dans blacklist.srt pour voir s'il doit intercepter l'appel ou tout simplement laisser les humains répondre. Si le CALLERID se trouve dans blacklist.srt, il appelle Blackball. Blackball utilise modem-cmd pour faire composer un numéro par le modem. Cela arrête la sonnerie en répondant au téléphone, produisant une erreur de modem parce qu'il n'y a pas de tonalité. Mais cela ne pose pas de problème. On demande au modem de raccrocher après quelques secondes, puis il est remis à zéro.
 +
 +Les autres tâches (maintenance de la liste noire, consignation d'appel, etc.) sont réparties entre plusieurs scripts bash et fichiers. Ces programmes utilisent beaucoup cat, grep et tr, ce qui simplifie le code. Pour éviter les problèmes d'autorisation, l'ensemble du système réside dans /root/phone et dans /var/log.
 +
 +Si vous voulez faire quelque chose de semblable : le code est disponible ici: https://www.dropbox.com/sh/yvbilaxpqoho57g/AACYRMwYhy9SM8NXpKVAQGHPa?dl=0.
 +
 +===== Encarts =====
 +**
 +<nowiki>
 +Sample from /root.Phone/Namesub.txt
 +2027650882,Political Call
 +2028005670,Stop Hillary PA
 +
 +Sample from /root.Phone/Namesub.txt
 +2028005670,Stop Hillary PA
 +2028005696,Political Call
 +
 +Sample from my /var/log/caller.log:
 +Seq Date Time Phone Formatted Caller, Blacklist flag
 +2021,1207,1838,8552067186,(855) 206-7186,American Legacy PA,1
 +2036,1208,1349,8009421970,(800) 942-1970,Presidential Coali,1
 +
 +Sample from /var/log/blackmaint.log:
 +1205 TIME = 1433 Blacklist was sorted
 + 5. 1231 at TIME = 1340 7207639906 blacklisted
 +caller.log rebuilt 1231 TIME = 1412
 +Blackballed call from 8552067186 added to caller.log 0101 at TIME = 1057
 +
 +Here's the maintenance screen:
 +************************************************************
 +*        Executing /root/phone/scripts/Blackmaint          *
 +************************************************************
 +1. View TODAY's logged CALLS
 +2. View ALL CALLS in log
 +3. View ALL CALLS in log sorted by date, time
 +4. View all phone numbers in the BLACKLIST
 +---------------------------------------
 +5. ADD the LAST caller to the blacklist
 +6. ADD a RECENT caller to the blacklist
 +7. ADD a 10-digit phone no. to the blacklist
 +8. REMOVE a number from blacklist.txt
 +9. MATCH blacklisted numbers with Name Substitutes
 +---------------------------------------
 +10. STOP MONITORING calls (Killspicocom)
 +11. Kill Picocom, start Minicom on ACM0
 +12. Start Minicom on ACM1
 +13. Clean temporary CID files from /root/phone
 +
 +> Enter number of your choice or enter 'q' to quit.
 +</nowiki>
 +**
 +
 +<nowiki>
 +Exemple de /root.Phone/Namesub.txt
 +2027650882,Political Call
 +2028005670,Stop Hillary PA
 +
 +Exemple de /root.Phone/Namesub.txt
 +2028005670,Stop Hillary PA
 +2028005696,Political Call
 +
 +Exemple de mon /var/log/caller.log:
 +Seq Date Time Phone Formatted Caller, Blacklist flag
 +2021,1207,1838,8552067186,(855) 206-7186,American Legacy PA,1
 +2036,1208,1349,8009421970,(800) 942-1970,Presidential Coali,1
 +
 +Exemple de /var/log/blackmaint.log:
 +1205 TIME = 1433 Blacklist was sorted
 + 5. 1231 at TIME = 1340 7207639906 blacklisted
 +caller.log rebuilt 1231 TIME = 1412
 +Blackballed call from 8552067186 added to caller.log 0101 at TIME = 1057
 +
 +Voici l'écran de maintenance:
 +************************************************************
 +*        Executing /root/phone/scripts/Blackmaint          *
 +************************************************************
 +1. View TODAY's logged CALLS [Voir les APPELS d'AUJOURD'HUI]
 +2. View ALL CALLS in log [Voir TOUS les APPELS dans le journal]
 +3. View ALL CALLS in log sorted by date, time [Voir TOUS les APPELS triés par date, heure]
 +4. View all phone numbers in the BLACKLIST [Voir tous les numéros de la LISTE NOIRE]
 +---------------------------------------
 +5. ADD the LAST caller to the blacklist [AJOUTER le DERNIER appelant en liste noire]
 +6. ADD a RECENT caller to the blacklist [AJOUTER une appelant RÉCENT en liste noire]
 +7. ADD a 10-digit phone no. to the blacklist [AJOUTER un numéro à 10 chiffres à la liste noire]
 +8. REMOVE a number from blacklist.txt [RETIRER un numéro de la liste noire]
 +9. MATCH blacklisted numbers with Name Substitutes [SUBSTITUER les noms aux numéros en liste noire]
 +---------------------------------------
 +10. STOP MONITORING calls (Killspicocom) [ARRETER de SURVEILLER les appels]
 +11. Kill Picocom, start Minicom on ACM0 [Tuer picocom, démarrer minicom sur ACM0]
 +12. Start Minicom on ACM1 [Démarrer minicom sur ACM1]
 +13. Clean temporary CID files from /root/phone [Nettoyer les fichiers temporaires de /root/phone]
 +
 +> Enter number of your choice or enter 'q' to quit. [Entrer le numéro choisi ou 'q' pour sortir]
 +</nowiki>
 +
 +**
 +<nowiki>
 +LIST OF PROGRAMS
 +File spec.                         Function
 +/root/phone/Ringmon                Initiated by inchron, reads CID.log, waits for CID, starts Caller
 +/root/phone/maint-scripts/Caller   Builds caller.log record, callsBlackball. Also rebuilds entire
 +                                   caller.log from CID.log and Namesub.txt.
 +/root/phone/maint-scripts/Blackmaint   Adds numbers to blacklist, sorts it, etc.
 +/root/phone/Blackball              Commands second modem to answer and hang up.
 +
 +Available from repositories:
 +minicom                            Modem setup
 +modem-cmd                          Output simple commands to second modem
 +inchron                            Program (Ringmon) initiation
 +nano                               Misc.file edits
 +picocom                            Monitor phone line
 +sed                                Phone number formatting to (XXX) xxx-xxxx
 +tr, grep                           File editing
 +
 +LIST OF FILES
 +File spec.                         Function
 +/root/phone/CID.log                Picocom's log file; monitored by inchron
 +/root/phone/CID1.sav               Backup of CID.log
 +/root/phone/blacklist.txt          Blacklisted phone numbers, manual name substitutions
 +/root/phone/blacklist.srt          Sorted (by phone #) version of above
 +/root/phone/Namesub.txt            Aliases for phone numbers (from Internet);
 +                                   maintained manually
 +/root/phone/CID.grep, CID.tr1, etc. temp files re-created at each phone call
 +/var/log/caller.log                Logs all calls with date, time, substitute name, etc.
 +/var/log/blackmaint.log            Logs activities of Caller, Blackmaint and Blackball
 +</nowiki>
 +**
 +
 +<nowiki>
 +LISTE DES PROGRAMMES
 +Fichier                            Fonction
 +/root/phone/Ringmon                Initié par inchron, lit CID.log, attend CID, démarre Caller
 +/root/phone/maint-scripts/Caller   Fait rapport dans caller.log record, appel Blackball. Refait également tout le
 +                                   caller.log à partir du CID.log et de Namesub.txt.
 +/root/phone/maint-scripts/Blackmaint   Ajoute numéros à la lise noire, la trie, etc.
 +/root/phone/Blackball              Commande au deuxième modem de répondre et de raccrocher. 
 +
 +
 +Disponibles dans les dépôts :
 +minicom                            Paramétrage du modem
 +modem-cmd                          Envoie des commandes simples au deuxième modem 
 +inchron                            Initiation du programme (Ringmon) 
 +nano                               Changements dans Misc.file 
 +picocom                            Surveille la ligne téléphonique
 +sed                                Formatage des numéros à (XXX) xxx-xxxx
 +tr, grep                           Édition de fichiers 
 +
 +LISTE DES FICHIERS
 +Fichier                            Fonction
 +/root/phone/CID.log                Journal de Picocom; surveillé par inchron
 +/root/phone/CID1.sav               Sauvegarde de CID.log
 +/root/phone/blacklist.txt          Numéros en liste noire, substitution des noms manuelle
 +/root/phone/blacklist.srt          Verison du fichier ci-dessus triée (par numéro de tél)
 +/root/phone/Namesub.txt            Alias des numéros (venant d'Internet) ; mis à jour à la main
 +/root/phone/CID.grep, CID.tr1, etc. Fichiers temporaires re-créés à chaque appel
 +/var/log/caller.log                Journal des appels avec la date, l'heure, le nom, etc.
 +/var/log/blackmaint.log            Journal d'activité de Caller, Blackmaint et Blackball
 +</nowiki>
issue94/blocage_d_appels.1425135296.txt.gz · Dernière modification : 2015/02/28 15:54 de andre_domenech