2 Commits a1ae40c75b ... 9cac7fb8ca

Author SHA1 Message Date
  Yu.ding 9cac7fb8ca update 1 year ago
  Yu.ding f15c8ca9c0 update 2 years ago

+ 3 - 0
.vscode/settings.json

@@ -0,0 +1,3 @@
+{
+    "C_Cpp.errorSquiggles": "Disabled"
+}

BIN
usr/local/.DS_Store


BIN
usr/local/defaults/.DS_Store


BIN
usr/local/defaults/etc/.DS_Store


BIN
usr/src/.DS_Store


+ 2 - 2
usr/src/extension_gen.c

@@ -413,7 +413,7 @@ int main(int argc, char *argv[]){
 						fputs("dtlscafile = /etc/asterisk/keys/ca.crt\n",fp);
 						fputs("dtlssetup = actpass\n",fp);
 						fputs("transport = ws,wss\n",fp);
-						fputs("videosupport = no\n\n",fp);
+						fputs("videosupport = yes\n\n",fp);
 						fputs("rtcp_mux = yes\n\n",fp);
 						
 						field_count = mysql_num_fields(res_exten);
@@ -625,7 +625,7 @@ int main(int argc, char *argv[]){
 									}
 									if(!strncasecmp(exten_field->name,"h264",strlen(exten_field->name))){
 
-									if((atoi(exten_row[i]) > 0) && (atoi(exten_row[i]) < 20 )) {
+									if(atoi(exten_row[i]) < 20 ) {
 											if (new_codecs[atoi(exten_row[i])][0] != '\0') { 
 												code_addr = strcat(new_codecs[atoi(exten_row[i])], ",");//not null
 											}											

+ 2 - 1
usr/src/generate_context_conf.c

@@ -37,7 +37,7 @@ MYSQL_ROW d_row; // 字符串数组,mysql 记录行
 #define VERSION "V1.0.1"
 
 #define QUERY_INTERCOM_SQL "select id,exten from t_paging_devices where type_id in('2','5')"
-#define QUERY_IPPHONE_SQL "select id,exten,user_id from t_paging_devices where type_id = '3'"
+#define QUERY_IPPHONE_SQL "select id,exten,user_id from t_paging_devices where type_id in('3','6')"
 
 char g_host_name[MINI_SIZE];
 char g_user_name[MINI_SIZE];
@@ -390,6 +390,7 @@ mytime()\
                 continue;
             }
             fprintf(conf_fp, "include => phones-group-%s\n", d_row[0]);
+            fprintf(conf_fp, "include => paging-group-%s\n", d_row[0]);
         }
         if(g_row[2]){
             memset(sql_tmp,0,sizeof(sql_tmp));

+ 55 - 9
usr/src/generate_group_conf.c

@@ -24,15 +24,18 @@ MYSQL_RES *g_res; // mysql group记录集
 MYSQL_ROW g_row; // 字符串数组,mysql 记录行
 MYSQL_RES *d_res; // mysql device记录集
 MYSQL_ROW d_row; // 字符串数组,mysql 记录行
+MYSQL_RES *r_res; // mysql device记录集
+MYSQL_ROW r_row; // 字符串数组,mysql 记录行
 
 #define MAX_TRUNK_SIZE 256
-#define MAX_SIZE 2048
+#define MAX_SIZE 20480
 #define MIDLE_SIZE 512
 #define MINI_SIZE 64
 #define MYSQL_CONNECT_CONF "/etc/asterisk/exten_gen.ini"
 #define EXTEN_PAGING_FILE "/etc/asterisk/extensions_paging_custom.conf"
 #define EXTEN_EXTENS_FILE "/etc/asterisk/extensions_extens_custom.conf"
 #define EXTEN_IPPHONES_FILE "/etc/asterisk/extensions_phones_custom.conf"
+#define EXTEN_HINTS_FILE "/etc/asterisk/extensions_hints_custom.conf"
 #define KEYVALLEN 100
 #define VERSION "V1.0.1"
 
@@ -219,17 +222,14 @@ return 0; // 返回成功
 }
 
 int main(int argc, char **argv) {
-/*
+cJSON *pJson;
+    
 memset(g_host_name, 0, sizeof(g_host_name));
 memset(g_user_name, 0, sizeof(g_user_name));
 memset(g_password, 0, sizeof(g_password));
 memset(g_db_name, 0, sizeof(g_db_name));
 
-GetProfileString(MYSQL_CONNECT_CONF, "general", "dbserverip", g_host_name);
-GetProfileString(MYSQL_CONNECT_CONF, "general", "dbuser", g_user_name);
-GetProfileString(MYSQL_CONNECT_CONF, "general", "dbpasswd", g_password);
-GetProfileString(MYSQL_CONNECT_CONF, "general", "dbname", g_db_name);
-*/
+
 strcpy(g_host_name,getenv("MYSQL"));
 strcpy(g_user_name,getenv("MYSQL_USER"));
 strcpy(g_password,getenv("MYSQL_PASSWORD"));
@@ -248,6 +248,7 @@ g_res = mysql_store_result(g_conn); // 从服务器传送结果集至本地,my
 FILE *conf_paging_fp = fopen(EXTEN_PAGING_FILE, "w+");
 FILE *conf_extens_fp = fopen(EXTEN_EXTENS_FILE, "w+");
 FILE *conf_ipphones_fp = fopen(EXTEN_IPPHONES_FILE, "w+");
+FILE *conf_hints_fp = fopen(EXTEN_HINTS_FILE, "w+");
 
 if (conf_paging_fp == NULL){
     perror("Open paging conf file Error: ");
@@ -293,6 +294,22 @@ if (conf_ipphones_fp == NULL){
 ",\
 mytime()\
 );
+
+if (conf_hints_fp == NULL){
+    perror("Open hints conf file Error: ");
+    exit(1);
+}
+
+    fprintf(conf_hints_fp, ";!\n\
+;! Automatically generated configuration file\n\
+;! Filename: extensions_hints_custom.conf (/etc/asterisk/extensions_hints_custom.conf)\n\
+;! Generator: Generator hints\n\
+;! Creation Date: %s\n\
+;!\n\n\
+[default]\n\
+",\
+mytime()\
+);
 while ((g_row=mysql_fetch_row(g_res))){ // 打印结果集
     if (g_row[0] == NULL || g_row[1] == NULL || g_row[2] == NULL || g_row[3] == NULL){
         printf("some feild is empty!\n");
@@ -368,10 +385,11 @@ same => n,ExecIf($['foo${enPaging_prompt_start}'='fooyes']?Set(STARTPROMPT=qA(${
 same => n,UserEvent(controlEvent,sessionlevel:${SESSION_LEVEL},sessionuserid:${SESSION_USERID},src:${SRCEXTEN},dest:${DESTS},uuid:${UUID},status:paging)\n\
 same => n,Wait(1)\n\
 same => n,GotoIf(${ISNULL(${DESTCHANS})}?default)\n\
-same => n,MSet(startT=${STRFTIME(${EPOCH},,%%s)},__CALLEE=${DESTS},__calltype=paging)\n\
+same => n,MSet(startT=${STRFTIME(${EPOCH},,%%s)},__CALLEE=${DESTS},__calltype=paging,DEVICE_STATE(Custom:${EXTEN})=INUSE,__GROUPID=${EXTEN})\n\
 same => n,Page(${DESTCHANS},%sb(paging-update-status^s^1)${STARTPROMPT})\n\
 same => n,Hangup\n\
-same => n(default),Page(%s,%sb(paging-update-status^s^1)${STARTPROMPT})\n\
+same => n(default),MSet(startT=${STRFTIME(${EPOCH},,%%s)},__CALLEE=${DESTS},__calltype=paging,DEVICE_STATE(Custom:${EXTEN})=INUSE,__GROUPID=${EXTEN})\n\
+same => n,Page(%s,%sb(paging-update-status^s^1)${STARTPROMPT})\n\
 same => n,Hangup\
 \n\n", \
 g_row[2],\
@@ -382,10 +400,38 @@ page_option,\
 exten_tmp,\
 page_option\
 );
+    fprintf(conf_hints_fp,"\
+exten => %s,hint,Custom:%s\n\
+",\
+g_row[2],\
+g_row[2]\
+    );
+}
+    memset(sql_tmp,0,sizeof(sql_tmp));
+    sprintf(sql_tmp,"select conditions from t_paging_tasks where type='numberrule'");
+    if (executesql(sql_tmp)){
+        print_mysql_error(NULL);
+        exit(1);
+    }
+    r_res = mysql_store_result(g_conn);
+    while(r_row=mysql_fetch_row(r_res))
+    {
+        pJson = cJSON_Parse(r_row[0]);
+        if(cJSON_GetObjectItem(pJson, "extension"))
+        {
+            fprintf(conf_hints_fp,"\
+exten => *11%s,hint,Custom:*11%s\n\
+",\
+cJSON_GetObjectItem(pJson, "extension")->valuestring,\
+cJSON_GetObjectItem(pJson, "extension")->valuestring\
+            );
+        }
     }
 fclose(conf_paging_fp);
 fclose(conf_extens_fp);
+fclose(conf_hints_fp);
 mysql_free_result(g_res); // 释放结果集
 mysql_free_result(d_res);
+mysql_free_result(r_res);
 mysql_close(g_conn); // 关闭链接
 }

+ 380 - 0
usr/src/generate_group_conf.c.acorp

@@ -0,0 +1,380 @@
+/*
+============================================================================
+Name        : generate_paging_conf.sh
+Author      : ssc
+Version     : v1.0
+Copyright   : ZYCOO copyright
+Description : Generate paging info from mysql to paging conf file
+============================================================================
+*/
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <errno.h>
+#include <assert.h>
+#include <time.h>
+#include <ctype.h>
+#include <cjson/cJSON.h>
+
+#include <mysql/mysql.h>
+
+MYSQL *g_conn; // mysql 连接
+MYSQL_RES *g_res; // mysql group记录集
+MYSQL_ROW g_row; // 字符串数组,mysql 记录行
+MYSQL_RES *d_res; // mysql device记录集
+MYSQL_ROW d_row; // 字符串数组,mysql 记录行
+
+#define MAX_TRUNK_SIZE 256
+#define MAX_SIZE 5120
+#define MIDLE_SIZE 512
+#define MINI_SIZE 64
+#define MYSQL_CONNECT_CONF "/etc/asterisk/exten_gen.ini"
+#define EXTEN_PAGING_FILE "/etc/asterisk/extensions_paging_custom.conf"
+#define EXTEN_EXTENS_FILE "/etc/asterisk/extensions_extens_custom.conf"
+#define EXTEN_IPPHONES_FILE "/etc/asterisk/extensions_phones_custom.conf"
+#define KEYVALLEN 100
+#define VERSION "V1.0.1"
+
+#define QUERY_PAGING_GROUP_SQL "select id,name,exten,paging_mode from t_paging_groups"
+
+char g_host_name[MINI_SIZE];
+char g_user_name[MINI_SIZE];
+char g_password[MINI_SIZE];
+char g_db_name[MINI_SIZE];
+const unsigned int g_db_port = 3306;
+char sql_tmp[MIDLE_SIZE];
+char exten_tmp[MAX_SIZE];
+char dest_tmp[MAX_SIZE];
+char page_option[MINI_SIZE];
+
+//读取配置文件函数----功能:删除左边空格
+char *l_trim(char *szOutput, const char *szInput)
+{
+    assert(szInput != NULL);
+    assert(szOutput != NULL);
+    assert(szOutput != szInput);
+    for   (NULL; *szInput != '\0' && isspace(*szInput); ++szInput)
+    {
+        ;
+    }
+    return strcpy(szOutput, szInput);
+}
+
+//   删除右边的空格   
+char *r_trim(char *szOutput, const char *szInput)
+{
+    char *p = NULL;
+    assert(szInput != NULL);
+    assert(szOutput != NULL);
+    assert(szOutput != szInput);
+    strcpy(szOutput, szInput);
+    for(p = szOutput + strlen(szOutput) - 1; p >= szOutput && isspace(*p); --p)
+    {
+        ;
+    }
+    *(++p) = '\0';
+    return szOutput;
+}
+
+//   删除两边的空格   
+char *a_trim(char *szOutput, const char *szInput)
+{
+    char *p = NULL;
+    assert(szInput != NULL);
+    assert(szOutput != NULL);
+    l_trim(szOutput, szInput);
+    for   (p = szOutput + strlen(szOutput) - 1; p >= szOutput && isspace(*p); --p)
+    {
+        ;
+    }
+    *(++p) = '\0';
+    return szOutput;
+}
+//main函数接口 参数1:配置文件路径 参数2:配置文件的那一部分,如general 参数3:键名 参数4:键值
+int GetProfileString(char *profile, char *AppName, char *KeyName, char *KeyVal )
+{
+    char appname[32], keyname[32];
+    char *buf, *c;
+    char buf_i[KEYVALLEN], buf_o[KEYVALLEN];
+    FILE *fp;
+    int found = 0; /* 1 AppName 2 KeyName */
+    if( (fp = fopen( profile, "r" )) == NULL )
+    {
+        printf( "openfile [%s] error [%s]\n", profile, strerror(errno) );
+        return(-1);
+    }
+    fseek( fp, 0, SEEK_SET );
+    memset( appname, 0, sizeof(appname) );
+    sprintf( appname, "[%s]", AppName );
+
+    while( !feof(fp) && fgets( buf_i, KEYVALLEN, fp ) != NULL )
+    {
+        l_trim(buf_o, buf_i);
+        if( strlen(buf_o) <= 0 )
+            continue;
+        buf = NULL;
+        buf = buf_o;
+
+        if( found == 0 )
+        {
+            if( buf[0] != '[' )
+            {
+                continue;
+            }
+            else if ( strncmp(buf, appname, strlen(appname)) == 0 )
+            {
+                found = 1;
+                continue;
+            }
+
+        }
+        else if( found == 1 )
+        {
+            if( buf[0] == '#' )
+            {
+                continue;
+            }
+            else if ( buf[0] == '[' )
+            {
+                break;
+            }
+            else
+            {
+                if( (c = (char *)strchr(buf, '=')) == NULL )
+                    continue;
+                memset( keyname, 0, sizeof(keyname) );
+
+                sscanf( buf, "%[^=|^ |^\t]", keyname );
+                if( strcmp(keyname, KeyName) == 0 )
+                {
+                    sscanf( ++c, "%[^\n]", KeyVal );
+                    char *KeyVal_o = (char *)malloc(strlen(KeyVal) + 1);
+                    if(KeyVal_o != NULL)
+                    {
+                        memset(KeyVal_o, 0, sizeof(KeyVal_o));
+                        a_trim(KeyVal_o, KeyVal);
+                        if(KeyVal_o && strlen(KeyVal_o) > 0)
+                            strcpy(KeyVal, KeyVal_o);
+                        free(KeyVal_o);
+                        KeyVal_o = NULL;
+                    }
+                    found = 2;
+                    break;
+                }
+                else
+                {
+                    continue;
+                }
+            }
+        }
+    }
+    fclose( fp );
+    if( found == 2 )
+        return(0);
+    else
+        return(-1);
+}
+
+char * mytime(){
+        time_t my_time;
+        time(&my_time);
+        char *time_string = ctime(&my_time);
+        if (time_string[strlen(time_string) - 1] == '\n')
+        {
+                time_string[strlen(time_string) - 1] = '\0';
+        }
+        return time_string;
+}
+
+void print_mysql_error(const char *msg) { // 打印最后一次错误
+if (msg)
+    printf("%s: %s\n", msg, mysql_error(g_conn));
+else
+    puts(mysql_error(g_conn));
+}
+
+int executesql(const char * sql) {
+/*query the database according the sql*/
+if (mysql_real_query(g_conn, sql, strlen(sql))) // 如果失败
+    return -1; // 表示失败
+
+return 0; // 成功执行
+}
+
+
+int init_mysql() { // 初始化连接
+// init the database connection
+g_conn = mysql_init(NULL);
+
+/* connect the database */
+if(!mysql_real_connect(g_conn, g_host_name, g_user_name, g_password, g_db_name, g_db_port, NULL, 0)) // 如果失败
+    return -1;
+
+// 是否连接已经可用
+if (executesql("set names utf8")) // 如果失败
+    return -1;
+
+return 0; // 返回成功
+}
+
+int main(int argc, char **argv) {
+/*
+memset(g_host_name, 0, sizeof(g_host_name));
+memset(g_user_name, 0, sizeof(g_user_name));
+memset(g_password, 0, sizeof(g_password));
+memset(g_db_name, 0, sizeof(g_db_name));
+
+GetProfileString(MYSQL_CONNECT_CONF, "general", "dbserverip", g_host_name);
+GetProfileString(MYSQL_CONNECT_CONF, "general", "dbuser", g_user_name);
+GetProfileString(MYSQL_CONNECT_CONF, "general", "dbpasswd", g_password);
+GetProfileString(MYSQL_CONNECT_CONF, "general", "dbname", g_db_name);
+*/
+strcpy(g_host_name,getenv("MYSQL"));
+strcpy(g_user_name,getenv("MYSQL_USER"));
+strcpy(g_password,getenv("MYSQL_PASSWORD"));
+strcpy(g_db_name,getenv("MYSQL_DATABASE"));
+if (init_mysql()){
+    print_mysql_error(NULL);
+    exit(1);
+}
+
+if (executesql(QUERY_PAGING_GROUP_SQL)){
+    print_mysql_error(NULL);
+    exit(1);
+}
+
+g_res = mysql_store_result(g_conn); // 从服务器传送结果集至本地,mysql_use_result直接使用服务器上的记录集
+FILE *conf_paging_fp = fopen(EXTEN_PAGING_FILE, "w+");
+FILE *conf_extens_fp = fopen(EXTEN_EXTENS_FILE, "w+");
+FILE *conf_ipphones_fp = fopen(EXTEN_IPPHONES_FILE, "w+");
+
+if (conf_paging_fp == NULL){
+    perror("Open paging conf file Error: ");
+    exit(1);
+}
+
+    fprintf(conf_paging_fp, ";!\n\
+;! Automatically generated configuration file\n\
+;! Filename: extensions_paging_custom.conf (/etc/asterisk/extensions_paging_custom.conf)\n\
+;! Generator: Generator Paging\n\
+;! Creation Date: %s\n\
+;!\n\n\
+",\
+mytime()\
+);
+
+if (conf_extens_fp == NULL){
+    perror("Open extens conf file Error: ");
+    exit(1);
+}
+
+    fprintf(conf_extens_fp, ";!\n\
+;! Automatically generated configuration file\n\
+;! Filename: extensions_extens_custom.conf (/etc/asterisk/extensions_extens_custom.conf)\n\
+;! Generator: Generator Extens\n\
+;! Creation Date: %s\n\
+;!\n\n\
+",\
+mytime()\
+);
+
+if (conf_ipphones_fp == NULL){
+    perror("Open ipphones conf file Error: ");
+    exit(1);
+}
+
+    fprintf(conf_ipphones_fp, ";!\n\
+;! Automatically generated configuration file\n\
+;! Filename: extensions_phones_custom.conf (/etc/asterisk/extensions_phones_custom.conf)\n\
+;! Generator: Generator phones\n\
+;! Creation Date: %s\n\
+;!\n\n\
+",\
+mytime()\
+);
+while ((g_row=mysql_fetch_row(g_res))){ // 打印结果集
+    if (g_row[0] == NULL || g_row[1] == NULL || g_row[2] == NULL || g_row[3] == NULL){
+        printf("some feild is empty!\n");
+        continue;
+    }
+    fprintf(conf_extens_fp, "[extens-group-%s]\n",g_row[2]);
+    fprintf(conf_ipphones_fp, "[phones-group-%s]\n",g_row[2]);
+    memset(sql_tmp,0,sizeof(sql_tmp));
+    sprintf(sql_tmp,"select exten,type_id,allowed_pa 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]);
+    if (executesql(sql_tmp)){
+        print_mysql_error(NULL);
+        exit(1);
+    }
+    d_res = mysql_store_result(g_conn); // 从服务器传送结果集至本地,mysql_use_result直接使用服务器上的记录集
+    memset(exten_tmp,0,sizeof(exten_tmp));
+    memset(dest_tmp,0,sizeof(dest_tmp));
+    while ((d_row=mysql_fetch_row(d_res))){ // 打印结果集
+        if (d_row[0] == NULL || d_row[1] == NULL){
+            printf("some feild is empty!\n");
+            continue;
+        }
+        //sprintf(exten_tmp, "%sSIP/%s&", exten_tmp, d_row[0]);
+        //sprintf(dest_tmp, "%s%s|", dest_tmp, d_row[0]);
+        strcat(exten_tmp,"SIP/");
+        strcat(exten_tmp,d_row[0]);
+        strcat(exten_tmp,"&");
+        strcat(dest_tmp,d_row[0]);
+        strcat(dest_tmp,"|");
+        
+        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:
+                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_ipphones_fp, "exten => %s,1,Macro(stdexten,%s,SIP/%s)\n",d_row[0],d_row[0],d_row[0]);
+                break;
+        }
+    }
+    if(strlen(exten_tmp) > 0){
+        exten_tmp[strlen(exten_tmp) - 1] = '\0';
+        dest_tmp[strlen(dest_tmp) - 1] = '\0';
+    }
+
+    fprintf(conf_extens_fp, "\n");
+
+    memset(page_option, 0, sizeof(page_option));
+    if(strcmp(g_row[3],"duplex") == 0){
+        strcat(page_option,"d");
+    }
+
+    fprintf(conf_paging_fp, "\
+[paging-group-%s]\n\
+exten => %s,1,NoOp(%s)\n\
+same => n,MSet(__SRCEXTEN=${CALLERID(num)},__DESTS=%s,DATE=${STRFTIME(${EPOCH},,%%Y%%m%%d)},__UUID=${UNIQUEID})\n\
+same => n,GotoIf($[\"foo${PAGING_RECORD}\" != \"fooyes\"]?unrc)\n\
+same => n,System(/bin/sh /etc/scripts/shell_scripts.sh mkrcdir paging ${DATE})\n\
+same => n,Set(FILENAME=paging/${DATE}/paging-${SRCEXTEN}-${UUID}.wav)\n\
+same => n,MixMonitor(${FILENAME},b)\n\
+same => n,Wait(0.5)\n\
+same => n,Set(__CONFNO=${EXTEN})\n\
+same => n,MSet(startT=${STRFTIME(${EPOCH},,%%s)},__CALLEE=${DESTS},__calltype=paging)\n\
+same => n,MSet(CONFBRIDGE(user,quiet)=yes,CONFBRIDGE(user,marked)=yes)\n\
+same => n,AGI(joinmeetme.agi,${CONFNO},${SRCEXTEN},${DESTS})\n\
+same => n,ConfBridge(${CONFNO})\n\
+same => n,Hangup\n\
+exten => h,1,Goto(checkmeetme,s,1)\
+\n\n", \
+g_row[2],\
+g_row[2],\
+g_row[1],\
+dest_tmp\
+);
+    }
+fclose(conf_paging_fp);
+fclose(conf_extens_fp);
+mysql_free_result(g_res); // 释放结果集
+mysql_free_result(d_res);
+mysql_close(g_conn); // 关闭链接
+}

+ 5 - 5
usr/src/generate_trunk_conf.c

@@ -868,14 +868,14 @@ trunkObject[i].allow\
 
                     if (strcmp(trunkObject[i].fromdomain, "") == 0 || strstr(trunkObject[i].authuser, "@") != NULL){
                         // register="${USERNAME}@${FROMDOMAIN}:${SECRET}${AUTHUSER}@${HOST}:${PORT}"
-                        sprintf(registrationString, "%s:%s:%s@%s:%s", trunkObject[i].authuser, trunkObject[i].voipsecret, \
-                                                                    trunkObject[i].voipusername, trunkObject[i].host, \
+                        sprintf(registrationString, "%s:%s:%s@%s:%s", trunkObject[i].voipusername, trunkObject[i].voipsecret, \
+                                                                    trunkObject[i].authuser, trunkObject[i].host, \
                                                                     trunkObject[i].port);
                         // printf("%d\nregistrationString:%s\n", __LINE__, registrationString);
                     }else{
                         // register="${USERNAME}:${SECRET}${AUTHUSER}@${HOST}:${PORT}"
-                        sprintf(registrationString, "%s@%s:%s:%s@%s:%s", trunkObject[i].authuser, trunkObject[i].fromdomain, \
-                                                                        trunkObject[i].voipsecret, trunkObject[i].voipusername, \
+                        sprintf(registrationString, "%s@%s:%s:%s@%s:%s", trunkObject[i].voipusername, trunkObject[i].fromdomain, \
+                                                                        trunkObject[i].voipsecret, trunkObject[i].authuser, \
                                                                         trunkObject[i].host, trunkObject[i].port);
                     }
 
@@ -884,7 +884,7 @@ trunkObject[i].allow\
                         strcat(registrationString,trunkObject[i].contact);
                         //sprintf(registrationString, "%s/%s", registrationString, trunkObject[i].contact);
                     }
-                    if(strcmp(trunkObject[i].trunkstyle, "SIP") == 0){
+                    if(strcmp(trunkObject[i].trunkstyle, "Peer") != 0 && strlen(trunkObject[i].voipusername) > 0){
                         if (strcmp(trunkObject[i].transport, "tcp") == 0){
                             fprintf(registration_fp, "register=tcp://%s\n", registrationString);
                         }else if (strcmp(trunkObject[i].transport, "tls") == 0){

+ 0 - 1
usr/src/generate_user_conf.c

@@ -317,7 +317,6 @@ musicclass = queuemusic\n\
 \n",q,g_row[2]);
             dJson = cJSON_Parse(g_row[4]);
             memset(noanswer_dest,0,sizeof(noanswer_dest));
-            printf("parse json: id-%d, type-%s, exten-%s\n",cJSON_GetObjectItem(dJson, "id")->valueint, cJSON_GetObjectItem(dJson, "type")->valuestring, cJSON_GetObjectItem(dJson, "exten")->valuestring);
             if(dJson)
             {
                 if(strcmp(cJSON_GetObjectItem(dJson, "type")->valuestring, "hangup") == 0){