No Description

JF Burdet ade04ffd26 Fixing ktipp lookup wich failed. 6 years ago
replies c4ffb50131 Les repliques sont maintenant stockée de manière compact en opus et converties au vol en wav. 6 years ago
.gitignore 8293b15569 Deploy du proto sur orion. 6 years ago
README.md f45fbb9a83 Les hall of fame pointe maintenant vers mon blog. 6 years ago
config.yml c6b8842f37 Premier pigeon chopé 6 years ago
lenny.py ade04ffd26 Fixing ktipp lookup wich failed. 6 years ago
requirements.txt 96cbfff709 Encore fine tuning. 6 years ago

README.md

"Hello, it's Lenny" : un remake libre

Dear english users : don't hesitate to view the google translated page.

Ce projet à pour but de reproduire le comportement de https://www.reddit.com/r/itslenny/ dans le cadre de mon réseau local de mon logement. Mon fournisseur est Sunrise en Suisse et ils ont eu la bonne idée de me fournir une Fritz!Box 7390, qui permet de créer un périphérique VoIP.

Le logiciel intercepte chaque appel, et consulte deux base de donnée sur Internet (ktipp.ch et ch.shouldianswer.net) afin de déterminer si l'appel provient d'un télémarketeur. Si c'est le cas, il répond avant que le téléphone fixe ne sonne, et déclenche la séquence de réponse qui a pour but de le tenir en ligne le plus longtemps possible.

Pour écouter ceux que j'ai attrapé sur ma ligne personnelle, c'est ici

Installation

Le logiciel a été testé sous Linux, mais devrait fonctionner sous mac et probablement Windows.

Il a été conçu pour tourner comme un service/daemon.

Il faut installer via le packager de votre système d'exploitation les logiciels suivants :

  • Python 2.7
  • Lame Mp3 encoder
  • Opus tools
  • Linphone

L'installation décrite ci-dessous est basée sur Arch Linux, avec une installation serveur:

sudo pacman -S python2 lame linphone libxslt opus opus-tools
sudo useradd -m  -s /bin/bash callblocker
sudo su - callblocker
git clone https://dev.burdet.ch/git/jfburdet/itslenny.git
cd itslenny
virtualenv -p python2 venv2
./venv2/bin/pip install -r requirements.txt -U
exit

Il faut créer le unit file en conséquence :

vi /etc/systemd/system/callblocker.service

[Unit]
Description=ItsLenny open sequel

[Service]
User=callblocker
Group=callblocker
Type=simple
ExecStart= /home/callblocker/itslenny/venv2/bin/python2 /home/callblocker/itslenny/lenny.py
Restart=always
RestartSec=5
TimeoutSec=10

[Install]
WantedBy=multi-user.target

On configure maintenant itslenny, on lui spécifiant le compte SIP/VOIP auquel il doit se connecter :

sudo su - callblocker
vi itslenny/config.yml
- connection:
  domain: "192.168.1.1"
  username: "621"
  password: "toto"

On rend le service démarable automatiquement :

sudo systemctl enable callblocker
sudo systemctl start callblocker
sudo journalctl -f --since="5 minutes ago" -u callblocker

Configuration de la Fritz!Box

  • Se logguer en admin
  • Aller dans Téléphonie -> Périphérique tél. -> Configurer un nouveaur périphérique
  • Choisir 'Téléphone avec ou sans répondeur' -> Suivant
  • Choisir ' ... (téléphone IP)' -> Suivant
  • Spécifier le mot de passe de votre choix (il faudra le reporter dans config.ini mentionné ci-dessus)
  • puis terminer l'assistant (->Suivant plusieurs fois)

Tester avec un appel concret

  • Démarrer le service : sudo systemctl start callblocker
  • Vérifier que le journal indique success : sudo journalctl --since="1 minute ago" -u callblocker

Cela doit marquer un message du type :

Jun 21 15:16:39 orion systemd[1]: Started ItsLenny open sequel.
Jun 21 15:16:39 orion callblocker.py[12340]: starting 621@192.168.1.1
Jun 21 15:16:39 orion callblocker.py[12340]: Registration status: Registration in progress
Jun 21 15:16:39 orion callblocker.py[12340]: Registration status: Registration successful

On cas de problème de connection, la dernière ligne montrera "io error" ou "unautorized".

Ajouter son propre numéro dans le fichier blacklist.txt puis appeler le numéro VoIP, le log doit ressembler ceci ci-dessous et Lenny doit se mettre à parler :

Jun 21 15:20:43 orion callblocker.py[12671]: starting 621@192.168.1.1      
Jun 21 15:20:43 orion callblocker.py[12671]: Registration status: Registration in progress                                                            
Jun 21 15:20:43 orion callblocker.py[12671]: Registration status: Registration successful                                                             
Jun 21 15:20:53 orion callblocker.py[12671]: state changed : Incoming call
Jun 21 15:20:53 orion callblocker.py[12671]: Incoming call : __votre numéro !__
Jun 21 15:20:53 orion callblocker.py[12671]: telemarketer calling : __votre numéro !__

Au terme de l'appel, le mp3 résultant sera stocké dans le répertoire "out", pex /home/callblocker/itslenny/out

Have fun !