Outils pour utilisateurs

Outils du site


telephone-voip-gigaset

Différences

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

Lien vers cette vue comparative

telephone-voip-gigaset [2016/11/16 17:53] (Version actuelle)
Ligne 1: Ligne 1:
 +====== Mise à jour automatisée de l'​annuaire d'un téléphone Gigaset C530 IP ======
 +
 +Cette page explique comment mettre à jour l'​annuaire d'un téléphone IP Gigaset
 +C530 si l'on utilise un système d'​agendas/​annuaires synchronisé (protocoles
 +cardav/​caldav).
 +
 +On part du principe qu'on dispose d'une sauvegarde automatisée de nos annuaires
 +au format vcf. Dans le cas présenté, c'est un export de la base de donnée du
 +serveur Davical comme présenté [[../​sauvegardes#​sauvegardes_davical|ici]].
 +
 +==== Installer les dépendances ====
 +
 +Ce script utilise un émulateur de navigateur Web qui permet de passer les
 +requête d'un navigateur sans avoir d'​interface graphique. C'est une sorte de
 +"​simulateur"​ de navigateur web et ça se nomme ''​xvfb''​.
 +
 +Ensuite, on utilise un module python qui permet d'​automatiser des requêtes de
 +navigateur, de faire des recherche dans le code d'une page html pour trouver le
 +bon champ, pour le remplir, pour valider, etc… Ça se nomme ''​selenium''​
 +
 +Du coup, sous Debian et dérivés, il faut faire :
 +
 +<code bash>
 +sudo apt-get install python python-selenium firefoxdriver xvfb
 +</​code>​
 +
 +Pour selenium, il se peut que les chemins ne soient pas bons et il faudra
 +surement installer grace à l'​outil ''​pip''​ qui permet d'​installer des modules
 +pythons.
 +
 +<code bash>
 +sudo apt-get install python-pip
 +pip install python-selenium
 +</​code>​
 +
 +==== Générer un annuaire avec la "​bonne"​ syntaxe ====
 +
 +Ces modèles de téléphones n'​acceptent qu'un syntaxe bien stricte et surtout, il
 +y a des caractères comme des sauts de lignes assez exotiques. Il faut donc
 +coder ce fichier d'une manière à ce qu'il ressemble strictement au fichier
 +d'​export d'​annuaire qu'on ferait à partir du téléphone.
 +
 +C'est la fonction ''​repertoire''​ du script situé sur
 +[[../​sauvegardes#​sauvegardes_davical|cette page]] qui permet de faire cela. Le
 +voici de manière indépendante :
 +
 +<code bash>
 +## répertoire de sauvegarde des contacts dans le /home :
 +SAUV=$HOME/​sauvegardes-davical
 +
 +## fichier d'​annuaire d'​importation pour le téléphone IP :
 +GIGASET="​${SAUV}/​repertoire-gigaset.vcf"​
 +
 +rm $GIGASET
 +echo "​-->​ Création du répertoire pour le téléphone Gigaset"​
 +for input in $(ls ${SAUV}/​*.csv);​ do
 +IFS=,
 +  tail -n +2 "​$input"​ | while read nom cell home ; do
 +    echo -ne "​BEGIN:​VCARD\x0d\x0aVERSION:​2.1\x0d\x0aN:​${nom};​\x0d\x0a";​
 +    if [ ! -z ${home} ] ; then
 +      echo -ne "​TEL;​HOME:​$(echo ${home} | sed 's/ //​g'​)\x0d\x0a";​
 +    fi
 +    if [ ! -z ${cell} ] ; then
 +      echo -ne "​TEL;​CELL:​$(echo ${cell} | sed 's/ //​g'​)\x0d\x0a";​
 +    fi
 +    echo -ne "​END:​VCARD\x0d\x0a"​ ;
 +  done  >> $GIGASET ;
 +done
 +</​code>​
 +
 +
 +==== Le script ====
 +
 +Il faut renseigner les 3 variables suivantes :
 +
 +  - ''​weburl''​ (sans le http:%%//%% au début) est l'​adresse de l'​interface web du téléphone
 +  - ''​pinnumber''​ est le numéro à 4 chiffres pour s'​authentifier (mot de passe)
 +  - ''​vcfile''​ est le chemin vers le fichier d'​annuaire généré précédemment.
 +
 +
 +<code python>
 +#​!/​usr/​bin/​python
 +# coding: utf-8
 +#
 +
 +# Installer : python, python-selenium,​ chromedriver,​ xvfb
 +
 +import time
 +from selenium import webdriver
 +from selenium.webdriver.common.keys import Keys
 +from selenium.webdriver.support.ui import WebDriverWait
 +from selenium.webdriver.support import expected_conditions as EC
 +
 +
 +# On récupère les variables
 +weburl = "​A RENSEIGNER !!!"​
 +pinnumber = "​A RENSEIGNER !!!"
 +vcfile = "A RENSEIGNER !!!"​
 +
 +# On initie un navigateur
 +driver = webdriver.Firefox()
 +
 +# On va à l'​adresse de l'​interface du Gigaset et on s'​authentifie
 +driver.get("​http://"​ + weburl + "/"​)
 +password = driver.find_element_by_id("​password"​)
 +password.send_keys(pinnumber)
 +driver.find_element_by_class_name("​buttonLink100"​).click()
 +
 +# On va à la page de gestion des répertoires
 +driver.get("​http://"​ + weburl + "/​settings_phonebook_transfer.html"​);​
 +
 +# On supprime l'​ancien répertoire
 +driver.find_element_by_link_text("​Effacer"​).click();​
 +try:
 +    wait = WebDriverWait(driver,​ 20)
 +    element = wait.until(EC.alert_is_present())
 +    alert = driver.switch_to_alert();​
 +    alert.accept();​
 +    wait = WebDriverWait(driver,​ 20)
 +    element = wait.until(EC.alert_is_present())
 +    alert = driver.switch_to_alert();​
 +    alert.accept();​
 +except:
 +    print "no alert"
 +
 +# On renseigne le chemin vers le fichier vcf du nouveau répertoire
 +elem = driver.find_element_by_xpath("//​input[@type='​file'​]"​);​
 +elem.send_keys(vcfile);​
 +driver.find_element_by_link_text("​Transfert"​).click();​
 +
 +# On attend que ça mouline puis on valide le message et on se logout
 +try:
 +    wait = WebDriverWait(driver,​ 600)
 +    element = wait.until(EC.alert_is_present(),​
 +                                   '​Timed out waiting for PA creation ' +
 +                                   '​confirmation popup to appear.'​)
 +    alert = driver.switch_to_alert();​
 +    alert.accept();​
 +    driver.get("​http://"​ + weburl + "/​logout.html"​);​
 +except:
 +    print "no alert"
 +</​code>​
 +
 +
  
telephone-voip-gigaset.txt · Dernière modification: 2016/11/16 17:53 (modification externe)