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:
```

修改之后成这样:

```
Contact:
```

按这个公式进行变换`sip:enc_pref*username*ip*port*protocol@public_ip`,目的主要是为了增加公网地址,以便后续的sip交互

`decode_contact`跟`encode_contact`正好反过来,为了节省篇幅不再举例了

## 简评

`sdp_mangle_ip`还有点作用,但`encode_contact`跟`nathelper`模块的`add_contact_alias`作用比较类似,个人觉得这个函数作用不大
 

你可能感兴趣的:(Kamailio,kamailio,sdp修改)