当前位置: 首页 > article >正文

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


目录

  1. 管理员指南
    1. 概述
    2. 依赖
      2.1 Kamailio 模块
      2.2 外部库或应用程序
    3. 参数
      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. 函数
      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_ROUTEFAILURE_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_ROUTEBRANCH_ROUTELOCAL_ROUTESTARTUP_ROUTEFAILURE_ROUTEONREPLY_ROUTE 中使用。

示例 1.10. alias_db_find() 使用示例

# 执行反向别名查找并查找 FROM URI 的别名
alias_db_find("dbaliases", "$fu", "$avp(from_alias)", "r");

总结

ALIAS_DB 模块提供了一种基于数据库的用户别名管理方式,适用于需要通过多个 URI 访问用户的场景。通过灵活的配置和函数,可以实现高效的别名查找和替换功能。


http://www.kler.cn/a/530091.html

相关文章:

  • C#面试常考随笔9:什么是闭包?
  • 个人笔记(很没营养,纯备忘录)
  • Kafka SASL/SCRAM介绍
  • 5.4.2 结构化设计方法+结构化程序设计方法
  • Shell特殊状态变量以及常用内置变量总结
  • 【Numpy核心编程攻略:Python数据处理、分析详解与科学计算】1.27 线性代数王国:矩阵分解实战指南
  • 蓝桥杯备考:六大排序算法
  • Hive重点面试题
  • #define,源文件与头文件,赋值表达式
  • Java项目: 基于SpringBoot+mybatis+maven+mysql实现的疾病防控综合管理系统(含源码+数据库+毕业论文)
  • springboot中路径默认配置与重定向/转发所存在的域对象
  • react注意事项
  • 6 [新一代Github投毒针对网络安全人员钓鱼]
  • 【JDBC】数据库连接的艺术:深入解析数据库连接池、Apache-DBUtils与BasicDAO
  • 双指针算法思想——OJ例题扩展算法解析思路
  • 悬浮按钮和可交互提示的使用
  • 设计数据库表会考虑哪些内容?
  • 文字投影效果
  • C++ Primer 命名空间的using声明
  • 2025最新在线模型转换工具onnx转换ncnn,mnn,tengine等
  • mysql死锁排查_mysql 死锁问题排查
  • 解密全同态加密中的自举(Bootstrapping)
  • CKA 不假题 练习笔记 (四)
  • 80-《红球姜》
  • 在实际开发中,如何正确使用 INT(1) 和 INT(10)
  • 动态规划学习