当前位置: 首页 > 工具软件 > OpenSIPS > 使用案例 >

OpenSIPS脚本的操作符及语句

董霖
2023-12-01

操作符

        在OpenSIPS配置脚本中,可以直接执行赋值、字符串操作,和算术运算。

        赋值操作的语法类似C语言,通过等号(=)操作符完成。需要注意的是:并非所有变量都是可写的,有些是只读的。

$var(a) = 123;
$ru     = "sip:user@domain";

        对AVP的赋值,有一个特定的操作符:=(冒号+等号)。如赋值表达式右值为null,那么变量名所指向的AVP的所有值都将被删除。如果有值,那么新值将会覆盖AVP存储的现值。

$avp(val)  := 123;

        对字符串操作,加号+操作符可用于连接字符串:

$var(a)    =    "test";
$var(b)    =    "sip:"    +    $var(a)    +    "@"    +    $fd;

        对数字类型,可以执行以下操作:

  • +:加
  • -: 减
  • *:乘
  • /:除
  • %:模
  • |:按位或
  • &:按位与
  • ^:按位异或
  • ~:按位求反
  • <<:向左位移
  • >>:向右位移

给个实例:

$var(a) = 4 + (7 & (~2));

为了保证表达式中的运算优先级,可以使用圆括号。

        在条件判断表达式中,可以通过测试操作符[...]测试一个算术表达式:

if([$var(a) & 4])
    log("var a has third bit set\n");

语句

        OpenSIPS 提供了类似编程的语句,比如if、switch、while。

        逻辑表达式里,可用的操作符如下:

  • ==:    等于
  • !=:    不等于
  • =~:   正则表达式匹配
  • !~:    正则表达式不匹配
  • >:    大于
  • >=:  大于或等于
  • <:    小于
  • <=:  小于或等于
  • &&:    逻辑与
  • ||:    逻辑或
  • !:    逻辑非
  • [    ...    ]:    测试表达式,方括号里可以是任意算术表达式。

给个while循环的实例:



Here    is    an    example    of    a    while    loop:

$var(i) = 0;
while($var(i) < 10) {
    xlog("counter: $var(i)\n");
    $var(i) = $var(i) + 1;
}

终止语句

     OpenSIPS提供了一系列的终止语句,用于控制脚本逻辑的退出。

  • exit():  退出脚本的执行
  • drop(): 与 exit()类似,但额外指示OpenSIPS丢弃当前的消息或操作
  • return(n):  结束当前的路由块,并返回父级路由块。在主路由中调用return等效于 exit。
    注意:永远不要使用 return(0),因为它等效于exit() 。
  • break:   只用于while 或switch语句控制,跳出当前循环或分支。
 类似资料: