Taille: 3336
Commentaire: + auto-provisionning
|
← Version 4 à la date du 2012-01-10 16:36:46 ⇥
Taille: 3363
Commentaire: + support WSGI
|
Texte supprimé. | Texte ajouté. |
Ligne 3: | Ligne 3: |
* installer le paquet `auf-refer` dans un serveur web accessible depuis le réseau interne | * installer les paquets `libapache2-mod-wsgi` et `auf-refer` dans un serveur web accessible depuis le réseau interne |
Ligne 20: | Ligne 20: |
Depends: auf-refer libapache2-mod-wsgi | Depends: libapache2-mod-wsgi auf-refer |
Cette page présente une solution pour mettre en place un accès à l'annuaire téléphonique de l'AuF depuis le téléphone IP Thomson ST2030.
installer les paquets libapache2-mod-wsgi et auf-refer dans un serveur web accessible depuis le réseau interne
activer la synchronisation des données de l'annuaire :
sudo auf-refer -a annuaire.json
configurer le chemin d'accès à l'annuaire dans Apache :
WSGIScriptAlias /voip/annuaire /srv/python/ST2030-annuaire.py <Location /voip/annuaire> Order Allow,Deny Allow from all </Location>
créer le script /srv/python/ST2030-annuaire.py :
1 #!/usr/bin/env python 2 # -*- coding: utf-8 -*- 3 """ 4 Annuaire téléphonique dynamique pour les téléphones IP Thomson ST2030. 5 6 Depends: libapache2-mod-wsgi auf-refer 7 8 Attention : le code n'est pas encore “thread-safe”... 9 """ 10 import aufrefer 11 12 phonebook_document = u'<ThomsonPhoneMenu>\n%s\n</ThomsonPhoneMenu>' 13 phonebook_entry = u'<DirectoryEntry><Name>%(name)s</Name><Telephone>%(phone)s</Telephone></DirectoryEntry>' 14 15 def search(pattern): 16 phonebook_entries = [] 17 for user in aufrefer.get('annuaire.json'): 18 if user['tel_ip'] and pattern in user['adel']: 19 name = user['adel'].split('@')[0] 20 phone = user['tel_ip'].replace(' ','') 21 entry = phonebook_entry % {'name': name, 'phone': phone} 22 phonebook_entries.append(entry) 23 return phonebook_document % '\n'.join(phonebook_entries[0:32]) 24 25 def application(environ, start_response): 26 query = environ.get('QUERY_STRING').lower() 27 params = dict([x.split('=') for x in query.split('&')]) 28 if not params.get('mac') or not params.get('search'): 29 headers = [('Content-Type', 'text/plain; charset=utf-8'), ] 30 start_response('401 Authorization Required', headers) 31 return ['Authorization Required'] 32 data = search(params.get('search')).encode('utf-8') 33 mime_type = 'text/xml; charset=utf-8' 34 length = str(len(data)) 35 headers = [('Content-Type', mime_type), ('Content-Length', length), ] 36 start_response('200 OK', headers) 37 return [data] 38 39 if __name__ == '__main__': 40 # this runs when script is started directly from commandline 41 try: 42 # create a simple WSGI server and run the application 43 from wsgiref import simple_server 44 print "Running test application - point your browser at http://localhost:8000/ ..." 45 httpd = simple_server.WSGIServer(('', 8000), simple_server.WSGIRequestHandler) 46 httpd.set_app(application) 47 httpd.serve_forever() 48 except ImportError: 49 # wsgiref not installed, just output html to stdout 50 for content in application({}, lambda status, headers: None): 51 print content
- configurer l'annuaire distant dans le téléphone :
aller dans la section Advanced > Phone Lists > Remote Phone Book
URL : http://intranet.vn.auf/voip/annuaire?mac=#MAC&search=#SEARCH
- Name : Annuaire AuF
on peut aussi « pousser » cette configuration en auto-provisionning en ajoutant les lignes suivantes dans la section [sys] :
Phonebook1_url=http://intranet.vn.auf/voip/annuaire?mac=#MAC&search=#SEARCH Phonebook1_name=Annuaire AuF