当前位置: 首页 > 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 访问用户的场景。通过灵活的配置和函数,可以实现高效的别名查找和替换功能。

相关文章:

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 外…...

【机器学习】自定义数据集 使用pytorch框架实现逻辑回归并保存模型,然后保存模型后再加载模型进行预测,对预测结果计算精确度和召回率及F1分数

一、使用pytorch框架实现逻辑回归 1. 数据部分: 首先自定义了一个简单的数据集,特征 X 是 100 个随机样本,每个样本一个特征,目标值 y 基于线性关系并添加了噪声。将 numpy 数组转换为 PyTorch 张量,方便后续在模型中…...

Spring Boot - 数据库集成06 - 集成ElasticSearch

Spring boot 集成 ElasticSearch 文章目录 Spring boot 集成 ElasticSearch一:前置工作1:项目搭建和依赖导入2:客户端连接相关构建3:实体类相关注解配置说明 二:客户端client相关操作说明1:检索流程1.1&…...

Java篇之继承

目录 一. 继承 1. 为什么需要继承 2. 继承的概念 3. 继承的语法 4. 访问父类成员 4.1 子类中访问父类的成员变量 4.2 子类中访问父类的成员方法 5. super关键字 6. super和this关键字 7. 子类构造方法 8. 代码块的执行顺序 9. protected访问修饰限定符 10. 继承方式…...

32. C 语言 安全函数( _s 尾缀)

本章目录 前言什么是安全函数?安全函数的特点主要的安全函数1. 字符串操作安全函数2. 格式化输出安全函数3. 内存操作安全函数4. 其他常用安全函数 安全函数实例示例 1:strcpy_s 和 strcat_s示例 2:memcpy_s示例 3:strtok_s 总结 …...

ArkTS编程规范

文章目录 目标和适用范围规则来源章节概览代码风格编程实践 术语和定义总体原则命名类名、枚举名、命名空间名采用UpperCamelCase风格变量名、方法名、参数名采用lowerCamelCase风格常量名、枚举值名采用全部大写,单词间使用下划线隔开避免使用否定的布尔变量名&…...

SQL进阶实战技巧:断点去重技术详解

目录 一、核心概念 二、典型应用场景 三、实现步骤与SQL示例 场景 目标 步骤 分析 结果 四、核心原理解释 1. 核心原理:相邻比较 2. 去重的本质 3. 与传统方法的对比 4 类别理解 五、如何应对复杂场景? 1. 多字段断点检测 2. 时间窗口断点 …...

深度学习之“向量范数和距离度量”

在深度学习中,范数和向量距离是两个不同的概念。向量范数是一种函数,用于将一个实数或复数向量映射为一个值。虽然范数通常用于度量向量之间的距离,但是同样也有其它的一些表示距离的方式。 范数距离 范数是具有“长度”概念的函数。在向量…...

基于Python的简单企业维修管理系统的设计与实现

以下是一个基于Python的简单企业维修管理系统的设计与实现,这里我们会使用Flask作为Web框架,SQLite作为数据库来存储相关信息。 1. 需求分析 企业维修管理系统主要功能包括: 维修工单的创建、查询、更新和删除。设备信息的管理。维修人员…...

javascript常用函数大全

javascript函数一共可分为五类: •常规函数 •数组函数 •日期函数 •数学函数 •字符串函数 1.常规函数 javascript常规函数包括以下9个函数: (1)alert函数:显示一个警告对话框,包括一个OK按钮。 (2)confirm函数:显…...

【Leetcode 每日一题】81. 搜索旋转排序数组 II

问题背景 已知存在一个按非降序排列的整数数组 n u m s nums nums&#xff0c;数组中的值不必互不相同。 在传递给函数之前&#xff0c; n u m s nums nums 在预先未知的某个下标 k ( 0 < k < n u m s . l e n g t h ) k\ (0 < k < nums.length) k (0<k<…...

< OS 有关 > Android 手机 SSH 客户端 app: connectBot

connectBot 开源且功能齐全的SSH客户端,界面简洁,支持证书密钥。 下载量超 500万 方便在 Android 手机上&#xff0c;连接 SSH 服务器&#xff0c;去运行命令。 Fail2ban 12小时内抓获的 IP ~ ~ ~ ~ rootjpn:~# sudo fail2ban-client status sshd Status for the jail: sshd …...

【算法设计与分析】实验7:复杂装载及0/1背包问题的回溯法设计与求解

目录 一、实验目的 二、实验环境 三、实验内容 四、核心代码 五、记录与处理 六、思考与总结 七、完整报告和成果文件提取链接 一、实验目的 针对复杂装载问题、及0/1背包问题开展分析、建模、评价&#xff0c;算法设计与优化&#xff0c;并进行编码实践。 理解复杂装载…...

仿真设计|基于51单片机的温湿度、一氧化碳、甲醛检测报警系统

目录 具体实现功能 设计介绍 51单片机简介 资料内容 仿真实现&#xff08;protues8.7&#xff09; 程序&#xff08;Keil5&#xff09; 全部内容 资料获取 具体实现功能 &#xff08;1&#xff09;温湿度传感器、CO传感器、甲醛传感器实时检测温湿度值、CO值和甲醛值进…...

使用vhd虚拟磁盘安装两个win10系统

使用vhd虚拟磁盘安装两个win10系统 前言vhd虚拟磁盘技术简介准备工具开始动手实践1.winX选择磁盘管理2.选择“操作”--“创建VHD”3.自定义一个位置&#xff0c;输入虚拟磁盘大小4.右键初始化磁盘5.选择GPT分区表格式6.右键新建简单卷7.给卷起个名字&#xff0c;用于区分8.打开…...

Python学习——函数参数详解

Python中的函数参数传递机制允许多种灵活的参数类型&#xff0c;可以根据需求灵活配置参数&#xff0c;这使得函数具有更强大的扩展性和适应性。以下是对各类参数类型的详细说明&#xff1a; 1. 定义函数的不同参数类型 1.1 位置参数 定义方式&#xff1a;def func(a, b2) 特…...

深入理解Spring事务管理

一、事务基础概念 1.1 什么是事务&#xff1f; 事务&#xff08;Transaction&#xff09;是数据库操作的最小工作单元&#xff0c;具有ACID四大特性&#xff1a; 原子性&#xff08;Atomicity&#xff09;&#xff1a;事务中的操作要么全部成功&#xff0c;要么全部失败 一致…...

自制虚拟机(C/C++)(二、分析引导扇区,虚拟机读二进制文件img软盘)

先修复上一次的bug&#xff0c;添加新指令&#xff0c;并增加图形界面 #include <graphics.h> #include <conio.h> #include <windows.h> #include <commdlg.h> #include <iostream> #include <fstream> #include <sstream> #inclu…...

基于最近邻数据进行分类

人工智能例子汇总:AI常见的算法和例子-CSDN博客 完整代码: import torch import numpy as np from sklearn.neighbors import KNeighborsClassifier from sklearn.metrics import accuracy_score import matplotlib.pyplot as plt# 生成一个简单的数据集 (2个特征和2个分类…...

ASP.NET Core 启动并提供静态文件

ASP.NET Core 启动并提供静态文件 即是单个可执行文件&#xff0c;它既运行 API 项目&#xff0c;也托管 前端项目&#xff08;通常是前端的发布文件&#xff09;。 这种方式一般是通过将 前端项目 的发布文件&#xff08;例如 HTML、CSS、JavaScript&#xff09;放入 Web AP…...

【异步编程】CompletableFuture:异步任务的选择(执行最快的)执行

文章目录 一. applyToEither : 拿到第一个任务结束的结果二. runAfterEither &#xff1a;第一个任务完成后执行副作用三. acceptEither&#xff1a;消费第一个任务的结果四. 三种接口总结 对于两个异步任务&#xff0c;我们有时希望在其中一个任务完成时立即执行某些操作&…...

4 [危机13小时追踪一场GitHub投毒事件]

事件概要 自北京时间 2024.12.4 晚间6点起&#xff0c; GitHub 上不断出现“幽灵仓库”&#xff0c;仓库中没有任何代码&#xff0c;只有诱导性的病毒文件。当天&#xff0c;他们成为了 GitHub 上 star 增速最快的仓库。超过 180 个虚假僵尸账户正在传播病毒&#xff0c;等待不…...

变量和常量

一.变量 1.标准声明 var 变量名 变量类型 变量声明行末不需要分号 2..批量声明 package main import "fmt" func main(){var(a string b int c boold float32)}3.变量的初始化 var a int 10 var b float321.1 4.类型推导 var name"tom" var age18 fmt.Pr…...

大模型概述(方便不懂技术的人入门)

1 大模型的价值 LLM模型对人类的作用&#xff0c;就是一个百科全书级的助手。有多么地百科全书&#xff0c;则用参数的量来描述&#xff0c; 一般地&#xff0c;大模型的参数越多&#xff0c;则该模型越好。例如&#xff0c;GPT-3有1750亿个参数&#xff0c;GPT-4可能有超过1万…...

流浪 Linux: 外置 USB SSD 安装 ArchLinux

注: ArchLinux 系统为滚动更新, 变化很快, 所以本文中的安装方法可能很快就过时了, 仅供参考. 实际安装时建议去阅读官方文档. 最近, 突然 (也没有那么突然) 有了一大堆 PC: 4 个笔记本, 2 个台式主机 (M-ATX 主板), 1 个小主机 (迷你主机). 嗯, 多到用不过来. 但是, 窝又不能…...

Hot100之子串

560和为K的子数组 题目 给你一个整数数组 nums 和一个整数 k &#xff0c;请你统计并返回 该数组中和为 k 的子数组的个数 。 子数组是数组中元素的连续非空序列 思路解析 ps&#xff1a;我们的presum【0】就是0&#xff0c;如果没有这个0的话我们的第一个元素就无法减去上…...

网络工程师 (11)软件生命周期与开发模型

一、软件生命周期 前言 软件生命周期&#xff0c;也称为软件开发周期或软件开发生命周期&#xff0c;是指从软件项目的启动到软件不再被使用为止的整个期间。这个过程可以细分为多个阶段&#xff0c;每个阶段都有其特定的目标、任务和产出物。 1. 问题定义与需求分析 问题定义…...

(三)QT——信号与槽机制——计数器程序

目录 前言 信号&#xff08;Signal&#xff09;与槽&#xff08;Slot&#xff09;的定义 一、系统自带的信号和槽 二、自定义信号和槽 三、信号和槽的扩展 四、Lambda 表达式 总结 前言 信号与槽机制是 Qt 中的一种重要的通信机制&#xff0c;用于不同对象之间的事件响…...

从0开始使用面对对象C语言搭建一个基于OLED的图形显示框架(基础图形库实现)

目录 基础图形库的抽象 抽象图形 抽象点 设计我们的抽象 实现我们的抽象 测试 抽象线 设计我们的抽象 实现我们的抽象 绘制垂直的和水平的线 使用Bresenham算法完成任意斜率的绘制 绘制三角形和矩形 矩形 三角形 实现 绘制圆&#xff0c;圆弧和椭圆 继续我们的…...

hot100_21. 合并两个有序链表

将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例 1&#xff1a; 输入&#xff1a;l1 [1,2,4], l2 [1,3,4] 输出&#xff1a;[1,1,2,3,4,4] 示例 2&#xff1a; 输入&#xff1a;l1 [], l2 [] 输出&#xff1a;[…...