Ir para conteúdo
Fórum Script Brasil

Fernando Rossato

Membros
  • Total de itens

    1
  • Registro em

  • Última visita

Tudo que Fernando Rossato postou

  1. Fernando Rossato

    Asterisk

    Ai pessoal estou alterando o asterisk para fazer tarifação de ligações nativamente e em C não manjo muito...a lógica é pegar os dados de uma tabela, que isso já faz, e comparar, dem uma olhada no meu codigo e ve o que dá para arrumar ai...valeu static int pgsql_log(struct ast_cdr *cdr) { struct ast_tm tm; char *pgerror; PGresult *result; ast_mutex_lock(&pgsql_lock); if ((!connected) && pghostname && pgdbuser && pgpassword && pgdbname) { conn = PQsetdbLogin(pghostname, pgdbport, NULL, NULL, pgdbname, pgdbuser, pgpassword); if (PQstatus(conn) != CONNECTION_BAD) { connected = 1; } else { pgerror = PQerrorMessage(conn); ast_log(LOG_ERROR, "Unable to connect to database server %s. Calls will not be logged!\n", pghostname); ast_log(LOG_ERROR, "Reason: %s\n", pgerror); PQfinish(conn); conn = NULL; } } if (connected) { struct columns *cur; int lensql, i, rows,lensql2, sizesql = maxsize, sizesql2 = maxsize2, newsize; char *sql = ast_calloc(sizeof(char), sizesql), *sql2 = ast_calloc(sizeof(char), sizesql2), *tmp, *value; char buf[257], escapebuf[513]; /* Variaveis para tarifacao */ char *campo1; char *tronco; char *prefixo; float tmp_valor = 0; char *tarifa; char *numero; if (!sql || !sql2) { if (sql) { ast_free(sql); } if (sql2) { ast_free(sql2); } return -1; } /* Busca Tarifas cadastradas no banco */ char sqlcmd[] = "select campo1,tronco,prefixo,tarifa from tarifas"; result = PQexec(conn, sqlcmd); if (PQresultStatus(result) != PGRES_TUPLES_OK) { pgerror = PQresultErrorMessage(result); ast_log(LOG_ERROR, "Failed to query database columns: %s\n", pgerror); PQclear(result); return -1; } rows = PQntuples(result); for (i = 0; i < rows; i++) { campo1 = PQgetvalue(result, i, 0); tronco = PQgetvalue(result, i, 1); prefixo = PQgetvalue(result, i, 2); tarifa = PQgetvalue(result, i, 3); numero = strtok(cdr->lastdata,"/"); /* Quebra o lastdata por / */ if( strncmp( numero[2], prefixo, sizeof(prefixo) ) == 0 && strcmp(numero[0], campo1) == 0 && strcmp(numero[1], tronco) == 0){ tmp_valor = (cdr->billsec/60) * (long)tarifa; continue; } } PQclear(result);
×
×
  • Criar Novo...