Generazione automatica dei file di configurazione di Asterisk
December 26, 2009 — 20:24

Author: f0ff0 | Category: | Comments: 0

UNDER REVISION .. questo documento è molto vecchio. Verrà aggiornato in breve.

In un centralino telefonico di piccole/medie dimensioni, ci si puo’ imbatte nel desiderio di poter centralizzare gli utenti in un unico file. L’autoprovisioning dei telefoni, la rubrica telefonica, i file di asterisk, condividono alcuni dati. Editare a mano ogni singolo file diventa spesso un lavoro ripetitivo.

Nel caso pratico di questo piccola guida, si riporta l’esempio di un server asterisk con utenti sip e telefoni Polycom. Si analizzera’ l’esigenza di poter agire sui seguenti dati di configurazione:

  • ext: estensione telefonica.
  • person: fullname dell’utente.
  • email: email dell’utente necessaria per il voicemail.
  • password: asterisk account password.
  • group: gruppo asterisk.
  • macaddr: mac address del telefono voip associato all’estensione ext

I dati verranno scritti in quattro differenti files di configurazione quali:

  • users.conf: file di configurazione degli utenti asterisk.
  • 000000000000-directory.xml: rubrica telefonica condivisa compatibile con tutti i telefoni VoIP Polycom SoundPoint e SoundStation.
  • XXXXXXXXXXXX.cfg: autoprovisioning file.
  • phoneEXT.cfg: file di configurazione del telefono VoIP Polycom SoundPoint e SoundStation.

Per agevolare il processo di configurazione del centralino si addotta come file unico di configurazione un file di testo .csv e si realizzara’ una serie di scripts in python per la generazione dei files di configurazione.

Esempio del file .csv

 

ext,person,email,password,group,type,macaddr
600,Reception,reception@example.com,1234,1,IP650,00112233445566
601,Mario Rossi,mrossi@example.com,4567,1,IP650,00112233AABBCC

La prima linea e’ utilizzata dal modulo csv di python per definire i nomi delle variabili che si utilizzeranno negli scripts.

# This script generate users.conf asterisk file
import sys
import csv
from string import Template

# Configuration files
asterisk_users_cfg = open("/etc/asterisk/users.conf", "w")
source = open("/etc/asterisk/users.lst", "r")

# User Template
user = Template('''
[$ext]
fullname = $person
cid_number = $ext
email = $email
secret = $password
host = $host
registersip = yes
callgroup = $group
pickupgroup = $group
hasvoicemail = yes
hasagent = yes
vmsecret = $password
hassip = yes
hasiax = no
hash323 = no
hasmanager = no
callwaiting = yes
context = aedgency-main
''')

print "\nGenerating Asterisk users.conf file ..."
data = csv.DictReader(source)
asterisk_users_cfg.write(general)
for field in data:
asterisk_users_cfg.write(user.substitute(field))

print “… done!\n… Run asterisk -rx ‘sip reload’ manually”

 


Il template “user” racchiude lo schema dell’entrate sip che lo script scrivera’ nel file users.conf.

… continua

Twitter 0 Facebook 0 Google+ 0