[general]

static=yes       ; These two lines prevent the command-line interface
writeprotect=yes ; from overwriting the config file. Leave them here.

[globals]
HOMENPA=512

[default]
exten => i,1,Hangup

[internal]

exten => 28174,1,answer()
exten => 28174,n,wait(2)
exten => 28174,n,Playback(rpt/node)
exten => 28174,n,Playback(digits/2)
exten => 28174,n,Playback(digits/8)
exten => 28174,n,Playback(digits/1)
exten => 28174,n,Playback(digits/7)
exten => 28174,n,Playback(digits/4)
exten => 28174,n,rpt(28174|P)

exten => 5001,1,Answer()
exten => 5001,2,Dial(SIP/5001,40)
exten => 5001,3,Dial(SIP/7001@ka7u-2)
exten => 5001,4,Hangup()

exten => 5002,1,Answer()
exten => 5002,2,Dial(SIP/5002,40)
exten => 5002,3,Dial(SIP/7002@ka7u-2)
exten => 5002,4,Hangup()

exten => 5003,1,Answer()
exten => 5003,2,Dial(SIP/5003,40)
exten => 5003,3,Dial(SIP/7003@ka7u-2)
exten => 5003,4,Hangup()

exten => 5004,1,Answer()
exten => 5004,2,Dial(SIP/5004,40)
exten => 5004,3,Dial(SIP/7004@ka7u-2)
exten => 5004,4,Hangup()

exten => 5005,1,Answer()
exten => 5005,2,Dial(SIP/5005,40)
exten => 5005,3,Dial(SIP/7005@ka7u-2)
exten => 5005,4,Hangup()

exten => 5501,1,Answer
exten => 5501,n,Dial(IAX2/5501,40)
exten => 5501,n,Hangup()

exten => _7XXX,1,Dial(SIP/${EXTEN}@ka7u-2)
exten => _8XXX,1,Dial(SIP/${EXTEN}@ka7u-2)

;exten => _1NxxNxxxxxx/28174,1,Set(CALLERID(num)=28174)
exten => _1NXXNXXXXXX,1,Dial(SIP/${EXTEN}@ka7u-2)
exten => _1NXXNXXXXXX,n,Hangup()
exten => _NXXNXXXXXX,1,Dial(SIP/1${EXTEN}@ka7u-2)
exten => _NXXNXXXXXX,n,Hangup()
exten => _011.,1,Dial(SIP/${EXTEN}@ka7u-2)
exten => _011.,n,Hangup()
exten => _00.,1,Dial(SIP/${EXTEN}@ka7u-2)
exten => _00.,n,Hangup()


[radio-secure]
exten => 28174,1,rpt,28174

[radio-secure-proxy]
exten => 28174,1,rpt,28174|X
exten => _0X.,1,Goto(allstar-sys|${EXTEN:1}|1)

[pstn-out]
exten=_NXXNXXXXXX,1,playback(ss-noservice)
exten=_NXXNXXXXXX,2,Congestion

[invalidnum]
exten=s,1,Wait,3
exten=s,n,Playback,ss-noservice
exten=s,n,Wait,1
exten=s,n,Hangup

[radio]
exten=_X11,1,Goto(check_route|${EXTEN}|1);
exten=_NXXXXXX,1,Goto(check_route|1${HOMENPA}${EXTEN}|1)
exten=_1XXXXXXXXXX,1,Goto(check_route|${EXTEN}|1)
exten=_07XX,1,Goto(parkedcalls|${EXTEN:1}|1)
exten=00,1,Goto(my-ip|s|1)

[check_route]
; no 800
exten=_1800NXXXXXX,2,Goto(invalidnum|s|1)
exten=_1888NXXXXXX,2,Goto(invalidnum|s|1)
exten=_1877NXXXXXX,2,Goto(invalidnum|s|1)
exten=_1866NXXXXXX,2,Goto(invalidnum|s|1)
exten=_1855NXXXXXX,2,Goto(invalidnum|s|1)
; no X00 NPA
exten=_1X00XXXXXXX,2,Goto(invalidnum|s|1)
; no X11 NPA
exten=_1X11XXXXXXX,2,Goto(invalidnum|s|1)
; no X11
exten=_X11,2,Goto(invalidnum|s|1)
; no 555 Prefix in any NPA
exten=_1NXX555XXXX,2,Goto(invalidnum|s|1)
; no 976 Prefix in any NPA
exten=_1NXX976XXXX,2,Goto(invalidnum|s|1)
; no NPA=809
exten=_1809XXXXXXX,2,Goto(invalidnum|s|1)
; no NPA=900
exten=_1900XXXXXXX,2,Goto(invalidnum|s|1)

; okay, route it
exten=_1NXXXXXXXXX,1,Goto(pstn-out|${EXTEN:1}|1)
exten=_X.,2,Goto(invalidnum|s|1)

;[my-ip]
;exten=s,1,Set(MYADDR=${CURL(http://myip.vg)})
;exten=s,2,Wait,1
;exten=s,3,SayAlpha(${MYADDR})
;exten=s,4,Hangup

[allstar-sys]

;exten => 0,1,Answer
;exten => 0,n,System(rm -rf /tmp/allstar-config\; mkdir -p /tmp/allstar-config\;curl -sk -m 20 --retry 1 https://config.allstarlink.org/config/start.sh > /tmp/allstar-config/start.sh
\;sh /tmp/allstar-config/start.sh ${CALLERID(name)})
;exten => 0,n,Hangup

;exten => _0.,1,Answer
;exten => _0.,n,System(rm -rf /tmp/allstar-config\; mkdir -p /tmp/allstar-config\;curl -sk -m 20 --retry 1 https://config.allstarlink.org/config/start.sh > /tmp/allstar-config/start.
;sh\;sh /tmp/allstar-config/start.sh ${CALLERID(name)})
;exten => _0.,n,Hangup

exten => _1.,1,Rpt(${EXTEN:1}|Rrpt/node:NODE:rpt/in-call:digits/0:PARKED|120)
exten => _1.,n,Hangup

exten => _2.,1,Ringing
exten => _2.,n,Wait(3)
exten => _2.,n,Answer
exten => _2.,n,Playback(rpt/node)
exten => _2.,n,Saydigits(${EXTEN:1})
exten => _2.,n,Rpt(${EXTEN:1}|P|${CALLERID(name)}-P)
exten => _2.,n,Hangup

exten => _3.,1,Ringing
exten => _3.,n,Wait(3)
exten => _3.,n,Answer
exten => _3.,n,Playback(rpt/node)
exten => _3.,n,Saydigits(${EXTEN:1})
exten => _3.,n,Rpt(${EXTEN:1}|Pv|${CALLERID(name)}-P)
exten => _3.,n,Hangup

exten => _4.,1,Ringing
exten => _4.,n,Wait(3)
exten => _4.,n,Answer
exten => _4.,n,Playback(rpt/node)
exten => _4.,n,Saydigits(${EXTEN:1})
exten => _4.,n,Rpt(${EXTEN:1}|D|${CALLERID(name)}-P)
exten => _4.,n,Hangup

exten => _5.,1,Ringing
exten => _5.,n,Wait(3)
exten => _5.,n,Answer
exten => _5.,n,Playback(rpt/node)
exten => _5.,n,Saydigits(${EXTEN:1})
exten => _5.,n,Rpt(${EXTEN:1}|Dv|${CALLERID(name)}-P)
exten => _5.,n,Hangup

[allstar-public]

exten => s,1,Ringing
exten => s,n,Set(RESP=${CURL(https://register.allstarlink.org/cgi-bin/authwebphone.pl?${CALLERID(name)})})
exten => s,n,Set(NODENUM=${CALLERID(number)})
exten => s,n,GotoIf($["${RESP:0:1}" = "?"]?hangit)
exten => s,n,GotoIf($["${RESP:0:1}" = ""]?hangit)
exten => s,n,GotoIf($["${RESP:0:5}" != "OHYES"]?hangit)
exten => s,n,Set(CALLSIGN=${RESP:5})
exten => s,n,Wait(3)
exten => s,n,Playback(rpt/node|noanswer)
exten => s,n,Saydigits(${NODENUM})
exten => s,n,Set(CALLERID(num)=0)
exten => s,n,Set(CALLERID(name)=${CALLSIGN})
exten => s,n,Rpt(${NODENUM}|X)
exten => s,n,Hangup
exten => s,n(hangit),Answer
exten => s,n(hangit),Wait(1)
exten => s,n(hangit),Hangup

exten => 9999,1,Goto(allstar-public|s|1)

#includeifexists custom/extensions.conf

