Yu.ding пре 4 година
родитељ
комит
4c0abe8ded


BIN
etc/scripts/generate_context_conf



BIN
usr/local/.DS_Store


BIN
usr/local/defaults/.DS_Store


BIN
usr/local/defaults/etc/.DS_Store


+ 5 - 0
usr/local/defaults/etc/asterisk/extensions_additional.conf

@@ -25,6 +25,11 @@ exten = _**.,1,AGI(getchan.agi,${EXTEN:2})
 exten = _**.,2,PickupChan(${EXTCHAN})
 exten = _**.,n,Hangup()
 
+[featurecodes]
+exten = _*91X.,1,Macro(spy-normal,${EXTEN:3},${CALLERID(num)})
+exten = _*92X.,1,Macro(spy-barge,${EXTEN:3},${CALLERID(num)})
+exten = _*93X.,1,Macro(spy-whisper,${EXTEN:3},${CALLERID(num)})
+
 [ivr]
 exten = 610,1,Goto(voicemenu-custom-1,s,1)
 exten = 611,1,Goto(voicemenu-custom-2,s,1)

+ 27 - 0
usr/local/defaults/etc/asterisk/extensions_general.conf

@@ -311,6 +311,33 @@ same => n,SIPAddHeader(${CALLINFO})
 same => n(manual),Dial(SIP/${EXTEN},${RINGTIME},ab(extringevent^s^1))
 same => n,Hangup
 
+[macro-spy-normal]
+exten => s,1,Answer
+same => n,NoOp(src: ${ARG2}, dst: ${ARG1})
+same => n,AGI(permission.php,${ARG2},${ARG1})
+same => n,GotoIf($["foo${limited}" = "footrue"]?hangup)
+same => n,Wait(1)
+same => n,ChanSpy(SIP/${ARG1},q)
+same => n(hangup),Hangup
+
+[macro-spy-whisper]
+exten => s,1,Answer
+same => n,NoOp(src: ${ARG2}, dst: ${ARG1})
+same => n,AGI(permission.php,${ARG2},${ARG1})
+same => n,GotoIf($["foo${limited}" = "footrue"]?hangup)
+same => n,Wait(1)
+same => n,ChanSpy(SIP/${ARG1},wq)
+same => n(hangup),Hangup
+
+[macro-spy-barge]
+exten => s,1,Answer
+same => n,NoOp(src: ${ARG2}, dst: ${ARG1})
+same => n,AGI(permission.php,${ARG2},${ARG1})
+same => n,GotoIf($["foo${limited}" = "footrue"]?hangup)
+same => n,Wait(1)
+same => n,ChanSpy(SIP/${ARG1},Bq)
+same => n(hangup),Hangup
+
 [ipinfo]
 exten => **11,1,Answer
 exten => **11,n,agi(wanip.sh)

+ 1 - 0
usr/src/generate_context_conf.c

@@ -367,6 +367,7 @@ mytime()\
         d_res = mysql_store_result(g_conn); // 从服务器传送结果集至本地,mysql_use_result直接使用服务器上的记录集
         if (mysql_fetch_row(d_res) > 0){
             fprintf(conf_fp, "include => DialRule_users\n");
+            fprintf(conf_fp, "include => featurecodes\n");
             fprintf(conf_users_fp, "exten => %s,1,Macro(stdexten,%s,SIP/%s)\n",g_row[0],g_row[0],g_row[0]);
         }
     }

+ 0 - 1
usr/src/generate_extension_conf.c

@@ -382,7 +382,6 @@ fputs("[CallingRule_OutCall]\n",conf_dialrule_fp);
         }
         strcat(dialrule,")\n");
         fputs(dialrule,conf_dialrule_fp);
-        printf("DialRule: %s",dialrule);
     }
 
 fclose(conf_dialrule_fp);


BIN
var/lib/.DS_Store


BIN
var/lib/asterisk/.DS_Store


+ 2 - 2
var/lib/asterisk/agi-bin/getrecordconf.php

@@ -16,13 +16,13 @@ $mysql_db_passwd=$mysqlcfg['dbpasswd'];
 $con=mysql_connect($mysql_db_host,$mysql_db_username,$mysql_db_passwd);
 
 $sql_cmd1="SELECT recordin,recordout FROM (SELECT exten,recordin,recordout FROM t_pbx_users_extension UNION ALL SELECT exten,recordin,recordout FROM users_webrtc) t WHERE exten = $CID";
-mysql_select_db('coovox_db', $con);
+mysql_select_db($db_name, $con);
 $result1=mysql_query($sql_cmd1,$con);
 $db_data1 = mysql_fetch_row($result1);
 $recordin=$db_data1[0];
 $recordout=$db_data1[1];
 $sql_cmd2="SELECT recordin,recordout FROM (SELECT exten,recordin,recordout FROM t_pbx_users_extension UNION ALL SELECT exten,recordin,recordout FROM users_webrtc) t WHERE exten = $CEID";
-mysql_select_db('coovox_db', $con);
+mysql_select_db($db_name, $con);
 $result2=mysql_query($sql_cmd2,$con);
 $db_data2 = mysql_fetch_row($result2);
 $cerecordin=$db_data2[0];

+ 47 - 0
var/lib/asterisk/agi-bin/permission.php

@@ -0,0 +1,47 @@
+#!/usr/bin/php -q
+<?php
+include_once('phpagi.php');
+include_once('phpagi-asmanager.php');
+
+$agi=new AGI();
+$SRC=$argv[1];
+$DEST=$argv[2];
+
+$mysqlcfg = parse_ini_file("/etc/asterisk/exten_gen.ini");
+$mysql_db_host=$mysqlcfg['dbserverip'];
+$db_name=$mysqlcfg['dbname'];
+$mysql_db_username=$mysqlcfg['dbuser'];
+$mysql_db_passwd=$mysqlcfg['dbpasswd'];
+
+$con=mysql_connect($mysql_db_host,$mysql_db_username,$mysql_db_passwd);
+
+$sql_cmd1="SELECT t_paging_users.level FROM t_paging_users JOIN t_paging_devices ON t_paging_users.id = t_paging_devices.user_id WHERE t_paging_devices.exten = $SRC";
+mysql_select_db($db_name, $con);
+$result1=mysql_query($sql_cmd1,$con);
+$db_data1 = mysql_fetch_row($result1);
+if($db_data1[0]){
+    $srclevel = (int)$db_data1[0];
+}else{
+    $srclevel = 13;
+}
+
+$sql_cmd2="SELECT t_paging_users.level FROM t_paging_users JOIN t_paging_devices ON t_paging_users.id = t_paging_devices.user_id WHERE t_paging_devices.exten = $DEST";
+mysql_select_db($db_name, $con);
+$result2=mysql_query($sql_cmd2,$con);
+$db_data2 = mysql_fetch_row($result2);
+if($db_data2[0]){
+    $destlevel = (int)$db_data2[0];
+}else{
+    $destlevel = 13;
+}
+mysql_close($con);
+
+if($srclevel < $destlevel)
+{
+    $agi->set_variable('limited',"false");
+}else{
+    $agi->set_variable('limited',"true");
+}
+
+unset($agi);
+?>