Nothing Special   »   [go: up one dir, main page]

Extension, Sip, Extensions - Custom

Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 35

/etc/sysconfig/iptables

*filter

:INPUT DROP [0:0]

:FORWARD DROP [0:0]

:OUTPUT DROP [0:0]

-A INPUT -i lo -j ACCEPT

-A INPUT -i eth+ -m state --state RELATED,ESTABLISHED -j ACCEPT

#Acceso Red2, Vpn

-A INPUT -s 161.132.2.0/24 -i eth0 -p tcp -m tcp --dport 22 -j ACCEPT

-A INPUT -s 161.132.13.3 -i eth0 -p tcp -m tcp --dport 22 -j ACCEPT

-A INPUT -s 161.132.13.12 -i eth0 -p tcp -m tcp --dport 22 -j ACCEPT

-A INPUT -s 209.45.68.66 -i eth0 -p tcp -m tcp --dport 22 -j ACCEPT

-A INPUT -s 23.94.26.96 -i eth0 -p tcp -m tcp --dport 22 -j ACCEPT

#Acceso OUT

-A INPUT -s 209.45.68.66 -i eth+ -j ACCEPT

-A INPUT -s 23.94.26.96 -i eth+ -j ACCEPT

-A INPUT -s 198.23.187.62 -i eth+ -j ACCEPT

-A INPUT -s 198.143.3.80 -i eth+ -j ACCEPT

-A INPUT -s 190.232.243.247 -i eth+ -j ACCEPT

-A INPUT -s 132.157.64.124 -i eth+ -j ACCEPT

-A INPUT -s 179.7.80.244 -i eth+ -j ACCEPT

-A INPUT -s 190.234.54.223 -i eth+ -j ACCEPT

-A INPUT -s 200.123.15.13 -i eth+ -j ACCEPT

-A INPUT -s 190.238.19.156 -i eth+ -j ACCEPT

-A INPUT -s 200.123.2.0/24 -i eth+ -j ACCEPT

-A INPUT -s 104.219.170.61 -i eth+ -j ACCEPT

-A INPUT -s 181.64.85.184 -i eth+ -j ACCEPT

#
#Conectividad Red Telefonia

-A INPUT -s 161.132.32.128/25 -i eth0 -p tcp -m state --state NEW,RELATED,ESTABLISHED -j


ACCEPT

-A INPUT -s 161.132.32.128/25 -i eth0 -p udp -m state --state NEW,RELATED,ESTABLISHED -j


ACCEPT

#Conectividad Red Telefonia externa

-A INPUT -s 161.132.32.4 -i eth0 -p udp -m udp --dport 5060 -j ACCEPT

-A INPUT -s 161.132.14.0/24 -i eth0 -p tcp -m tcp --dport 5060 -j ACCEPT

-A INPUT -s 161.132.32.4 -i eth0 -p udp -m udp --dport 10000:20000 -j ACCEPT

-A INPUT -s 161.132.14.0/24 -i eth0 -p udp -m udp --dport 10000:20000 -j ACCEPT

#Monitoreo snmp

-A INPUT -s 161.132.1.128 -i eth+ -p udp -m udp --dport 161 -j ACCEPT

-A INPUT -s 161.132.1.147 -i eth+ -p udp -m udp --dport 161 -j ACCEPT

#Munin

-A INPUT -s 161.132.7.130 -i eth+ -p tcp -m tcp --dport 4949 -j ACCEPT

#Monitoreo nrpe

-A INPUT -s 161.132.1.128 -i eth+ -p tcp -m tcp --dport 5666 -j ACCEPT

-A INPUT -s 161.132.1.147 -i eth+ -p tcp -m tcp --dport 5666 -j ACCEPT

#Acronis

-A INPUT -s 172.20.20.5 -i eth1 -p tcp -m tcp --dport 22 -j ACCEPT

-A INPUT -s 172.20.20.5 -i eth1 -p tcp -m tcp --dport 9876 -j ACCEPT

#Ping(icmp)

-A INPUT -s 161.132.1.128 -p icmp -m icmp --icmp-type 8 -m state --state


NEW,RELATED,ESTABLISHED -j ACCEPT

-A INPUT -s 161.132.1.147 -p icmp -m icmp --icmp-type 8 -m state --state


NEW,RELATED,ESTABLISHED -j ACCEPT

-A INPUT -s 161.132.32.4 -p icmp -m icmp --icmp-type 8 -m state --state


NEW,RELATED,ESTABLISHED -j ACCEPT

-A INPUT -s 161.132.32.128/25 -p icmp -m icmp --icmp-type 8 -m state --state


NEW,RELATED,ESTABLISHED -j ACCEPT

#
#-A INPUT -p icmp -m icmp --icmp-type 8 -m limit --limit 2/sec -j ACCEPT

#-A INPUT -p icmp -m icmp --icmp-type 0 -m limit --limit 2/sec -j ACCEPT

#-A INPUT -p icmp -m icmp --icmp-type 5 -m limit --limit 2/sec -j ACCEPT

#-A INPUT -p icmp -m icmp --icmp-type 11 -m limit --limit 2/sec -j ACCEPT

#-A INPUT -p icmp -m icmp --icmp-type 3 -m limit --limit 2/sec -j ACCEPT

-A OUTPUT -o lo -j ACCEPT

-A OUTPUT -o eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT

#Conectividad Red Telefonia

-A OUTPUT -o eth0 -d 161.132.32.128/25 -j ACCEPT

#Conectividad Red Telefonia externa

-A OUTPUT -o eth0 -d 161.132.32.4 -j ACCEPT

-A OUTPUT -o eth0 -d 161.132.14.0/24 -j ACCEPT

#Storage

-A OUTPUT -o eth0 -d 161.132.12.3 -j ACCEPT

#Correo

-A OUTPUT -o eth0 -d 161.132.7.29 -p tcp --dport 25 -j ACCEPT

-A OUTPUT -o eth0 -d 161.132.8.44 -p tcp --dport 25 -j ACCEPT

-A OUTPUT -o eth0 -d 161.132.8.3 -p tcp --dport 25 -j ACCEPT

#DNS

-A OUTPUT -o eth0 -d 161.132.5.133 -p tcp --dport 53 -j ACCEPT

-A OUTPUT -o eth0 -d 161.132.5.133 -p udp --dport 53 -j ACCEPT

-A OUTPUT -o eth0 -d 161.132.1.133 -p tcp --dport 53 -j ACCEPT

-A OUTPUT -o eth0 -d 161.132.1.133 -p udp --dport 53 -j ACCEPT

#Agente ossec

-A OUTPUT -d 161.132.32.220 -o eth0 -p udp --dport 1514 -j ACCEPT

#Puerto NTP
#ntp-s1.cise.ufl.edu

-A OUTPUT -o eth0 -d 128.227.205.3 -p udp --dport 123 -j ACCEPT

#Yum

#-A OUTPUT -o eth0 -p tcp --dport 80 -j ACCEPT

#-A OUTPUT -o eth0 -p tcp --dport 443 -j ACCEPT

#Ping

#-A OUTPUT -p icmp -m icmp --icmp-type 8 -m limit --limit 2/sec -j ACCEPT

#-A OUTPUT -p icmp -m icmp --icmp-type 0 -m limit --limit 2/sec -j ACCEPT

#-A OUTPUT -p icmp -m icmp --icmp-type 5 -m limit --limit 2/sec -j ACCEPT

#-A OUTPUT -p icmp -m icmp --icmp-type 11 -m limit --limit 2/sec -j ACCEPT

#-A OUTPUT -p icmp -m icmp --icmp-type 3 -m limit --limit 2/sec -j ACCEPT

COMMIT

[root@pbx-agi1 ~]# vi /etc/sysconfig/iptables

*filter

:INPUT DROP [0:0]

:FORWARD DROP [0:0]

:OUTPUT DROP [0:0]

-A INPUT -i lo -j ACCEPT

-A INPUT -i eth+ -m state --state RELATED,ESTABLISHED -j ACCEPT

#Acceso Red2, Vpn

-A INPUT -s 161.132.2.0/24 -i eth0 -p tcp -m tcp --dport 22 -j ACCEPT

-A INPUT -s 161.132.13.3 -i eth0 -p tcp -m tcp --dport 22 -j ACCEPT

-A INPUT -s 161.132.13.12 -i eth0 -p tcp -m tcp --dport 22 -j ACCEPT

-A INPUT -s 209.45.68.66 -i eth0 -p tcp -m tcp --dport 22 -j ACCEPT

-A INPUT -s 23.94.26.96 -i eth0 -p tcp -m tcp --dport 22 -j ACCEPT

#Acceso OUT

-A INPUT -s 209.45.68.66 -i eth+ -j ACCEPT


-A INPUT -s 23.94.26.96 -i eth+ -j ACCEPT

-A INPUT -s 198.23.187.62 -i eth+ -j ACCEPT

-A INPUT -s 198.143.3.80 -i eth+ -j ACCEPT

-A INPUT -s 190.232.243.247 -i eth+ -j ACCEPT

-A INPUT -s 132.157.64.124 -i eth+ -j ACCEPT

-A INPUT -s 179.7.80.244 -i eth+ -j ACCEPT

/etc/asterisk/extensions.conf

;--------------------------------------------------------------------------------;

; Do NOT edit this file as it is auto-generated by FreePBX. All modifications to ;

; this file must be done via the web gui. There are alternative files to make ;

; custom modifications, details at: http://freepbx.org/configuration_files ;

;--------------------------------------------------------------------------------;

; This file is part of FreePBX.

; FreePBX is free software: you can redistribute it and/or modify

; it under the terms of the GNU General Public License as published by

; the Free Software Foundation, either version 2 of the License, or

; (at your option) any later version.

; FreePBX is distributed in the hope that it will be useful,

; but WITHOUT ANY WARRANTY; without even the implied warranty of

; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the

; GNU General Public License for more details.

; You should have received a copy of the GNU General Public License

; along with FreePBX. If not, see <http://www.gnu.org/licenses/>.

; Copyright (C) 2004 Coalescent Systems Inc (Canada)


; Copyright (C) 2006 Why Pay More 4 Less Pty Ltd (Australia)

; Copyright (C) 2007 Astrogen LLC (USA)

;--------------------------------------------------------------------------------;

;*****************************************************************************
**

; AUTO-GENERATED AND CUSOTM USER DIALPLAN INCLUDED HERE *

;*****************************************************************************
**

;--------------------------------------------------------------------------------;

; Customizations to this dialplan should be made in extensions_custom.conf

; See extensions_custom.conf.sample for an example.

; If you need to use [macro-dialout-trunk-predial-hook], [ext-did-custom], or

; [from-internal-custom] for example, place these in this file or they will get overwritten.

; WARNING ABOUT: #include extensions_override_freepbx.conf

; This include file is put first to allow the auto-generated dialplan in FreePBX

; to be overwritten if necessary. Overriding auto-generated dialplan should be done

; with extreme caution. In almost all cases any custom dialplan SHOULD be put in

; extensions_custom.conf which will not hurt a FreePBX generated dialplan. In some

; very rare and custom situations users may have a need to override what FreePBX

; automatically generates. If so anything in this file will do that. If you come up

; with situations where you need to modify the existing dialplan or macros, put it

; here.

#include extensions_override_freepbx.conf

#include extensions_additional.conf

#include extensions_custom.conf

;--------------------------------------------------------------------------------;
;*****************************************************************************
**

; DIALPLAN OPEN TO THE PUBLIC, USING INBOUND DIDS AND SIMILAR *

;*****************************************************************************
**

;-------------------------------------------------------------------------------

; from-digital:

; Context to set for PRI's and equivalent

[from-digital]

include => from-pstn

;-------------------------------------------------------------------------------

;-------------------------------------------------------------------------------

; from-analog:

; Context to set for analog DAHDi cards and equivalent

[from-analog]

include => from-dahdi

;-------------------------------------------------------------------------------

;-------------------------------------------------------------------------------

; from-trunk:

; Context is really just an aliax of from-pstn

[from-trunk]

include => from-pstn

;-------------------------------------------------------------------------------

;-------------------------------------------------------------------------------

; from-pstn:
;

; Entry context for calls from the outside world to hit FreePBX

[from-pstn]

; Entry context for calls from the outside world to hit FreePBX

[from-pstn]

include => from-pstn-custom ; create this context in extensions_custom.conf to include


customizations

include => ext-did

include => ext-did-post-custom

include => from-did-direct

include => ext-did-catchall ; THIS MUST COME AFTER ext-did

;-------------------------------------------------------------------------------

;-------------------------------------------------------------------------------

; from-pstn-e164-us:

; The context is designed for providers who send calls in e164 format and is

; biased towards NPA calls, callerid and dialing rules. It will do the following:

; DIDs in an NPA e164 format of +1NXXNXXXXXX will be converted to 10 digit DIDs

; DIDs in any other format will be delivered as they are, including e164 non NPA

; DIDs which means they will need the full format including the + in the inbound

; route.

; CallerID(number) presented in e164 NPA format will be trimmed to a 10 digit CID

; CallerID(number) presented in e164 non-NPA (country code other than 1) will be

; reformated from: +<CountryCode><Number> to 011<CountryCode><Number>

[from-pstn-e164-us]
exten => _+1NXXNXXXXXX/_+1NXXNXXXXXX,1,Set(CALLERID(number)=$
{CALLERID(number):2})

exten => _+1NXXNXXXXXX/_NXXNXXXXXX,2,Goto(from-pstn,${EXTEN:2},1)

exten => _+1NXXNXXXXXX/_+X.,1,Set(CALLERID(number)=011${CALLERID(number):1})

exten => _+1NXXNXXXXXX/_011X.,n,Goto(from-pstn,${EXTEN:2},1)

exten => _+1NXXNXXXXXX,1,Goto(from-pstn,${EXTEN:2},1)

exten => _[0-9+]./_+1NXXNXXXXXX,1,Set(CALLERID(number)=${CALLERID(number):2})

exten => _[0-9+]./_NXXNXXXXXX,n,Goto(from-pstn,${EXTEN},1)

exten => _[0-9+]./_+X.,1,Set(CALLERID(number)=011${CALLERID(number):1})

exten => _[0-9+]./_011X.,n,Goto(from-pstn,${EXTEN},1)

exten => _[0-9+].,1,Goto(from-pstn,${EXTEN},1)

exten => s/_+1NXXNXXXXXX,1,Set(CALLERID(number)=${CALLERID(number):2})

exten => s/_NXXNXXXXXX,n,Goto(from-pstn,${EXTEN},1)

exten => s/_+X.,1,Set(CALLERID(number)=011${CALLERID(number):1})

exten => s/_011X.,n,Goto(from-pstn,${EXTEN},1)

exten => s,1,Goto(from-pstn,${EXTEN},1)

;-------------------------------------------------------------------------------

;-------------------------------------------------------------------------------

; from-pstn-to-did:

; The context is designed for providers who send the DID in the TO: SIP header

; only. The format of this header is:

; To: <sip:2125551212@172.31.74.25>

; So the DID must be extracted between the sip: and the @, which this does

[from-pstn-toheader]

exten => _.,1,Goto(from-pstn,${CUT(CUT(SIP_HEADER(To),@,1),:,2)},1)

;-------------------------------------------------------------------------------

;-------------------------------------------------------------------------------
; from-sip-external

; This context is the default SIP context unless otherwise changed in the SIP

; Settings module or other sip configuration locations. This context is hit by

; either anonymous SIP calls or mis-configured SIP trunks when the incoming call

; can not be matched with a SIP section.

[from-sip-external]

exten => _.,1,NoOp(Received incoming SIP connection from unknown peer to ${EXTEN})

exten => _.,n,Set(DID=${IF($["${EXTEN:1:2}"=""]?s:${EXTEN})})

exten => _.,n,Goto(s,1)

exten => s,1,GotoIf($["${ALLOW_SIP_ANON}"="yes"]?checklang:noanonymous)

exten => s,n(checklang),GotoIf($["${SIPLANG}"!=""]?setlanguage:from-trunk,${DID},1)

exten => s,n(setlanguage),Set(CHANNEL(language)=${SIPLANG})

exten => s,n,Goto(from-trunk,${DID},1)

exten => s,n(noanonymous),Set(TIMEOUT(absolute)=15)

exten => s,n,Answer

exten => s,n,Wait(2)

exten => s,n,Playback(ss-noservice)

exten => s,n,Playtones(congestion)

exten => s,n,Congestion(5)

exten => h,1,Hangup

exten => i,1,Hangup

exten => t,1,Hangup

;-------------------------------------------------------------------------------

;*****************************************************************************
**

; INTERNAL DIALPLAN, NOT OPEN TO THE PUBLIC WORLD *

;*****************************************************************************
**

;-------------------------------------------------------------------------------
; from-internal:

; Internal dialplan that most internal phones have access to

[from-internal]

include => from-internal-noxfer

include => from-internal-xfer

include => bad-number ; auto-generated

;-------------------------------------------------------------------------------

;-------------------------------------------------------------------------------

; from-internal-noxfer:

; Place to put internal dialplan that should not be accessible during a blind

; transfer, this context will not be visible during such.

[from-internal-noxfer]

include => from-internal-noxfer-custom

include => from-internal-noxfer-additional ; auto-generated

;-------------------------------------------------------------------------------

;-------------------------------------------------------------------------------

; from-internal-xfer:

; Place to put most internal dialplan, will be visible during normal calls and

; blind transfers.

[from-internal-xfer]

include => from-internal-custom

include => from-internal-additional ; auto-generated

exten => s,1,Macro(hangupcall)

exten => h,1,Macro(hangupcall)

;-------------------------------------------------------------------------------
;*****************************************************************************
**

; INTERNAL MACROS & SPECIAL CONTEXTS *

;*****************************************************************************
**

;-------------------------------------------------------------------------------

; from-did-direct:

; forces ext-findmefollow to take precedence over ext-local. Also exposed to

; the public side to allow an extension number to be used as an external DID

; without requiring inbound routes to be created, common in many PRI installations

; where the last 4 digits are used as the extnension and DIDs are delivered in

; 4 digit formats.

[from-did-direct]

include => ext-findmefollow

include => ext-local

;-------------------------------------------------------------------------------

;-------------------------------------------------------------------------------

; macro-dial:

; Rings one or more extensions. Handles things like call forwarding and DND

; We don't call dial directly for anything internal anymore.

; ARGS: $TIMER, $OPTIONS, $EXT1, $EXT2, $EXT3, ...

; Use a Macro call such as the following:

;
; Macro(dial,$DIAL_TIMER,$DIAL_OPTIONS,$EXT1,$EXT2,$EXT3,...)

[macro-dial]

exten => s,1,GotoIf($["${MOHCLASS}" = ""]?dial)

exten => s,n,SetMusicOnHold(${MOHCLASS})

exten => s,n(dial),AGI(dialparties.agi)

exten => s,n,NoOp(Returned from dialparties with no extensions to call and DIALSTATUS: $
{DIALSTATUS})

exten => s,n+2(normdial),Dial(${ds}) ; dialparties will set the priority to 10 if $ds is not null

exten => s,n,Set(DIALSTATUS=${IF($["${DIALSTATUS_CW}"!="" ]?${DIALSTATUS_CW}:$


{DIALSTATUS})})

exten => s,n,GosubIf($["${SCREEN}" != "" | "${DIALSTATUS}" = "ANSWER"]?${DIALSTATUS},1)

exten => s,20(huntdial),NoOp(Returned from dialparties with hunt groups to dial )

exten => s,n,Set(HuntLoop=0)

exten => s,n(a22),GotoIf($[${HuntMembers} >= 1]?a30) ; if this is from rg-group, don't strip
prefix

exten => s,n,NoOp(Returning there are no members left in the hunt group to ring)

; dialparties.agi has setup the dialstring for each hunt member in a variable labeled
HuntMember0, HuntMember1 etc for each iteration

; and The total number in HuntMembers. So for each iteration, we will update the CALLTRACE
Data.

exten => s,n+2(a30),Set(HuntMember=HuntMember${HuntLoop})

exten => s,n,GotoIf($[$["${CALLTRACE_HUNT}" != "" ] & $[$["${RingGroupMethod}" = "hunt" ]


| $["${RingGroupMethod}" = "firstavailable"] | $["${RingGroupMethod}" =
"firstnotonphone"]]]?a32:a35)

exten => s,n(a32),Set(CT_EXTEN=${CUT(FILTERED_DIAL,,$[${HuntLoop} + 1])})

exten => s,n,Set(DB(CALLTRACE/${CT_EXTEN})=${CALLTRACE_HUNT})

exten => s,n,Goto(s,a42)


;Set Call Trace for each hunt member we are going to call "Memory groups have multiple
members to set CALL TRACE For" hence the loop

exten => s,n(a35),GotoIf($[$["${CALLTRACE_HUNT}" != "" ] & $["${RingGroupMethod}" =


"memoryhunt" ]]?a36:a50)

exten => s,n(a36),Set(CTLoop=0)

exten => s,n(a37),GotoIf($[${CTLoop} > ${HuntLoop}]?a42) ; if this is from rg-group, don't strip
prefix

exten => s,n,Set(CT_EXTEN=${CUT(FILTERED_DIAL,,$[${CTLoop} + 1])})

exten => s,n,Set(DB(CALLTRACE/${CT_EXTEN})=${CALLTRACE_HUNT})

exten => s,n,Set(CTLoop=$[1 + ${CTLoop}])

exten => s,n,Goto(s,a37)

exten => s,n(a42),Dial(${${HuntMember}}${ds})

exten => s,n,GotoIf($["${DIALSTATUS}" = "ANSWER"]?ANSWER,1)

exten => s,n,Set(HuntLoop=$[1 + ${HuntLoop}])

exten => s,n,GotoIf($[$[$["foo${RingGroupMethod}" != "foofirstavailable"] & $["foo$


{RingGroupMethod}" != "foofirstnotonphone"]] | $["foo${DialStatus}" = "fooBUSY"]]?a46)

exten => s,n,Set(HuntMembers=0)

exten => s,n(a46),Set(HuntMembers=$[${HuntMembers} - 1])

exten => s,n,Goto(s,a22)

exten => s,n(a50),DBdel(CALLTRACE/${CT_EXTEN})

exten => s,n,Goto(s,a42)

; For call screening

exten => NOANSWER,1,Macro(vm,${SCREEN_EXTEN},BUSY,${IVR_RETVM})

exten => NOANSWER,n,GotoIf($["${IVR_RETVM}" != "RETURN" | "${IVR_CONTEXT}" = ""]?bye)

exten => NOANSWER,n,Return

exten => NOANSWER,n(bye),Macro(hangupcall)

exten => TORTURE,1,Goto(app-blackhole,musiconhold,1)

exten => TORTURE,n,Macro(hangupcall)

exten => DONTCALL,1,Answer


exten => DONTCALL,n,Wait(1)

exten => DONTCALL,n,Zapateller()

exten => DONTCALL,n,Playback(ss-noservice)

exten => DONTCALL,n,Macro(hangupcall)

exten => ANSWER,1,Noop(Call successfully answered - Hanging up now)

exten => ANSWER,n,Macro(hangupcall,)

; make sure hungup calls go here so that proper cleanup occurs from call confirmed calls and
the like

exten => h,1,Macro(hangupcall)

;-------------------------------------------------------------------------------

;-------------------------------------------------------------------------------

; macro-get-vmcontext:

; returns the user's voicemail context

[macro-get-vmcontext]

exten => s,1,Set(VMCONTEXT=${DB(AMPUSER/${ARG1}/voicemail)})

exten => s,2,GotoIf($["foo${VMCONTEXT}" = "foo"]?200:300)

exten => s,200,Set(VMCONTEXT=default)

exten => s,300,NoOp()

;-------------------------------------------------------------------------------

;-------------------------------------------------------------------------------

; macro-outisbusy:

; called if all trunks are busy. This macro is overwridden by the

; Outbound Route Messages module if installed and configured to provide

; better messages or choices of tones.


;

[macro-outisbusy]

exten => s,1,Progress

exten => s,n,Playback(all-circuits-busy-now,noanswer)

exten => s,n,Playback(pls-try-call-later,noanswer)

exten => s,n,Macro(hangupcall)

;-------------------------------------------------------------------------------

;-------------------------------------------------------------------------------

; macro-dialout-trunk-predial-hook:

; this macro intentionally left blank so it may be safely overwritten for any custom

; requirements that an installation may have.

; the macro is called by macro-dialout-trunk just prior to making a Dial() attempt

; to a trunk.

; MACRO RETURN CODE: ${PREDIAL_HOOK_RET}

; if set to "BYPASS" then this trunk will be skipped

[macro-dialout-trunk-predial-hook]

exten => s,1,MacroExit()

;-------------------------------------------------------------------------------

;-------------------------------------------------------------------------------

;-------------------------------------------------------------------------------

;-------------------------------------------------------------------------------

; macro-user-logon:

; Used to log a user onto an adhoc device. Most of the work is done by
; user_login_out.agi AGI script

[macro-user-logon]

exten => s,1,Set(DEVICETYPE=${DB(DEVICE/${CALLERID(number)}/type)})

exten => s,n,Answer()

exten => s,n,Wait(1)

exten => s,n,GotoIf($["${DEVICETYPE}" = "fixed"]?s-FIXED,1)

; get user's extension

exten => s,n,Set(AMPUSER=${ARG1})

exten => s,n,GotoIf($["${AMPUSER}" != ""]?gotpass)

exten => s,n(playagain),Read(AMPUSER,please-enter-your-extension-then-press-pound,,,4)

; get user's password and authenticate

exten => s,n,GotoIf($["${AMPUSER}" = ""]?s-MAXATTEMPTS,1)

exten => s,n(gotpass),GotoIf($["${DB_EXISTS(AMPUSER/${AMPUSER}/password)}" = "0"]?s-


NOUSER,1)

exten => s,n,Set(AMPUSERPASS=${DB_RESULT})

exten => s,n,GotoIf($[${LEN(${AMPUSERPASS})} = 0]?s-NOPASSWORD,1)

; do not continue if the user has already logged onto this device

exten => s,n,Set(DEVICEUSER=${DB(DEVICE/${CALLERID(number)}/user)})

exten => s,n,GotoIf($["${DEVICEUSER}" = "${AMPUSER}"]?s-ALREADYLOGGEDON,1)

exten => s,n,Authenticate(${AMPUSERPASS})

exten => s,n,AGI(user_login_out.agi,login,${CALLERID(number)},${AMPUSER})

exten => s,n,Playback(agent-loginok)

exten => s-FIXED,1,NoOp(Device is FIXED and cannot be logged into)

exten => s-FIXED,n,Playback(ha/phone)

exten => s-FIXED,n,SayDigits(${CALLERID(number)})

exten => s-FIXED,n,Playback(is-curntly-unavail&vm-goodbye)


exten => s-FIXED,n,Hangup ;TODO should play msg indicated device cannot be logged into

exten => s-ALREADYLOGGEDON,1,NoOp(This device has already been logged into by this user)

exten => s-ALREADYLOGGEDON,n,Playback(vm-goodbye)

exten => s-ALREADYLOGGEDON,n,Hangup ;TODO should play msg indicated device is already
logged into

exten => s-NOPASSWORD,1,NoOp(This extension does not exist or no password is set)

exten => s-NOPASSWORD,n,Playback(pbx-invalid)

exten => s-NOPASSWORD,n,Goto(s,playagain)

exten => s-MAXATTEMPTS,1,NoOp(Too many login attempts)

exten => s-MAXATTEMPTS,n,Playback(vm-goodbye)

exten => s-MAXATTEMPTS,n,Hangup

exten => s-NOUSER,1,NoOp(Invalid extension ${AMPUSER} entered)

exten => s-NOUSER,n,Playback(pbx-invalid)

exten => s-NOUSER,n,Goto(s,playagain)

;-------------------------------------------------------------------------------

;-------------------------------------------------------------------------------

; macro-user-logoff:

; Used to log a user off of an adhoc device. Most of the work is done by

; user_login_out.agi AGI script

[macro-user-logoff]

exten => s,1,Set(DEVICETYPE=${DB(DEVICE/${CALLERID(number)}/type)})

exten => s,n,GotoIf($["${DEVICETYPE}" = "fixed"]?s-FIXED,1)

exten => s,n,AGI(user_login_out.agi,logout,${CALLERID(number)})

exten => s,n(done),Playback(agent-loggedoff)


exten => s-FIXED,1,NoOp(Device is FIXED and cannot be logged out of)

exten => s-FIXED,n,Playback(an-error-has-occured&vm-goodbye)

exten => s-FIXED,n,Hangup ;TODO should play msg indicated device cannot be logged into

;-------------------------------------------------------------------------------

;-------------------------------------------------------------------------------

; macro-privacy-mgr:

; Privacy Manager Macro makes sure that any calls that don't pass the privacy manager are
presented

; with congestion since there have been observed cases of the call continuing if not stopped
with a

; congestion, and this provides a slightly more friendly 'sorry' message in case the user is

; legitimately trying to be cooperative.

; Note: the following options are configurable in privacy.conf:

; maxretries = 3 ; default value, number of retries before failing

; minlength = 10 ; default value, number of digits to be accepted as valid CID

[macro-privacy-mgr]

exten => s,1,Set(KEEPCID=${CALLERID(num)})

exten => s,n,GotoIf($["foo${CALLERID(num):0:1}"="foo+"]?CIDTEST2:CIDTEST1)

exten => s,n(CIDTEST1),Set(TESTCID=${MATH(1+${CALLERID(num)})})

exten => s,n,Goto(TESTRESULT)

exten => s,n(CIDTEST2),Set(TESTCID=${MATH(1+${CALLERID(num):1})})

exten => s,n(TESTRESULT),GotoIf($["foo${TESTCID}"="foo"]?CLEARCID:PRIVMGR)

exten => s,n(CLEARCID),Set(CALLERID(num)=)

exten => s,n(PRIVMGR),PrivacyManager(${ARG1},${ARG2})

exten => s,n,GotoIf($["${PRIVACYMGRSTATUS}"="FAILED"]?fail)

exten => s,n,GosubIf($["${CALLED_BLACKLIST}" = "1"]?app-blacklist-check,s,1)


exten => s,n,SetCallerPres(allowed_passed_screen); stop gap until app_privacy.c clears
unavailable bit

exten => s,PRIVMGR+101(fail),Noop(STATUS: ${PRIVACYMGRSTATUS} CID: ${CALLERID(num)} $


{CALLERID(name)} CALLPRES: ${CALLLINGPRES})

exten => s,n,Playback(sorry-youre-having-problems)

exten => s,n,Playback(goodbye)

exten => s,n,Playtones(congestion)

exten => s,n,Congestion(5)

exten => h,1,Hangup

;-------------------------------------------------------------------------------

;-------------------------------------------------------------------------------

; default

; FreePBX does not use the default context. This context is used by asterisk when

; it has no other information provided and needs to deliver a call. Hitting this means

; there has been some sort of configuration error, or a potential bug somehwere.

; This context can be reached from either internal or external sources.

[default]

include => ext-local

exten => s,1,Playback(vm-goodbye)

exten => s,n,Noop(ERROR: FreePBX Does not use the [default] context, confguration error)

exten => s,n,Macro(hangupcall)

;-------------------------------------------------------------------------------

;*****************************************************************************
**

; DEPRECATED DIALPLAN - THESE WILL BE REMOVED, NOT USED BY FREEPBX *


;*****************************************************************************
**

;-------------------------------------------------------------------------------

; macro-fixcid: [DEPRECATED]

; For some reason, if I don't run setCIDname, CALLERID(name) will be blank in my AGI

[macro-fixcid]

exten => s,1,Set(CALLERID(name)=${CALLERID(name)})

;-------------------------------------------------------------------------------

;-------------------------------------------------------------------------------

; macro-rg-group: [DEPRECATED]

; Ring groups of phones

; ARGS: comma separated extension list

; 1 - Ring Group Strategy

; 2 - ringtimer

; 3 - prefix

; 4 - extension list

[macro-rg-group]

exten => s,1,Macro(user-callerid,SKIPTTL) ; already called from ringgroup

exten => s,2,GotoIf($["${CALLERID(name):0:${LEN(${RGPREFIX})}}" != "${RGPREFIX}"]?4:3) ;


check for old prefix

exten => s,3,Set(CALLERID(name)=${CALLERID(name):${LEN(${RGPREFIX})}}) ; strip off old


prefix

exten => s,4,Set(RGPREFIX=${ARG3}) ; set new prefix

exten => s,5,Set(CALLERID(name)=${RGPREFIX}${CALLERID(name)}) ; add prefix to callerid


name
exten => s,6,Set(RecordMethod=Group) ; set new prefix

exten => s,7,Macro(record-enable,${MACRO_EXTEN},${RecordMethod})

exten => s,8,Set(RingGroupMethod=${ARG1}) ;

exten => s,9,Macro(dial,${ARG2},${DIAL_OPTIONS},${ARG4})

exten => s,10,Set(RingGroupMethod='') ;

;-------------------------------------------------------------------------------

;-------------------------------------------------------------------------------

; macro-dialout: [DEPRECATED]

; dialout and strip the prefix

[macro-dialout]

exten => s,1,Macro(user-callerid,SKIPTTL)

exten => s,2,GotoIf($["${ECID${CALLERID(number)}}" = ""]?5) ;check for CID override for


exten

exten => s,3,Set(CALLERID(all)=${ECID${CALLERID(number)}})

exten => s,4,Goto(7)

exten => s,5,GotoIf($["${OUTCID_${ARG1}}" = ""]?7) ;check for CID override for trunk

exten => s,6,Set(CALLERID(all)=${OUTCID_${ARG1}})

exten => s,7,Set(length=${LEN(${DIAL_OUT_${ARG1}})})

exten => s,8,Dial(${OUT_${ARG1}}/${ARG2:${length}})

exten => s,9,Playtones(congestion)

exten => s,10,Congestion(5)

exten => s,109,Macro(outisbusy)

;-------------------------------------------------------------------------------

;-------------------------------------------------------------------------------

; macro-dialout-default: [DEPRECATED]

; dialout using default OUT trunk - no prefix


;

[macro-dialout-default]

exten => s,1,Macro(user-callerid,SKIPTTL)

exten => s,2,Macro(record-enable,${CALLERID(number)},OUT)

exten => s,3,Macro(outbound-callerid,${ARG1})

exten => s,4,Dial(${OUT}/${ARG1})

exten => s,5,Playtones(congestion)

exten => s,6,Congestion(5)

exten => s,105,Macro(outisbusy)

;-------------------------------------------------------------------------------

;-------------------------------------------------------------------------------

; macro-sayXXXX: [DEPRECATED]

; Text-To-Speech related macros

; These all follow common actions. First try to playback a file "tts/custom-md5"

; where "md5" is the md5() of whatever is going to be played. If that doesn't exist,

; try to playback using macro-tts-sayXXXXX (where XXXXX is text/digits/etc, same as

; the macro below). If that macro exits with MACRO_OFFSET=100, then it's done,

; otherwise, fallback to the default asterisk method.

;-------------------------------------------------------------------------------

; macro-saytext: [DEPRECATED]

; say text is purely for text-to-speech, there is no fallback

[macro-saytext]

exten => s,1,Noop(Trying custom SayText playback for "${ARG1}")

exten => s,n,Playback(tts/custom-${MD5(${ARG1})})

exten => s,n,GotoIf($["${PLAYBACKSTATUS}"="SUCCESS"]?done)


; call tts-saytext. This should set MACRO_OFFSET=101 if it was successful

exten => s,n(tts),Macro(tts-saytext,${ARG1},${ARG2},${ARG3})

exten => s,n,Noop(No text-to-speech handler for SayText, cannot say "${ARG1}")

exten => s,n,Goto(done)

exten => s,tts+101,Noop(tts handled saytext)

;-------------------------------------------------------------------------------

;-------------------------------------------------------------------------------

; macro-saynumber: [DEPRECATED]

; Say number is for saying numbers (eg "one thousand forty six")

[macro-saynumber]

exten => s,1,Noop(Trying custom SayNumber playback for "${ARG1}")

exten => s,n,Playback(tts/custom-${MD5(${ARG1})})

exten => s,n,GotoIf($["${PLAYBACKSTATUS}"="SUCCESS"]?done)

; call tts-saynumber. This should set MACRO_OFFSET=101 if it was successful

exten => s,n(tts),Macro(tts-saynumber,${ARG1},${ARG2},${ARG3})

exten => s,n,SayNumber(${ARG1})

exten => s,n,Goto(done)

exten => s,tts+101,Noop(tts handled saynumber)

;-------------------------------------------------------------------------------

;-------------------------------------------------------------------------------

; macro-saydigits: [DEPRECATED]

; Say digits is for saying digits one-by-one (eg, "one zero four six")

[macro-saydigits]

exten => s,1,Noop(Trying custom SayDigits playback for "${ARG1}")

exten => s,n,Playback(tts/custom-${MD5(${ARG1})})


exten => s,n,GotoIf($["${PLAYBACKSTATUS}"="SUCCESS"]?done)

; call tts-saydigits. This should set MACRO_OFFSET=101 if it was successful

exten => s,n(tts),Macro(tts-saydigits,${ARG1},${ARG2},${ARG3})

exten => s,n,SayDigits(${ARG1})

exten => s,n,Goto(done)

;-------------------------------------------------------------------------------

include => from-pstn-custom ; create this context in extensions_custom.conf to include


customizations

include => ext-did

include => ext-did-post-custom

exten => s,n,Playback(tts/custom-${MD5(${ARG1})})

exten => s,n,GotoIf($["${PLAYBACKSTATUS}"="SUCCESS"]?done)

; call tts-saynumber. This should set MACRO_OFFSET=101 if it was successful

exten => s,n(tts),Macro(tts-saynumber,${ARG1},${ARG2},${ARG3})


exten => s,n,SayNumber(${ARG1})

exten => s,n,Goto(done)

exten => s,tts+101,Noop(tts handled saynumber)

;-------------------------------------------------------------------------------

;-------------------------------------------------------------------------------

; macro-saydigits: [DEPRECATED]

; Say digits is for saying digits one-by-one (eg, "one zero four six")

[macro-saydigits]

exten => s,1,Noop(Trying custom SayDigits playback for "${ARG1}")

exten => s,n,Playback(tts/custom-${MD5(${ARG1})})

exten => s,n,GotoIf($["${PLAYBACKSTATUS}"="SUCCESS"]?done)

; call tts-saydigits. This should set MACRO_OFFSET=101 if it was successful

exten => s,n(tts),Macro(tts-saydigits,${ARG1},${ARG2},${ARG3})

exten => s,n,SayDigits(${ARG1})

exten => s,n,Goto(done)

;-------------------------------------------------------------------------------

/etc/asterisk/extensions_custom.conf

; This file contains example extensions_custom.conf entries.

; extensions_custom.conf should be used to include customizations

; to AMP's Asterisk dialplan.

; Extensions in AMP have access to the 'from-internal' context.

; The context 'from-internal-custom' is included in 'from-internal' by default

[macro-dialout-trunk-predial-hook]

exten => s,1,GotoIf($["${OUT_${DIAL_TRUNK}:4:4}" = "A2B/"]?custom-freepbx-a2billing,$


{OUTNUM},1:2)
exten => s,2,MacroExit

[custom-freepbx-a2billing]

exten => _X.,1,DeadAGI(a2billing1_9.php,${OUT_${DIAL_TRUNK}:8})

exten => _X.,n,Hangup()

[from-internal-custom]

exten => _7021[1-8]XX,1,Dial(SIP/1${EXTEN})

exten => _7021[1-8]XX,n,Voicemail(1{EXTEN},u)

exten => _7021[1-8]XX,n,Hangup

exten => _7023[6-9]XX,1,Dial(SIP/1${EXTEN})

exten => _7023[6-9]XX,n,Voicemail(1${EXTEN},u)

exten => _7023[6-9]XX,n,Hangup

exten => _7027[1-8]XX,1,Dial(SIP/1${EXTEN})

exten => _7027[1-8]XX,n,Voicemail(1${EXTEN},u)

exten => _7027[1-8]XX,n,Hangup

; custom-count2four,s,1 can be used as a custom target for

; a Digital Receptionist menu or a Ring Group

[custom-count2four]

exten => s,1,SayDigits(1234)

exten => s,2,Hangup

; custom-recordme,5678,1 can be used as a custom target for

; a Digital Receptionist menu or a Ring Group

[custom-recordme]

exten => 5678,1,Wait(2)

exten => 5678,2,Record(/tmp/asterisk-recording:gsm)

exten => 5678,3,Wait(2)


exten => 5678,4,Playback(/tmp/asterisk-recording)

exten => 5678,5,Wait(2)

exten => 5678,6,Hangup

[app-recordings-custom]

[app-calltrace-custom]

[app-calltrace-perform-custom]

[app-directory-custom]

[app-echo-test-custom]

[app-speakextennum-custom]

[app-speakingclock-custom]

[app-dialvm-custom]

[app-vmmain-custom]

[app-userlogonoff-custom]

[app-pickup-custom]

[app-zapbarge-custom]

[app-chanspy-custom]

[ext-test-custom]
[ext-did-0001-custom]

[ext-did-0002-custom]

[ext-did-custom]

[ext-did-catchall-custom]

[from-trunk-sip-sip.siptraffic.com-custom]

[from-trunk-sip-sip.calldaddy.com-custom]

[from-trunk-sip-voip.yftelperu.com-custom]

[macro-record-enable-custom]

[outbound-allroutes-custom]

[outrt-001-9_outside-custom]

[outrt-002-ldi-custom]

[outrt-003-rural-custom]

[app-blackhole-custom]

[bad-number-custom]

[macro-confirm-custom]
[macro-auto-confirm-custom]

[macro-auto-blkvm-custom]

[sub-pincheck-custom]

[macro-dialout-trunk-custom]

[macro-dialout-dundi-custom]

[macro-user-callerid-custom]

[macro-dialout-enum-custom]

[macro-outbound-callerid-custom]

[macro-agent-add-custom]

[macro-agent-del-custom]

[macro-systemrecording-custom]

[from-zaptel-custom]

[vm-callme-custom]

[macro-vm-custom]

[from-internal-additional-custom]

[ext-local]
[ext-findmefollow]

[from-pstn-custom]

[ext-did-post-custom]

[from-trunk-sip-198.143.3.80-custom]

[a2general-call1sec]

include => app-dialvm

exten => *97,1,Answer()

exten => *97,n,VoiceMailMain(${CALLERID(num)}@default)

exten => *97,n,Hangup()

exten => _X.,1,Noop(${EXTEN})

exten => _X.,n,Wait(1)

exten => _X.,n,AGI(a2billing1_9.php,1)

exten => _X.,n,Hangup

[a2general-corp]

include => app-dialvm

exten => *97,1,Answer()

exten => *97,n,VoiceMailMain(${CALLERID(num)}@default)

exten => *97,n,Hangup()

exten => _X.,1,Noop(${EXTEN})

exten => _X.,n,Wait(1)

exten => _X.,n,AGI(a2billing1_9.php,2)

exten => _X.,n,Hangup


[a2general-resd]

include => app-dialvm

exten => *97,1,Answer()

exten => *97,n,VoiceMailMain(${CALLERID(num)}@default)

exten => *97,n,Hangup()

exten => _X.,1,Noop(${EXTEN})

exten => _X.,n,Wait(1)

exten => _X.,n,AGI(a2billing1_9.php,4)

exten => _X.,n,Hangup

[a2billing-did]

include => app-dialvm

exten => *97,1,Answer()

exten => *97,n,VoiceMailMain(${CALLERID(num)}@default)

exten => *97,n,Hangup()

exten => _X.,1,Noop(${EXTEN})

exten => _X.,n,Wait(1)

exten => _X.,n,AGI(a2billing1_9.php,5,did)

exten => _X.,n,Voicemail(1{EXTEN},b)

exten => _X.,n,Hangup()

[a2general-1901]

exten => _1901.,1,Noop(${EXTEN})

exten => _1901.,n,Wait(1)


exten => _1901.,n,AGI(a2billing1_9.php,6)

exten => _1901.,n,Hangup

[a2billing-call]

include => a2general-call1sec

[a2billing-corp]

include => a2general-corp

[a2billing-resd]

include => a2general-resd

[a2billing-1901]

exten => s,1,NoOp(${CALLERID})

exten => s,n,GotoIf($["${CALLERID(num):0:4}" = "1901"]?a2general-1901,_1901.,1:a2billing-


did,*97,1)

exten => _1901.,1,Noop(${EXTEN})

exten => _1901.,n,Wait(1)

exten => _1901.,n,AGI(a2billing1_9.php,3)

exten => _1901.,n,Hangup

exten => _7021[1-8]XX,1,Dial(SIP/1${EXTEN}@voip.yachay.pe)

exten => _7021[1-8]XX,n,Voicemail(1${EXTEN},u)

exten => _7021[1-8]XX,n,Hangup

exten => _7023[6-9]XX,1,Dial(SIP/1${EXTEN}@voip.yachay.pe)

exten => _7023[6-9]XX,n,Voicemail(1${EXTEN},u)

exten => _7023[6-9]XX,n,Hangup

exten => _7027[1-8]XX,1,Dial(SIP/1${EXTEN}@voip.yachay.pe)

exten => _7027[1-8]XX,n,Voicemail(1${EXTEN},u)


exten => _7027[1-8]XX,n,Hangup

/etc/asterisk/sip_custom.conf

[sip_server_in-2]

type=friend

dtmfmode=RFC2833

host=161.132.32.214

canreinvite=no

context=a2billing-1901 ; Llamada se envia a este contexto en extensions.conf

insecure=very

nat=no

allow=all

[img]

disallow=all

type=friend

host=161.132.14.7

canreinvite=no

allow=all

nat=never

insecure=port,invite,very

qualify=yes

context=from-trunk-sip-img

[omega-movil]

disallow=all

type=peer

host=161.132.32.4

canreinvite=no

allow=all

qualify=2000
dtmfmode=rfc2833

context=from-trunk-sip-omega-movil

You might also like