Passe sip.conf, voicemail.conf, manager.conf, extensions.conf avec le module python

This commit is contained in:
Gabriel Detraz 2015-09-29 19:21:51 +02:00
parent d51f7d0140
commit 9f9b6aef36
7 changed files with 403 additions and 0 deletions

View file

@ -3,4 +3,8 @@
<Package name="asterisk"/> <Package name="asterisk"/>
<Path name="/etc/init.d/sms_queuing" /> <Path name="/etc/init.d/sms_queuing" />
<Service name="sms_queuing" /> <Service name="sms_queuing" />
<Python name="/etc/asterisk/sip.conf"/>
<Python name="/etc/asterisk/manager.conf"/>
<Path name="/etc/asterisk/voicemail.conf"/>
<Path name="/etc/asterisk/extensions.conf"/>
</Bundle> </Bundle>

View file

@ -0,0 +1,229 @@
[general]
static=yes
writeprotect=no
autofallthrough=yes
clearglobalvars=no
priorityjumping=no
[globals]
CONSOLE=Console/dsp
IAXINFO=guest
TRUNK=Zap/g2
TRUNKMSD=1
[voicemail]
exten => _1XXXX,1,VoiceMail(${EXTEN}@666)
exten => _1XXXX,n,GotoIf($["${VMSTATUS}" = "FAILED"]?inconnu:hangup)
exten => _1XXXX,n(inconnu),Goto(voicemail,i,1)
exten => _1XXXX,n(hangup),Hangup()
include => numero-invalide
[crans-sms]
;#include "/usr/scripts/var/sip/sip_accounts_alias"
exten => 7806,1,Goto(imprimante-sms,${CUT(CUT(CUT(MESSAGE(from),<,2),@,1),:,2)},1)
exten => _[a-zA-Z0-9].,1,AGI(alias)
exten => _[a-zA-Z0-9].,n,Set(ACTUALFROM=${CUT(CUT(MESSAGE(from),<,2),@,1)})
exten => _[a-zA-Z0-9].,n,Set(DOMAINFROM=${CUT(CUT(MESSAGE(from),@,2),>,1)})
exten => _[a-zA-Z0-9].,n,Set(nom=${SHELL(/usr/scripts/sip/scripts/num_to_callerid ${CUT(ACTUALFROM,:,2)})})
exten => _[a-zA-Z0-9].,n,MessageSend(sip:${EXTEN},"${nom}" <${ACTUALFROM}@${DOMAINFROM}>)
exten => _[a-zA-Z0-9].,n,NoOp(Send status is ${MESSAGE_SEND_STATUS})
exten => _[a-zA-Z0-9].,n,GotoIf($["${MESSAGE_SEND_STATUS}" != "SUCCESS"]?sendfailedmsg)
exten => _[a-zA-Z0-9].,n,Hangup()
exten => _[a-zA-Z0-9].,n(sendfailedmsg),GotoIf($["${SHELL(/usr/scripts/sip/scripts/user_exist.py ${EXTEN} )}" = "TRUE"]?enqueue)
exten => _[a-zA-Z0-9].,n,Set(MESSAGE(body)="[${STRFTIME(${EPOCH},,%d/%m/%Y-%H:%M:%S)}] Your message to ${EXTEN} has failed. Retry later.")
exten => _[a-zA-Z0-9].,n,MessageSend(${ACTUALFROM},ServiceCenter)
exten => _[a-zA-Z0-9].,n,Hangup()
exten => _[a-zA-Z0-9].,n(enqueue),AGI(sms_delay,"\"${nom}\"" <${ACTUALFROM}@${DOMAINFROM}>,sip:${EXTEN},${BASE64_ENCODE(${MESSAGE(body)})},${EXTEN})
exten => _[a-zA-Z0-9].,n,Hangup()
[horloge]
exten => 1234,1,Ringing()
exten => 1234,n,Wait(3)
exten => 1234,n,AGI(alias)
exten => 1234,n,AGI(agi://127.0.0.1:1234)
exten => 1234,n,Set(COUNTER=0);
exten => 1234,n,Answer()
exten => 1234,n(time),Wait(1)
exten => 1234,n,SayUnixTime(,Europe/Paris,AdBY kM)
exten => 1234,n,Set(COUNTER=$[${COUNTER} + 1]);
exten => 1234,n,Wait(1)
exten => 1234,n,GotoIf($[${COUNTER} < 2]?time)
exten => 1234,n,Playback(vm-goodbye)
exten => 1234,n,Hangup()
include => hangup
[conference]
exten => _9XXXX,1,Ringing
exten => _9XXXX,n,Wait(3)
exten => _9XXXX,n,Answer()
exten => _9XXXX,n,ConfBridge(${EXTEN})
exten => _9XXXX,n,Hangup()
include => hangup
[crans-sip]
exten => _[a-zA-Z0-9+].,1,Gotoif($["${SIPDOMAIN}" = "crans.org"]?internal)
exten => _[a-zA-Z0-9+].,n,Gotoif($["${SIPDOMAIN}" = "sip.crans.org"]?internal)
exten => _[a-zA-Z0-9+].,n,Gotoif($["${SIPDOMAIN}" = ""]?internal)
exten => _[a-zA-Z0-9+].,n(external),AGI(history,add,${UNIQUEID},${CALLERID(num)},${EXTEN}@${SIPDOMAIN})
exten => _[a-zA-Z0-9+].,n,Goto(crans-sip-autre,${EXTEN},1)
exten => _[a-zA-Z0-9+].,n(internal),AGI(history,add,${UNIQUEID},${CALLERID(num)},${EXTEN})
exten => _[a-zA-Z0-9+].,n,Goto(crans-sip-dispatch,${EXTEN},1)
[crans-from-external]
exten => _[a-zA-Z0-9].,1,Noop(external call: ${CALLERID(num)}@${CDR(channel):4:-9})
exten => _[a-zA-Z0-9].,n,Set(__SIPFROMDOMAIN=${CDR(channel):4:-9})
exten => _[a-zA-Z0-9].,n,AGI(history,add,${UNIQUEID},${CALLERID(num)}@${CDR(channel):4:-9},${EXTEN})
exten => _[a-zA-Z0-9].,n,Noop(Ip: ${CHANNEL(recvip)})
exten => _[a-zA-Z0-9].,n,Goto(crans-sip-account,${EXTEN},1)
[crans-sip-dispatch]
exten => 01189998819991197253,1,Goto(crans-sip-internal-special,${EXTEN},1) ; petit hack pour ne pas envoyer le numéro dans crans-sip-dial
exten => _0ZXXXXXXXX!,1,Goto(crans-sip-dial,+33${EXTEN:1},1) ; on remplace 0[1-9] par +33[1-9]
exten => _00!,1,Goto(crans-sip-dial,+${EXTEN:2},1) ; on remplace 00 par +
exten => _+!,1,Goto(crans-sip-dial,${EXTEN},1)
exten => _[a-zA-Z0-9].,1,Goto(crans-sip-internal,${EXTEN},1)
[test-playback]
exten => 3333,1,Ringing
exten => 3333,n,Wait(2)
exten => 3333,n,Answer
exten => 3333,n,Playback(higurashi)
exten => 3333,n,Hangup()
include => hangup
[messagerie]
exten => 666,1,Ringing
exten => 666,n,Wait(2)
exten => 666,n,VoiceMailMain(s${CALLERID(num)}@666)
exten => 666,n,Hangup()
include => hangup
[crans-sip-autre]
;exten => _[a-zA-Z0-9].,1,AGI(billing)
exten => _[a-zA-Z0-9].,1,Dial(SIP/${EXTEN}@${SIPDOMAIN},120,tr)
exten => _[a-zA-Z0-9].,n,Noop(Status: ${DIALSTATUS})
exten => _[a-zA-Z0-9].,n,Hangup()
include => hangup
[voice-recorder]
exten => 7777,1,Ringing
exten => 7777,n,Wait(2)
exten => 7777,n,Playback(parlez apres le bip sonore)
exten => 7777,n,record(mytest.alaw,5,30) ; record audio and video to a file "mytest"
exten => 7777,n,playback(beep)
exten => 7777,n,playback(mytest) ; play the recorded file
exten => 7777,n,hangup()
include => hangup
[crans-sip-internal-special]
exten => 01189998819991197253,1,Goto(multidial,nounou,1)
exten => 2024561111,1,Goto(multidial,bureau,1)
exten => 00911,1,Goto(multidial,cableur,1)
exten => 911,1,Goto(multidial,cableur,1)
exten => 119,1,Goto(multidial,imprimeur,1)
exten => 3333,1,Goto(test-playback,${EXTEN},1)
exten => 666,1,Goto(messagerie,${EXTEN},1)
exten => 1234,1,Goto(horloge,${EXTEN},1)
exten => 7777,1,Goto(voice-recorder,${EXTEN},1)
exten => 7806,1,Goto(imprimante,${EXTEN},1)
exten => _9XXXX,1,Goto(conference,${EXTEN},1)
include => numero-invalide
[crans-sip-account]
exten => _1XXXX,1,Ringing
exten => _1XXXX,n,Wait(1)
exten => _1XXXX,n,Dial(SIP/${EXTEN},30)
exten => _1XXXX,n,Goto(voicemail,${EXTEN},1)
include => numero-invalide
[crans-sip-internal]
;#include "/usr/scripts/var/sip/sip_accounts_alias"
exten => _[a-zA-Z][a-zA-Z0-9].,1,AGI(alias)
exten => _1XXXX,1,Goto(crans-sip-account,${EXTEN},1)
include => crans-sip-internal-special
[imprimante-sms]
exten => _1XXXX,1,Set(code=${SHELL(/usr/scripts/sip/scripts/code_impression.py ${EXTEN})})
exten => _1XXXX,n,Set(MESSAGE(to)=sip:${EXTEN}@crans.org)
exten => _1XXXX,n,Set(MESSAGE(from)="Impression" <sip:7806@crans.org>)
exten => _1XXXX,n,GotoIf($[ "${code}" = "NONE" ]?nocode:code)
exten => _1XXXX,n(nocode),Set(MESSAGE(body)=vous n'avez pas de code en cours de validité)
exten => _1XXXX,n,Goto(send)
exten => _1XXXX,n(code),Set(MESSAGE(body)=code : ${code}#)
exten => _1XXXX,n(send),MessageSend(sip:${EXTEN},${MESSAGE(from)})
exten => _1XXXX,n,Hangup()
[imprimante]
exten => 7806,1,Ringing
exten => 7806,n,Wait(3)
exten => 7806,n,Answer
exten => 7806,n,Set(code=${SHELL(/usr/scripts/sip/scripts/code_impression.py ${CALLERID(num)})})
exten => 7806,n,GotoIf($[ "${code}" = "NONE" ]?hangup)
exten => 7806,n,Set(MESSAGE(to)=sip:${CALLERID(num)@crans.org})
exten => 7806,n,Set(MESSAGE(from)="Impression" <sip:7806@crans.org>)
exten => 7806,n,Set(MESSAGE(body)=code : ${code}#)
exten => 7806,n,MessageSend(sip:${CALLERID(num)},${MESSAGE(from)})
exten => 7806,n,Playback(impression-1)
exten => 7806,n,SayDigits(${code}#)
exten => 7806,n,Wait(3)
exten => 7806,n,SayDigits(${code}#)
exten => 7806,n,Playback(impression-2)
exten => 7806,n,Hangup(16)
exten => 7806,n(hangup),Playback(impression-3)
exten => 7806,n,Hangup(16)
include => hangup
[multidial]
;#include "/usr/scripts/var/sip/sip_multidial"
exten => _[a-zA-Z0-9].,1,Set(nums=${SHELL(/usr/scripts/sip/scripts/right_to_nums ${EXTEN})})
exten => _[a-zA-Z0-9].,n,GotoIf($["${nums}" != "NONE"]?ring:nonvalide)
exten => _[a-zA-Z0-9].,n(ring),Ringing
exten => _[a-zA-Z0-9].,n,Wait(4)
exten => _[a-zA-Z0-9].,n,Dial(${nums},30)
exten => _[a-zA-Z0-9].,n,Wait(3)
exten => _[a-zA-Z0-9].,n,VoiceMail(${EXTEN}@666)
exten => _[a-zA-Z0-9].,n,Hangup()
exten => _[a-zA-Z0-9].,n(nonvalide),Goto(numero-invalide,i,1)
include => hangup
[crans-sip-dial]
; On autorise que les numéro normaux et les 08 gratuits
exten => _+33[123459]XXXXXXXX,1,Set(policie=${SHELL(/usr/scripts/sip/agi/history quota ${EXTEN})})
exten => _+33[123459]XXXXXXXX,n,GotoIf($[ "${policie}" != "ALLOWED" ]?hangup)
exten => _+33[123459]XXXXXXXX,n,AGI(billing)
;exten => _+33[123459]XXXXXXXX,n,Dial(SIP/${EXTEN}@forfait-ovh,60,L(1800000:60000:20000))
exten => _+33[123459]XXXXXXXX,n(hangup),Hangup(16)
exten => _+3380[0459]XXXXXX,1,Set(policie=${SHELL(/usr/scripts/sip/agi/history quota ${EXTEN})})
exten => _+3380[0459]XXXXXX,n,GotoIf($[ "${policie}" != "ALLOWED" ]?hangup)
exten => _+3380[0459]XXXXXX,n,Dial(SIP/${EXTEN}@forfait-ovh,60,L(1800000:60000:20000))
exten => _+3380[0459]XXXXXX,n(hangup),Hangup(16)
include => numero-invalide
[ovh-sip]
exten => s,1,Ringing
exten => s,n,Wait(2)
exten => s,n,Answer
exten => s,n,Read(digit,composez le numero de votre correspondant suivit de la touche diese,25,,,60)
exten => s,n,AGI(history,add,${UNIQUEID},${CALLERID(num)},${digit})
exten => s,n,Goto(crans-sip-internal,${digit},1)
exten => h,1,AGI(history,update,${UNIQUEID},${CDR(billsec)})
exten => h,n,Hangup()
[numero-invalide]
exten => i,1,AGI(history,delete,${UNIQUEID})
exten => i,n,Noop(Ip: ${CHANNEL(recvip)})
exten => i,n,Playback(numero non attribue)
exten => i,n,Wait(2)
exten => i,n,Playback(numero non attribue)
exten => h,n,Hangup(16)
include => hangup
[hangup]
exten => h,1,AGI(history,update,${UNIQUEID},${CDR(billsec)})
exten => h,n,Hangup()

View file

@ -0,0 +1,3 @@
<FileInfo>
<Info owner='asterisk' group='asterisk' mode='0644'/>
</FileInfo>

View file

@ -0,0 +1,3 @@
<FileInfo>
<Info owner='asterisk' group='asterisk' mode='0644'/>
</FileInfo>

View file

@ -0,0 +1,31 @@
[general]
format = wav49|gsm|wav
serveremail = sip
attach = yes
mailcmd=/usr/sbin/sendmail -t
skipms = 3000
maxsilence = 10
silencethreshold = 128
maxlogins = 3
maxsecs = 300
minsecs = 1
externpass = /usr/scripts/sip/scripts/update_pin
forcename=yes
forcegreeting=yes
charset = UTF-8
fromstring = "Sip Cr@ns"
emaildateformat = %d/%m/%Y à %H:%M:%S
emailsubject = [Sip Cr@ns] Nouveau message vocal
emailbody = Bonjour ${VM_NAME},\r\n\r\nLe numéro ${VM_CALLERID} a tenté\r\nde vous joindre sans succès le ${VM_DATE}.\nCette personne vous a laissé un message de ${VM_DUR} seconde(s).\r\nVous pouvez le consulter en appelant votre boite vocale. \r\n\r\nBonne journée !\r\n\r\n-- \r\nVoicemail, service effectué par Asterisk\n
pagerfromstring = [Sip Cr@ns]
pagersubject = Nouveau message vocal
pagerbody = Nouveau message de ${VM_DUR} seconde(s), dans la boite ${VM_MAILBOX}, laissé le ${VM_DATE} par ${VM_CALLERID}.
[666]
nounou => 098765432,les Nounous du Crans,roots@crans.org,,attach=yes|delete=yes
bureau => 098765432,le CA du Crans,bureau@crans.org,,attach=yes|delete=yes
imprimeur => 098765432,les Imprimeurs du Crans,impression@crans.org,,attach=yes|delete=yes
cableur => 098765432,les Câbleurs du Crans,respbats@lists.crans.org,,attach=yes|delete=yes
#include "/usr/scripts/var/sip/sip_accounts_voicemail"

View file

@ -0,0 +1,45 @@
info["owner"] = "asterisk"
info["group"] = "asterisk"
info["perms"] = 0644
include("secrets")
out(""";
; Asterisk Call Management support
; Géré par bcfg2
; By default asterisk will listen on localhost only.
[general]
enabled = yes
port = 5038
bindaddr = 0.0.0.0
; No access is allowed by default.
; To set a password, create a file in /etc/asterisk/manager.d
; use creative permission games to allow other serivces to create their own
; files
#include "manager.d/*.conf"
[django]
secret =""" + secrets.asterisk_django_passwd + """
deny=0.0.0.0/0.0.0.0
permit=127.0.0.1/255.255.255.0
permit=10.231.136.0/255.255.255.0
write = config
; Le mot de passe est aussi present dans /etc/crans/secrets.py
; (update accordingly )
[sms]
secret = """ + secrets.asterisk_sms_passwd + """
deny=0.0.0.0/0.0.0.0
permit=127.0.0.1/255.255.255.0
permit=10.231.136.0/255.255.255.0
read = system
write = system,message
[billing]
secret = """ + secrets.asterisk_billig_passwd + """
deny=0.0.0.0/0.0.0.0
permit=127.0.0.1/255.255.255.0
read = call,system
write = call""")

View file

@ -0,0 +1,88 @@
info["owner"] = "asterisk"
info["group"] = "asterisk"
info["perms"] = 0644
include("secrets")
out("""[general]
language=fr
context=crans-from-external
outofcall_message_context=crans-sms
vmexten=666
bindport=5060•
bindaddr=::
srvlookup=yes•
domain = crans.org
fromdomain=crans.org
domain = sip.crans.org
domain = sip.v6.crans.org
domain = sip.v4.crans.org
qualify = 10000
qualifyfreq = 60
realm = asterisk
rtpholdtimeout=300
rtptimeout=60
register => 0033972113270:G1mrWTZ43Z8S@sip.ovh.fr
tlsenable=yes
tcpenable=yes
tlsbindaddr=::
tcpbindaddr=::
tlscertfile=/etc/asterisk/cert/asterisk.pem
tlscafile=/etc/ssl/certs/cacert.org.pem
tlscipher=ALL
tlsclientmethod=tlsv1
videosupport=yes
disallow=all
allow=alaw
allow=ulaw
allow=h263
;allow=h263p
;allow=h261•
allow=h264
;allow=g729
;maxcallbitrate=512
;localnet=138.231.0.0/255.255.0.0
;localnet=138.231.144.0/255.225.248.0
;localnet=138.231.136.0/255.225.248.0
nat=force_rport,comedia
[forfait-ovh]
type=peer
host=sip.ovh.fr
;allow=all
context=ovh-sip
language=fr
insecure=port,invite
fromuser=""" + secrets.sip_username + """
unername=""" + secrets.sip_username + """
secret=""" + secrets.sip_secret + """
canreinvite=no
dtmfmode=auto
video=no
restrictcid=no
amaflags=default
;template par default des lignes pour le crans
[default-crans](!)
type=friend
transport=udp,tcp,tls
fromdomain=crans.org
host=dynamic
context=crans-sip
language=fr
insecure=port
canreinvite=no
dtmfmode=auto
call-limit = 10
video=yes
restrictcid=no
amaflags=default
accept_outofcall_message=yes
outofcall_message_context=crans-sms
encryption=may
#include "/usr/scripts/var/sip/sip_accounts" """)