123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697 |
- /***
- 2016.1.20 support Chinese utf8
- 2016.4.5 support wmi gen ,by zhi.qin changed
- 2016.06.24 modify codec prioty.
- 2016.07.01 modify _F1 field
- 2016.07.27 add _opus for opus _vp8 for vp8 ,extensions and webrtc
- 2016.09.26 add _F2 field for EX16S MAC storage
- 2016.11.21 modify _F2 to _exmacaddr ,add _exdahdichan
- 在users_extension新增字段: _exmacaddr (原来的_F2) not use
- 在users_extension新增字段: _exdahdichan (原来的_F3) not use
- 在users_extension新增字段:_vp8
- 在users_extension新增字段:_opus
- ***/
- #include<stdlib.h>
- #include<stdio.h>
- #include<string.h>
- #include<mysql/mysql.h>
- #include<mysql/mysqld_error.h>
- #include<mysql/errmsg.h>
- #include <ctype.h>
- #define EXTEN_GEN_CFG "/etc/asterisk/exten_gen.ini"
- #define USER_WEBRTC_CONFIG_FILE "/etc/asterisk/users_webrtc.conf"
- MYSQL conn;
- MYSQL_RES *res_exten;
- MYSQL_ROW exten_row;
- char corr_str[20];
- void connection(const char *host,const char *user,const char *password,const char *database){
-
- mysql_init(&conn);
- if(mysql_real_connect(&conn,host,user,password,database,3306,NULL,0)){
- mysql_set_character_set(&conn,"utf8");
- printf("Connection success!\n");
- }else{
- fprintf(stderr,"Connection failed!\n");
- if(mysql_errno(&conn)){
- fprintf(stderr,"Connection error %d: %s\n",mysql_errno(&conn),mysql_error(&conn));
- }
- exit -1;
- }
- }
- /*
- *file exten_gen.ini
- *dbserverip=
- *dbuser=
- *dbpasswd=
- *dbname=
- */
- void getstring(char *buf,char *db_cfg){
-
- char str1[100],str2[100],*tmp;
- int len;
- strcpy(str1,buf);
- tmp=strchr(str1,'=');
- strcpy(str2,tmp);
- if (isspace(str2[1]))
- strcpy(str1,&str2[2]);
- else
- strcpy(str1,&str2[1]);
- len=strlen(str1);
- if(str1[len-2] == '\r')
- str1[len-2]='\0';
- else if(str1[len-1] == '\n')
- str1[len-1]='\0';
- else
- str1[len]='\0';
- //printf("str1=%s\n",str1);
- strcpy(db_cfg,str1);
- }
- int main(int argc, char *argv[]){
- FILE *fp,*fp_cfg;
- MYSQL_FIELD *exten_field;
- unsigned int field_count;
- unsigned int i;
- //int dahdichan_en = 0;
- char *field_name = NULL;
- char codecs[100] = {0},dahdichan[10] = {0},buffer[100] = {0};//,db_cfg[4][30];
- char *code_addr = NULL;//,*dbserverip = NULL,*dbuser = NULL,*dbpasswd = NULL,*dbname = NULL;
- char new_codecs[20][100]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
- if ((fp_cfg=fopen(EXTEN_GEN_CFG,"r"))==NULL) {
- printf("File: %s is not open ,fail.\n",EXTEN_GEN_CFG);
- return -1;
- }
- /*
- while(fgets(buffer,100,fp_cfg)){
- if(!strncasecmp(buffer,"dbserverip",10))
- getstring(buffer,db_cfg[0]);
- if(!strncasecmp(buffer,"dbuser",6))
- getstring(buffer,db_cfg[1]);
- if(!strncasecmp(buffer,"dbpasswd",8))
- getstring(buffer,db_cfg[2]);
- if(!strncasecmp(buffer,"dbname",6))
- getstring(buffer,db_cfg[3]);
- }
- */
- char *hostname = getenv("MYSQL");
- char *username = getenv("MYSQL_USER");
- char *password = getenv("MYSQL_PASSWORD");
- char *dbname = getenv("MYSQL_DATABASE");
- connection(hostname,username,password,dbname);
- int res ;
- if(NULL != argv[1]){
- switch(*argv[1]){
- case '0':
- //res = mysql_query(&conn,"SELECT * from t_pbx_users_extension order by exten asc");
- res = mysql_query(&conn,"SELECT * from t_pbx_users_extension order by exten asc");
- if(res){
- fprintf(stderr,"SELECT error: %s\n",mysql_error(&conn));
- return -1;
- }else{
- res_exten = mysql_store_result(&conn);
- if(res_exten){
- printf("Recieved %lu rows\n",(unsigned long)mysql_num_rows(res_exten));
- }
- if(!(fp = fopen("/etc/asterisk/users_extension.conf","w+"))){
- printf("Creating extension config file failed,please check it.\n");
- return -1;
- }
-
- field_count = mysql_num_fields(res_exten);
- printf("field_count = %d\n",field_count);
- while(exten_row = mysql_fetch_row(res_exten)){
-
- memset(codecs,0,sizeof(codecs));
- // dahdichan_en = 0;
- // printf("....%s...\n",codecs[0]);
- for (i=0;i<20;i++)
- {
- memset(new_codecs[i],0,sizeof(new_codecs[i]));
- }
- mysql_field_seek(res_exten,0);//point to the first field.
- for(i=0;i<field_count;i++){
-
- exten_field = mysql_fetch_field(res_exten);
-
- if(!strncasecmp(exten_field->name,"id",strlen(exten_field->name)))
- continue;
-
- if(!strncasecmp(exten_field->name,"createdAt",strlen(exten_field->name)))
- continue;
-
- if(!strncasecmp(exten_field->name,"updatedAt",strlen(exten_field->name)))
- continue;
- if(!strncasecmp(exten_field->name,"exten",strlen(exten_field->name))){
-
- fprintf(fp,"[%s]\n",exten_row[i]);
- continue;
- }
- #if 0
- //support EX16S
- if(!strncasecmp(exten_field->name,"_dahdichan",strlen(exten_field->name))){
-
- if (strlen(exten_row[i]) > 0 )
- strcpy(dahdichan,exten_row[i]);//save dahdi chan num
- continue;
- }
-
- if(!strncasecmp(exten_field->name,"_exmacaddr",strlen(exten_field->name))){
- if (strlen(exten_row[i]) > 15)
- dahdichan_en = 1;
- continue;
- }
- #endif
- //end support
- //add acl for extensions
- if(!strncasecmp(exten_field->name,"F1",strlen(exten_field->name))){
- //if(!strncasecmp(exten_row[i],"remote",6)) {
- // fprintf(fp,"acl = remote_extensions_acl\n");
- //} else
- // fprintf(fp,"acl = local_extensions_acl\n");
- continue;
- }
- if(!strncasecmp(exten_field->name,"F2",strlen(exten_field->name)))
- continue;
- if(!strncasecmp(exten_field->name,"F3",strlen(exten_field->name)))
- continue;
- if(!strncasecmp(exten_field->name,"F4",strlen(exten_field->name)))
- continue;
- //add codecs to cfg file.
-
- if(!strncasecmp(exten_field->name,"alaw",strlen(exten_field->name))){
- if((atoi(exten_row[i]) > 0) && (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
- }
- code_addr = strcat(new_codecs[atoi(exten_row[i])],exten_field->name);
- continue;
- }
- else
- continue;
- }
- if(!strncasecmp(exten_field->name,"ulaw",strlen(exten_field->name))){
- if((atoi(exten_row[i]) > 0) && (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
- }
- code_addr = strcat(new_codecs[atoi(exten_row[i])],exten_field->name);
- continue;
- }
- else
- continue;
- }
- if(!strncasecmp(exten_field->name,"g729",strlen(exten_field->name))){
- if((atoi(exten_row[i]) > 0) && (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
- }
- code_addr = strcat(new_codecs[atoi(exten_row[i])],exten_field->name);
- continue;
- }
- else
- continue;
- }
- if(!strncasecmp(exten_field->name,"g726",strlen(exten_field->name))){
- if((atoi(exten_row[i]) > 0) && (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
- }
- code_addr = strcat(new_codecs[atoi(exten_row[i])],exten_field->name);
- continue;
- }
- else
- continue;
- }
- if(!strncasecmp(exten_field->name,"g722",strlen(exten_field->name))){
- if((atoi(exten_row[i]) > 0) && (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
- }
- code_addr = strcat(new_codecs[atoi(exten_row[i])],exten_field->name);
- continue;
- }
- else
- continue;
- }
- if(!strncasecmp(exten_field->name,"gsm",strlen(exten_field->name))){
- if((atoi(exten_row[i]) > 0) && (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
- }
- code_addr = strcat(new_codecs[atoi(exten_row[i])],exten_field->name);
- continue;
- }
- else
- continue;
- }
- if(!strncasecmp(exten_field->name,"speex",strlen(exten_field->name))){
- if((atoi(exten_row[i]) > 0) && (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
- }
- code_addr = strcat(new_codecs[atoi(exten_row[i])],exten_field->name);
- continue;
- }
- else
- continue;
- }
- if(!strncasecmp(exten_field->name,"opus",strlen(exten_field->name))){
-
- if((atoi(exten_row[i]) > 0) && (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
- }
- code_addr = strcat(new_codecs[atoi(exten_row[i])],exten_field->name);
- continue;
- }
- else
- continue;
- }
- if(!strncasecmp(exten_field->name,"h261",strlen(exten_field->name))){
- if((atoi(exten_row[i]) > 0) && (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
- }
- code_addr = strcat(new_codecs[atoi(exten_row[i])],exten_field->name);
- continue;
- }
- else
- continue;
- }
- if(!strncasecmp(exten_field->name,"h263",strlen(exten_field->name))){
- if((atoi(exten_row[i]) > 0) && (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
- }
- code_addr = strcat(new_codecs[atoi(exten_row[i])],exten_field->name);
- continue;
- }
- else
- continue;
- }
- if(!strncasecmp(exten_field->name,"h263p",strlen(exten_field->name))){
- if((atoi(exten_row[i]) > 0) && (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
- }
- code_addr = strcat(new_codecs[atoi(exten_row[i])],exten_field->name);
- continue;
- }
- else
- continue;
- }
- if(!strncasecmp(exten_field->name,"h264",strlen(exten_field->name))){
- if((atoi(exten_row[i]) > 0) && (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
- }
- code_addr = strcat(new_codecs[atoi(exten_row[i])],exten_field->name);
- continue;
- }
- else
- continue;
- }
- if(!strncasecmp(exten_field->name,"vp8",strlen(exten_field->name))){
- if((atoi(exten_row[i]) > 0) && (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
- }
- code_addr = strcat(new_codecs[atoi(exten_row[i])],exten_field->name);
- continue;
- }
- else
- continue;
- }
- if(0 == strlen(exten_row[i])){
- if(!strncasecmp(exten_field->name,"secret",strlen(exten_field->name)))
- ;
- else if(!strncasecmp(exten_field->name,"_vmsecret",strlen(exten_field->name)))
- ;
- else continue;
- }
- field_name = exten_field->name;
- //add by zhi.qin
- if(!strncasecmp(exten_field->name,"mailbox",strlen(exten_field->name)))
- {
- if(0 < strlen(exten_row[i]) && !strstr(exten_row[i],"@")){
- fprintf(fp,"%s = %s@default\n",field_name,exten_row[i]);
- continue;
- }
- }//end 2016.04.05
- //printf("%s = %s\n",field_name,exten_row[i]);
- fprintf(fp,"%s = %s\n",field_name,exten_row[i]);
- }
- // printf("codecs len %d\n",strlen(codecs));
- // if(strlen(codecs) <= 4){
- // printf("something wrong happened to codecs selection.\n");
- // exit -1;
- // }
- // codecs[strlen(codecs)-1] = '\0';
- // printf("codecs = %s\n",code_addr);
- fputs("disallow = all\n",fp);
- //process new_codecs
- for (i=0;i<20;i++)
- {
- if (new_codecs[i][0] != '\0')
- if (codecs[0] != '\0' )
- strcat(codecs,",");
- code_addr = strcat(codecs,new_codecs[i]);
- }
- //printf("codecs = %s\n",code_addr);
- fprintf(fp,"allow = %s\n",code_addr);
- //if ( (dahdichan_en == 1) && (strlen(dahdichan) > 0) )
- // fprintf(fp,"dahdichan = %s\n",dahdichan);
- fprintf(fp,"subscribemwi = no\n");//add by zhi.qin for sub mwi
- //fprintf(fp,"allow = %s\n",code_addr);
- fprintf(fp,"read = NULL\nwrite = NULL\n\n");//refuese sip exten permit access
- }
- }
- fclose(fp);
- break;
- case '1':
- res = mysql_query(&conn,"SELECT * from t_pbx_users_webrtc order by exten asc");
- if(res){
- fprintf(stderr,"SELECT error: %s\n",mysql_error(&conn));
- return -1;
- }else{
- res_exten = mysql_store_result(&conn);
- if((fp=fopen(USER_WEBRTC_CONFIG_FILE,"w+"))==NULL)
- {printf( "cannot open %s file,please check.\n",USER_WEBRTC_CONFIG_FILE);return -1;}
- fputs("[webrtc](!)\n",fp);
- fputs("srtpcapable = yes\n",fp);
- fputs("encryption = yes\n",fp);
- fputs("avpf = yes\n",fp);
- fputs("rtcp_mux = yes\n",fp);
- fputs("force_avp = yes\n",fp);
- fputs("icesupport = yes\n",fp);
- fputs("dtlsenable = yes\n",fp);
- fputs("dtlsverify = no\n",fp);
- fputs("dtlscertfile = /etc/asterisk/keys/asterisk.pem\n",fp);
- fputs("dtlscafile = /etc/asterisk/keys/ca.crt\n",fp);
- fputs("dtlssetup = actpass\n",fp);
- fputs("transport = ws,wss\n",fp);
- fputs("videosupport = yes\n\n",fp);
- fputs("rtcp_mux = yes\n\n",fp);
-
- field_count = mysql_num_fields(res_exten);
- printf("field_count = %d\n",field_count);
-
- while(exten_row = mysql_fetch_row(res_exten)){
- memset(codecs,0,sizeof(codecs));
- // printf("....%s...\n",codecs[0]);
- mysql_field_seek(res_exten,0);//point to the first field.
- for (i=0;i<20;i++)
- {
- memset(new_codecs[i],0,sizeof(new_codecs[i]));
- }
- for(i=0;i<field_count;i++){
-
- exten_field = mysql_fetch_field(res_exten);
-
- if(!strncasecmp(exten_field->name,"id",strlen(exten_field->name)))
- continue;
- if(!strncasecmp(exten_field->name,"exten",strlen(exten_field->name))){
-
- fprintf(fp,"[%s](webrtc)\n",exten_row[i]);
- continue;
- }
- if(!strncasecmp(exten_field->name,"F1",strlen(exten_field->name)))
- continue;
- if(!strncasecmp(exten_field->name,"F2",strlen(exten_field->name)))
- continue;
- if(!strncasecmp(exten_field->name,"F3",strlen(exten_field->name)))
- continue;
- if(!strncasecmp(exten_field->name,"F4",strlen(exten_field->name)))
- continue;
-
- if(!strncasecmp(exten_field->name,"email",strlen(exten_field->name)))
- continue;
- if(!strncasecmp(exten_field->name,"dahdichan",strlen(exten_field->name)))
- continue;
- if(!strncasecmp(exten_field->name,"hasexten",strlen(exten_field->name)))
- continue;
- if(!strncasecmp(exten_field->name,"directmedia",strlen(exten_field->name)))
- continue;
- #if 0
- if(!strncasecmp(exten_field->name,"videosupport",strlen(exten_field->name)))
- continue;
- if(!strncasecmp(exten_field->name,"transport",strlen(exten_field->name)))
- continue;
- #endif
- if(!strncasecmp(exten_field->name,"encryption",strlen(exten_field->name)))
- continue;
- if(!strncasecmp(exten_field->name,"srtpcapable",strlen(exten_field->name)))
- continue;
- if(!strncasecmp(exten_field->name,"deny",strlen(exten_field->name)))
- continue;
- if(!strncasecmp(exten_field->name,"permit",strlen(exten_field->name)))
- continue;
- if(!strncasecmp(exten_field->name,"avpf",strlen(exten_field->name)))
- continue;
- if(!strncasecmp(exten_field->name,"force_avp",strlen(exten_field->name)))
- continue;
- if(!strncasecmp(exten_field->name,"icesupport",strlen(exten_field->name)))
- continue;
- if(!strncasecmp(exten_field->name,"dtlsverify",strlen(exten_field->name)))
- continue;
- if(!strncasecmp(exten_field->name,"dtlsenable",strlen(exten_field->name)))
- continue;
- if(!strncasecmp(exten_field->name,"dtlscertfile",strlen(exten_field->name)))
- continue;
- if(!strncasecmp(exten_field->name,"dtlscafile",strlen(exten_field->name)))
- continue;
- if(!strncasecmp(exten_field->name,"dtlssetup",strlen(exten_field->name)))
- continue;
- //add codecs to cfg file.
- if(!strncasecmp(exten_field->name,"alaw",strlen(exten_field->name))){
-
- if((atoi(exten_row[i]) > 0) && (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
- }
- code_addr = strcat(new_codecs[atoi(exten_row[i])],exten_field->name);
- continue;;
- }
- else
- continue;
- }
- if(!strncasecmp(exten_field->name,"ulaw",strlen(exten_field->name))){
- if((atoi(exten_row[i]) > 0) && (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
- }
- code_addr = strcat(new_codecs[atoi(exten_row[i])],exten_field->name);
- continue;;
- }
- else
- continue;
- }
- if(!strncasecmp(exten_field->name,"g729",strlen(exten_field->name))){
- if((atoi(exten_row[i]) > 0) && (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
- }
- code_addr = strcat(new_codecs[atoi(exten_row[i])],exten_field->name);
- continue;;
- }
- else
- continue;
- }
- if(!strncasecmp(exten_field->name,"g726",strlen(exten_field->name))){
- if((atoi(exten_row[i]) > 0) && (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
- }
- code_addr = strcat(new_codecs[atoi(exten_row[i])],exten_field->name);
- continue;;
- }
- else
- continue;
- }
- if(!strncasecmp(exten_field->name,"g722",strlen(exten_field->name))){
- if((atoi(exten_row[i]) > 0) && (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
- }
- code_addr = strcat(new_codecs[atoi(exten_row[i])],exten_field->name);
- continue;;
- }
- else
- continue;
- }
- if(!strncasecmp(exten_field->name,"gsm",strlen(exten_field->name))){
- if((atoi(exten_row[i]) > 0) && (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
- }
- code_addr = strcat(new_codecs[atoi(exten_row[i])],exten_field->name);
- continue;;
- }
- else
- continue;
- }
- if(!strncasecmp(exten_field->name,"speex",strlen(exten_field->name))){
- if((atoi(exten_row[i]) > 0) && (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
- }
- code_addr = strcat(new_codecs[atoi(exten_row[i])],exten_field->name);
- continue;;
- }
- else
- continue;
- }
- if(!strncasecmp(exten_field->name,"opus",strlen(exten_field->name))){
- if((atoi(exten_row[i]) > 0) && (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
- }
- code_addr = strcat(new_codecs[atoi(exten_row[i])],exten_field->name);
- continue;;
- }
- else
- continue;
- }
- if(!strncasecmp(exten_field->name,"h261",strlen(exten_field->name))){
- if((atoi(exten_row[i]) > 0) && (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
- }
- code_addr = strcat(new_codecs[atoi(exten_row[i])],exten_field->name);
- continue;;
- }
- else
- continue;
- }
- if(!strncasecmp(exten_field->name,"h263",strlen(exten_field->name))){
- if((atoi(exten_row[i]) > 0) && (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
- }
- code_addr = strcat(new_codecs[atoi(exten_row[i])],exten_field->name);
- continue;;
- }
- else
- continue;
- }
- if(!strncasecmp(exten_field->name,"h263p",strlen(exten_field->name))){
- if((atoi(exten_row[i]) > 0) && (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
- }
- code_addr = strcat(new_codecs[atoi(exten_row[i])],exten_field->name);
- continue;;
- }
- else
- continue;
- }
- if(!strncasecmp(exten_field->name,"h264",strlen(exten_field->name))){
- 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
- }
- code_addr = strcat(new_codecs[atoi(exten_row[i])],exten_field->name);
- continue;;
- }
- else
- continue;
- }
- if(!strncasecmp(exten_field->name,"vp8",strlen(exten_field->name))){
- if((atoi(exten_row[i]) > 0) && (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
- }
- code_addr = strcat(new_codecs[atoi(exten_row[i])],exten_field->name);
- continue;;
- }
- else
- continue;
- }
- if(0 == strlen(exten_row[i])){
- if(!strncasecmp(exten_field->name,"secret",strlen(exten_field->name)))
- ;
- else if(!strncasecmp(exten_field->name,"vmsecret",strlen(exten_field->name)))
- ;
- else continue;
- }
- field_name = exten_field->name;
- fprintf(fp,"%s = %s\n",field_name,exten_row[i]);
- }
- // printf("codecs len %d\n",strlen(codecs));
- //if(strlen(codecs) <= 4){
- // printf("something wrong happened to codecs selection.\n");
- // exit -1;
- //}
- //codecs[strlen(codecs)-1] = '\0';
- for (i=0;i<20;i++)
- {
- if (new_codecs[i][0] != '\0')
- if (codecs[0] != '\0' )
- strcat(codecs,",");
- code_addr = strcat(codecs,new_codecs[i]);
- }
- // printf("codecs = %s\n",code_addr);
- fputs("disallow = all\n",fp);
- fprintf(fp,"allow = %s\n",code_addr);
- fprintf(fp,"read = NULL\nwrite=NULL\n\n");//refuese sip exten permit access
- }
- }
- fclose(fp);
- break;
- default:
- printf("You enter the wrong parameters.please check it\n");
- break;
- }
- fclose(fp_cfg);
- mysql_free_result(res_exten);
- mysql_close(&conn);
- return 0;
- } else {
- fclose(fp_cfg);
- mysql_free_result(res_exten);
- mysql_close(&conn);
- return 0;
- }
- }
|