Yu.ding 5 anos atrás
pai
commit
6711b6585f

BIN
.DS_Store


BIN
etc/scripts/generate_group_conf


+ 7 - 7
etc/scripts/shell_scripts.sh

@@ -5,19 +5,19 @@ case "$1" in
         mkdir -p /var/spool/asterisk/monitor/${2}/${3}
     ;;
     sysinfo)
-        #waninfo=`/usr/bin/ifconfig eth0`
-        wanip=`/usr/bin/ifconfig eth0 | grep 'inet addr:'| cut -d: -f2 | awk '{print $1}'`
-        wanmac=`/usr/bin/ifconfig eth0 | grep 'HWaddr' | awk '{print $5}'|tr '[a-f]' '[A-Z]'`
-        #laninfo=`/usr/bin/ifconfig eth1`
-        lanip=`/usr/bin/ifconfig eth1 | grep 'inet addr:'| cut -d: -f2 | awk '{print $1}'`
-        lanmac=`/usr/bin/ifconfig eth1 | grep 'HWaddr' | awk '{print $5}'|tr '[a-f]' '[A-Z]'`
+        #wanip=`/usr/bin/ifconfig eth0 | grep 'inet addr:'| cut -d: -f2 | awk '{print $1}'`
+        #wanmac=`/usr/bin/ifconfig eth0 | grep 'HWaddr' | awk '{print $5}'|tr '[a-f]' '[A-Z]'`
+        #lanip=`/usr/bin/ifconfig eth1 | grep 'inet addr:'| cut -d: -f2 | awk '{print $1}'`
+        #lanmac=`/usr/bin/ifconfig eth1 | grep 'HWaddr' | awk '{print $5}'|tr '[a-f]' '[A-Z]'`
+        ftotal=`df -h|grep overlay|tr -s ' '|cut -d ' ' -f 2`
+        fused=`df -h|grep overlay|tr -s ' '|cut -d ' ' -f 3`
         uptime=`uptime`
         if [ -z "`echo $uptime | grep 'day'`" ];then
             uptime=`echo $uptime | cut -d, -f1|awk '{print $3,$4}'`
         else
             uptime=`echo $uptime | cut -d, -f1,2|awk '{print $3,$4,$5,$6}'`
         fi
-        echo "{\"wanip\":\"$wanip\", \"wanmac\":\"$wanmac\",\"lanip\":\"$lanip\",\"lanmac\":\"$lanmac\",\"uptime\":\"$uptime\"}"
+        echo "{\"ftotal\":\"$ftotal\", \"fused\":\"$fused\",\"uptime\":\"$uptime\"}"
     ;;
     handleinfo)
         ###CPUinfo

BIN
usr/.DS_Store


BIN
usr/local/.DS_Store


BIN
usr/local/defaults/.DS_Store


BIN
usr/local/defaults/etc/.DS_Store


BIN
usr/local/defaults/etc/asterisk/.DS_Store


+ 1 - 1
usr/local/defaults/etc/asterisk/extensions_general.conf

@@ -73,7 +73,7 @@ same => n,ExecIf($[${ISNULL(USERID)}]?Set(__USERID=0))
 same => n,ExecIf($[${ISNULL(USERL)}]?Set(__USERL=12))
 same => n,ExecIf($[${ISNULL(SERVICEL)}]?Set(__SERVICEL=12))
 same => n,UserEvent(callExtenEvent,userid:${USERID},src:${CAID},dest:${CAEE},uuid:${UUID},status:Calling)
-same => n(dial),Dial(${ARG2},${RINGTIME},${DIALOPTIONS}M(answered))
+same => n(dial),Dial(${ARG2},${RINGTIME},${DIALOPTIONS}M(answered)b(extringevent^s^1))
 same => n,Set(SV_DIALSTATUS=${DIALSTATUS})
 same => n,Goto(s-${SV_DIALSTATUS},1)
 exten => s-NOANSWER,1,UserEvent(callExtenEvent,userid:${USERID},src:${CAID},dest:${CAEE},uuid:${UUID},status:Noanswer)

BIN
usr/local/defaults/etc/asterisk/sysconf/.DS_Store


+ 4 - 4
usr/local/defaults/etc/asterisk/sysconf/database/coopaging_db.sql

@@ -497,10 +497,10 @@ CREATE TABLE `t_pbx_dialrule` (
 
 LOCK TABLES `t_pbx_dialrule` WRITE;
 /*!40000 ALTER TABLE `t_pbx_dialrule` DISABLE KEYS */;
-INSERT INTO `t_pbx_dialrule` VALUES (1,'紧急电话规则',NULL,'_1XX',NULL,NULL,NULL,'2019-07-31 17:58:00','2019-07-31 17:58:00');
-INSERT INTO `t_pbx_dialrule` VALUES (2,'本地电话规则',NULL,'_ZXX.',NULL,NULL,NULL,'2019-07-31 17:58:00','2019-07-31 17:58:00');
-INSERT INTO `t_pbx_dialrule` VALUES (3,'国内长途规则',NULL,'_0ZXX.',NULL,NULL,NULL,'2019-07-31 17:58:00','2019-07-31 17:58:00');
-INSERT INTO `t_pbx_dialrule` VALUES (4,'国际长途规则',NULL,'_00ZXX.',NULL,NULL,NULL,'2019-07-31 17:58:00','2019-07-31 17:58:00');
+INSERT INTO `t_pbx_dialrule` VALUES (1,'紧急电话规则',NULL,'1XX',NULL,NULL,NULL,'2019-07-31 17:58:00','2019-07-31 17:58:00');
+INSERT INTO `t_pbx_dialrule` VALUES (2,'本地电话规则',NULL,'ZXX.',NULL,NULL,NULL,'2019-07-31 17:58:00','2019-07-31 17:58:00');
+INSERT INTO `t_pbx_dialrule` VALUES (3,'国内长途规则',NULL,'0ZXX.',NULL,NULL,NULL,'2019-07-31 17:58:00','2019-07-31 17:58:00');
+INSERT INTO `t_pbx_dialrule` VALUES (4,'国际长途规则',NULL,'00ZXX.',NULL,NULL,NULL,'2019-07-31 17:58:00','2019-07-31 17:58:00');
 /*!40000 ALTER TABLE `t_pbx_dialrule` ENABLE KEYS */;
 UNLOCK TABLES;
 

+ 26 - 2
usr/src/generate_context_conf.c

@@ -31,6 +31,7 @@ MYSQL_ROW d_row; // 字符串数组,mysql 记录行
 #define MYSQL_CONNECT_CONF "/etc/asterisk/exten_gen.ini"
 #define EXTEN_CONTEXT_FILE "/etc/asterisk/extensions_context_custom.conf"
 #define EXTEN_USERS_CONTEXT_FILE "/etc/asterisk/extensions_users_context_custom.conf"
+#define EXTEN_USERS_GLOBAL_FILE "/etc/asterisk/extensions_users_global_custom.conf"
 #define KEYVALLEN 100
 #define VERSION "V1.0.1"
 
@@ -247,6 +248,7 @@ strcpy(g_db_name,getenv("MYSQL_DATABASE"));
 
 FILE *conf_fp = fopen(EXTEN_CONTEXT_FILE, "w+");
 FILE *conf_users_fp = fopen(EXTEN_USERS_CONTEXT_FILE, "w+");
+FILE *global_fp = fopen(EXTEN_USERS_GLOBAL_FILE, "w+");
 
 if (conf_fp == NULL){
         perror("Open context conf file Error: ");
@@ -279,6 +281,21 @@ if (conf_users_fp == NULL){
 mytime()\
 );
 
+if (global_fp == NULL){
+        perror("Open context conf file Error: ");
+        exit(1);
+    }
+
+    fprintf(global_fp, ";!\n\
+;! Automatically generated configuration file\n\
+;! Filename: extensions_users_global_custom.conf (/etc/asterisk/extensions_users_global_custom.conf)\n\
+;! Generator: Generator User Global\n\
+;! Creation Date: %s\n\
+;!\n\n\
+",\
+mytime()\
+);
+
     if (init_mysql()){
         print_mysql_error(NULL);
         exit(1);
@@ -358,21 +375,28 @@ mytime()\
             }
         }
         memset(sql_tmp,0,sizeof(sql_tmp));
-        sprintf(sql_tmp,"select t_paging_users.id from t_paging_users join t_paging_devices on t_paging_users.id = t_paging_devices.user_id\
+        sprintf(sql_tmp,"select t_paging_users.id,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=%s",g_row[0]);
         if (executesql(sql_tmp)){
             print_mysql_error(NULL);
             exit(1);
         }
         d_res = mysql_store_result(g_conn); // 从服务器传送结果集至本地,mysql_use_result直接使用服务器上的记录集
-        if (mysql_fetch_row(d_res) > 0){
+        while((d_row=mysql_fetch_row(d_res))){
+            if (d_row[0] == NULL || d_row[1] == NULL){
+                printf("some feild is empty!\n");
+                continue;
+            }
             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]);
+            fprintf(global_fp, "USER_ID_%s = %s\n",g_row[0],d_row[0]);
+            fprintf(global_fp, "USER_LEVEL_%s = %s\n",g_row[0],d_row[1]);
         }
     }
 fclose(conf_fp);
 fclose(conf_users_fp);
+fclose(global_fp);
 mysql_free_result(g_res); // 释放结果集
 mysql_free_result(d_res); // 释放结果集
 mysql_close(g_conn); // 关闭链接

+ 102 - 0
usr/src/generate_extension_conf.c

@@ -27,11 +27,14 @@ MYSQL_ROW g_row; // 字符串数组,mysql 记录行
 #define MYSQL_CONNECT_CONF "/etc/asterisk/exten_gen.ini"
 #define EXTEN_IVR_FILE "/etc/asterisk/extensions_ivr_custom.conf"
 #define EXTEN_DIALRULE_FILE "/etc/asterisk/extensions_dialrule_custom.conf"
+#define EXTEN_INBOUND_FILE "/etc/asterisk/extensions_inbound_custom.conf"
+#define EXTEN_GLOBAL_FILE "/etc/asterisk/extensions_global_custom.conf"
 #define KEYVALLEN 100
 #define VERSION "V1.0.1"
 
 #define QUERY_IVR_SQL "select name,exten,prompt,loops,timeout,language,dialplan,keys_action from t_pbx_ivr"
 #define QUERY_DIALRULE_SQL "select t_pbx_users_voiptrunk.trunk as trunk,rule,del_prefix,add_before,add_after from t_pbx_dialrule join t_pbx_users_voiptrunk on t_pbx_users_voiptrunk.id=t_pbx_dialrule.trunk_id"
+#define QUERY_GLOBAL_SQL "select * from t_global_config"
 
 char g_host_name[MINI_SIZE];
 char g_user_name[MINI_SIZE];
@@ -40,6 +43,7 @@ char g_db_name[MINI_SIZE];
 const unsigned int g_db_port = 3306;
 char dialrule[MIDLE_SIZE];
 char ivrstr[MAX_SIZE];
+char inboundstr[MIDLE_SIZE];
 
 //读取配置文件函数----功能:删除左边空格
 char *l_trim(char *szOutput, const char *szInput)
@@ -233,6 +237,7 @@ if (init_mysql()){
     exit(1);
 }
 
+//读取自动话务员的数据,并写入配置文件
 if (executesql(QUERY_IVR_SQL)){
     print_mysql_error(NULL);
     exit(1);
@@ -336,6 +341,7 @@ exten = _IVR-X.,n,WaitExten(1)
 exten = t,1,Hangup
 */
 
+//读取拨号规则的数据,并写入配置文件
 if (executesql(QUERY_DIALRULE_SQL)){
     print_mysql_error(NULL);
     exit(1);
@@ -384,6 +390,102 @@ fputs("[CallingRule_OutCall]\n",conf_dialrule_fp);
         fputs(dialrule,conf_dialrule_fp);
     }
 
+
+//读取全局配置数据,并写入配置文件
+if (executesql(QUERY_GLOBAL_SQL)){
+    print_mysql_error(NULL);
+    exit(1);
+}
+
+g_res = mysql_store_result(g_conn); // 从服务器传送结果集至本地,mysql_use_result直接使用服务器上的记录集
+FILE *conf_inbound_fp = fopen(EXTEN_INBOUND_FILE, "w+");
+FILE *conf_global_fp = fopen(EXTEN_GLOBAL_FILE, "w+");
+
+if (conf_inbound_fp == NULL){
+        perror("Open paging conf file Error: ");
+        exit(1);
+    }
+
+if (conf_global_fp == NULL){
+        perror("Open paging conf file Error: ");
+        exit(1);
+    }
+
+    fprintf(conf_inbound_fp, ";!\n\
+;! Automatically generated configuration file\n\
+;! Filename: extensions_inbound_custom.conf (/etc/asterisk/extensions_inbound_custom.conf)\n\
+;! Generator: Generator INBOUND\n\
+;! Creation Date: %s\n\
+;!\n\n\
+",\
+mytime()\
+);
+
+    fprintf(conf_global_fp, ";!\n\
+;! Automatically generated configuration file\n\
+;! Filename: extensions_global_custom.conf (/etc/asterisk/extensions_global_custom.conf)\n\
+;! Generator: Generator GLOBAL\n\
+;! Creation Date: %s\n\
+;!\n\n\
+",\
+mytime()\
+);
+
+//t_pbx_users_voiptrunk.trunk as trunk,rule,del_prefix,add_before,add_after
+    while ((g_row=mysql_fetch_row(g_res))){ // 打印结果集
+        if (g_row[0] == NULL || g_row[1] == NULL || g_row[2] == NULL){
+            printf("some feild is empty!\n");
+            continue;
+        }
+
+        if(strcmp(g_row[1],"pbx.voip.inbound") == 0){
+            memset(inboundstr,0,sizeof(inboundstr));
+            pJson = cJSON_Parse(g_row[2]);
+            if(strcmp(cJSON_GetObjectItem(pJson, "type")->valuestring, "hangup") == 0){
+                sprintf(inboundstr,"\
+[direct-analog]\n\
+exten => direct,1,Hangup()\n\
+[direct-voip]\n\
+exten => direct,1,Hangup()\n"
+    );
+            }
+            else if(strcmp(cJSON_GetObjectItem(pJson, "type")->valuestring, "extension") == 0){
+                sprintf(inboundstr,"\
+[direct-analog]\n\
+exten => direct,1,Goto(default,%s,1)\n\
+[direct-voip]\n\
+exten => direct,1,Goto(default,%s,1)\n",\
+cJSON_GetObjectItem(pJson, "exten")->valuestring,\
+cJSON_GetObjectItem(pJson, "exten")->valuestring\
+    );
+            }
+            else if(strcmp(cJSON_GetObjectItem(pJson, "type")->valuestring, "ivr") == 0){
+                sprintf(inboundstr,"\
+[direct-analog]\n\
+exten => direct,1,Goto(voicemenu-custom-%s,%s,1)\n\
+[direct-voip]\n\
+exten => direct,1,Goto(voicemenu-custom-%s,%s,1)\n",\
+cJSON_GetObjectItem(pJson, "exten")->valuestring,\
+cJSON_GetObjectItem(pJson, "exten")->valuestring,\
+cJSON_GetObjectItem(pJson, "exten")->valuestring,\
+cJSON_GetObjectItem(pJson, "exten")->valuestring\
+    );
+            }
+            fputs(inboundstr,conf_inbound_fp);
+        }
+        else if(strcmp(g_row[1],"paging.prompt.config") == 0){
+            pJson = cJSON_Parse(g_row[2]);
+            fprintf(conf_global_fp, "\
+enPaging_prompt_start = %s\n\
+enPaging_prompt_end = %s\n\
+",\
+cJSON_GetObjectItem(pJson, "start")->valuestring,\
+cJSON_GetObjectItem(pJson, "end")->valuestring\
+);
+        }
+    }
+
+
 fclose(conf_dialrule_fp);
 fclose(conf_ivr_fp);
 mysql_free_result(g_res); // 释放结果集

+ 4 - 1
usr/src/generate_group_conf.c

@@ -292,6 +292,7 @@ while ((g_row=mysql_fetch_row(g_res))){ // 打印结果集
         continue;
     }
     fprintf(conf_extens_fp, "[extens-group-%s]\n",g_row[2]);
+    fprintf(conf_extens_fp, "include => cdr-action\n");
     memset(sql_tmp,0,sizeof(sql_tmp));
     sprintf(sql_tmp,"select exten,type_id from t_paging_deviceGroups JOIN t_paging_devices on t_paging_devices.id = t_paging_deviceGroups.DeviceId\
     where GroupId = %s and t_paging_devices.type_id in('1','2','3','5')",g_row[0]);
@@ -310,11 +311,13 @@ while ((g_row=mysql_fetch_row(g_res))){ // 打印结果集
         int id = atoi(d_row[1]);
         switch(id){
             case 1:
+                fprintf(conf_extens_fp, "exten => %s,1,Macro(page,%s,SIP/%s)\n",d_row[0],d_row[0],d_row[0]);
+                break;
             case 2:
-            case 5:
                 fprintf(conf_extens_fp, "exten => %s,1,Macro(intercom,%s,SIP/%s)\n",d_row[0],d_row[0],d_row[0]);
                 break;
             case 3:
+            case 7:
                 fprintf(conf_extens_fp, "exten => %s,1,Macro(stdexten,%s,SIP/%s)\n",d_row[0],d_row[0],d_row[0]);
                 break;
         }

+ 2 - 2
usr/src/generate_trunk_conf.c

@@ -26,7 +26,7 @@ MYSQL_ROW g_row; // 字符串数组,mysql 记录行
 #define MINI_SIZE 64
 #define MYSQL_CONNECT_CONF "/etc/asterisk/exten_gen.ini"
 #define TRUNK_DST_FILE "/etc/asterisk/users_voiptrunk.conf"
-#define TRUNK_GLOBAL_FILE "/etc/asterisk/extensions_global_custom.conf"
+#define TRUNK_GLOBAL_FILE "/etc/asterisk/extensions_trunks_global_custom.conf"
 #define REGISTRATION_FILE "/etc/asterisk/sip_registrations.conf"
 #define DID_CONF_FILE "/etc/asterisk/extensions_extendid_custom.conf"
 #define DOD_CONF_FILE "/etc/asterisk/extensions_extendod_custom.conf"
@@ -908,7 +908,7 @@ trunkObject[i].allow\
 
     fprintf(global_fp, ";!\n\
 ;! Automatically generated configuration file\n\
-;! Filename: extensions_global_custom.conf (/etc/asterisk/extensions_global_custom.conf)\n\
+;! Filename: extensions_trunks_global_custom.conf (/etc/asterisk/extensions_trunks_global_custom.conf)\n\
 ;! Generator: Generator Trunk\n\
 ;! Creation Date: %s\n\
 ;!\n\n\

BIN
var/.DS_Store


BIN
var/lib/.DS_Store


BIN
var/lib/asterisk/.DS_Store


BIN
var/lib/asterisk/agi-bin/.DS_Store


+ 7 - 10
var/lib/asterisk/agi-bin/permission.php

@@ -4,6 +4,7 @@ include_once('phpagi.php');
 include_once('phpagi-asmanager.php');
 
 $agi=new AGI();
+$redis=new Redis();
 $SRC=$argv[1];
 $DEST=$argv[2];
 
@@ -25,16 +26,11 @@ if($db_data1[0]){
     $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);
+$redis->connect('127.0.0.1', 6379);
+
+$deviceinfo = $redis->get("device-info-exten-$DEST");
+
+$agi->verbose($deviceinfo);
 
 if($srclevel < $destlevel)
 {
@@ -43,5 +39,6 @@ if($srclevel < $destlevel)
     $agi->set_variable('limited',"true");
 }
 
+mysql_close($con);
 unset($agi);
 ?>