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 Order Allow,Deny Allow from all }}} * créer le script `/srv/python/ST2030-annuaire.py` : {{{#!python #!/usr/bin/env python # -*- coding: utf-8 -*- """ Annuaire téléphonique dynamique pour les téléphones IP Thomson ST2030. Depends: libapache2-mod-wsgi auf-refer Attention : le code n'est pas encore “thread-safe”... """ import aufrefer phonebook_document = u'\n%s\n' phonebook_entry = u'%(name)s%(phone)s' def search(pattern): phonebook_entries = [] for user in aufrefer.get('annuaire.json'): if user['tel_ip'] and pattern in user['adel']: name = user['adel'].split('@')[0] phone = user['tel_ip'].replace(' ','') entry = phonebook_entry % {'name': name, 'phone': phone} phonebook_entries.append(entry) return phonebook_document % '\n'.join(phonebook_entries[0:32]) def application(environ, start_response): query = environ.get('QUERY_STRING').lower() params = dict([x.split('=') for x in query.split('&')]) if not params.get('mac') or not params.get('search'): headers = [('Content-Type', 'text/plain; charset=utf-8'), ] start_response('401 Authorization Required', headers) return ['Authorization Required'] data = search(params.get('search')).encode('utf-8') mime_type = 'text/xml; charset=utf-8' length = str(len(data)) headers = [('Content-Type', mime_type), ('Content-Length', length), ] start_response('200 OK', headers) return [data] if __name__ == '__main__': # this runs when script is started directly from commandline try: # create a simple WSGI server and run the application from wsgiref import simple_server print "Running test application - point your browser at http://localhost:8000/ ..." httpd = simple_server.WSGIServer(('', 8000), simple_server.WSGIRequestHandler) httpd.set_app(application) httpd.serve_forever() except ImportError: # wsgiref not installed, just output html to stdout for content in application({}, lambda status, headers: None): 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 }}} ----