Modifications entre les versions 8 et 9
Version 8 à la date du 2006-12-19 15:34:38
Taille: 3701
Éditeur: ThomasNoël
Commentaire:
Version 9 à la date du 2007-01-11 09:13:02
Taille: 7017
Éditeur: ThomasNoël
Commentaire:
Texte supprimé. Texte ajouté.
Ligne 5: Ligne 5:
= Principe et installation manuelle (pour 3 ou 4 postes) =
Ligne 7: Ligne 9:
 1. Installer un serveur HTTP (ou utiliser un serveur déjà existant, sachant qu'il faut éviter un serveur accessible publiquement car on y risque plus tard d'y placer les mots de passe des comptes IAX des utilisateurs). Une configuration type !VirtualHost sur un serveur déjà existant fonctionne parfaitement.  1. Installer un serveur HTTP (ou utiliser un serveur déjà existant). Une configuration type !VirtualHost sur un serveur déjà existant fonctionne parfaitement.
Ligne 16: Ligne 18:
 1. Créer le fichier de configuration `prenom.nom.txt` correspondant, selon le modèle attachment:modele-configuration-ipphone5.txt (ce fichier est auto-documenté)  1. Créer le fichier de configuration `prenom.nom.txt` correspondant, selon le modèle attachment:modele-configuration-ipphone5.txt (ce fichier est auto-documenté). Attention : n'y mettez ni le nom d'utilisateur ni le mot de passe IAX, ce fichier sera en effet téléchargeable par n'importe qui ayant accès au site web !
Ligne 24: Ligne 26:
 1. Indiquez le nom d'utilisateur et le mot de passe de connexion IAX (il ne seront pas envoyés par le fichier CFG)
Ligne 26: Ligne 29:
= Idées pour plus tard =
Ligne 28: Ligne 30:
On peut imaginer des petits scripts CGI capables de générer les fichiers `.set` et les fichier de configuration `.txt` à la volée, depuis un simple fichier associant chaque adresse MAC à un prenom.nom et un mot de passe. Plus précisément, ce qu'il faudrait programmer c'est :
 * renvoyer le fichier `00-00-00-00-00-00.set` via un rewriterule vers `set.cgi?mac=00-00-00-00-00-00`
 * set.cgi regardera le firmware le plus récent disponible dans le repertoire, et construira la ligne `BIN firmware.bin:NNNNN` (où NNNNN sera calculé à partir du nom du firmware)
 * set.cgi regardera dans une table à quel utilisateur est affecté le téléphone. Si les paramètres de configuration pour l'utilisateur ont changé depuis "la dernier fois" qu'ils ont été demandés, il enverra une ligne `CFG config.cgi?user=thomas.noel:NNN` où NNN sera incrémenté à chaque nouvelle version (éventuellement pour simplifier, la version de la conf pourrait être dans la table de correspondance mac<->user).
Ligne 33: Ligne 31:
Voilà mes idées en vrac à 11h du mat, et j'ai déjà faim. = Un logiciel coté serveur pour automatiser tout cela =
Ligne 35: Ligne 33:
Une proposition de solution suivant ces principes se trouve ici : http://trac.sn.auf.org/ipphone/browser/autoconfig/ NB : ceci est un '''prototype''', voir le TODO à la fin de ce document pour quelques améliorations possibles.

== Principe du système proposé ici ==

Il s'agit d'un script CGI qui sait générer les fichiers .set et .cfg en fonction du dernier micrologiciel et de la dernière configuration présents dans le répertoire. Dès que le téléphone contacte le serveur web et récupère son fichier .set (ou .cfg), le reste de la procédure est identique à ce qui est indiqué au début de cette page.

== Télécharger le logiciel ==

Il est pour l'instant disponible uniquement via Subversion. Si vous ne l'avez pas déjà fait, installez "subversion" sur votre poste de travail (ou même sur le serveur cible) avec "aptitude install subversion".

Puis téléchargez le répertoire avec :
 {{{
svn co http://trac.sn.auf.org/svn/ipphone/autoconfig
}}}

Ça vous créera un répertoire "autoconfig" contenant le script, entre autre. Faites alors l'installation en '''copiant''' les fichiers depuis ce répertoire. Si une nouvelle version du script est disponible, il vous suffira de revenir dans ce répertoire source et de taper "svn update" pour l'obtenir.

== Installation ==

 1. créer un répertoire où seront placés le script CGI et les fichiers micrologiciels et configuration (`/srv/www/voip-autoconfig` dans la suite de ce document)
 1. monter un serveur Web (éventuellement un VirtualHost) avec les ré-écritures suivantes :
 {{{
        RewriteEngine on
        RewriteRule ^/([0-9a-f-]{17}).(set|cfg) /autoconfig?$2=$1 [passthrough]
        ScriptAlias /autoconfig /srv/www/voip-autoconfig/autoconfig.cgi
}}}
 1. placer un micrologiciel dans le répertoire, avec un nom au format `ipphone5-VVV-aufNN.bin`, avec VVV le numéro de version du micrologiciel sur 3 chiffres et NN le numéro de sous-version spécifique AuF
  * faire un lien dessus avec le nom "micrologiciel" pour que ce soit celui utilisé par défaut
  * faire un lien dessus avec le nom "micrologiciel-xx-xx-xx-xx-xx-xx" si vous avez un firmware spécifique pour un téléphone particulier
 1. modifier le fichier "configuration-base" pour qu'il contiennent les données de configuration générales à tous les téléphones de votre implantation. '''Penser à modifier le numéro de série en cas de mise à jour (NUMERO_DE_SERIE_BASE:NNN)'''.
 5. Si besoin, écrire un fichier configuration-xx-xx-xx-xx-xx-xx pour chaque téléphone IP qui aura une configuration spécifique

== Déploiement d'un téléphone ==

 1. configurer le téléphone en mode "autoprovisioning" (type de mise à jour = MAC et adresse de mise à jour = http://nom.du.serveur au niveau de l'interface web de configuration de l'IP Phone)
 1. afin d'éviter d'avoir à envoyer des données confidentielles en clair via le script, indiquez le nom d'utilisateur et les différents mots de passe directement au niveau de l'interface web du téléphone (et non pas dans le fichier de configuration dédié au téléphone)
 1. rebooter le téléphone, il se met automatiquement à jour. C'est tout.

== Utilisation avancée et petites astuces ==

 * Utilisez de préférence des liens symboliques pour le micrologiciel, par exemple :
 {{{
            micrologiciel-stable -> ipphone5-156-auf4.bin
            micrologiciel-test -> ipphone5-156-auf5.bin
}}}
 * Pour proposer un micrologiciel spécifique à un téléphone :
 {{{
            micrologiciel-00-09-45-ba-00-01 -> micrologiciel-test
}}}

== En cas de soucis ==

 * Regardez les logs apache
 * Faites des wget pour voir ce qui se passe (`wget http://nom.du.serveur/xx-xx-xx-xx-xx-xx.set`)
 * Demandez de l'aide sur la liste technique de l'AUF ;)

== TODO ==

 * vérifier que l'IP qui fait les requêtes correspond bien à l'adresse MAC, ça serait le minimum de sécurité acceptable si on transmet des mots de passe dans les configurations (pb si le téléphone n'est pas sur le même réseau ethernet que le site web).
 * permettre des configurations "groupes" via des configuration-xx-xx où "xx-xx" est le début de l'adresse MAC (xx, xx-xx, xx-xx-xx, etc)
 * adapter pour les autres types de mise à jour (IP, '''username''', etc.). Surtout username, en fait (Jérôme y travaille).
 * packager en .deb

AutoProvisioning pourrait se traduire par "mise à jour automatique". Avec ce type de système, les téléphones sont capables de se mettre à jour automatiquement au démarrage, aussi bien au niveau logiciel (firmware) que configuration (login IAX, adresse du serveur, codec, dialplan, etc.)

Voici comment déployer des téléphones en masse afin qu'il se mettent à jour automatiquement.

Principe et installation manuelle (pour 3 ou 4 postes)

Coté serveur

  1. Installer un serveur HTTP (ou utiliser un serveur déjà existant). Une configuration type VirtualHost sur un serveur déjà existant fonctionne parfaitement.

  2. A la racine du serveur, copier le firmware, par exemple ipphone5-155-auf2.bin

  3. Pour chaque adresse MAC de téléphone, créer un fichier nommé ab-cd-ef-01-23-45.set (lettres en minuscules) selon le modèle suivant : {{{# fichier ab-cd-ef-01-23-45.set

BIN ipphone5-155-auf2.bin:15502 CFG prenom.nom.txt:1 END }}}

  • Attention : le nom du fichier soit être en minuscules. En revanche, dans le fichier il faut mettre les mots clés tels que 'BIN' ou 'END' en majuscules, tout en début de ligne et suivis d'un seul espace.

  1. Créer le fichier de configuration prenom.nom.txt correspondant, selon le modèle attachment:modele-configuration-ipphone5.txt (ce fichier est auto-documenté). Attention : n'y mettez ni le nom d'utilisateur ni le mot de passe IAX, ce fichier sera en effet téléchargeable par n'importe qui ayant accès au site web !

Note : les versions du firmware spécifiques à l'AUF gèrent le numéro de version sur 5 chiffres, et non pas 3 comme dans la [http://www.aredfox.com/PA1688/download/English/documents/products/AutoUpgradeGuideEng.pdf documentation du constructeur]. Cela permet d'indiquer 3 chiffres pour la version constructeur (1.55 à l'heure où je rédige) et 2 chiffres pour les modifications AUF (02 à l'heure ou je rédige encore)

Coté téléphone

  1. Pour chaque nouveau téléphone reçu, passer en mode DHCP (éventuellement en profiter pour mettre une adresse MAC du type xx:xx:xx:xx:nn:nn où nn:nn sera le numéro d'inventaire du téléphone, ou quelque chose comme ça, pour se simplifier la gestion ensuite)
  2. Indiquer 'mac' au niveau du 'type de mise à jour', et donner l'adresse du serveur avec http:// devant, par exemple http://voip.sn.auf (attention, apparement on ne peut pas indiquer de sous-répertoire).

  3. Indiquez le nom d'utilisateur et le mot de passe de connexion IAX (il ne seront pas envoyés par le fichier CFG)
  4. Rebooter le téléphone. C'est tout !

Un logiciel coté serveur pour automatiser tout cela

NB : ceci est un prototype, voir le TODO à la fin de ce document pour quelques améliorations possibles.

Principe du système proposé ici

Il s'agit d'un script CGI qui sait générer les fichiers .set et .cfg en fonction du dernier micrologiciel et de la dernière configuration présents dans le répertoire. Dès que le téléphone contacte le serveur web et récupère son fichier .set (ou .cfg), le reste de la procédure est identique à ce qui est indiqué au début de cette page.

Télécharger le logiciel

Il est pour l'instant disponible uniquement via Subversion. Si vous ne l'avez pas déjà fait, installez "subversion" sur votre poste de travail (ou même sur le serveur cible) avec "aptitude install subversion".

Puis téléchargez le répertoire avec :

  • svn co http://trac.sn.auf.org/svn/ipphone/autoconfig

Ça vous créera un répertoire "autoconfig" contenant le script, entre autre. Faites alors l'installation en copiant les fichiers depuis ce répertoire. Si une nouvelle version du script est disponible, il vous suffira de revenir dans ce répertoire source et de taper "svn update" pour l'obtenir.

Installation

  1. créer un répertoire où seront placés le script CGI et les fichiers micrologiciels et configuration (/srv/www/voip-autoconfig dans la suite de ce document)

  2. monter un serveur Web (éventuellement un VirtualHost) avec les ré-écritures suivantes :

            RewriteEngine on
            RewriteRule ^/([0-9a-f-]{17}).(set|cfg) /autoconfig?$2=$1 [passthrough]
            ScriptAlias /autoconfig /srv/www/voip-autoconfig/autoconfig.cgi
  3. placer un micrologiciel dans le répertoire, avec un nom au format ipphone5-VVV-aufNN.bin, avec VVV le numéro de version du micrologiciel sur 3 chiffres et NN le numéro de sous-version spécifique AuF

    • faire un lien dessus avec le nom "micrologiciel" pour que ce soit celui utilisé par défaut
    • faire un lien dessus avec le nom "micrologiciel-xx-xx-xx-xx-xx-xx" si vous avez un firmware spécifique pour un téléphone particulier
  4. modifier le fichier "configuration-base" pour qu'il contiennent les données de configuration générales à tous les téléphones de votre implantation. Penser à modifier le numéro de série en cas de mise à jour (NUMERO_DE_SERIE_BASE:NNN).

  5. Si besoin, écrire un fichier configuration-xx-xx-xx-xx-xx-xx pour chaque téléphone IP qui aura une configuration spécifique

Déploiement d'un téléphone

  1. configurer le téléphone en mode "autoprovisioning" (type de mise à jour = MAC et adresse de mise à jour = http://nom.du.serveur au niveau de l'interface web de configuration de l'IP Phone)

  2. afin d'éviter d'avoir à envoyer des données confidentielles en clair via le script, indiquez le nom d'utilisateur et les différents mots de passe directement au niveau de l'interface web du téléphone (et non pas dans le fichier de configuration dédié au téléphone)
  3. rebooter le téléphone, il se met automatiquement à jour. C'est tout.

Utilisation avancée et petites astuces

  • Utilisez de préférence des liens symboliques pour le micrologiciel, par exemple :
                micrologiciel-stable -> ipphone5-156-auf4.bin
                micrologiciel-test -> ipphone5-156-auf5.bin
  • Pour proposer un micrologiciel spécifique à un téléphone :
                micrologiciel-00-09-45-ba-00-01 -> micrologiciel-test

En cas de soucis

  • Regardez les logs apache
  • Faites des wget pour voir ce qui se passe (wget http://nom.du.serveur/xx-xx-xx-xx-xx-xx.set)

  • Demandez de l'aide sur la liste technique de l'AUF ;)

TODO

  • vérifier que l'IP qui fait les requêtes correspond bien à l'adresse MAC, ça serait le minimum de sécurité acceptable si on transmet des mots de passe dans les configurations (pb si le téléphone n'est pas sur le même réseau ethernet que le site web).
  • permettre des configurations "groupes" via des configuration-xx-xx où "xx-xx" est le début de l'adresse MAC (xx, xx-xx, xx-xx-xx, etc)
  • adapter pour les autres types de mise à jour (IP, username, etc.). Surtout username, en fait (Jérôme y travaille).

  • packager en .deb


["CatégorieVoIP"]

VoIP/ClientMatériel/AutoProvisioning (dernière édition le 2008-03-05 10:06:06 par ThomasNoël)