Kamailio mangler模块测试

news/2024/7/24 7:01:29 标签: kamailio sdp修改

# 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`作用比较类似,个人觉得这个函数作用不大
 


http://www.niftyadmin.cn/n/5133582.html

相关文章

论文写作框架示例:论软件系统建模方法及其应用

标题 前言题目要求写作框架(1)摘要(300~330字)(2)正文(2000~2500字,2200字左右为宜)(3)收尾(200字左右)前言 本章内容参考了51cto的薛老师的《软考论文高分特训与范文10篇》的内容,是帮助初学者打开写作思路的工具,而不是必须要遵循的模式。建议软考人多读多看…

QT mqtt 在子线程中使用

qtmqtt 在子线程中使用_qt在子线程里mqtt无法new-CSDN博客文章浏览阅读524次。解决问题&#xff1a;QMqttClient - connection not made from another thread在qt中使用多线的qtmqtt客户端发送接收数据_qt在子线程里mqtt无法newhttps://blog.csdn.net/qq_35708970/article/deta…

C字符串函数内存函数的模拟实现和理解

目录 1. 字符串操作函数 1.1. 求字符串长度 1.1.1. strlen 1.2. 长度不受限制的函数 1.2.1. strcpy 1.2.2. strcat 1.2.3. strcmp 1.3. 长度受到限制的字符串函数 1.3.1. strncpy 1.3.2. strncat 1.3.3. strncmp 1.4. 字符串查找函数 1.4.1. strstr 1.4.2. strto…

[毕设记录]@开题调研:外文博客搬运整理

搜college chatbot 好像比搜 university chatbot能搜出来的东西更多哈哈 我感觉&#xff0c;AI时代&#xff0c;粗看这种博客比较高效的方式是&#xff0c;用翻译插件迅速概览中文&#xff0c;然后复制给gpt让它总结要点&#xff0c;然后再去看重点部分的原文 文章目录 blog1&a…

【Git】HEAD detached from xxx 问题及解决方案

问题背景 最近用git的时候遇到了一个问题&#xff0c;场景是这样的。 我有一个分支main&#xff0c;其中有两个commit A和B&#xff0c;A是最新commit&#xff0c;B是历史commit。我先切到B看了看之前的代码&#xff0c;然后切到A&#xff0c;并进行了一些代码修改&#xff0…

【Java 进阶篇】在Java Web应用中实现请求数据的共享:域对象详解

在Java Web应用中&#xff0c;处理请求时常常需要在不同的Servlet之间共享数据。为了实现数据的共享和传递&#xff0c;Java提供了域对象的概念&#xff0c;包括请求域&#xff08;Request域&#xff09;、会话域&#xff08;Session域&#xff09;和应用域&#xff08;Applica…

【大数据Hive】hive 表数据优化使用详解

目录 一、前言 二、hive 常用数据存储格式 2.1 文件格式-TextFile 2.1.1 操作演示 2.2 文件格式 - SequenceFile 2.2.1 操作演示 2.3 文件格式 -Parquet 2.3.1 Parquet简介 2.3.2 操作演示 2.4 文件格式-ORC 2.4.1 ORC介绍 2.4.2 操作演示 三、hive 存储数据压缩优…

Docker:数据卷挂载

Docker&#xff1a;数据卷挂载 1. 数据卷2. 数据卷命令补充 1. 数据卷 数据卷(volume)是一个虚拟目录&#xff0c;是容器内目录与宿主机目录之间映射的桥梁。 Nginx容器有自己独立的目录(Docker为每个镜像创建一个独立的容器,每个容器都是基于镜像创建的运行实例)&#xff0c;…