广告 《大道至简,给所有人看的编程课》 🔥

《FreeSWITCH案例大全》

1.3 IP对接ACL

Seven

在《FreeSWITCH互联互通》中讲过很多IP对接方式,但在实际环境中,对IP也需要认证,也就是说,你不仅知道哪些IP是可信的,更需要将这些IP关联到一个用户,以便对其进行计费、审计等。

其实FreeSWITCH中已经有这样的认证机制。在用户目录中创建一个特殊用户,如,假设你的客户是seven

<include>
    <user id="seven" cidr="192.168.3.119/32">
        <params>
        </params>
        <variables>
            <variable name="accountcode" value="seven"/>
            <variable name="user_context" value="default"/>
            <variable name="effective_caller_id_name" value="seven"/>
            <variable name="effective_caller_id_number" value="seven"/>
        </variables>
    </user>
</include>

上述配置跟一般用户配置的区别就是多了一个cidr属性。CIDR是一种IP地址的表示方式,格式是“IP/掩码位数”,上述表示仅表示一个IP地址,如果写成“192.168.3.119/24”则表示整个“192.168.3.0”地址段。

配置好以后,在FreeSWITCH中执行reloadacl,你可以看到类似以下的输出:

[NOTICE] switch_utils.c:545 Adding 192.168.3.119/32 (allow) [seven@192.168.3.119] to list domains

打个电话试试,所有来自“192.168.3.119”这个地址的呼叫都认为是seven发起的呼叫,不再进行Challenge验证:

[DEBUG] sofia.c:9715 IP 192.168.3.119 Approved by acl "domains[seven@192.168.3.119]". Access Granted.

当然,如果你想让对方透传主、被叫号码,只需把effective_caller_id_name/number注释掉就可以了。此外,你还可以将user_context设置成其它的值,让它走专门的路由(Dialplan Context)。

SIP对接,就是这么简单。



本书版权所有 © 杜金房及各位贡献者 2016-2023,仅供在线阅读,谢绝一切形式转载。 本书还在写作中,持续更新。 如果你也想写上几句,欢迎加入我们。 | 返回首页 |