самое интересное в диалплане
Код: Выделить всё
<extension name="160415">
<X-PRE-PROCESS cmd="include" data="include/allow_ip.xml"/>
<!-- check, how many matches -->
<condition regex="any" break="never">
<regex field="${my_count}" expression="^24$"/>
<action application="hangup" data="NORMAL_TEMPORARY_FAILURE"/>
</condition>
<condition field="destination_number" expression="^0415#7(\d+)$">
<action application="set" data="my_count=${expr(1+${my_count})}"/>
<action application="set" data="bypass_media=false"/>
<action application="set" data="proxy_media=true"/>
<!-- это опция необходима для того что бы by посылался на корректный ip, без нее почему то by шлет на внутренний ip клиента-->
<action application="set" data="sip-force-contact=NDLB-connectile-dysfunction"/>
<action application="set" data="hangup_after_bridge=true"/>
<action application="set" data="goip=${distributor(160415)}"/>
<action application="set" data="userfield=${goip}"/>
<!-- https://wiki.freeswitch.org/wiki/Hangup_Causes 606-USER_NOT_REGISTERED | 42 SWITCH_CONGESTION -->
<action application="set" data="continue_on_fail=42,606"/>
<!-- <action application="log" data="WARNING call befor limit, ${1} from ${caller_id_number}"/> -->
<action application="limit" data="hash ${domain} ${goip} 1/1 !NORMAL_TEMPORARY_FAILURE"/>
<action application="limit" data="hash ${domain} ${goip} 1 !NORMAL_TEMPORARY_FAILURE"/>
<action application="log" data="WARNING domain: sip:${goip}8$1@${sip_to_host}"/>
<!-- издеваемся над sip заголовком, без этого работать не будет -->
<action application="bridge" data="{sip_invite_req_uri=sip:${goip}8$1@${sip_to_host},sip_cid_type=none}sofia/goip/${goip}"/>
<action application="log" data="WARNING domain: ${domain} | goip_line: ${goip} |my_count: ${my_count}"/>
<action application="transfer" data="${destination_number}"/>
</condition>
</extension>
файл - включенный includ`ом, в котором разрешаем invite с конкретных IP.
Код: Выделить всё
cat /etc/freeswitch/dialplan/public/include/allow_ip.xml
<condition regex="any">
<regex field="network_addr" expression="^1\.2\.3\.4$"/>
<regex field="network_addr" expression="^5\.6\.7\.8$"/>
</condition>