makailio-alias_db模块详解
ALIAS_DB 模块
作者
Daniel-Constantin Mierla
miconda@gmail.com
Elena-Ramona Modroiu
ramona@asipto.com
编辑
Daniel-Constantin Mierla
miconda@gmail.com
版权
© 2005 Voice Sistem SRL
© 2008 asipto.com
目录
- 管理员指南
- 概述
- 依赖
2.1 Kamailio 模块
2.2 外部库或应用程序 - 参数
3.1 db_url(字符串)
3.2 user_column(字符串)
3.3 domain_column(字符串)
3.4 alias_user_column(字符串)
3.5 alias_domain_column(字符串)
3.6 use_domain(整数)
3.7 domain_prefix(字符串)
3.8 append_branches(整数) - 函数
4.1 alias_db_lookup(table_name[, flags])
4.2 alias_db_find(table_name, input, output[, flags])
1. 概述
ALIAS_DB 模块可以作为用户别名的一种替代方案,与 usrloc
模块不同。其主要特点是它不会像用户位置数据那样存储所有相关数据,而是始终使用数据库进行查找(无内存缓存)。常见的用例是提供额外的用户别名,即补充位置数据库中的注册信息。这样,用户可以通过多个请求 URI 在代理服务器上被访问。
由于该模块不使用内存缓存,查找速度稍慢,但数据配置更简单。对于像 MySQL 这样的快速数据库,速度损失可以降低。此外,查找可以在同一脚本中的不同表上执行。
2. 依赖
2.1 Kamailio 模块
以下模块必须在此模块之前加载:
- 数据库模块(如 mysql、dbtext 等)。
2.2 外部库或应用程序
无。
3. 参数
3.1 db_url(字符串)
数据库 URL。
默认值为 mysql://kamailioro:kamailioro@localhost/kamailio
。
示例 1.1. 设置 db_url 参数
modparam("alias_db", "db_url", "dbdriver://username:password@dbhost/dbname")
3.2 user_column(字符串)
存储用户名的列名。
默认值为 username
。
示例 1.2. 设置 user_column 参数
modparam("alias_db", "user_column", "susername")
3.3 domain_column(字符串)
存储用户域的列名。
默认值为 domain
。
示例 1.3. 设置 domain_column 参数
modparam("alias_db", "domain_column", "sdomain")
3.4 alias_user_column(字符串)
存储别名用户名的列名。
默认值为 alias_username
。
示例 1.4. 设置 alias_user_column 参数
modparam("alias_db", "alias_user_column", "auser")
3.5 alias_domain_column(字符串)
存储别名域的列名。
默认值为 alias_domain
。
示例 1.5. 设置 alias_domain_column 参数
modparam("alias_db", "alias_domain_column", "adomain")
3.6 use_domain(整数)
指定在查找别名时是否使用 R-URI 中的域。如果设置为 0,则不使用 R-URI 中的域;如果设置为 1,则使用 R-URI 中的域。
默认值为 0
。
示例 1.6. 设置 use_domain 参数
modparam("alias_db", "use_domain", 1)
3.7 domain_prefix(字符串)
指定在查找之前从 R-URI 的域中剥离的前缀。
默认值为 NULL
。
示例 1.7. 设置 domain_prefix 参数
modparam("alias_db", "domain_prefix", "sip.")
3.8 append_branches(整数)
如果别名解析为多个 SIP ID,第一个替换 R-URI,其余的作为分支添加。
默认值为 0
(0 - 不添加分支;1 - 添加分支)。
示例 1.8. 设置 append_branches 参数
modparam("alias_db", "append_branches", 1)
4. 函数
4.1 alias_db_lookup(table_name[, flags])
该函数获取 R-URI 并检查它是否是别名。如果是本地用户的别名,则将 R-URI 替换为用户的 SIP URI。
返回值:
如果 R-URI 是别名且已替换为用户的 SIP URI,则返回 TRUE
。
参数说明:
table_name
:要查找别名的表名。可以包含伪变量。flags
(可选):用于控制别名查找过程的标志(基于字符的标志):d
:在别名查找查询中不使用域部分(仅使用基于用户名的查找)。默认情况下,同时使用用户名和域。r
:执行反向别名查找——查找当前 URI 映射的别名(URI 到别名转换);通常,函数查找别名映射的 URI(别名到 URI 转换)。u
:在别名查找查询中使用域部分。默认取决于模块参数use_domain
。
使用范围:
可以在 REQUEST_ROUTE
和 FAILURE_ROUTE
中使用。
示例 1.9. alias_db_lookup() 使用示例
alias_db_lookup("dbaliases", "rd");
alias_db_lookup("dba_$(rU{s.substr,0,1})");
4.2 alias_db_find(table_name, input, output[, flags])
该函数与 alias_db_lookup()
非常相似,但它能够从伪变量中获取输入的 SIP URI,并将结果放回伪变量中,而不是使用固定的输入(RURI)和输出(RURI)。
该函数很有用,因为别名查找不会影响请求本身(不会更改 RURI),可以在回复上下文中使用(因为它不仅适用于 RURI),并且可以用于其他 URI(如 To URI、From URI、自定义 URI)。
返回值:
如果找到并返回了任何别名映射,则返回 TRUE
。
参数说明:
table_name
:任何伪变量(字符串或伪变量或混合),表示要查找别名的表名。input
:任何伪变量(字符串或伪变量或混合),表示需要查找的 SIP URI。output
:伪变量(AVP 或脚本变量),用于存储别名查找结果的 SIP URI。flags
(可选):用于控制别名查找过程的标志(基于字符的标志):d
:在别名查找查询中不使用域部分(仅使用基于用户名的查找)。默认取决于模块参数use_domain
。r
:执行反向别名查找——查找当前 URI 映射的别名(URI 到别名转换);通常,函数查找别名映射的 URI(别名到 URI 转换)。u
:在别名查找查询中使用域部分。默认取决于模块参数use_domain
。
使用范围:
可以在 REQUEST_ROUTE
、BRANCH_ROUTE
、LOCAL_ROUTE
、STARTUP_ROUTE
、FAILURE_ROUTE
和 ONREPLY_ROUTE
中使用。
示例 1.10. alias_db_find() 使用示例
# 执行反向别名查找并查找 FROM URI 的别名
alias_db_find("dbaliases", "$fu", "$avp(from_alias)", "r");
总结
ALIAS_DB 模块提供了一种基于数据库的用户别名管理方式,适用于需要通过多个 URI 访问用户的场景。通过灵活的配置和函数,可以实现高效的别名查找和替换功能。
相关文章:
makailio-alias_db模块详解
ALIAS_DB 模块 作者 Daniel-Constantin Mierla micondagmail.com Elena-Ramona Modroiu ramonaasipto.com 编辑 Daniel-Constantin Mierla micondagmail.com 版权 © 2005 Voice Sistem SRL © 2008 asipto.com 目录 管理员指南 概述依赖 2.1 Kamailio 模块 2.2 外…...

文字显示省略号
多行文本溢出显示省略号...

[LeetCode] 字符串完整版 — 双指针法 | KMP
字符串 基础知识双指针法344# 反转字符串541# 反转字符串II54K 替换数字151# 反转字符串中的单词55K 右旋字符串 KMP 字符串匹配算法28# 找出字符串中第一个匹配项的下标#459 重复的子字符串 基础知识 字符串的结尾:空终止字符00 char* name "hello"; …...
从零开始部署Dify:后端与前端服务完整指南
从零开始部署Dify:后端与前端服务完整指南 一、环境准备1. 系统要求2. 项目结构 二、后端服务部署1. 中间件启动(Docker Compose)2. 后端环境配置3. 依赖安装与数据库迁移4. 服务启动 三、前端界面搭建1. 环境配置2. 服务启动 四、常见问题排…...
springboot中路径默认配置与重定向/转发所存在的域对象
Spring Boot 是一种简化 Spring 应用开发的框架,它提供了多种默认配置和方便的开发特性。在 Web 开发中,路径配置和请求的重定向/转发是常见操作。本文将详细介绍 Spring Boot 中的路径默认配置,并解释重定向和转发过程中存在的域对象。 一、…...

二叉树——429,515,116
今天继续做关于二叉树层序遍历的相关题目,一共有三道题,思路都借鉴于最基础的二叉树的层序遍历。 LeetCode429.N叉树的层序遍历 这道题不再是二叉树了,变成了N叉树,也就是该树每一个节点的子节点数量不确定,可能为2&a…...
Leetcode 3444. Minimum Increments for Target Multiples in an Array
Leetcode 3444. Minimum Increments for Target Multiples in an Array 1. 解题思路2. 代码实现 题目链接:3444. Minimum Increments for Target Multiples in an Array 1. 解题思路 这一题我的思路上就是一个深度优先遍历,考察target数组当中的每一个…...

分享半导体Fab 缺陷查看系统,平替klarity defect系统
分享半导体Fab 缺陷查看系统,平替klarity defect系统;开发了半年有余。 查看Defect Map,Defect image,分析Defect size,defect count trend. 不用再采用klarity defect系统(license 太贵) 也可以…...

Java基础——分层解耦——IOC和DI入门
目录 三层架构 Controller Service Dao 编辑 调用过程 面向接口编程 分层解耦 耦合 内聚 软件设计原则 控制反转 依赖注入 Bean对象 如何将类产生的对象交给IOC容器管理? 容器怎样才能提供依赖的bean对象呢? 三层架构 Controller 控制…...

DeepSeek-R1 本地部署教程(超简版)
文章目录 一、DeepSeek相关网站二、DeepSeek-R1硬件要求三、本地部署DeepSeek-R11. 安装Ollama1.1 Windows1.2 Linux1.3 macOS 2. 下载和运行DeepSeek模型3. 列出本地已下载的模型 四、Ollama命令大全五、常见问题解决附:DeepSeek模型资源 一、DeepSeek相关网站 官…...

Vue3学习笔记-模板语法和属性绑定-2
一、文本插值 使用{ {val}}放入变量,在JS代码中可以设置变量的值 <template><p>{{msg}}</p> </template> <script> export default {data(){return {msg: 文本插值}} } </script> 文本值可以是字符串,可以是布尔…...

csapp笔记3.6节——控制(1)
本节解决了x86-64如何实现条件语句、循环语句和分支语句的问题 条件码 除了整数寄存器外,cpu还维护着一组单个位的条件码寄存器,用来描述最近的算数和逻辑运算的某些属性。可检测这些寄存器来执行条件分支指令。 CF(Carry Flag)…...
PYH与MAC的桥梁MII/MIIM
在学习车载互联网时,看到了一句话,Processor通过DMA直接存储访问与MAC之间进行数据的交互,MAC通过MII介质无关接口与PHY之间进行数据的交互。常见的以太网硬件结构是,将MAC集成进Processor芯片,将PHY留在Processor片外…...
国内flutter环境部署(记录篇)
设置系统环境变量 export PUB_HOSTED_URLhttps://pub.flutter-io.cn export FLUTTER_STORAGE_BASE_URLhttps://storage.flutter-io.cn使用以下命令下载flutter镜像 git clone -b stable https://mirror.ghproxy.com/https://github.com/<github仓库地址>#例如flutter仓…...

选择排序_75. 颜色分类
75. 颜色分类 - 力扣(LeetCode) 题目不追求稳定 可以选择选择排序 这是我没看教程代码之前写的 有点复杂了 我还把元素后移了 class Solution { public:void sortColors(vector<int>& nums) {int min_num_index -1;int min_num 3;for(int i…...

C++ Primer 标准库vector
欢迎阅读我的 【CPrimer】专栏 专栏简介:本专栏主要面向C初学者,解释C的一些基本概念和基础语言特性,涉及C标准库的用法,面向对象特性,泛型特性高级用法。通过使用标准库中定义的抽象设施,使你更加适应高级…...
C# 数组和列表的基本知识及 LINQ 查询
数组和列表的基本知识及 LINQ 查询 一、基本知识二、引用命名空间声明三、数组3.1、一维数组3.2、二维数组3.3、不规则数组 Jagged Array 四、列表 List4.1、一维列表4.2、二维列表 五、数组和列表使用 LINQ的操作和运算5.1、一维 LIST 删除所有含 double.NaN 的行5.2、一维 LI…...
大厂面试题备份20250201
20250201 面试策略 如果三面往后遇到传说中让人忍受不了的业余面试官,就舔着苟过去,入职大概率见不着他,但一二面遇到,反问环节就主动说不够match,让释放流程。 机器/深度学习 百面机器学习 5.4 通用CS 计算机网…...

w191教师工作量管理系统的设计与实现
🙊作者简介:多年一线开发工作经验,原创团队,分享技术代码帮助学生学习,独立完成自己的网站项目。 代码可以查看文章末尾⬇️联系方式获取,记得注明来意哦~🌹赠送计算机毕业设计600个选题excel文…...

Git 版本控制:基础介绍与常用操作
目录 Git 的基本概念 Git 安装与配置 Git 常用命令与操作 1. 初始化本地仓库 2. 版本控制工作流程 3. 分支管理 4. 解决冲突 5. 回退和撤销 6. 查看提交日志 前言 在软件开发过程中,开发者常常需要在现有程序的基础上进行修改和扩展。但如果不加以管理&am…...
线程与协程
1. 线程与协程 1.1. “函数调用级别”的切换、上下文切换 1. 函数调用级别的切换 “函数调用级别的切换”是指:像函数调用/返回一样轻量地完成任务切换。 举例说明: 当你在程序中写一个函数调用: funcA() 然后 funcA 执行完后返回&…...

DAY 47
三、通道注意力 3.1 通道注意力的定义 # 新增:通道注意力模块(SE模块) class ChannelAttention(nn.Module):"""通道注意力模块(Squeeze-and-Excitation)"""def __init__(self, in_channels, reduction_rat…...

HTML 列表、表格、表单
1 列表标签 作用:布局内容排列整齐的区域 列表分类:无序列表、有序列表、定义列表。 例如: 1.1 无序列表 标签:ul 嵌套 li,ul是无序列表,li是列表条目。 注意事项: ul 标签里面只能包裹 li…...
Linux云原生安全:零信任架构与机密计算
Linux云原生安全:零信任架构与机密计算 构建坚不可摧的云原生防御体系 引言:云原生安全的范式革命 随着云原生技术的普及,安全边界正在从传统的网络边界向工作负载内部转移。Gartner预测,到2025年,零信任架构将成为超…...

Python爬虫(一):爬虫伪装
一、网站防爬机制概述 在当今互联网环境中,具有一定规模或盈利性质的网站几乎都实施了各种防爬措施。这些措施主要分为两大类: 身份验证机制:直接将未经授权的爬虫阻挡在外反爬技术体系:通过各种技术手段增加爬虫获取数据的难度…...
Java编程之桥接模式
定义 桥接模式(Bridge Pattern)属于结构型设计模式,它的核心意图是将抽象部分与实现部分分离,使它们可以独立地变化。这种模式通过组合关系来替代继承关系,从而降低了抽象和实现这两个可变维度之间的耦合度。 用例子…...
C#学习第29天:表达式树(Expression Trees)
目录 什么是表达式树? 核心概念 1.表达式树的构建 2. 表达式树与Lambda表达式 3.解析和访问表达式树 4.动态条件查询 表达式树的优势 1.动态构建查询 2.LINQ 提供程序支持: 3.性能优化 4.元数据处理 5.代码转换和重写 适用场景 代码复杂性…...

解读《网络安全法》最新修订,把握网络安全新趋势
《网络安全法》自2017年施行以来,在维护网络空间安全方面发挥了重要作用。但随着网络环境的日益复杂,网络攻击、数据泄露等事件频发,现行法律已难以完全适应新的风险挑战。 2025年3月28日,国家网信办会同相关部门起草了《网络安全…...
在鸿蒙HarmonyOS 5中使用DevEco Studio实现企业微信功能
1. 开发环境准备 安装DevEco Studio 3.1: 从华为开发者官网下载最新版DevEco Studio安装HarmonyOS 5.0 SDK 项目配置: // module.json5 {"module": {"requestPermissions": [{"name": "ohos.permis…...

Web后端基础(基础知识)
BS架构:Browser/Server,浏览器/服务器架构模式。客户端只需要浏览器,应用程序的逻辑和数据都存储在服务端。 优点:维护方便缺点:体验一般 CS架构:Client/Server,客户端/服务器架构模式。需要单独…...