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

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

【AI】DeepSeek 概念/影响/使用/部署

在大年三十那天,不知道你是否留意到,“deepseek”这个词出现在了各大热搜榜单上。这引起了我的关注,出于学习的兴趣,我深入研究了一番,才有了这篇文章的诞生。 概念 那么,什么是DeepSeek?首先百…...

算法随笔_35: 每日温度

上一篇:算法随笔_34: 最后一个单词的长度-CSDN博客 题目描述如下: 给定一个整数数组 temperatures ,表示每天的温度,返回一个数组 answer ,其中 answer[i] 是指对于第 i 天,下一个更高温度出现在几天后。如果气温在这之后都不会升…...

人工智能入门课【手写自注意力机制】

原理 自注意力(Self-Attention)是一种强大的机制,广泛应用于自然语言处理、计算机视觉等领域,尤其是在Transformer架构中发挥了关键作用。它的核心思想是让模型能够动态地关注输入序列中不同位置之间的关系,从而更好地…...

记7(激活函数+多层神经网络+梯度下降法及其优化

目录 1、激活函数1.1、sigmoid函数:2端饱和,下面2个函数都要幂运算,运算速度会比较慢1.2、ReLU函数(Rectified Linear Unit,修正线性单元)1.3、PReLU函数(Parameteric Rectified Linear Unit&am…...

Qt u盘自动升级软件

Qt u盘自动升级软件 Chapter1 Qt u盘自动升级软件u盘自动升级软件思路:step1. 获取U盘 判断U盘名字是否正确, 升级文件是否存在。step2. 升级step3. 升级界面 Chapter2 Qt 嵌入式设备应用程序,通过U盘升级的一种思路Chapter3 在开发板上运行的…...

关于低代码技术架构的思考

我们经常会看到很多低代码系统的技术架构图,而且经常看不懂。是因为技术架构图没有画好,还是因为技术不够先进,有时候往往都不是。 比如下图: 一个开发者,看到的视角往往都是技术层面,你给用户讲React18、M…...

如何使用 ChatBox AI 简化本地模型对话操作

部署模型请看上一篇帖子:本地部署DeepSeek教程(Mac版本)-CSDN博客 使用 ChatBox AI 简化本地模型对话操作: 打开 ChatBox AI 官网:Chatbox AI官网:办公学习的AI好助手,全平台AI客户端&#xf…...

缩位求和——蓝桥杯

1.题目描述 在电子计算机普及以前,人们经常用一个粗略的方法来验算四则运算是否正确。 比如:248153720248153720 把乘数和被乘数分别逐位求和,如果是多位数再逐位求和,直到是 1 位数,得 24814>145 156 56 而…...

hexo部署到github page时,hexo d后page里面绑定的个人域名消失的问题

Hexo 部署博客到 GitHub page 后,可以在 setting 中的 page 中绑定自己的域名,但是我发现更新博客后绑定的域名消失,恢复原始的 githubio 的域名。 后面搜索发现需要在 repo 里面添加 CNAME 文件,内容为 page 里面绑定的域名&…...

neo4j入门

文章目录 neo4j版本说明部署安装Mac部署docker部署 neo4j web工具使用数据结构图数据库VS关系数据库 neo4j neo4j官网Neo4j是用ava实现的开源NoSQL图数据库。Neo4作为图数据库中的代表产品,已经在众多的行业项目中进行了应用,如:网络管理&am…...

代码随想录——回溯

文章目录 组合组合总数电话号码的字母组合组合总数组合总数Ⅱ分割回文串复原IP地址子集子集Ⅱ非递减子序列去重的实现方法方法 1:**排序 跳过重复元素**方法 2:**使用哈希表或数组记录已使用的数字** 去重的完整示例总结本题代码 全排列全排列Ⅱ重新安排…...

独立游戏RPG回顾:高成本

刚看了某纪录片, 内容是rpg项目的回顾。也是这个以钱为核心话题的系列的最后一集。 对这期特别有代入感,因为主角是曾经的同事,曾经在某天晚上听过其项目组的争论。 对其这些年的起伏特别的能体会。 主角是制作人,在访谈中透露这…...

SQLModel入门

目录 概述快速开始官方教程简单使用样例 概述 SQLModel 是一个 ORM 框架,其基于 SQLAlchemy 和 Pydantic,其中 SQLALchemy 提供底层 ORM 能力,Pydantic 提供类型校验能力,SQLModel 中,一个 SQLModel model 既是一个 S…...

关于MySQL InnoDB存储引擎的一些认识

文章目录 一、存储引擎1.MySQL中执行一条SQL语句的过程是怎样的?1.1 MySQL的存储引擎有哪些?1.2 MyIsam和InnoDB有什么区别? 2.MySQL表的结构是什么?2.1 行结构是什么样呢?2.1.1 NULL列表?2.1.2 char和varc…...

【学习笔记】深度学习网络-正则化方法

作者选择了由 Ian Goodfellow、Yoshua Bengio 和 Aaron Courville 三位大佬撰写的《Deep Learning》(人工智能领域的经典教程,深度学习领域研究生必读教材),开始深度学习领域学习,深入全面的理解深度学习的理论知识。 在之前的文章中介绍了深度学习中用…...

NVIDIA (英伟达)的 GPU 产品应用领域

游戏娱乐领域 PC 游戏:NVIDIA 的 GeForce 系列 GPU 是 PC 游戏玩家的首选之一。能实现实时光线追踪、高分辨率渲染等,使游戏画面更加逼真,如《赛博朋克 2077》等支持光线追踪的游戏,在 NVIDIA GPU 的加持下,可呈现出真…...

Docker快速部署高效照片管理系统LibrePhotos搭建私有云相册

文章目录 前言1.关于LibrePhotos2.本地部署LibrePhotos3.LibrePhotos简单使用4. 安装内网穿透5.配置LibrePhotos公网地址6. 配置固定公网地址 前言 想象一下这样的场景:你有一大堆珍贵的回忆照片,但又不想使用各种网盘来管理。怎么办?别担心…...

goframe 多语言国际化解决方案

项目背景 本项目采用基于JSON配置的多语言国际化(i18n)解决方案,支持多种语言的无缝切换和本地化。 目录结构 manifest/ └── i18n/├── zh.json # 简体中文├── zh-tw.json # 繁体中文├── en.json # 英语├…...

mysql如何修改密码

在MySQL中修改密码可以通过多种方式完成,具体取决于你的MySQL版本和你是否有足够的权限。以下是一些常用的方法来修改MySQL用户的密码: 方法1: 使用ALTER USER命令 这是最常用的方法,适用于MySQL 5.7及以上版本。 ALTER USER usernameloca…...

17.2 图形绘制8

版权声明:本文为博主原创文章,转载请在显著位置标明本文出处以及作者网名,未经作者允许不得用于商业目的。 17.2.10 重绘 先看以下例子: 【例 17.28】【项目:code17-028】绘制填充矩形。 private void button1_Clic…...

Java基础知识总结(三十八)--读取数据

使用Reader体系,读取一个文本文件中的数据。返回 -1 ,标志读到结尾。 import java.io.*; class { public static void main(String[] args) throws IOException { /* 创建可以读取文本文件的流对象,让创建好的流对象和指定的文件相关联。…...

【并查集】

并查集(Disjoint Set Union,DSU)是一种用于处理不相交集合的数据结构,主要支持两种操作:查找(Find)和合并(Union)。它在解决连通性问题、图论问题以及动态连通性等问题时…...

SQL NOW() 函数详解

SQL NOW() 函数详解 引言 在SQL数据库中,NOW() 函数是一个常用的日期和时间函数,用于获取当前的时间戳。本文将详细介绍 NOW() 函数的用法、参数、返回值以及在实际应用中的注意事项。 函数概述 NOW() 函数返回当前的日期和时间,格式为 Y…...

[EAI-023] FAST,机器人动作专用的Tokenizer,提高VLA模型的能力和训练效率

Paper Card 论文标题:FAST: Efficient Action Tokenization for Vision-Language-Action Models 论文作者:Karl Pertsch, Kyle Stachowicz, Brian Ichter, Danny Driess, Suraj Nair, Quan Vuong, Oier Mees, Chelsea Finn, Sergey Levine 论文链接&…...

Rust 条件语句

Rust 条件语句 在编程语言中,条件语句是进行决策和实现分支逻辑的关键。Rust 语言作为一门系统编程语言,其条件语句的使用同样至关重要。本文将详细介绍 Rust 中的条件语句,包括其基本用法、常见场景以及如何避免常见错误。 基本用法 Rust…...

Windows 上安装 PostgreSQL

Windows 上安装 PostgreSQL PostgreSQL 是一款功能强大的开源对象-关系型数据库系统,它具有出色的扩展性和稳定性。本文将详细介绍在 Windows 操作系统上安装 PostgreSQL 的步骤和注意事项。 1. 准备工作 在开始安装 PostgreSQL 之前,请确保您的计算机满足以下要求: 操作…...

UE 5.3 C++ 对垃圾回收的初步认识

一.UObject的创建 UObject 不支持构造参数。 所有的C UObject都会在引擎启动的时候初始化,然后引擎会调用其默认构造器。如果没有默认的构造器,那么 UObject 将不会编译。 有修改父类参数的需求,就使用指定带参构造 // Sets default value…...

解码,蓝桥杯2020G

a2b 解码后&#xff1a;aab ​ #include<iostream> using namespace std; typedef struct Node {char data;int size;Node* next; }Node,*Linklist; char* scan(char str[],int size) {int i 0;Linklist head new Node;Linklist rear head;while (i<size-1) {Lin…...

【贪心算法篇】:“贪心”之旅--算法练习题中的智慧与策略(一)

✨感谢您阅读本篇文章&#xff0c;文章内容是个人学习笔记的整理&#xff0c;如果哪里有误的话还请您指正噢✨ ✨ 个人主页&#xff1a;余辉zmh–CSDN博客 ✨ 文章所属专栏&#xff1a;贪心算法篇–CSDN博客 文章目录 一.贪心算法1.什么是贪心算法2.贪心算法的特点 二.例题1.柠…...

Python3 + Qt5:实现AJAX异步更新UI

使用 Python 和 Qt5 开发时异步加载数据的方法 在开发使用 Python 和 Qt5 的应用程序时&#xff0c;为了避免在加载数据时界面卡顿&#xff0c;可以采用异步加载的方式。以下是几种实现异步加载的方法&#xff1a; 1. 使用多线程&#xff08;QThread&#xff09; 通过将数据…...

Windows系统中Docker可视化工具对比分析,Docker Desktop,Portainer,Rancher

Docker可视化工具对比分析&#xff0c;Docker Desktop&#xff0c;Portainer&#xff0c;Rancher Windows系统中Docker可视化工具对比分析1. 工具概览2. Docker Desktop官网链接&#xff1a;主要优点&#xff1a;主要缺点&#xff1a;版本更新频率&#xff1a; 3. Portainer官网…...

从ai产品推荐到利用cursor快速掌握一个开源项目再到langchain手搓一个Text2Sql agent

目录 0. 经验分享&#xff1a;产品推荐 1. 经验分享&#xff1a;提示词优化 2. 经验分享&#xff1a;使用cursor 阅读一篇文章 3. 经验分享&#xff1a;使用cursor 阅读一个完全陌生的开源项目 4. 经验分享&#xff1a;手搓一个text2sql agent &#xff08;使用langchain l…...

curope python安装

目录 curope安装 测试: 报错:libc10.so: cannot open shared object file: No such file or directory 解决方法: curope安装 git clone : GitHub - Junyi42/croco at bd6f4e07d5c4f13ae5388efc052dadf142aff754 cd models/curope/ python setup.py build_ext --inplac…...

低代码产品插件功能一览

下图是统计的目前市面上流行的低代码、零代码产品的插件功能。 产品名称 产品类型 官方插件数量 支持拓展 官方插件功能 宜搭 零代码 3 暂不支持 云打印、CAD看图、打印表单详情 微搭 低代码 1 暂不支持 小程序 明道云 低代码 2 支持 视图、工作流节点 简道…...

流浪 Linux: 外置 USB SSD 安装 ArchLinux

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

开启 AI 学习之旅:从入门到精通

最近 AI 真的超火,不管是工作还是生活里,到处都能看到它的身影。好多小伙伴都跑来问我,到底该怎么学 AI 呢?今天我就把自己学习 AI 的经验和心得分享出来,希望能帮到想踏入 AI 领域的朋友们! 一、学习内容有哪些 (一)编程语言 Python 绝对是首选!它在 AI 领域的生态…...

笔记:使用ST-LINK烧录STM32程序怎么样最方便?

一般板子在插件上&#xff0c; 8脚 3.3V;9脚 CLK;10脚 DIO;4脚GND ST_Link 19脚 3.3V;9脚 CLK;7脚 DIO;20脚 GND 烧录软件&#xff1a;ST-LINK Utility&#xff0c;Keil_5; ST_Link 接口针脚定义&#xff1a; 按定义连接ST_Link与电路板&#xff1b; 打开STM32 ST-LINK Uti…...

开发环境搭建-4:WSL 配置 docker 运行环境

在 WSL 环境中构建&#xff1a;WSL2 (2.3.26.0) Oracle Linux 8.7 官方镜像 基本概念说明 容器技术 利用 Linux 系统的 文件系统&#xff08;UnionFS&#xff09;、命名空间&#xff08;namespace&#xff09;、权限管理&#xff08;cgroup&#xff09;&#xff0c;虚拟出一…...

925.长按键入

目录 一、题目二、思路三、解法四、收获 一、题目 你的朋友正在使用键盘输入他的名字 name。偶尔&#xff0c;在键入字符 c 时&#xff0c;按键可能会被长按&#xff0c;而字符可能被输入 1 次或多次。 你将会检查键盘输入的字符 typed。如果它对应的可能是你的朋友的名字&am…...

【数据采集】案例01:基于Scrapy采集豆瓣电影Top250的详细数据

基于Scrapy采集豆瓣电影Top250的详细数据 Scrapy 官方文档:https://docs.scrapy.org/en/latest/豆瓣电影Top250官网:https://movie.douban.com/top250写在前面 实验目的:基于Scrapy框架采集豆瓣电影Top250的详细数据。 电脑系统:Windows 使用软件:PyCharm、Navicat Python…...

doris:主键模型的导入更新

这篇文档主要介绍 Doris 主键模型基于导入的更新。 整行更新​ 使用 Doris 支持的 Stream Load、Broker Load、Routine Load、Insert Into 等导入方式&#xff0c;向主键模型&#xff08;Unique 模型&#xff09;导入数据时&#xff0c;如果没有相应主键的数据行&#xff0c;…...

日志2025.2.1

日志2025.2.1 1.做了敌人状态机 public class EnermyStateMachine { public EnermyState currentState { get; private set; } public void InitializeState(EnermyState startState) { currentState startState; currentState.Enter(); } public void Change…...

RK3568使用QT操作LED灯

文章目录 一、QT中操作硬件设备思路Linux 中的设备文件操作硬件设备的思路1. 打开设备文件2. 写入数据到设备3. 从设备读取数据4. 设备控制5. 异常处理在 Qt 中操作设备的典型步骤实际应用中的例子:控制 LED总结二、QT实战操作LED灯设备1. `mainwindow.h` 头文件2. `mainwindo…...

Rank-analysis-1.2——一款基于LCU API的排位分析工具,大四学生独立开发

LOL Rank Record Analysis&#xff1a;一款基于LCU API的排位分析工具&#xff0c;大四学生独立开发&#xff01; 大家好&#xff01;我是河南科技学院的大四学生&#xff0c;今天给大家分享一个我自己开发的软件——LOL Rank Record Analysis。这是一个基于 Riot 提供的 LCU …...

关于系统重构实践的一些思考与总结

文章目录 一、前言二、系统重构的范式1.明确目标和背景2.兼容屏蔽对上层的影响3.设计灰度迁移方案3.1 灰度策略3.2 灰度过程设计3.2.1 case1 业务逻辑变更3.2.2 case2 底层数据变更&#xff08;数据平滑迁移&#xff09;3.2.3 case3 在途新旧流程兼容3.2.4 case4 接口变更3.2.5…...

代码随想录-训练营-day17

235. 二叉搜索树的最近公共祖先 - 力扣&#xff08;LeetCode&#xff09; /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode(int x) : val(x), left(NULL), right(NULL) {}* };*/class S…...

C++,STL,【目录篇】

文章目录 一、简介二、内容提纲第一部分&#xff1a;STL 概述第二部分&#xff1a;STL 容器第三部分&#xff1a;STL 迭代器第四部分&#xff1a;STL 算法第五部分&#xff1a;STL 函数对象第六部分&#xff1a;STL 高级主题第七部分&#xff1a;STL 实战应用 三、写作风格四、…...

《数据可视化新高度:Graphy的AI协作变革》

在数据洪流奔涌的时代&#xff0c;企业面临的挑战不再仅仅是数据的收集&#xff0c;更在于如何高效地将数据转化为洞察&#xff0c;助力决策。Graphy作为一款前沿的数据可视化工具&#xff0c;凭借AI赋能的团队协作功能&#xff0c;为企业打开了数据协作新局面&#xff0c;重新…...

abc 390 D(暴搜 复杂度用 bell数 证明 n 的集合的划分方法的数目)

D题意&#xff1a; 将 长度为 N 的数组 划分为集合 有多少种不同的 异或和 这道题做出来和bell 数没什么关系&#xff0c;如果要证明复杂度那么就需要bell 数 #include <bits/stdc.h> using namespace std; typedef pair<int, int> PII; #define int long long i…...