OpenWRT e' senza dubbio un bel giocattolino: su un 'semplice' linksys WRT54GL abbiamo la possibilita' di installare parecchi software utili come server Web, server DNS e anche applicazioni piu' corpose come il PBX asterisk.

Prendiamo in esame una semplice configurazione con 2 interni e la possibilita' di effettuare chiamate in uscita tramite VoipStunt.

Una volta installato e configurato openwrt per le proprie esigenze (lan, wifi, provider adsl.....) questi sono i primi passi da fare:
1) entrare tramite interfaccia web alla pagina di configurazione di openwrt (indirizzo di default http://192.168.1.1)
2) andare nel menu Sistema-programmi installati
3) aggiornare per prima cosa la lista dei programmi tramite il link "aggiorna la lista dei pacchetti"
3) installare asterisk

A questo punto accedere al router tramite SSH e configurare asterisk.

1) entrare nella cartella di asterisk cd /etc/asterisk
2) editare il file sip.conf (usare vi sip.conf; una volta terminato usare !wq per salvare e uscire)
[general]
context=default
port=5060
bindaddr=0.0.0.0
srvlookup=yes

[100]
context=telefono1
type=friend
host=dynamic
username=100

[101]
context=telefono2
type=friend
host=dynamic
username=101

[voipstunt]
type=friend
host=connectionserver.voipstunt.com
disallow=all
allow=ulaw
allow=alaw
allow=g729
username=userid
fromuser=userid
secret=password
qualify=1000
canreinvite=no

3) editare il file extensions.conf (come sopra)
[general]
static=yes
writeprotect=no

[globals]
CONSOLE=Console/dsp
IAXINFO=guest
TRUNK=Zap/g2
TRUNKMSD=1

[iaxtel700]
exten => _91700XXXXXXX,1,Dial(IAX2/${IAXINFO}@iaxtel.com/${EXTEN:1}@iaxtel)

[iaxprovider]


[pstn]
exten => _01.,1,Dial(CAPI/contr1/b${EXTEN:2})
exten => _02.,1,Dial(TAPI/g1/${EXTEN:2})

[trunkint]
exten => _9011.,1,Dial(${TRUNK}/${EXTEN:${TRUNKMSD}})
exten => _9011.,2,Congestion

[trunkld]
exten => _91NXXNXXXXXX,1,Dial(${TRUNK}/${EXTEN:${TRUNKMSD}})
exten => _91NXXNXXXXXX,2,Congestion

[trunklocal]
exten => _9NXXXXXX,1,Dial(${TRUNK}/${EXTEN:${TRUNKMSD}})
exten => _9NXXXXXX,2,Congestion

[trunktollfree]
exten => _91800NXXXXXX,1,Dial(${TRUNK}/${EXTEN:${TRUNKMSD}})
exten => _91800NXXXXXX,2,Congestion
exten => _91888NXXXXXX,1,Dial(${TRUNK}/${EXTEN:${TRUNKMSD}})
exten => _91888NXXXXXX,2,Congestion
exten => _91877NXXXXXX,1,Dial(${TRUNK}/${EXTEN:${TRUNKMSD}})
exten => _91877NXXXXXX,2,Congestion
exten => _91866NXXXXXX,1,Dial(${TRUNK}/${EXTEN:${TRUNKMSD}})
exten => _91866NXXXXXX,2,Congestion

[international]
ignorepat => 9
include => longdistance
include => trunkint

[longdistance]
ignorepat => 9
include => local
include => trunkld

[local]
ignorepat => 9
include => parkedcalls
include => trunklocal
include => iaxtel700
include => trunktollfree
include => iaxprovider

[macro-stdexten];
exten => s,1,Dial(${ARG2},20)
exten => s,2,Goto(s-${DIALSTATUS},1)
exten => s-NOANSWER,1,Voicemail(u${ARG1})
exten => s-NOANSWER,2,Goto(default,s,1)
exten => s-BUSY,1,Voicemail(b${ARG1})
exten => s-BUSY,2,Goto(default,s,1)
exten => _s-.,1,Goto(s-NOANSWER,1)
exten => a,1,VoicemailMain(${ARG1})

[demo]
exten => s,1,Wait,1
exten => s,2,Answer
exten => s,3,DigitTimeout,5
exten => s,4,ResponseTimeout,10
exten => s,5,BackGround(demo-congrats)
exten => s,6,BackGround(demo-instruct)
exten => 2,1,BackGround(demo-moreinfo)
exten => 2,2,Goto(s,6)
exten => 3,1,SetLanguage(fr)
exten => 3,2,Goto(s,5)
exten => 1000,1,Goto(default,s,1)
exten => 1234,1,Playback(transfer,skip)
exten => 1234,2,Macro(stdexten,1234,${CONSOLE})
exten => 1235,1,Voicemail(u1234)
exten => 1236,1,Dial(Console/dsp)
exten => 1236,2,Voicemail(u1234)
include => internal
exten => #,1,Playback(demo-thanks)
exten => #,2,Hangup
exten => t,1,Goto(#,1)
exten => i,1,Playback(invalid)
exten => 500,1,Playback(demo-abouttotry)
exten => 500,2,Dial(IAX2/guest@misery.digium.com/s@default)
exten => 500,3,Playback(demo-nogo)
exten => 500,4,Goto(s,6)
exten => 600,1,Playback(demo-echotest)
exten => 600,2,Echo
exten => 600,3,Playback(demo-echodone)
exten => 600,4,Goto(s,6)
exten => 8500,1,VoicemailMain
exten => 8500,2,Goto(s,6)

[internal]
exten => 3000,1,Dial(SIP/3000,30,Ttm)
exten => 3000,2,Playback(invalid)
exten => 3000,3,Hangup
exten => 3000,102,Voicemail(u3000)
exten => 3000,103,Hangup
exten => 3001,1,Dial(SIP/3001,30,Ttm)
exten => 3001,2,Playback(invalid)
exten => 3001,3,Hangup
exten => 3001,102,Voicemail(u3001)
exten => 3001,103,Hangup
exten => 3002,1,Dial(IAX2/3002,30,Ttm)
exten => 3002,2,Playback(invalid)
exten => 3002,3,Hangup
exten => 3002,102,Voicemail(u3002)
exten => 3002,103,Hangup
exten => 3003,1,Dial(IAX2/3003,30,Ttm)
exten => 3003,2,Playback(invalid)
exten => 3003,3,Hangup
exten => 3003,102,Voicemail(u3003)
exten => 3003,103,Hangup

[default]
include => demo
include => parkedcalls
include => pstn
include => internal


exten => 99990,1,Answer
exten => 99990,2,AGI(agi-test.agi)
exten => 99990,3,Hangup
exten => 99991,1,Answer
exten => 99991,2,EAGI(eagi-test)
exten => 99991,3,Hangup
exten => 99992,1,Answer
exten => 99992,2,Wait(1)
exten => 99992,3,SayUnixTime()
exten => 99992,4,Hangup
exten => 99999,1,Answer
exten => 99999,2,Wait(1)
exten => 99999,3,MusicOnHold

[incoming]
exten => s,1,Dial(SIP/100,30,tr)

[telefono1]
include => demo
include => outcoming

[telefono2]
include => demo
include => outcoming

[outcoming]
exten => _X.,1,Dial(SIP/${EXTEN:0}@voipstunt,30,tr)

4) editare il file asterisk nella cartella /etc/default modificare il parametro ENABLE_ASTERISK="no" in ENABLE_ASTERISK="yes" per far partire asterisk in automatico all'avvio del router.

A questo punto e' possibile configurare 2 softphone/telefoni VoIP, assegnando gli interni 100 e 101: i due telefoni possono dialogare ed effettuare chiamate esterne appoggiandosi su VoipStunt.

Se poi avete a disposizione un numero geografico registrato con servizi come Skypho , seguendo queste istruzioni sara' possibile configurare il PBX per accettare telefonate in ingresso e inoltrarle agli interni precedentemente configurati.