模块测试"/>
Kamailio mangler模块测试
# Kamailio mangler模块测试
mangler是一个很老的模块,可以修改`sdp`,可以修改和恢复`contact`头
## 修改`sdp`
Kamailio Native 路由示例:
```cfg
sdp_mangle_ip("192.168.0.0/16"/*私网地址*/, "113.113.113.113"/*公网地址*/);
route[LOCATION];
...
```
这是进来的sdp:
```sdp
v=0
o=- 6 2 IN IP4 192.168.100.172
s=-
c=IN IP4 192.168.100.172
t=0 0
m=audio 45742 RTP/AVP 0 8 18 101
a=fmtp:18 annexb=no
a=fmtp:101 0-15
a=rtpmap:18 G729/8000
a=rtpmap:101 telephone-event/8000
a=sendrecv
a=x-rtp-session-id:680CAB49531344A3AE049DFDAAE4292B
```
修改之后成这样:
```sdp
v=0
o=- 6 2 IN IP4 192.168.100.172
s=-
c=IN IP4 113.113.113.113 # 更换成公网地址
t=0 0
m=audio 45642 RTP/AVP 0 8 18 101
a=fmtp:18 annexb=no
a=fmtp:101 0-15
a=rtpmap:18 G729/8000
a=rtpmap:101 telephone-event/8000
a=sendrecv
a=x-rtp-session-id:680CAB49531344A3AE049DFDAAE4292B
```
## 修改`contact`头
Kamailio Native 路由示例:
```cfg
encode_contact("enc_prefix", "113.113.113.113"/*公网地址*/)
route[LOCATION];
...
```
这是进来的`contact`头`:
```
Contact: <sip:1001@192.168.100.172:36938>
```
修改之后成这样:
```
Contact: <sip:enc_prefix*1001**192.168.100.172*36938**192.168.100.172*36938*@113.113.113.113>
```
按这个公式进行变换`sip:enc_pref*username*ip*port*protocol@public_ip`,目的主要是为了增加公网地址,以便后续的sip交互
`decode_contact`跟`encode_contact`正好反过来,为了节省篇幅不再举例了
## 简评
`sdp_mangle_ip`还有点作用,但`encode_contact`跟`nathelper`模块的`add_contact_alias`作用比较类似,个人觉得这个函数作用不大
更多推荐
Kamailio mangler模块测试
发布评论